@hyperionxyz/sdk
Version:
This SDK allows you to interact with the Hyperion API. You can use it to request data, create pools/positions and more.
145 lines (138 loc) • 3.68 kB
text/typescript
import {
AptosScriptComposer,
CallArgument,
} from "@aptos-labs/script-composer-sdk";
import { addressToObject } from "../utils";
const thalaSwapV2Contract =
"0x7730cd28ee1cdc9e999336cbc430f99e7c44397c0aa77516f6f23a78559bb5";
/**
* Thala Swap Exact In Stable
* @param builder The builder of the transaction
* @param poolId The pool ID
* @param assetIn The input token
* @param outMetaId The output token
* @returns The output token
*/
export async function thalaSwapExactInStable(
builder: AptosScriptComposer,
poolId: string,
assetIn: CallArgument,
outMetaId: string
) {
let outMeta = await addressToObject(
builder,
`0x1::fungible_asset::Metadata`,
outMetaId
);
let ret = await builder.addBatchedCalls({
function: `${thalaSwapV2Contract}::pool::swap_exact_in_stable`,
typeArguments: [],
functionArguments: [CallArgument.newSigner(0), poolId, assetIn, outMeta],
});
return ret[0];
}
/**
* Thala Swap Exact In Meta
* @param builder The builder of the transaction
* @param poolId The pool ID
* @param assetIn The input token
* @param outMetaId The output token
* @returns The output token
*/
export async function thalaSwapExactInMeta(
builder: AptosScriptComposer,
poolId: string,
assetIn: CallArgument,
outMetaId: string
) {
let outMeta = await addressToObject(
builder,
`0x1::fungible_asset::Metadata`,
outMetaId
);
let ret = await builder.addBatchedCalls({
function: `${thalaSwapV2Contract}::pool::swap_exact_in_metastable`,
typeArguments: [],
functionArguments: [CallArgument.newSigner(0), poolId, assetIn, outMeta],
});
return ret[0];
}
/**
* Thala Swap Exact Out Stable
* @param builder The builder of the transaction
* @param pool The pool
* @param assetIn The input token
* @param metadataOut The output token
* @param amountOut The amount out
* @returns The output token
*/
export async function swapExactOutStable(
builder: AptosScriptComposer,
pool: CallArgument,
assetIn: CallArgument,
metadataOut: CallArgument,
amountOut: number
) {
let ret = await builder.addBatchedCalls({
function: `${thalaSwapV2Contract}::pool::swap_exact_out_stable`,
typeArguments: [],
functionArguments: [
CallArgument.newSigner(0),
pool,
assetIn,
metadataOut,
amountOut,
],
});
return ret;
}
/**
* Thala Swap Exact In Weighted
* @param builder The builder of the transaction
* @param poolId The pool ID
* @param assetIn The input token
* @param outMetaId The output token
* @returns The output token
*/
export async function thalaSwapExactInWeighted(
builder: AptosScriptComposer,
poolId: string,
assetIn: CallArgument,
outMetaId: string
) {
let ret = await builder.addBatchedCalls({
function: `${thalaSwapV2Contract}::pool::swap_exact_in_weighted`,
typeArguments: [],
functionArguments: [CallArgument.newSigner(0), poolId, assetIn, outMetaId],
});
return ret[0];
}
/**
* Thala Swap Exact Out Weighted
* @param builder The builder of the transaction
* @param pool The pool
* @param assetIn The input token
* @param metadataOut The output token
* @param amountOut The amount out
* @returns The output token
*/
export async function swapExactOutWeighted(
builder: AptosScriptComposer,
pool: CallArgument,
assetIn: CallArgument,
metadataOut: CallArgument,
amountOut: number
) {
let ret = await builder.addBatchedCalls({
function: `${thalaSwapV2Contract}::pool::swap_exact_out_weighted`,
typeArguments: [],
functionArguments: [
CallArgument.newSigner(0),
pool,
assetIn,
metadataOut,
amountOut,
],
});
return ret;
}