UNPKG

@xlink-network/xlink-sdk

Version:
71 lines (68 loc) 3.12 kB
import { SDKNumberifyNestly, SDKNumber } from '../../xlinkSdkUtils/types.js'; import { BigNumber } from '../BigNumber.js'; import { KnownRoute } from '../buildSupportedRoutes.js'; import { OneOrMore } from '../typeHelpers.js'; import { KnownTokenId, KnownChainId } from './knownIds.js'; import 'big.js'; import '../../types.internal-BwEnb5-y.js'; import 'viem'; import '../../evmUtils/evmContractAddresses.js'; type TransferProphetAggregated<T extends Readonly<TransferProphet[]> = OneOrMore<TransferProphet>> = TransferProphet & { transferProphets: T; }; type TransferProphet_Fee_Rate = { type: "rate"; token: KnownTokenId.KnownToken; rate: BigNumber; minimumAmount: BigNumber; }; type TransferProphet_Fee_Fixed = { type: "fixed"; token: KnownTokenId.KnownToken; amount: BigNumber; }; type TransferProphet_Fee = TransferProphet_Fee_Rate | TransferProphet_Fee_Fixed; interface TransferProphet { isPaused: boolean; bridgeToken: KnownTokenId.KnownToken; minBridgeAmount: null | BigNumber; maxBridgeAmount: null | BigNumber; fees: TransferProphet_Fee[]; } interface PublicTransferProphet extends Omit<SDKNumberifyNestly<TransferProphet>, "bridgeToken" | "fees"> { fromChain: KnownChainId.KnownChain; fromToken: KnownTokenId.KnownToken; toChain: KnownChainId.KnownChain; toToken: KnownTokenId.KnownToken; fromAmount: SDKNumber; toAmount: SDKNumber; fees: SDKNumberifyNestly<((TransferProphet_Fee_Rate & { amount: SDKNumber; }) | TransferProphet_Fee_Fixed)[]>; } interface PublicTransferProphetAggregated<T extends readonly PublicTransferProphet[] = readonly PublicTransferProphet[]> extends SDKNumberifyNestly<PublicTransferProphet> { transferProphets: T; } declare function transformFromPublicTransferProphet(transferProphet: PublicTransferProphet): TransferProphet; declare function transformToPublicTransferProphet(route: KnownRoute, fromAmount: SDKNumber | BigNumber, transferProphet: TransferProphet): PublicTransferProphet; /** * @example * transformToPublicTransferProphetAggregated( * [ * // tokenA : chain1 -> chain2 * transferProphetOf(tokenAChain1, tokenAChain2), * // tokenB : chain2 -> chain3 * transferProphetOf(tokenBChain2, tokenBChain3), * // tokenC : chain3 -> chain4 * transferProphetOf(tokenCChain3, tokenCChain4), * ], * [ * // tokenA -> tokenB : chain2 * exchangeRateOf(tokenAChain2, tokenBChain2), * // tokenB -> tokenC : chain3 * exchangeRateOf(tokenBChain3, tokenCChain3), * ], * ) */ declare const transformToPublicTransferProphetAggregated: (transferProphets: OneOrMore<PublicTransferProphet>, exchangeRates: readonly BigNumber[]) => PublicTransferProphetAggregated<OneOrMore<PublicTransferProphet>>; export { type PublicTransferProphet, type PublicTransferProphetAggregated, type TransferProphet, type TransferProphetAggregated, type TransferProphet_Fee, type TransferProphet_Fee_Fixed, type TransferProphet_Fee_Rate, transformFromPublicTransferProphet, transformToPublicTransferProphet, transformToPublicTransferProphetAggregated };