import { AnyEvmChain, AssetAmount, ContractConfig } from '@galacticcouncil/xc-core'; import { Call, Platform } from '../types'; export declare class EvmPlatform implements Platform { #private; constructor(chain: AnyEvmChain); /** * Build the ordered call sequence of a transfer. * * The route's calls, preceded by the prerequisites the sender has to sign * first - [wrap?, approve?, ...calls]. Each prerequisite becomes * unnecessary once executed, so re-building after a signed step yields a * shorter sequence. * * Every call is its own signature. A substrate signed origin batches the * same steps into one, and reaches them through the route's `extrinsic` * config rather than here. */ buildCalls(account: string, amount: bigint, _feeBalance: AssetAmount, configs: ContractConfig[]): Promise; private buildTransferCall; private buildFollowCall; /** * Fee of a transfer, in the route's fee asset. * * Gas of the transfer calls, unless the amount is drawn from the very * balance that pays for the transfer ({@link ContractConfig.wrapNative}). * Then the call value and the gas of every prerequisite are part of it * too - max being derived as balance - fee, an incomplete fee leaves * nothing to wrap, deliver & execute with. * * For an erc20 source the value stays out: it is either reported as the * route's destination fee (snowbridge, the ntt executor cost) or drawn from * a balance the amount doesn't compete for. Its prerequisites are charged * for all the same - the approve is a transaction the sender signs and pays * gas on. * * Which configs have prerequisites is decided exactly as {@link buildCalls} * decides it. Estimating the transfer alone instead left an erc20 source * reporting no fee at all: the transfer reverts until the approve lands, * and an unmeasurable fee falls back to zero. */ estimateFee(account: string, amount: bigint, feeBalance: AssetAmount, configs: ContractConfig[]): Promise; }