import { IBaseBridgeConfig, IBaseBridgeConfigOptions } from '../../core/types'; import { ICBridgeChain, ICBridgeEstimateAmountRequest, ICBridgeEstimateAmountResponse, ICBridgePeggedPairConfig, ICBridgeSendRangeInput, ICBridgeTransferEstimatedTime, ICBridgeTokenValidateParams, IGetCBridgeABI, IGetCBridgeTransferAddressInput, IGetCBridgeTransferFunction, IGetCBridgeTransferParamsInput, ISendCBridgeToken } from './types'; import { Hash } from 'viem'; export declare function cBridgeConfig(options: IBaseBridgeConfigOptions): IBaseBridgeConfig; export declare class CBridge { private client?; constructor(config: IBaseBridgeConfig); getEstimatedAmount(params: ICBridgeEstimateAmountRequest): Promise; /** * Get estimated waiting time for cross-chain transfer * * @param number srcChainId source chain ID * @param number dstChainId destination chain ID */ getEstimatedWaitingTime({ srcChainId, dstChainId, }: { srcChainId: number; dstChainId: number; }): Promise; /** * Get minimum and maximum token transfer * Only get minimum and maximum send amount * @param {Address} bridgeAddress - Bridge address * @param {Address} tokenAddress - Token address * @param {PublicClient} client - Public client * @returns {Object} min and max amount */ getSendRange({ bridgeAddress, tokenAddress, client, }: ICBridgeSendRangeInput): Promise<{ min: bigint; max: bigint; }>; /** * Send token through CBridge * @param {WalletClient} walletClient Wallet client * @param {PublicClient} publicClient Wallet client * @param {Address} bridgeAddress Bridge address * @param {Object[]} bridgeABI Bridge ABI * @param {String} functionName Function name * @param {Address} address wallet/account address * @param {Object[]} args Function arguments * @returns */ sendToken({ walletClient, publicClient, bridgeAddress, fromChainId, address, isPegged, peggedConfig, args, }: ISendCBridgeToken): Promise; /** * Get cBridge contract address from cross chain transfer * * @param fromChainId Chain ID of the source chain * @param isPegged Pool-based transfer(xLiquidity) - false * Canonical Mapping Transfer(xAsset) - true * @param peggedConfig Pegged pair configuration * @param chainConfig Chain configuration */ getTransferAddress({ fromChainId, isPegged, peggedConfig, chainConfig, }: IGetCBridgeTransferAddressInput): string; /** * Get cBridge transfer parameters * * @param amount Send amount * @param isPegged Pool-based transfer(xLiquidity) - false * Canonical Mapping Transfer(xAsset) - true * @param toChainId Chain ID of the destination chain * @param tokenAddress Address of ERC20 token * @param address User address * @param maxSlippage Maximum slippage * @param transferType Transfer type - deposit | withdraw * @param peggedConfig Pegged pair configuration * @param nonce Nonce current timestamp */ getTransferParams({ amount, isPegged, toChainId, tokenAddress, address, maxSlippage, transferType, peggedConfig, nonce, }: IGetCBridgeTransferParamsInput): (number | bigint | `0x${string}`)[] | null; /** * Get cross chain transfer ABI * * @param isPegged Pool-based transfer(xLiquidity) - false * Canonical Mapping Transfer(xAsset) - true * @param transferType Transfer type - deposit | withdraw * @param peggedConfig Pegged pair configuration */ getABI({ isPegged, transferType, peggedConfig }: IGetCBridgeABI): any; /** * Get cross chain transfer function name * * @param isPegged * @returns string */ getTransferFunction({ isPegged, transferType }: IGetCBridgeTransferFunction): "" | "deposit" | "burn" | "send"; /** * Get transfer type */ getTransferType({ peggedConfig, fromChainId, }: { fromChainId: number; peggedConfig?: ICBridgePeggedPairConfig; }): "deposit" | "withdraw" | undefined; /** * Generate cBridge transfer arguments */ getArguments({ isPegged, peggedConfig, chainConfig, amount, fromChainId, toChainId, tokenAddress, userAddress, maxSlippage, nonce, }: { isPegged: boolean; peggedConfig?: ICBridgePeggedPairConfig; chainConfig?: ICBridgeChain; amount: bigint; fromChainId: number; toChainId: number; tokenAddress: `0x${string}`; userAddress: `0x${string}`; maxSlippage: number; nonce: number; }): { address: `0x${string}`; abi: any; functionName: string; account: `0x${string}`; args: (number | bigint | `0x${string}`)[] | null; }; /** * validate token and contract information */ validateCBridgeToken: ({ isPegged, fromChainId, fromTokenAddress, fromTokenSymbol, fromTokenDecimals, bridgeAddress, toChainId, toTokenAddress, toTokenSymbol, toTokenDecimals, amount, cBridgeEndpoint, }: ICBridgeTokenValidateParams) => Promise; }