Alex-SDK
Alex-SDK is a easy-to-use library that exposes the swap functionality from alexlab.co to be integrated into any app or wallet. It enables users to perform swaps with a wide variety of supported currencies.
Supported Currencies
The SDK supports the following currencies:
export enum Currency {
ALEX = 'age000-governance-token',
USDA = 'token-wusda',
STX = 'token-wstx',
BANANA = 'token-wban',
XBTC = 'token-wbtc',
DIKO = 'token-wdiko',
SLIME = 'token-wslm',
XUSD = 'token-wxusd',
MIA = 'token-wmia',
NYCC = 'token-wnycc',
CORGI = 'token-wcorgi',
}
Functions
The AlexSDK class includes the following functions:
export declare class AlexSDK {
getFeeRate(from: Currency, to: Currency): Promise<bigint>;
getRouter(from: Currency, to: Currency): Promise<Currency[]>;
getAmountTo(from: Currency, fromAmount: bigint, to: Currency): Promise<bigint>;
runSwap(stxAddress: string, currencyX: Currency, currencyY: Currency, fromAmount: bigint, minDy: bigint, router: Currency[]): TxToBroadCast;
getCurrencyFrom(address: string): Currency | undefined;
getLatestPrices(): Promise<
Partial<{
[currency in Currency]: number;
}>
>
}
getFee
Rate
Get the swap fee (liquidity provider fee) between two currencies.
async function getFeeRate(from: Currency, to: Currency): Promise<bigint>;
getRouter
Get the router path for swapping between two currencies.
async function getRouter(from: Currency, to: Currency): Promise<Currency[]>;
getAmountTo
Get the amount of destination currency that will be received when swapping from one currency to another.
async function getAmountTo(from: Currency, fromAmount: bigint, to: Currency): Promise<bigint>;
runSwap
Perform a swap between two currencies using the specified route and amount.
function runSwap(stxAddress: string, currencyX: Currency, currencyY: Currency, fromAmount: bigint, minDy: bigint, router: Currency[]): TxToBroadCast;
getCurrencyFrom
Get the corresponding currency for a given address.
function getCurrencyFrom(address: string): Currency | undefined;
getAddressFrom
Get the corresponding currency for a given address.
function getAddressFrom(currency: Exclude<Currency, Currency.STX>): string;
isAlexSwapTransaction
getLatestPrices
Get a list of token prices from Alex's price endpoint
getLatestPrices(): Promise<
Partial<{
[currency in Currency]: number;
}>
>
It will do it's best to find the price, and where it can't, it will return undefined.
Check if a transaction is a swap transaction from Alex
function isAlexSwapTransaction(deployer: string, contractName: string, functionName: string): boolean;
Broadcast a sponsored transaction to Alex's sponsored tx services
function broadcastSponsoredTx(txRaw: string): Promise<string>;
Check if alex's swap sponsor service is activated
function isSponsoredSwapEnabled(): Promise<boolean>;
Installation
You can install Alex-SDK using npm:
npm install alex-sdk
Usage
To use the AlexSDK, you can import it into your project and instantiate a new object:
import { AlexSDK, Currency } from 'alex-sdk';
const alex = new AlexSDK();
(async () => {
const feeRate = await alex.getFeeRate(Currency.ALEX, Currency.USDA);
console.log('Swap fee:', feeRate);
const router = await alex.getRouter(Currency.ALEX, Currency.USDA);
console.log('Router path:', router);
const amountTo = await alex.getAmountTo(
Currency.ALEX,
BigInt(100),
Currency.USDA
);
console.log('Amount to receive:', amountTo);
const tx = await alex.runSwap(
stxAddress,
Currency.ALEX,
Currency.USDA,
BigInt(Number(amount) * 1e8),
BigInt(0),
router
);
await openContractCall(tx);
})();
There is a fully working example in the alex-sdk-example
Contributing
Contributions to the project are welcome. Please fork the repository, make your changes, and submit a pull request. Ensure your changes follow the code style and conventions used