@manahippo/hippo-sdk
v0.1.913
Published
Hippo SDK for Aptos
Downloads
943
Readme
hippo-sdk
hippo-sdk
provides the following TypeScript interface:
- Hippo Dex aggregator
Aggregator Usage
These snippets demonstrate how you can use the TradeAggregatorV2
class to
- query coin info
- query quotes for a particular pair
- perform swap
// compute a list of quotes (ordered by output), for fromSymbol -> toSymbol
const listQuotes = async (fromSymbol: string, toSymbol: string, inputUiAmt: string) => {
const { client } = getAptosClient();
const agg = await TradeAggregatorV2.create(client);
const xCoinInfos = agg.coinListClient.getCoinInfoBySymbol(fromSymbol);
const yCoinInfos = agg.coinListClient.getCoinInfoBySymbol(toSymbol);
const inputAmt = parseFloat(inputUiAmt);
const quotes = await agg.getQuotes(inputAmt, xCoinInfos[0], yCoinInfos[0], {
split: true,
considerGasWhenSorting: true,
allowHighGas: true
});
for (const quote of quotes) {
console.log('###########');
quote.route.debugPrint();
console.log(`Quote input: ${quote.quote.inputUiAmt}`);
console.log(`Quote output: ${quote.quote.outputUiAmt}`);
}
};
// send a transaction to swap "inputUiAmt" of "fromSymbol" to "toSymbol"
const swap = async (fromSymbol: string, toSymbol: string, inputUiAmt: string) => {
const { client } = getAptosClient();
const agg = await TradeAggregatorV2.create(client);
const xCoinInfos = agg.coinListClient.getCoinInfoBySymbol(fromSymbol);
const yCoinInfos = agg.coinListClient.getCoinInfoBySymbol(toSymbol);
const inputAmt = parseFloat(inputUiAmt);
const quotes = await agg.getQuotes(inputAmt, xCoinInfos[0], yCoinInfos[0], {
split: true,
considerGasWhenSorting: true,
allowHighGas: true
});
if (quotes.length === 0) {
console.log('No route available');
return;
}
const payload = quotes[0].route.makeSwapPayload(inputAmt, 0);
await sendPayloadTx(client, account, payload as TxnBuilderTypes.TransactionPayloadEntryFunction);
};
You can find more sample code that uses TradeAggregator
in src/tools/index.ts
.
Aggregator CLI
List commands
$ yarn cli agg2
Usage: hippo-cli agg2 [options] [command]
aggregator v2
Options:
-h, --help
Commands:
list-trading-pools
list-quotes <fromSymbol> <toSymbol> <inputUiAmt>
list-quotes-split <fromSymbol> <toSymbol> <inputUiAmt>
list-quotes-direct <fromSymbol> <toSymbol> <inputUiAmt>
list-quotes-api <fromSymbol> <toSymbol> <inputUiAmt>
list-quotes-split-api <fromSymbol> <toSymbol> <inputUiAmt>
list-quotes-with-change <fromSymbol> <toSymbol> <outputUiAmt>
swap <fromSymbol> <toSymbol> <inputUiAmt> [minOutUiAmt] [routeIdx] [maxGas]
simulate-swap <fromSymbol> <toSymbol> <inputUiAmt> [minOutUiAmt] [routeIdx] [maxGas]
swap-with-fees <fromSymbol> <toSymbol> <inputUiAmt> <feeTo> <feeBips> [minOutUiAmt] [routeIdx] [maxGas]
simulate-swap-with-fees <fromSymbol> <toSymbol> <inputUiAmt> <feeTo> <feeBips> [minOutUiAmt] [routeIdx] [maxGas]
swap-fixed-out <fromSymbol> <toSymbol> <outputUiAmt> [routeIdx] [maxGas]
simulate-swap-fixed-out <fromSymbol> <toSymbol> <outputUiAmt> [routeIdx] [maxGas]
simulate-swap-with-change <fromSymbol> <toSymbol> <outputUiAmt> [maxGas]
swap-with-change <fromSymbol> <toSymbol> <outputUiAmt> [maxGas]
split-swap <fromSymbol> <toSymbol> <inputUiAmt> [minOutUiAmt] [routeIdx] [maxGas]
simulate-split-swap <fromSymbol> <toSymbol> <inputUiAmt> [minOutUiAmt] [routeIdx] [maxGas]
help [command]
Get quotes from multiple routes
$ yarn cli -c .aptos/config.yaml agg2 list-quotes zUSDC APT 100