@xchainjs/xchain-aggregator
v3.1.0
Published
Protocol aggregator to make actions in different protocols
Maintainers
Keywords
Readme
The Aggregator package has been developed to facilitate interaction with multiple decentralised protocols. It provides a unified interface for developers, with the objective of offering end users the best of each protocol in the most straightforward manner.
Supported protocols
The current supported protocols are:
Installation
yarn add @xchainjs/xchain-aggregatoror
npm install @xchainjs/xchain-aggregatorInitialization
Aggregator can be easily initialise providing the Wallet with the XChainJs Clients you are working with. If no protocol is provided, the Aggregator will work with all the supported protocols.
import { Aggregator } from '@xchainjs/xchain-aggregator';
const aggregator = new Aggregator({
wallet: new Wallet({
// Your XChainJS clients
}),
protocols: [
// The protocols you want to work with
],
affiliate: {
// Affiliate config
}
})Features
Swaps
- Estimate the most efficient swap among protocols
- Do swaps
- Get swap history through different protocols
Chainflip deposit channels
Chainflip estimateSwap is quote-only — it does not open a deposit channel. Wallets that refresh quotes must not call channel creation on every refresh (channels expire; late deposits may not swap or refund).
Recommended flow:
aggregator.estimateSwap(...)— price discovery / refresh (toAddressempty for Chainflip;canSwapmeans a usable quote exists)- At confirm, immediately before broadcast:
aggregator.requestChainflipDepositAddress(...)— returnsdepositAddress,depositChannelId, andexpiresAt - Transfer to that deposit address (or use
doSwap, which opens a channel then sends)
Do not cache deposit addresses across expiresAt. EVM Chainflip deposit addresses can be reused across channels; always bind signing to a live depositChannelId + expiry.
Important: Chainflip must observe the deposit before channel expiry. Broadcasting before expiresAt is not enough if the source chain (especially EVM) confirms after expiry — funds may not create a swap and may not FoK-refund. Prefer requestChainflipDepositAddress over doSwap when you need to track expiresAt / depositChannelId around slow Ledger signing or post-broadcast monitoring (doSwap does not return channel metadata).
Examples
You can find examples using the Aggregator package in the aggregator examples folder.
Documentation
More information about how to use the Aggregator package can be found on documentation
