@dojima-wallet/transfer
Version:
Transfer assets from account to account
109 lines (98 loc) • 2.97 kB
text/typescript
import { Network } from "@dojima-wallet/types";
import { ArweaveInit } from "@dojima-wallet/connection";
import { getUsdtTokenPriceResult } from "./utils";
import { PoolData, UsdtTokenGasFeeResult } from "./types";
import { SwapAssetList } from "@dojima-wallet/utils";
export default class ArweaveChain extends ArweaveInit {
constructor(mnemonic: string, network: Network) {
super(mnemonic, network);
}
async getGasFee(
recipient: string,
amount: number
): Promise<UsdtTokenGasFeeResult> {
// Gas fee generated by default during 'createTransaction'
const rawTx = await this.arConnect.createTransaction(recipient, amount);
const arw_gasFee = await this.arConnect.getFees(rawTx);
const result = await getUsdtTokenPriceResult(arw_gasFee, "ar");
return result;
}
async transfer(recipient: string, amount: number): Promise<string> {
const hash = await this.arConnect.transfer({ recipient, amount });
return hash;
}
getSwapOutput(amount: number, pool: PoolData, toDoj: boolean): number {
return this.arConnect.getSwapOutput(amount, pool, toDoj);
}
getDoubleSwapOutput(
amount: number,
pool1: PoolData,
pool2: PoolData
): number {
return this.arConnect.getDoubleSwapOutput(amount, pool1, pool2);
}
getSwapSlippage(amount: number, pool: PoolData, toDoj: boolean): number {
return this.arConnect.getSwapSlip(amount, pool, toDoj) * 100;
}
getDoubleSwapSlippage(
amount: number,
pool1: PoolData,
pool2: PoolData
): number {
return this.arConnect.getDoubleSwapSlip(amount, pool1, pool2) * 100;
}
async getDefaultLiquidityPoolGasFee(
hermesApiUrl: string
): Promise<UsdtTokenGasFeeResult> {
const LPDefaultGasFee = await this.arConnect.getDefaultLiquidityPoolGasFee(
hermesApiUrl
);
const arw_LPgasfee = {
slow: LPDefaultGasFee,
average: LPDefaultGasFee,
fast: LPDefaultGasFee,
};
const result = await getUsdtTokenPriceResult(arw_LPgasfee, "ar");
return result;
}
async addLiquidityPool(
amount: number,
hermesApiUrl: string,
hermesAddress?: string
): Promise<string> {
try {
const inboundAddress = await this.arConnect.getArweaveInboundAddress(
hermesApiUrl
);
const liquidityPoolHash = await this.arConnect.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.arConnect.getArweaveInboundAddress(
hermesApiUrl
);
const swapHash = await this.arConnect.swap(
amount,
token,
inboundAddress,
recipient
);
return swapHash;
} catch (error) {
return Promise.reject(error);
}
}
}