UNPKG

@moonbeam-network/xcm-builder

Version:
1,643 lines (1,608 loc) 60 kB
import { Chain, AnyParachain, AssetAmount, ChainAssetId, ChainAsset, AnyChain } from '@moonbeam-network/xcm-types'; import { ApiPromise } from '@polkadot/api'; import { FrameSystemAccountInfo, StagingXcmV3MultiLocation } from '@polkadot/types/lookup'; import { Struct, u128, Enum } from '@polkadot/types'; import { Abi, PublicClient, HttpTransport } from 'viem'; import { SubmittableExtrinsicFunction } from '@polkadot/api/types'; import { EventRecord } from '@polkadot/types/interfaces'; import { HexString } from '@polkadot/util/types'; import { TokenId, ChainAddress, TokenTransfer, Wormhole } from '@wormhole-foundation/sdk-connect'; interface ConfigBuilder<Config, Params = BuilderParams> { build: (params: Params) => Config; } interface BuilderParams<IChain extends Chain = AnyParachain> { asset: AssetAmount; destination: IChain; destinationAddress: string; destinationApi?: ApiPromise; fee: AssetAmount; source: IChain; sourceAddress: string; sourceApi?: ApiPromise; } interface BaseConfigConstructorParams { module: string; func: string; } declare class BaseConfig { readonly module: string; readonly func: string; constructor({ module, func }: BaseConfigConstructorParams); } type QueryType = 'query' | 'call'; interface QueryConfigConstructorParams extends BaseConfigConstructorParams { queryType?: QueryType; args?: unknown[]; transform: (data: any) => Promise<bigint>; } declare class SubstrateQueryConfig extends BaseConfig { readonly args: unknown[]; readonly queryType: QueryType; readonly transform: (data: unknown) => Promise<bigint>; static is(obj: unknown): obj is SubstrateQueryConfig; constructor({ args, transform, queryType, ...other }: QueryConfigConstructorParams); } type AssetMinConfigBuilder = ConfigBuilder<SubstrateQueryConfig, AssetMinConfigBuilderParams>; interface AssetMinConfigBuilderParams { address?: string; asset: ChainAssetId; } declare function AssetMinBuilder(): { assetRegistry: typeof assetRegistry; assets: typeof assets$1; foreignAssets: typeof foreignAssets$1; }; declare function assetRegistry(): { assetMetadatas: () => AssetMinConfigBuilder; currencyMetadatas: () => AssetMinConfigBuilder; metadata: () => AssetMinConfigBuilder; }; declare function assets$1(): { asset: () => AssetMinConfigBuilder; }; declare function foreignAssets$1(): { asset: () => AssetMinConfigBuilder; }; interface ContractConfigConstructorParams extends BaseConfigConstructorParams { address: string; abi: Abi; args: unknown[]; value?: bigint; } declare class ContractConfig extends BaseConfig { readonly address: string; readonly abi: Abi; readonly args: unknown[]; readonly value?: bigint; static is(obj: unknown): obj is ContractConfig; constructor({ address, abi, args, value, ...other }: ContractConfigConstructorParams); encodeFunctionData(): `0x${string}`; } type ContractConfigBuilder = ConfigBuilder<ContractConfig>; type DestinationMultilocation = [ /** * 0 - if destination is referring to a location in the same chain * 1 - if transaction is going through or to a relay chain * 2 - if transaction is going to a parachain in another ecosystem */ 0 | 1 | 2, ([ /** * example '0x00000007DC' * 7DC - parachain id in hex * can be found here: * - https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fkusama-rpc.polkadot.io#/parachains * - https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/parachains */ string, /** * example '0x01%account%00', * enum = 01 (AccountId32) * networkId = 00 (any) */ string ] | [ /** * example '0x01%account%00', * enum = 01 (AccountId32) * networkId = 00 (any) */ string ] /** * example 'Here', */ | []) ]; type AssetAddressFormat = (string | bigint | undefined)[]; declare enum TransferType { Teleport = 0, LocalReserve = 1, DestinationReserve = 2 } type AssetMultilocation = [[number, string[]], bigint]; declare function XcmPrecompile(): { transferAssetsToPara20: (shouldTransferAssetPrecedeFeeAsset?: boolean) => ContractConfigBuilder; transferAssetsToPara32: (shouldTransferAssetPrecedeFeeAsset?: boolean) => ContractConfigBuilder; transferAssetsToRelay: () => ContractConfigBuilder; transferAssetsLocation: () => { nativeAsset: () => ContractConfigBuilder; localErc20: () => ContractConfigBuilder; foreignAsset: () => ContractConfigBuilder; foreignErc20: () => ContractConfigBuilder; }; transferAssetsUsingTypeAndThenAddress: (shouldTransferAssetPrecedeFeeAsset?: boolean) => ContractConfigBuilder; }; declare function Xtokens(): { transfer: (weight?: bigint) => ContractConfigBuilder; transferMultiCurrencies: (shouldTransferAssetPrecedeFeeAsset?: boolean, weight?: bigint) => ContractConfigBuilder; transferWithEvmTo32: (weight?: bigint) => ContractConfigBuilder; }; declare function ContractBuilder(): { Xtokens: typeof Xtokens; XcmPrecompile: typeof XcmPrecompile; }; type EvmQueryFunctions = 'getBalance'; type EvmFunctionArgs = Parameters<PublicClient<HttpTransport>[EvmQueryFunctions]>; interface EvmQueryConfigParams { readonly args: EvmFunctionArgs; readonly func: EvmQueryFunctions; } declare class EvmQueryConfig { readonly args: EvmFunctionArgs; readonly func: EvmQueryFunctions; static is(obj: unknown): obj is EvmQueryConfig; constructor({ args, func }: EvmQueryConfigParams); } type BalanceConfigBuilder = ConfigBuilder<ContractConfig | SubstrateQueryConfig | EvmQueryConfig, BalanceBuilderParams>; interface BalanceBuilderParams { address: string; asset: ChainAsset; } interface PalletBalancesAccountDataOld extends Struct { readonly free: u128; readonly reserved: u128; readonly miscFrozen: u128; readonly feeFrozen: u128; } interface TokensPalletAccountData { free: u128; reserved: u128; frozen: u128; } type EquilibriumSystemBalanceData = Array<[ number, { positive: number; } ]>; declare function BalanceBuilder(): { evm: typeof evm; substrate: typeof substrate; }; declare function evm(): { erc20: typeof erc20; native: typeof native; }; declare function erc20(): BalanceConfigBuilder; declare function native(): BalanceConfigBuilder; declare function substrate(): { assets: typeof assets; foreignAssets: typeof foreignAssets; system: typeof system; tokens: typeof tokens; }; declare function assets(): { account: () => BalanceConfigBuilder; }; declare function foreignAssets(): { account: () => { globalConsensus: () => BalanceConfigBuilder; id: () => BalanceConfigBuilder; }; }; declare function system(): { account: () => BalanceConfigBuilder; accountEquilibrium: () => BalanceConfigBuilder; accountEvmTo32: () => BalanceConfigBuilder; }; declare function tokens(): { accounts: () => BalanceConfigBuilder; }; declare function calculateSystemAccountBalance(response: FrameSystemAccountInfo): Promise<bigint>; declare const ERC20_ABI: readonly [{ readonly constant: true; readonly inputs: readonly []; readonly name: "name"; readonly outputs: readonly [{ readonly name: ""; readonly type: "string"; }]; readonly payable: false; readonly stateMutability: "view"; readonly type: "function"; }, { readonly constant: false; readonly inputs: readonly [{ readonly name: "_spender"; readonly type: "address"; }, { readonly name: "_value"; readonly type: "uint256"; }]; readonly name: "approve"; readonly outputs: readonly [{ readonly name: ""; readonly type: "bool"; }]; readonly payable: false; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly constant: true; readonly inputs: readonly []; readonly name: "totalSupply"; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; }]; readonly payable: false; readonly stateMutability: "view"; readonly type: "function"; }, { readonly constant: false; readonly inputs: readonly [{ readonly name: "_from"; readonly type: "address"; }, { readonly name: "_to"; readonly type: "address"; }, { readonly name: "_value"; readonly type: "uint256"; }]; readonly name: "transferFrom"; readonly outputs: readonly [{ readonly name: ""; readonly type: "bool"; }]; readonly payable: false; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly constant: true; readonly inputs: readonly []; readonly name: "decimals"; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint8"; }]; readonly payable: false; readonly stateMutability: "view"; readonly type: "function"; }, { readonly constant: true; readonly inputs: readonly [{ readonly name: "_owner"; readonly type: "address"; }]; readonly name: "balanceOf"; readonly outputs: readonly [{ readonly name: "balance"; readonly type: "uint256"; }]; readonly payable: false; readonly stateMutability: "view"; readonly type: "function"; }, { readonly constant: true; readonly inputs: readonly []; readonly name: "symbol"; readonly outputs: readonly [{ readonly name: ""; readonly type: "string"; }]; readonly payable: false; readonly stateMutability: "view"; readonly type: "function"; }, { readonly constant: false; readonly inputs: readonly [{ readonly name: "_to"; readonly type: "address"; }, { readonly name: "_value"; readonly type: "uint256"; }]; readonly name: "transfer"; readonly outputs: readonly [{ readonly name: ""; readonly type: "bool"; }]; readonly payable: false; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly constant: true; readonly inputs: readonly [{ readonly name: "_owner"; readonly type: "address"; }, { readonly name: "_spender"; readonly type: "address"; }]; readonly name: "allowance"; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; }]; readonly payable: false; readonly stateMutability: "view"; readonly type: "function"; }, { readonly payable: true; readonly stateMutability: "payable"; readonly type: "fallback"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: true; readonly name: "spender"; readonly type: "address"; }, { readonly indexed: false; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Approval"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "from"; readonly type: "address"; }, { readonly indexed: true; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Transfer"; readonly type: "event"; }]; interface ExtrinsicConfigConstructorParams extends Omit<BaseConfigConstructorParams, 'type'> { getArgs: (func?: SubmittableExtrinsicFunction<'promise'>) => any[]; } declare class ExtrinsicConfig extends BaseConfig { getArgs: (func?: SubmittableExtrinsicFunction<'promise'>) => any[]; static is(obj: unknown): obj is ExtrinsicConfig; constructor({ getArgs, ...other }: ExtrinsicConfigConstructorParams); } type ExtrinsicConfigBuilder = ConfigBuilder<ExtrinsicConfig>; declare enum XcmVersion { v1 = "V1", v2 = "V2", v3 = "V3", v4 = "V4", v5 = "V5" } type Parents = 0 | 1; declare function eqBalances(): { xcmTransfer: () => ExtrinsicConfigBuilder; transferXcm: () => ExtrinsicConfigBuilder; }; declare function polkadotXcm$2(): { limitedReserveTransferAssets: () => { here: () => ExtrinsicConfigBuilder; X1: () => ExtrinsicConfigBuilder; X2: () => ExtrinsicConfigBuilder; X2PalletInstance: () => ExtrinsicConfigBuilder; }; limitedReserveWithdrawAssets: () => { X2: () => ExtrinsicConfigBuilder; }; transferAssets: () => { here: (parents?: number) => ExtrinsicConfigBuilder; X1: () => ExtrinsicConfigBuilder; X1GeneralKey: () => ExtrinsicConfigBuilder; X2: () => ExtrinsicConfigBuilder; X3: () => ExtrinsicConfigBuilder; X2AndFeeHere: () => ExtrinsicConfigBuilder; }; transferAssetsUsingTypeAndThen: () => { here: (parents?: number) => ExtrinsicConfigBuilder; X2: (parents?: number) => ExtrinsicConfigBuilder; globalConsensusEthereum: () => ExtrinsicConfigBuilder; }; transferAssetsToEcosystem: () => { X1: () => ExtrinsicConfigBuilder; X2: () => ExtrinsicConfigBuilder; X3: () => ExtrinsicConfigBuilder; X4: () => ExtrinsicConfigBuilder; }; }; declare function xcmPallet$1(): { limitedReserveTransferAssets: (parents?: Parents) => { here: () => ExtrinsicConfigBuilder; }; transferAssetsUsingTypeAndThen: () => { here: () => ExtrinsicConfigBuilder; }; }; declare function xTokens(): { transfer: () => ExtrinsicConfigBuilder; transferMultiAsset: (originParachainId: number) => { here: () => ExtrinsicConfigBuilder; X1: () => ExtrinsicConfigBuilder; X2: () => ExtrinsicConfigBuilder; }; transferMultiCurrencies: () => ExtrinsicConfigBuilder; }; declare function xTransfer(): { transfer: () => { here: () => ExtrinsicConfigBuilder; X2: () => ExtrinsicConfigBuilder; }; }; declare function ExtrinsicBuilder(): { eqBalances: typeof eqBalances; xTokens: typeof xTokens; xTransfer: typeof xTransfer; polkadotXcm: typeof polkadotXcm$2; xcmPallet: typeof xcmPallet$1; }; interface SubstrateCallConfigConstructorParams { api: ApiPromise; call: () => Promise<bigint>; } declare class SubstrateCallConfig { readonly api: ApiPromise; readonly call: () => Promise<any>; static is(obj: unknown): obj is SubstrateCallConfig; constructor({ api, call }: SubstrateCallConfigConstructorParams); } type FeeConfigBuilder = ConfigBuilder<SubstrateCallConfig | ContractConfig, FeeConfigBuilderParams>; type ProtocolFeeConfigBuilder = ConfigBuilder<SubstrateQueryConfig | ContractConfig, ProtocolFeeConfigBuilderParams>; interface FeeConfigBuilderParams { address: string; api: ApiPromise; asset: ChainAsset; balance?: AssetAmount; destination: AnyChain; feeAsset: ChainAsset; source: AnyChain; } interface ProtocolFeeConfigBuilderParams extends Omit<FeeConfigBuilderParams, 'api'> { bridgeChainFee: AssetAmount; } interface XcmPaymentFeeProps { isAssetReserveChain: boolean; shouldTransferAssetPrecedeFeeAsset?: boolean; isEcosystemBridge?: boolean; parents?: number; } interface MoonbeamRuntimeXcmConfigAssetType extends Enum { readonly isXcm: boolean; readonly asXcm: StagingXcmV3MultiLocation; readonly type: 'Xcm'; } type GetVersionedAssetId = (params: FeeConfigBuilderParams) => Promise<object> | object; declare function gateway(): { quoteSendTokenFee(): ProtocolFeeConfigBuilder; }; declare function outboundQueueApi(): { calculateFee: () => { mintForeignToken: () => ProtocolFeeConfigBuilder; agentExecute: () => ProtocolFeeConfigBuilder; }; }; declare function xcmPaymentApi(): { fromCurrencyIdToLocations: (options: XcmPaymentFeeProps) => FeeConfigBuilder; fromAssetIdQuery: (options: XcmPaymentFeeProps) => FeeConfigBuilder; fromSourceAccountKey20: (options: XcmPaymentFeeProps) => FeeConfigBuilder; fromSourcePalletInstance: (options: XcmPaymentFeeProps) => FeeConfigBuilder; fromHere: (options: XcmPaymentFeeProps) => FeeConfigBuilder; fromHereAndGeneralIndex: (options: XcmPaymentFeeProps) => FeeConfigBuilder; fromPalletInstanceAndGeneralIndex: (options: XcmPaymentFeeProps) => FeeConfigBuilder; fromHereAndSourceGeneralIndex: (options: XcmPaymentFeeProps) => FeeConfigBuilder; fromGeneralIndex: (options: XcmPaymentFeeProps) => FeeConfigBuilder; fromPalletInstance: (options: XcmPaymentFeeProps) => FeeConfigBuilder; fromPalletInstanceAndAccountKey20: (options: XcmPaymentFeeProps) => FeeConfigBuilder; fromGlobalConsensus: (options: XcmPaymentFeeProps) => FeeConfigBuilder; }; declare function FeeBuilder(): { gateway: typeof gateway; outboundQueueApi: typeof outboundQueueApi; xcmPaymentApi: typeof xcmPaymentApi; }; type SourceChecker = (events: EventRecord[], sourceAddress: string) => { matched: boolean; messageId?: string; event?: EventRecord; }; type DestinationChecker = (events: EventRecord[], messageId?: string) => { matched: boolean; success: boolean; event?: EventRecord; }; interface MonitorEventReturn { xcmPallet: () => { messageQueue: () => EventMonitoringConfig$1; }; polkadotXcm: () => { messageQueue: () => EventMonitoringConfig$1; mixedQueue: () => EventMonitoringConfig$1; xcmpQueue: () => EventMonitoringConfig$1; }; xTokens: () => { messageQueue: () => EventMonitoringConfig$1; ethereumXcm: () => EventMonitoringConfig$1; }; bridgeMessages: () => { bridgeMessages: () => EventMonitoringConfig$1; }; } interface EventMonitoringConfig$1 { checkSource: SourceChecker; checkDestination: DestinationChecker; } declare function monitorEvent(): MonitorEventReturn; declare function MonitoringBuilder(): { monitorEvent: typeof monitorEvent; }; interface MonitoringBuilderConfig { eventMonitoring: EventMonitoringConfig; } interface EventMonitoringConfig { checkSource: SourceChecker; checkDestination: DestinationChecker; } type SnowbridgeFunctions = 'sendToken'; interface SnowbridgeFunctionArgs { tokenAddress: string; destinationAddress: string; destinationParaId: number; amount: bigint; bridgeFeeAmount: bigint; bridgeChainFee: bigint; requiresApproval: boolean; value: bigint; } interface SnowbridgeConfigConstructorParams { args: SnowbridgeFunctionArgs; func: SnowbridgeFunctions; } declare class SnowbridgeConfig { readonly args: SnowbridgeFunctionArgs; readonly func: SnowbridgeFunctions; readonly provider = Provider.Snowbridge; static is(obj: unknown): obj is SnowbridgeConfig; constructor({ args, func }: SnowbridgeConfigConstructorParams); } declare const GATEWAY_ABI: readonly [{ readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "beefyClient"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "agentExecutor"; readonly type: "address"; }, { readonly internalType: "ParaID"; readonly name: "bridgeHubParaID"; readonly type: "uint32"; }, { readonly internalType: "bytes32"; readonly name: "bridgeHubAgentID"; readonly type: "bytes32"; }, { readonly internalType: "uint8"; readonly name: "foreignTokenDecimals"; readonly type: "uint8"; }, { readonly internalType: "uint128"; readonly name: "maxDestinationFee"; readonly type: "uint128"; }]; readonly stateMutability: "nonpayable"; readonly type: "constructor"; }, { readonly inputs: readonly []; readonly name: "AgentAlreadyCreated"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "AgentDoesNotExist"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "CantSetMiddlewareToSameAddress"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "CantSetMiddlewareToZeroAddress"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ChannelAlreadyCreated"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ChannelDoesNotExist"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "Disabled"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "epoch"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "eraIndex"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "tokenAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "totalPointsToken"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "totalTokensInflated"; readonly type: "uint256"; }, { readonly internalType: "bytes32"; readonly name: "rewardsRoot"; readonly type: "bytes32"; }, { readonly internalType: "bytes"; readonly name: "errorBytes"; readonly type: "bytes"; }]; readonly name: "EUnableToProcessRewardsB"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "epoch"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "eraIndex"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "tokenAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "totalPointsToken"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "totalTokensInflated"; readonly type: "uint256"; }, { readonly internalType: "bytes32"; readonly name: "rewardsRoot"; readonly type: "bytes32"; }, { readonly internalType: "string"; readonly name: "errorString"; readonly type: "string"; }]; readonly name: "EUnableToProcessRewardsS"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "FeePaymentToLow"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidAgentExecutionPayload"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidChannelUpdate"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidCodeHash"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidConstructorParams"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidContract"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidNonce"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidProof"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "MiddlewareNotSet"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NativeTransferFailed"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NotEnoughGas"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "Operators__OperatorsKeysCannotBeEmpty"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "Operators__OperatorsLengthTooLong"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "x"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "y"; readonly type: "uint256"; }]; readonly name: "PRBMath_MulDiv18_Overflow"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "x"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "y"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "denominator"; readonly type: "uint256"; }]; readonly name: "PRBMath_MulDiv_Overflow"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "x"; readonly type: "uint256"; }]; readonly name: "PRBMath_UD60x18_Convert_Overflow"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "UD60x18"; readonly name: "x"; readonly type: "uint256"; }]; readonly name: "PRBMath_UD60x18_Exp2_InputTooBig"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "UD60x18"; readonly name: "x"; readonly type: "uint256"; }]; readonly name: "PRBMath_UD60x18_Log_InputTooSmall"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "TokenNotRegistered"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "Unauthorized"; readonly type: "error"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "bytes32"; readonly name: "agentID"; readonly type: "bytes32"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "agent"; readonly type: "address"; }]; readonly name: "AgentCreated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "agentID"; readonly type: "bytes32"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "recipient"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "AgentFundsWithdrawn"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "ChannelID"; readonly name: "channelID"; readonly type: "bytes32"; }]; readonly name: "ChannelCreated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "ChannelID"; readonly name: "channelID"; readonly type: "bytes32"; }]; readonly name: "ChannelUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "tokenID"; readonly type: "bytes32"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "token"; readonly type: "address"; }]; readonly name: "ForeignTokenRegistered"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "ChannelID"; readonly name: "channelID"; readonly type: "bytes32"; }, { readonly indexed: false; readonly internalType: "uint64"; readonly name: "nonce"; readonly type: "uint64"; }, { readonly indexed: true; readonly internalType: "bytes32"; readonly name: "messageID"; readonly type: "bytes32"; }, { readonly indexed: false; readonly internalType: "bool"; readonly name: "success"; readonly type: "bool"; }]; readonly name: "InboundMessageDispatched"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousMiddleware"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "newMiddleware"; readonly type: "address"; }]; readonly name: "MiddlewareChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "enum OperatingMode"; readonly name: "mode"; readonly type: "uint8"; }]; readonly name: "OperatingModeChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "uint256"; readonly name: "validatorsCount"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "bytes"; readonly name: "payload"; readonly type: "bytes"; }]; readonly name: "OperatorsDataCreated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "ChannelID"; readonly name: "channelID"; readonly type: "bytes32"; }, { readonly indexed: false; readonly internalType: "uint64"; readonly name: "nonce"; readonly type: "uint64"; }, { readonly indexed: true; readonly internalType: "bytes32"; readonly name: "messageID"; readonly type: "bytes32"; }, { readonly indexed: false; readonly internalType: "bytes"; readonly name: "payload"; readonly type: "bytes"; }]; readonly name: "OutboundMessageAccepted"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "OwnershipTransferred"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly []; readonly name: "PricingParametersChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "token"; readonly type: "address"; }]; readonly name: "TokenRegistrationSent"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "token"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "ParaID"; readonly name: "destinationChain"; readonly type: "uint32"; }, { readonly components: readonly [{ readonly internalType: "enum Kind"; readonly name: "kind"; readonly type: "uint8"; }, { readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly indexed: false; readonly internalType: "struct MultiAddress"; readonly name: "destinationAddress"; readonly type: "tuple"; }, { readonly indexed: false; readonly internalType: "uint128"; readonly name: "amount"; readonly type: "uint128"; }]; readonly name: "TokenSent"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly []; readonly name: "TokenTransferFeesChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "operatorKey"; readonly type: "bytes32"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "slashFranction"; readonly type: "uint256"; }, { readonly indexed: true; readonly internalType: "uint256"; readonly name: "epoch"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "bytes"; readonly name: "error"; readonly type: "bytes"; }]; readonly name: "UnableToProcessIndividualSlashB"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "operatorKey"; readonly type: "bytes32"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "slashFranction"; readonly type: "uint256"; }, { readonly indexed: true; readonly internalType: "uint256"; readonly name: "epoch"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "string"; readonly name: "error"; readonly type: "string"; }]; readonly name: "UnableToProcessIndividualSlashS"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "bytes"; readonly name: "error"; readonly type: "bytes"; }]; readonly name: "UnableToProcessRewardsMessageB"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "string"; readonly name: "error"; readonly type: "string"; }]; readonly name: "UnableToProcessRewardsMessageS"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "bytes"; readonly name: "error"; readonly type: "bytes"; }]; readonly name: "UnableToProcessSlashMessageB"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "string"; readonly name: "error"; readonly type: "string"; }]; readonly name: "UnableToProcessSlashMessageS"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "implementation"; readonly type: "address"; }]; readonly name: "Upgraded"; readonly type: "event"; }, { readonly inputs: readonly []; readonly name: "AGENT_EXECUTOR"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "BEEFY_CLIENT"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "agentExecute"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "agentID"; readonly type: "bytes32"; }]; readonly name: "agentOf"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "ChannelID"; readonly name: "channelID"; readonly type: "bytes32"; }]; readonly name: "channelNoncesOf"; readonly outputs: readonly [{ readonly internalType: "uint64"; readonly name: ""; readonly type: "uint64"; }, { readonly internalType: "uint64"; readonly name: ""; readonly type: "uint64"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "ChannelID"; readonly name: "channelID"; readonly type: "bytes32"; }]; readonly name: "channelOperatingModeOf"; readonly outputs: readonly [{ readonly internalType: "enum OperatingMode"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "createAgent"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "createChannel"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "implementation"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "initialize"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "token"; readonly type: "address"; }]; readonly name: "isTokenRegistered"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "mintForeignToken"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "operatingMode"; readonly outputs: readonly [{ readonly internalType: "enum OperatingMode"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "pricingParameters"; readonly outputs: readonly [{ readonly internalType: "UD60x18"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "uint128"; readonly name: ""; readonly type: "uint128"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "token"; readonly type: "address"; }]; readonly name: "queryForeignTokenID"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "quoteRegisterTokenFee"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "token"; readonly type: "address"; }, { readonly internalType: "ParaID"; readonly name: "destinationChain"; readonly type: "uint32"; }, { readonly internalType: "uint128"; readonly name: "destinationFee"; readonly type: "uint128"; }]; readonly name: "quoteSendTokenFee"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "registerForeignToken"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "token"; readonly type: "address"; }]; readonly name: "registerToken"; readonly outputs: readonly []; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "reportSlashes"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "s_middleware"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32[]"; readonly name: "data"; readonly type: "bytes32[]"; }, { readonly internalType: "uint48"; readonly name: "epoch"; readonly type: "uint48"; }]; readonly name: "sendOperatorsData"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "sendRewards"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "token"; readonly type: "address"; }, { readonly internalType: "ParaID"; readonly name: "destinationChain"; readonly type: "uint32"; }, { readonly components: readonly [{ readonly internalType: "enum Kind"; readonly name: "kind"; readonly type: "uint8"; }, { readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly internalType: "struct MultiAddress"; readonly name: "destinationAddress"; readonly type: "tuple"; }, { readonly internalType: "uint128"; readonly name: "destinationFee"; readonly type: "uint128"; }, { readonly internalType: "uint128"; readonly name: "amount"; readonly type: "uint128"; }]; readonly name: "sendToken"; readonly outputs: readonly []; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "middleware"; readonly type: "address"; }]; readonly name: "setMiddleware"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "setOperatingMode"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "setPricingParameters"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "setTokenTransferFees"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "ChannelID"; readonly name: "channelID"; readonly type: "bytes32"; }, { readonly internalType: "uint64"; readonly name: "nonce"; readonly type: "uint64"; }, { readonly internalType: "enum Command"; readonly name: "command"; readonly type: "uint8"; }, { readonly internalType: "bytes"; readonly name: "params"; readonly type: "bytes"; }, { readonly internalType: "uint64"; readonly name: "maxDispatchGas"; readonly type: "uint64"; }, { readonly internalType: "uint256"; readonly name: "maxFeePerGas"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "reward"; readonly type: "uint256"; }, { readonly internalType: "bytes32"; readonly name: "id"; readonly type: "bytes32"; }]; readonly internalType: "struct InboundMessage"; readonly name: "message"; readonly type: "tuple"; }, { readonly internalType: "bytes32[]"; readonly name: "leafProof"; readonly type: "bytes32[]"; }, { readonly components: readonly [{ readonly components: readonly [{ readonly internalType: "uint8"; readonly name: "version"; readonly type: "uint8"; }, { readonly internalType: "uint32"; readonly name: "parentNumber"; readonly type: "uint32"; }, { readonly internalType: "bytes32"; readonly name: "parentHash"; readonly type: "bytes32"; }, { readonly internalType: "uint64"; readonly name: "nextAuthoritySetID"; readonly type: "uint64"; }, { readonly internalType: "uint32"; readonly name: "nextAuthoritySetLen"; readonly type: "uint32"; }, { readonly internalType: "bytes32"; readonly name: "nextAuthoritySetRoot"; readonly type: "bytes32"; }]; readonly internalType: "struct Verification.MMRLeafPartial"; readonly name: "leafPartial"; readonly type: "tuple"; }, { readonly internalType: "bytes32[]"; readonly name: "leafProof"; readonly type: "bytes32[]"; }, { readonly internalType: "bytes32"; readonly name: "parachainHeadsRoot"; readonly type: "bytes32"; }, { readonly internalType: "uint256"; readonly name: "leafProofOrder"; readonly type: "uint256"; }]; readonly internalType: "struct Verification.Proof"; readonly name: "headerProof"; readonly type: "tuple"; }]; readonly name: "submitV1"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "tokenID"; readonly type: "bytes32"; }]; readonly name: "tokenAddressOf"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address";