@dojima-wallet/transfer
Version:
Transfer assets from account to account
124 lines (111 loc) • 3.15 kB
text/typescript
import { Network } from "@dojima-wallet/types";
import { PoolData, UsdtTokenGasFeeResult } from "./types";
import { SwapAssetList } from "@dojima-wallet/utils";
import { PolkadotInit } from "@dojima-wallet/connection";
import { getUsdtTokenPriceResult } from "./utils";
export default class PolkadotChain extends PolkadotInit {
constructor(mnemonic: string, network: Network) {
super(mnemonic, network);
}
async getGasFee(
recipient: string,
amount: number
): Promise<UsdtTokenGasFeeResult> {
const dot_gasFee = await this.dotConnect.getFees({
recipient,
amount,
});
const result = await getUsdtTokenPriceResult(dot_gasFee, "dot");
return result;
}
async transfer(recipient: string, amount: number): Promise<string> {
const hash = await this.dotConnect.transfer({ recipient, amount });
return hash;
}
getSwapOutput(amount: number, pool: PoolData, toDoj: boolean): number {
return this.dotConnect.getSwapOutput(amount, pool, toDoj);
}
getDoubleSwapOutput(
amount: number,
pool1: PoolData,
pool2: PoolData
): number {
return this.dotConnect.getDoubleSwapOutput(amount, pool1, pool2);
}
getSwapSlippage(amount: number, pool: PoolData, toDoj: boolean): number {
return this.dotConnect.getSwapSlip(amount, pool, toDoj) * 100;
}
getDoubleSwapSlippage(
amount: number,
pool1: PoolData,
pool2: PoolData
): number {
return this.dotConnect.getDoubleSwapSlip(amount, pool1, pool2) * 100;
}
async getDefaultLiquidityPoolGasFee(
hermesApiUrl: string
): Promise<UsdtTokenGasFeeResult> {
const LPDefaultGasFee = await this.dotConnect.getDefaultLiquidityPoolGasFee(
hermesApiUrl
);
const dot_LPgasfee = {
slow: LPDefaultGasFee,
average: LPDefaultGasFee,
fast: LPDefaultGasFee,
};
const result = await getUsdtTokenPriceResult(dot_LPgasfee, "dot");
return result;
}
async addLiquidityPool(
amount: number,
hermesApiUrl: string,
hermesAddress?: string
): Promise<string> {
try {
const inboundAddress = await this.dotConnect.getPolkadotInboundAddress(
hermesApiUrl
);
const liquidityPoolHash = await this.dotConnect.addLiquidityPool(
amount,
inboundAddress,
hermesAddress
);
return liquidityPoolHash;
} catch (error) {
return Promise.reject(error);
}
}
async swap(
amount: number,
recipient: string,
token: SwapAssetList,
hermesApiUrl: string
) {
try {
const inboundAddress = await this.dotConnect.getPolkadotInboundAddress(
hermesApiUrl
);
const swapHash = await this.dotConnect.swap(
amount,
token,
inboundAddress,
recipient
);
return swapHash;
} catch (error) {
return Promise.reject(error);
}
}
async polkaBatchTxsToHermes(
amount: number,
inboundAddress: string,
memo: string
): Promise<string> {
const batchTxHash = await this.dotConnect.polkaBatchTxsToHermes(
amount,
inboundAddress,
memo
);
return batchTxHash;
}
}