@xlink-network/xlink-sdk
Version:
71 lines (68 loc) • 3.12 kB
TypeScript
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 };