import * as aptos from 'aptos';
import { HexString } from 'aptos';
import { Environment, Stage } from '@layerzerolabs/lz-definitions';
import BN from 'bn.js';
import { types } from '@layerzerolabs/lz-movevm-sdk-v2';

/**
 * Interface representing the channel type.
 */
interface ChannelType {
    /**
     * The outbound nonce.
     */
    outbound_nonce: string;
    /**
     * The inbound nonce.
     */
    inbound_nonce: string;
    /**
     * The payload hashes.
     */
    payload_hashs: {
        handle: string;
    };
}
/**
 * Class representing a channel.
 */
declare class Channel {
    private sdk;
    /**
     * The module name.
     */
    readonly module: string;
    /**
     * Creates an instance of the Channel class.
     *
     * @param {SDK} sdk - The SDK instance.
     */
    constructor(sdk: SDK);
    /**
     * Gets outbound events.
     *
     * @param {bigint} start - The start index.
     * @param {number} limit - The limit of events to retrieve.
     * @returns {Promise<aptos.Types.Event[]>} A promise that resolves to an array of events.
     */
    getOutboundEvents(start: bigint, limit: number): Promise<aptos.Types.Event[]>;
    /**
     * Gets inbound events.
     *
     * @param {bigint} start - The start index.
     * @param {number} limit - The limit of events to retrieve.
     * @returns {Promise<aptos.Types.Event[]>} A promise that resolves to an array of events.
     */
    getInboundEvents(start: bigint, limit: number): Promise<aptos.Types.Event[]>;
    /**
     * Gets receive events.
     *
     * @param {bigint} start - The start index.
     * @param {number} limit - The limit of events to retrieve.
     * @returns {Promise<aptos.Types.Event[]>} A promise that resolves to an array of events.
     */
    getReceiveEvents(start: bigint, limit: number): Promise<aptos.Types.Event[]>;
    /**
     * Gets the channel state.
     *
     * @param {aptos.MaybeHexString} uaAddress - The user address.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Bytes} remoteAddress - The remote address.
     * @param {Object} [query] - The query parameters.
     * @param {bigint | number} [query.ledgerVersion] - The ledger version.
     * @returns {Promise<ChannelType>} A promise that resolves to the channel state.
     */
    getChannelState(uaAddress: aptos.MaybeHexString, remoteChainId: aptos.BCS.Uint16, remoteAddress: aptos.BCS.Bytes, query?: {
        ledgerVersion?: bigint | number;
    }): Promise<ChannelType>;
    /**
     * Gets the outbound nonce.
     *
     * @param {aptos.MaybeHexString} uaAddress - The user address.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Bytes} remoteAddress - The remote address.
     * @param {Object} [query] - The query parameters.
     * @param {bigint | number} [query.ledgerVersion] - The ledger version.
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the outbound nonce.
     */
    getOutboundNonce(uaAddress: aptos.MaybeHexString, remoteChainId: aptos.BCS.Uint16, remoteAddress: aptos.BCS.Bytes, query?: {
        ledgerVersion?: bigint | number;
    }): Promise<aptos.BCS.Uint64>;
    /**
     * Gets the inbound nonce.
     *
     * @param {aptos.MaybeHexString} uaAddress - The user address.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Bytes} remoteAddress - The remote address.
     * @param {Object} [query] - The query parameters.
     * @param {bigint | number} [query.ledgerVersion] - The ledger version.
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the inbound nonce.
     */
    getInboundNonce(uaAddress: aptos.MaybeHexString, remoteChainId: aptos.BCS.Uint16, remoteAddress: aptos.BCS.Bytes, query?: {
        ledgerVersion?: bigint | number;
    }): Promise<aptos.BCS.Uint64>;
    /**
     * Gets the payload hash.
     *
     * @param {aptos.MaybeHexString} uaAddress - The user address.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Bytes} remoteAddress - The remote address.
     * @param {aptos.BCS.Uint64} nonce - The nonce.
     * @param {Object} [query] - The query parameters.
     * @param {bigint | number} [query.ledgerVersion] - The ledger version.
     * @returns {Promise<string>} A promise that resolves to the payload hash.
     */
    getPayloadHash(uaAddress: aptos.MaybeHexString, remoteChainId: aptos.BCS.Uint16, remoteAddress: aptos.BCS.Bytes, nonce: aptos.BCS.Uint64, query?: {
        ledgerVersion?: bigint | number;
    }): Promise<string>;
    /**
     * Checks if the proof is delivered.
     *
     * @param {aptos.MaybeHexString} uaAddress - The user address.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Bytes} remoteAddress - The remote address.
     * @param {aptos.BCS.Uint64} nonce - The nonce.
     * @param {Object} [query] - The query parameters.
     * @param {bigint | number} [query.ledgerVersion] - The ledger version.
     * @returns {Promise<boolean>} A promise that resolves to true if the proof is delivered, false otherwise.
     */
    isProofDelivered(uaAddress: aptos.MaybeHexString, remoteChainId: aptos.BCS.Uint16, remoteAddress: aptos.BCS.Bytes, nonce: aptos.BCS.Uint64, query?: {
        ledgerVersion?: bigint | number;
    }): Promise<boolean>;
}

/**
 * Consistent with aptos_std::type_info::TypeInfo
 */
interface TypeInfo {
    /**
     * The account address.
     */
    account_address: string;
    /**
     * The module name.
     */
    module_name: string;
    /**
     * The struct name.
     */
    struct_name: string;
}
/**
 * Extends {@link TypeInfo}
 */
interface TypeInfoEx extends TypeInfo {
    /**
     * A value in `account_address::module_name::struct_name` format.
     */
    type: string;
}
/**
 * Interface representing coin information.
 */
interface CoinInfo {
    /**
     * The name of the coin.
     */
    name: string;
    /**
     * The symbol of the coin.
     */
    symbol: string;
    /**
     * The number of decimals the coin uses.
     */
    decimals: number;
    /**
     * The total supply of the coin.
     */
    supply: bigint;
}
/**
 * Extends {@link CoinInfo}
 */
interface CoinInfoEx extends CoinInfo {
    /**
     * The type of the coin.
     */
    type: string;
}
/**
 * Interface representing coin information resource.
 */
interface CoinInfoResource {
    /**
     * The type of the resource.
     */
    type: string;
    /**
     * The data of the resource.
     */
    data: {
        /**
         * The number of decimals the coin uses.
         */
        decimals: number;
        /**
         * The name of the coin.
         */
        name: string;
        /**
         * The supply of the coin.
         */
        supply: {
            vec: [{
                integer: {
                    vec: [{
                        value: string;
                    }];
                };
            }];
        };
        /**
         * The symbol of the coin.
         */
        symbol: string;
    };
}
/**
 * Interface representing ULN configuration type.
 */
interface UlnConfigType {
    /**
     * The number of inbound confirmations.
     */
    inbound_confirmations: aptos.BCS.Uint64 | aptos.BCS.Uint32;
    /**
     * The oracle address.
     */
    oracle: string;
    /**
     * The number of outbound confirmations.
     */
    outbound_confirmations: aptos.BCS.Uint64 | aptos.BCS.Uint32;
    /**
     * The relayer address.
     */
    relayer: string;
}
/**
 * Interface representing a packet.
 */
interface Packet {
    /**
     * The nonce of the packet.
     */
    nonce: string | aptos.BCS.Uint64;
    /**
     * The source chain ID.
     */
    src_chain_id: string | aptos.BCS.Uint16;
    /**
     * The source address.
     */
    src_address: Buffer;
    /**
     * The destination chain ID.
     */
    dst_chain_id: string | aptos.BCS.Uint16;
    /**
     * The destination address.
     */
    dst_address: Buffer;
    /**
     * The payload of the packet.
     */
    payload: Buffer;
}
/**
 * Interface representing ULN signer fee.
 */
interface UlnSignerFee {
    /**
     * The base fee.
     */
    base_fee: aptos.BCS.Uint64;
    /**
     * The fee per byte.
     */
    fee_per_byte: aptos.BCS.Uint64;
}
/**
 * Interface representing the ULN configuration.
 */
interface UlnConfig$1 {
    /**
     * The number of confirmations.
     */
    confirmations: aptos.BCS.Uint64;
    /**
     * The optional DVN threshold.
     */
    optionalDVNThreshold: aptos.BCS.Uint32;
    /**
     * The required DVNs.
     */
    requiredDVNs: string[];
    /**
     * The optional DVNs.
     */
    optionalDVNs: string[];
    /**
     * Whether to use the default for confirmations.
     */
    useDefaultForConfirmations: boolean;
    /**
     * Whether to use the default for required DVNs.
     */
    useDefaultForRequiredDVNs: boolean;
    /**
     * Whether to use the default for optional DVNs.
     */
    useDefaultForOptionalDVNs: boolean;
}
/**
 * Use to parse the ULN configuration response from the contract method,
 * Everyone who needs to use the ULN configuration should use @see UlnConfig instead of this.
 */
interface UlnConfigResponse {
    confirmations: bigint;
    optional_dvn_threshold: number;
    required_dvns: string[];
    optional_dvns: string[];
    use_default_for_confirmations: boolean;
    use_default_for_required_dvns: boolean;
    use_default_for_optional_dvns: boolean;
}
/**
 * Interface representing the executor configuration.
 */
interface ExecutorConfig$1 {
    /**
     * The maximum message size.
     */
    maxMessageSize: aptos.BCS.Uint32;
    /**
     * The executor address.
     */
    executorAddress: string;
}
/**
 * Use to parse the Executor configuration response from the contract method,
 * Everyone who needs to use the Executor configuration should use @see ExecutorConfig instead of this.
 */
interface ExecutorConfigResponse {
    max_message_size: number;
    executor_address: string;
}

type index$3_CoinInfo = CoinInfo;
  type index$3_CoinInfoEx = CoinInfoEx;
  type index$3_CoinInfoResource = CoinInfoResource;
  type index$3_ExecutorConfigResponse = ExecutorConfigResponse;
  type index$3_Packet = Packet;
  type index$3_TypeInfo = TypeInfo;
  type index$3_TypeInfoEx = TypeInfoEx;
  type index$3_UlnConfigResponse = UlnConfigResponse;
  type index$3_UlnConfigType = UlnConfigType;
  type index$3_UlnSignerFee = UlnSignerFee;
  declare namespace index$3 {
  export type { index$3_CoinInfo as CoinInfo, index$3_CoinInfoEx as CoinInfoEx, index$3_CoinInfoResource as CoinInfoResource, ExecutorConfig$1 as ExecutorConfig, index$3_ExecutorConfigResponse as ExecutorConfigResponse, index$3_Packet as Packet, index$3_TypeInfo as TypeInfo, index$3_TypeInfoEx as TypeInfoEx, UlnConfig$1 as UlnConfig, index$3_UlnConfigResponse as UlnConfigResponse, index$3_UlnConfigType as UlnConfigType, index$3_UlnSignerFee as UlnSignerFee };
}

/**
 * Class representing an endpoint.
 */
declare class Endpoint {
    private sdk;
    /**
     * The module name.
     */
    readonly module: string;
    /**
     * The module name with namespace.
     */
    readonly moduleName: string;
    /**
     * The view module name.
     */
    readonly viewModule: string;
    /**
     * The view module name for uln301.
     */
    readonly viewUln301Module: string;
    /**
     * Creates an instance of the Endpoint class.
     *
     * @param {SDK} sdk - The SDK instance.
     */
    constructor(sdk: SDK);
    /**
     * Initializes the endpoint.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint16} localChainId - The local chain ID.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    initialize(signer: aptos.AptosAccount, localChainId: aptos.BCS.Uint16): Promise<aptos.Types.Transaction>;
    /**
     * Gets the local chain ID.
     *
     * @returns {Promise<aptos.BCS.Uint64 | undefined>} A promise that resolves to the local chain ID or undefined if not found.
     */
    getLocalChainId(): Promise<aptos.BCS.Uint64 | undefined>;
    /**
     * Gets the UA type information.
     *
     * @param {aptos.MaybeHexString} uaAddress - The UA address.
     * @returns {Promise<TypeInfoEx>} A promise that resolves to the type information.
     */
    getUATypeInfo(uaAddress: aptos.MaybeHexString): Promise<TypeInfoEx>;
    /**
     * Gets the oracle fee.
     *
     * @param {aptos.MaybeHexString} oracleAddr - The oracle address.
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the oracle fee.
     */
    getOracleFee(oracleAddr: aptos.MaybeHexString, dstChainId: aptos.BCS.Uint16): Promise<aptos.BCS.Uint64>;
    /**
     * Gets the register events.
     *
     * @param {bigint} start - The start index.
     * @param {number} limit - The limit of events to fetch.
     * @returns {Promise<aptos.Types.Event[]>} A promise that resolves to an array of events.
     */
    getRegisterEvents(start: bigint, limit: number): Promise<aptos.Types.Event[]>;
    /**
     * Quotes the fee.
     *
     * @param {aptos.MaybeHexString} uaAddress - The UA address.
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Bytes} adapterParams - The adapter parameters.
     * @param {number} payloadSize - The payload size.
     * @param {Object} [query] - The query parameters.
     * @param {bigint | number} [query.ledgerVersion] - The ledger version.
     * @param {aptos.BCS.Bytes} [msglibParams] - The msglib parameters.
     * @returns {Promise<{ nativeFee: aptos.BCS.Uint64; zroFee: aptos.BCS.Uint64 }>} A promise that resolves to the quoted fee.
     */
    quoteFee(uaAddress: aptos.MaybeHexString, dstChainId: aptos.BCS.Uint16, adapterParams: aptos.BCS.Bytes, payloadSize: number, msglibParams?: aptos.BCS.Bytes, payInZro?: boolean, query?: {
        ledgerVersion?: bigint | number;
    }): Promise<{
        nativeFee: aptos.BCS.Uint64;
        zroFee: aptos.BCS.Uint64;
    }>;
    /**
     * Checks if a message is verifiable.
     *
     * @param {string} packetHeaderBytes - The packet header bytes.
     * @param {string} payloadHash - The payload hash.
     * @returns {Promise<aptos.BCS.Uint8>} A promise that resolves to the verifiable state.
     */
    verifiable(packetHeaderBytes: string, payloadHash: string): Promise<aptos.BCS.Uint8>;
    /**
     * Checks if a message is executable.
     *
     * @param {aptos.BCS.Uint32} srcEid - The source endpoint ID.
     * @param {aptos.BCS.Bytes} sender - The sender.
     * @param {aptos.BCS.Uint64} nonce - The nonce.
     * @param {aptos.MaybeHexString} receiver - The receiver.
     * @returns {Promise<aptos.BCS.Uint8>} A promise that resolves to the executable state.
     */
    executable(srcEid: aptos.BCS.Uint32, sender: aptos.BCS.Bytes, nonce: aptos.BCS.Uint64, receiver: aptos.MaybeHexString): Promise<aptos.BCS.Uint8>;
    /**
     * Gets the send msglib.
     *
     * @param {aptos.MaybeHexString} uaAddress - The UA address.
     * @param {aptos.BCS.Uint16} chainId - The chain ID.
     * @returns {Promise<[aptos.BCS.Uint64, aptos.BCS.Uint8]>} A promise that resolves to the send msglib.
     */
    getSendMsglib(uaAddress: aptos.MaybeHexString, chainId: aptos.BCS.Uint16): Promise<[aptos.BCS.Uint64, aptos.BCS.Uint8]>;
    /**
     * Gets the receive msglib.
     *
     * @param {aptos.MaybeHexString} uaAddress - The UA address.
     * @param {aptos.BCS.Uint16} chainId - The chain ID.
     * @returns {Promise<[aptos.BCS.Uint64, aptos.BCS.Uint8]>} A promise that resolves to the receive msglib.
     */
    getReceiveMsglib(uaAddress: aptos.MaybeHexString, chainId: aptos.BCS.Uint16): Promise<[aptos.BCS.Uint64, aptos.BCS.Uint8]>;
    /**
     * Creates a payload for registering an executor.
     *
     * @param {string} executorType - The executor type.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    registerExecutorPayload(executorType: string): aptos.Types.EntryFunctionPayload;
    /**
     * Registers an executor.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} executorType - The executor type.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    registerExecutor(signer: aptos.AptosAccount, executorType: string): Promise<aptos.Types.Transaction>;
    /**
     * Gets the executor capability.
     *
     * @param {string} [version='1'] - The version.
     * @returns {Promise<string | undefined>} A promise that resolves to the executor capability or undefined if not found.
     */
    getExecutorCap(version?: string): Promise<string | undefined>;
}

/**
 * Interface representing the fee configuration.
 */
interface Fee {
    /**
     * The airdrop amount cap.
     */
    airdropAmtCap: aptos.BCS.Uint64;
    /**
     * The price ratio.
     */
    priceRatio: aptos.BCS.Uint64;
    /**
     * The gas price.
     */
    gasPrice: aptos.BCS.Uint64;
}
/**
 * Class representing an Executor.
 */
declare class Executor {
    private sdk;
    readonly module: string;
    readonly moduleName: string;
    readonly type: string;
    /**
     * Creates an instance of the Executor class.
     *
     * @param {SDK} sdk - The SDK instance.
     */
    constructor(sdk: SDK);
    /**
     * Creates the payload for setting the default adapter parameters.
     *
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Bytes} adapterParams - The adapter parameters.
     * @returns {aptos.Types.EntryFunctionPayload} The payload for setting the default adapter parameters.
     */
    setDefaultAdapterParamsPayload(dstChainId: aptos.BCS.Uint16, adapterParams: aptos.BCS.Bytes): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the default adapter parameters.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Bytes} adapterParams - The adapter parameters.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setDefaultAdapterParams(signer: aptos.AptosAccount, dstChainId: aptos.BCS.Uint16, adapterParams: aptos.BCS.Bytes): Promise<aptos.Types.Transaction>;
    /**
     * Gets the default adapter parameters for a given chain ID.
     *
     * @param {aptos.BCS.Uint16} chainId - The chain ID.
     * @returns {Promise<aptos.BCS.Bytes>} A promise that resolves to the default adapter parameters.
     * @throws {Error} If the LayerZero account is undefined.
     */
    getDefaultAdapterParams(chainId: aptos.BCS.Uint16): Promise<aptos.BCS.Bytes>;
    /**
     * Checks if an address is registered.
     *
     * @param {aptos.MaybeHexString} address - The address to check.
     * @returns {Promise<boolean>} A promise that resolves to true if the address is registered, false otherwise.
     */
    isRegistered(address: aptos.MaybeHexString): Promise<boolean>;
    /**
     * Creates the payload for registering an executor.
     *
     * @returns {aptos.Types.EntryFunctionPayload} The payload for registering an executor.
     */
    registerPayload(): aptos.Types.EntryFunctionPayload;
    /**
     * Registers an executor.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    register(signer: aptos.AptosAccount): Promise<aptos.Types.Transaction>;
    /**
     * Creates the payload for setting the fee.
     *
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {Fee} config - The fee configuration.
     * @returns {aptos.Types.EntryFunctionPayload} The payload for setting the fee.
     */
    setFeePayload(dstChainId: aptos.BCS.Uint16, config: Fee): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the fee.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {Fee} config - The fee configuration.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setFee(signer: aptos.AptosAccount, dstChainId: aptos.BCS.Uint16, config: Fee): Promise<aptos.Types.Transaction>;
    /**
     * Gets the fee configuration for a given executor and chain ID.
     *
     * @param {aptos.MaybeHexString} executor - The executor address.
     * @param {aptos.BCS.Uint16} chainId - The chain ID.
     * @param {object} [query] - The query parameters.
     * @param {bigint | number} [query.ledgerVersion] - The ledger version.
     * @returns {Promise<Fee>} A promise that resolves to the fee configuration.
     * @throws {Error} If an error occurs while fetching the fee configuration.
     */
    getFee(executor: aptos.MaybeHexString, chainId: aptos.BCS.Uint16, query?: {
        ledgerVersion?: bigint | number;
    }): Promise<Fee>;
    /**
     * Creates the payload for airdropping tokens.
     *
     * @param {aptos.BCS.Uint16} srcChainId - The source chain ID.
     * @param {aptos.BCS.Bytes} guid - The GUID.
     * @param {aptos.MaybeHexString} receiver - The receiver address.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} amount - The amount to airdrop.
     * @returns {aptos.Types.EntryFunctionPayload} The payload for airdropping tokens.
     */
    airdropPayload(srcChainId: aptos.BCS.Uint16, guid: aptos.BCS.Bytes, receiver: aptos.MaybeHexString, amount: aptos.BCS.Uint64 | aptos.BCS.Uint32): aptos.Types.EntryFunctionPayload;
    /**
     * Airdrops tokens.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint16} srcChainId - The source chain ID.
     * @param {aptos.BCS.Bytes} guid - The GUID.
     * @param {aptos.MaybeHexString} receiver - The receiver address.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} amount - The amount to airdrop.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    airdrop(signer: aptos.AptosAccount, srcChainId: aptos.BCS.Uint16, guid: aptos.BCS.Bytes, receiver: aptos.MaybeHexString, amount: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.Types.Transaction>;
    /**
     * Checks if a GUID has been airdropped to a receiver.
     *
     * @param {aptos.BCS.Bytes} guid - The GUID.
     * @param {aptos.MaybeHexString} receiver - The receiver address.
     * @returns {Promise<boolean>} A promise that resolves to true if the GUID has been airdropped, false otherwise.
     * @throws {Error} If the LayerZero account is undefined.
     */
    isAirdropped(guid: aptos.BCS.Bytes, receiver: aptos.MaybeHexString): Promise<boolean>;
    /**
     * Quotes the fee for a given executor, destination chain ID, and adapter parameters.
     *
     * @param {aptos.MaybeHexString} executor - The executor address.
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Bytes} adapterParams - The adapter parameters.
     * @param {object} [query] - The query parameters.
     * @param {bigint | number} [query.ledgerVersion] - The ledger version.
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the quoted fee.
     */
    quoteFee(executor: aptos.MaybeHexString, dstChainId: aptos.BCS.Uint16, adapterParams: aptos.BCS.Bytes, query?: {
        ledgerVersion?: bigint | number;
    }): Promise<aptos.BCS.Uint64>;
    /**
     * Builds the default adapter parameters.
     *
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} uaGas - The user application gas.
     * @returns {aptos.BCS.Bytes} The default adapter parameters.
     */
    buildDefaultAdapterParams(uaGas: aptos.BCS.Uint64 | aptos.BCS.Uint32): aptos.BCS.Bytes;
    /**
     * Builds the airdrop adapter parameters.
     *
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} uaGas - The user application gas.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} airdropAmount - The airdrop amount.
     * @param {string} airdropAddress - The airdrop address.
     * @returns {aptos.BCS.Bytes} The airdrop adapter parameters.
     */
    buildAirdropAdapterParams(uaGas: aptos.BCS.Uint64 | aptos.BCS.Uint32, airdropAmount: aptos.BCS.Uint64 | aptos.BCS.Uint32, airdropAddress: string): aptos.BCS.Bytes;
    /**
     * Decodes the adapter parameters.
     *
     * txType 1
     * bytes  [2       8       ]
     * fields [txType  extraGas]
     * txType 2
     * bytes  [2       8         8           unfixed       ]
     * fields [txType  extraGas  airdropAmt  airdropAddress]
     *
     * @param {aptos.BCS.Bytes} adapterParams - The adapter parameters.
     * @returns {[aptos.BCS.Uint16, aptos.BCS.Uint64, aptos.BCS.Uint64, string]} The decoded adapter parameters.
     * @throws {Error} If the adapter parameters are invalid.
     */
    decodeAdapterParams(adapterParams: aptos.BCS.Bytes): [aptos.BCS.Uint16, aptos.BCS.Uint64, aptos.BCS.Uint64, string];
    /**
     * Rebuilds a compiled script to query type arguments for the lz_receive function.
     *
     * @param {Packet} packet - The packet.
     * @returns {Promise<string>} A promise that resolves to the rebuilt script bytecode.
     * @throws {Error} If the executor_ext account is undefined.
     */
    rebuildTypeArgsScript(packet: Packet): Promise<string>;
    /**
     * Executes compiled script on chain to get type arguments for lz_receive function.
     *
     * @param {Packet} packet - The packet.
     * @returns {Promise<string[]>} A promise that resolves to the type arguments.
     * @throws {Error} If the sdk accounts layerzero_apps_pubkey is undefined.
     */
    getLzReceiveTypeArguments(packet: Packet): Promise<string[]>;
    /**
     * Gets lz_receive_types arguments by view function (tagged with #[view]).
     * 1. Tries UA::${module}::lz_receive_types, if failed, then
     * 2. Tries UA::lz_receive::lz_receive_types by convention.
     *
     * @param {Packet} packet - The packet.
     * @param {string} [ledger_version] - The ledger version.
     * @returns {Promise<[string[], TypeInfoEx]>} A promise that resolves to the type arguments and TypeInfoEx.
     * @throws {Error} If the lz_receive_types arguments cannot be retrieved.
     */
    getLzReceiveTypeArgumentsView(packet: Packet, ledger_version?: string): Promise<[string[], TypeInfoEx]>;
    /**
     * Gets the payload for the lz_receive function.
     *
     * @param {string[]} type_arguments - The type arguments.
     * @param {Packet} packet - The packet.
     * @param {TypeInfo} [uaTypeInfo] - The TypeInfo.
     * @returns {Promise<aptos.Types.EntryFunctionPayload>} A promise that resolves to the payload.
     */
    getLzReceivePayload(type_arguments: string[], packet: Packet, uaTypeInfo?: TypeInfo): Promise<aptos.Types.EntryFunctionPayload>;
    /**
     * Executes the lz_receive function.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string[]} type_arguments - The type arguments.
     * @param {Packet} packet - The packet.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    lzReceive(signer: aptos.AptosAccount, type_arguments: string[], packet: Packet): Promise<aptos.Types.Transaction>;
    /**
     * Auto-detects lz_receive_types and calls lz_receive.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {Packet} packet - The packet.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    lzReceiveNew(signer: aptos.AptosAccount, packet: Packet): Promise<aptos.Types.Transaction>;
    /**
     * Gets the short request event type.
     *
     * @returns {string} The short request event type.
     */
    getShortRequestEventType(): string;
}

/**
 * Class representing the executor configuration.
 */
declare class ExecutorConfig {
    private sdk;
    /**
     * The module name.
     */
    readonly module: string;
    /**
     * Creates an instance of the ExecutorConfig class.
     *
     * @param {SDK} sdk - The SDK instance.
     */
    constructor(sdk: SDK);
    /**
     * Gets the default executor for a given remote chain ID.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @returns {Promise<[string, aptos.BCS.Uint64]>} A promise that resolves to the executor and version.
     * @throws {Error} If the SDK accounts layerzero is undefined.
     */
    getDefaultExecutor(remoteChainId: aptos.BCS.Uint16): Promise<[string, aptos.BCS.Uint64]>;
    /**
     * Gets the executor for a given user address and remote chain ID.
     *
     * @param {aptos.MaybeHexString} uaAddress - The user address.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {Object} [query] - Optional query parameters.
     * @param {bigint | number} [query.ledgerVersion] - The ledger version.
     * @returns {Promise<[string, aptos.BCS.Uint64]>} A promise that resolves to the executor and version.
     */
    getExecutor(uaAddress: aptos.MaybeHexString, remoteChainId: aptos.BCS.Uint16, query?: {
        ledgerVersion?: bigint | number;
    }): Promise<[string, aptos.BCS.Uint64]>;
    /**
     * Creates a payload for setting the default executor.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint8} version - The version.
     * @param {aptos.MaybeHexString} executor - The executor address.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setDefaultExecutorPayload(remoteChainId: aptos.BCS.Uint16, version: aptos.BCS.Uint8, executor: aptos.MaybeHexString): aptos.Types.EntryFunctionPayload;
}

declare class MsgLib {
    private sdk;
    /**
     * The module name.
     */
    readonly module: string;
    readonly routingModule: string;
    /**
     * Creates an instance of the MsgLib class.
     *
     * @param {SDK} sdk - The SDK instance.
     */
    constructor(sdk: SDK);
    createInitPayload(): Promise<aptos.Types.EntryFunctionPayload>;
    init(signer: aptos.AptosAccount): Promise<aptos.Types.Transaction>;
    createSyncVersionPayload(uaAddress: string, chainId: aptos.BCS.Uint64): Promise<aptos.Types.EntryFunctionPayload>;
    syncVersion(signer: aptos.AptosAccount, uaAddress: string, chainId: aptos.BCS.Uint64): Promise<aptos.Types.Transaction>;
    /**
     * Checks if the module is initialized.
     *
     * @returns {Promise<boolean>} A promise that resolves to true if the module is initialized, false otherwise.
     */
    isInitialize(): Promise<boolean>;
    isVersionSynced(uaAddress: string, chainId: aptos.BCS.Uint64): Promise<boolean>;
}

/**
 * Class representing message library authorization.
 */
declare class MsgLibAuth {
    private sdk;
    /**
     * The module name.
     */
    readonly module: string;
    /**
     * The module name string.
     */
    readonly moduleName: string;
    /**
     * Creates an instance of the MsgLibAuth class.
     *
     * @param {SDK} sdk - The SDK instance.
     */
    constructor(sdk: SDK);
    /**
     * Checks if a message library receive address is allowed.
     *
     * @param {string} msglibReceive - The message library receive address.
     * @returns {Promise<boolean>} A promise that resolves to true if allowed, false otherwise.
     * @throws Will throw an error if sdk accounts msglib_auth is undefined.
     */
    isAllowed(msglibReceive: string): Promise<boolean>;
    /**
     * Creates a payload to deny a message library receive address.
     *
     * @param {string} msglibReceive - The message library receive address.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    denyPayload(msglibReceive: string): aptos.Types.EntryFunctionPayload;
    /**
     * Creates a payload to allow a message library receive address.
     *
     * @param {string} msglibReceive - The message library receive address.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    allowPayload(msglibReceive: string): aptos.Types.EntryFunctionPayload;
    /**
     * Allows a message library receive address.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} msglibReceive - The message library receive address.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    allow(signer: aptos.AptosAccount, msglibReceive: string): Promise<aptos.Types.Transaction>;
}

/**
 * Class representing the MsgLibConfig module.
 */
declare class MsgLibConfig {
    private sdk;
    /**
     * The module path.
     */
    readonly module: string;
    /**
     * The module name.
     */
    readonly moduleName: string;
    /**
     * The semver module path.
     */
    readonly semverModule: string;
    /**
     * Creates an instance of the MsgLibConfig class.
     *
     * @param {SDK} sdk - The SDK instance.
     */
    constructor(sdk: SDK);
    /**
     * Gets the default send message library version for a remote chain.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @returns {Promise<{ major: aptos.BCS.Uint64; minor: aptos.BCS.Uint8 }>} A promise that resolves to the version.
     * @throws Will throw an error if the SDK accounts layerzero is undefined.
     */
    getDefaultSendMsgLib(remoteChainId: aptos.BCS.Uint16): Promise<{
        major: aptos.BCS.Uint64;
        minor: aptos.BCS.Uint8;
    }>;
    /**
     * Gets the default receive message library version for a remote chain.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @returns {Promise<{ major: aptos.BCS.Uint64; minor: aptos.BCS.Uint8 }>} A promise that resolves to the version.
     * @throws Will throw an error if the SDK accounts layerzero is undefined.
     */
    getDefaultReceiveMsgLib(remoteChainId: aptos.BCS.Uint16): Promise<{
        major: aptos.BCS.Uint64;
        minor: aptos.BCS.Uint8;
    }>;
    /**
     * Creates a payload for setting the default send message library version.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint64} major - The major version.
     * @param {aptos.BCS.Uint8} minor - The minor version.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setDefaultSendMsgLibPayload(remoteChainId: aptos.BCS.Uint16, major: aptos.BCS.Uint64, minor: aptos.BCS.Uint8): aptos.Types.EntryFunctionPayload;
    /**
     * Creates a payload for setting the default receive message library version.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint64} major - The major version.
     * @param {aptos.BCS.Uint8} minor - The minor version.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setDefaultReceiveMsgLibPayload(remoteChainId: aptos.BCS.Uint16, major: aptos.BCS.Uint64, minor: aptos.BCS.Uint8): aptos.Types.EntryFunctionPayload;
}

/**
 * Class representing the MsgLibV1_0 module.
 */
declare class MsgLibV1_0 {
    private sdk;
    /**
     * The module name.
     */
    readonly module: string;
    /**
     * Creates an instance of the MsgLibV1_0 class.
     *
     * @param {SDK} sdk - The SDK instance.
     */
    constructor(sdk: SDK);
}

/**
 * Class representing packet events.
 */
declare class PacketEvent {
    private sdk;
    /**
     * The module name.
     */
    readonly module: string;
    /**
     * The outbound event type.
     */
    readonly OutboundEventType: string;
    /**
     * The inbound event type.
     */
    readonly InboundEventType: string;
    /**
     * Creates an instance of the PacketEvent class.
     *
     * @param {SDK} sdk - The SDK instance.
     */
    constructor(sdk: SDK);
    /**
     * Returns an array of VersionedEvent objects for inbound events.
     *
     * @param {bigint} start - The start index of the events, starting from 0.
     * @param {number} limit - The maximum number of events to return.
     * @returns {Promise<aptos.Types.VersionedEvent[]>} An array of VersionedEvent objects.
     * @throws {Error} If sdk accounts layerzero is undefined.
     * @example
     * [
     *   {
     *     "version": "2527457",
     *     "guid": {
     *       "creation_number": "7",
     *       "account_address": "0x54ad3d30af77b60d939ae356e6606de9a4da67583f02b962d2d3f2e481484e90"
     *     },
     *     "sequence_number": "0",
     *     "type": "0x54ad3d30af77b60d939ae356e6606de9a4da67583f02b962d2d3f2e481484e90::packet_event::InboundEvent",
     *     "data": {
     *       "packet": {
     *         "dst_address": "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa",
     *         "dst_chain_id": "108",
     *         "nonce": "1",
     *         "payload": "0x00000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4857203756ea4273c43f583acd5b7a72aa168098da3fb9ffe4f6505515aae8fc9b0000000002faf080",
     *         "src_address": "0x50002cdfe7ccb0c41f519c6eb0653158d11cd907",
     *         "src_chain_id": "101"
     *       }
     *     }
     *   },
     *   {
     *     "version": "2617627",
     *     "guid": {
     *       "creation_number": "7",
     *       "account_address": "0x54ad3d30af77b60d939ae356e6606de9a4da67583f02b962d2d3f2e481484e90"
     *     },
     *     "sequence_number": "1",
     *     "type": "0x54ad3d30af77b60d939ae356e6606de9a4da67583f02b962d2d3f2e481484e90::packet_event::InboundEvent",
     *     "data": {
     *       "packet": {
     *         "dst_address": "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa",
     *         "dst_chain_id": "108",
     *         "nonce": "2",
     *         "payload": "0x00000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7495f9f30a60c7cda8a60937b4281d00d8730596409820bbf59b2674624c76d9b00000000000f4240",
     *         "src_address": "0x50002cdfe7ccb0c41f519c6eb0653158d11cd907",
     *         "src_chain_id": "101"
     *       }
     *     }
     *   }
     * ]
     */
    getInboundEvents(start: bigint, limit: number): Promise<aptos.Types.VersionedEvent[]>;
    /**
     * Returns the count of inbound events.
     *
     * @returns {Promise<number>} The count of inbound events.
     * @throws {Error} If sdk accounts layerzero is undefined.
     */
    getInboundEventCount(): Promise<number>;
    /**
     * Returns an array of VersionedEvent objects for outbound events.
     *
     * @param {bigint} start - The start index of the events, starting from 0.
     * @param {number} limit - The maximum number of events to return.
     * @returns {Promise<aptos.Types.VersionedEvent[]>} An array of VersionedEvent objects.
     * @throws {Error} If sdk accounts layerzero is undefined.
     * @example
     * [
     *   {
     *     version: '3290647',
     *     guid: {
     *       creation_number: '8',
     *       account_address: '0x54ad3d30af77b60d939ae356e6606de9a4da67583f02b962d2d3f2e481484e90'
     *     },
     *     sequence_number: '0',
     *     type: '0x54ad3d30af77b60d939ae356e6606de9a4da67583f02b962d2d3f2e481484e90::packet_event::OutboundEvent',
     *     data: {
     *       encoded_packet: '0x0000000000000001006cf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa006f86bb63148d17d445ed5398ef26aa05bf76dd5b59010000000000000000000000007f5c764cbc14f9669b88837ca1490cca17c316070000000000000000000000003a983ffaa79e2d12ef94b50f68346a4b9c653a9a00000000001e848000'
     *     }
     *   },
     *   {
     *     version: '3308828',
     *     guid: {
     *       creation_number: '8',
     *       account_address: '0x54ad3d30af77b60d939ae356e6606de9a4da67583f02b962d2d3f2e481484e90'
     *     },
     *     sequence_number: '1',
     *     type: '0x54ad3d30af77b60d939ae356e6606de9a4da67583f02b962d2d3f2e481484e90::packet_event::OutboundEvent',
     *     data: {
     *       encoded_packet: '0x0000000000000001006cf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa006aa5972eee0c9b5bbb89a5b16d1d65f94c9ef25166010000000000000000000000009702230a8ea53601f5cd2dc00fdbc13d4df4a8c700000000000000000000000015028e41c7ed391674505f6ea1213045571564e4000000000000006400'
     *     }
     *   }
     * ]
     */
    getOutboundEvents(start: bigint, limit: number): Promise<aptos.Types.VersionedEvent[]>;
    /**
     * Returns the count of outbound events.
     *
     * @returns {Promise<number>} The count of outbound events.
     * @throws {Error} If sdk accounts layerzero is undefined.
     */
    getOutboundEventCount(): Promise<number>;
}

declare class UlnConfig {
    private sdk;
    /**
     * Oracle type identifier.
     */
    TYPE_ORACLE: number;
    /**
     * Relayer type identifier.
     */
    TYPE_RELAYER: number;
    /**
     * Inbound confirmations type identifier.
     */
    TYPE_INBOUND_CONFIRMATIONS: number;
    /**
     * Outbound confirmations type identifier.
     */
    TYPE_OUTBOUND_CONFIRMATIONS: number;
    /**
     * The module name.
     */
    readonly module: string;
    /**
     * The module name with namespace.
     */
    readonly moduleName: string;
    /**
     * Creates an instance of the UlnConfig class.
     *
     * @param {SDK} sdk - The SDK instance.
     */
    constructor(sdk: SDK);
    /**
     * Creates a payload for setting the default app configuration.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {UlnConfigType} config - The configuration.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setDefaultAppConfigPayload(remoteChainId: aptos.BCS.Uint16, config: UlnConfigType): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the default app configuration.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {UlnConfigType} config - The configuration.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setDefaultAppConfig(signer: aptos.AptosAccount, remoteChainId: aptos.BCS.Uint16, config: UlnConfigType): Promise<aptos.Types.Transaction>;
    /**
     * Creates a payload for setting the chain address size.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint8} addressSize - The address size.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setChainAddressSizePayload(remoteChainId: aptos.BCS.Uint16, addressSize: aptos.BCS.Uint8): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the chain address size.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint8} addressSize - The address size.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setChainAddressSize(signer: aptos.AptosAccount, remoteChainId: aptos.BCS.Uint16, addressSize: aptos.BCS.Uint8): Promise<aptos.Types.Transaction>;
    /**
     * Gets the chain address size for a given remote chain ID.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @returns {Promise<aptos.BCS.Uint8>} A promise that resolves to the address size.
     * @throws {Error} If the SDK accounts layerzero is undefined.
     */
    getChainAddressSize(remoteChainId: aptos.BCS.Uint16): Promise<aptos.BCS.Uint8>;
    /**
     * Gets the default app configuration for a given remote chain ID.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {object} [query] - Optional query parameters.
     * @param {bigint | number} [query.ledgerVersion] - The ledger version.
     * @returns {Promise<UlnConfigType>} A promise that resolves to the configuration.
     * @throws {Error} If the SDK accounts layerzero is undefined.
     */
    getDefaultAppConfig(remoteChainId: aptos.BCS.Uint16, query?: {
        ledgerVersion?: bigint | number;
    }): Promise<UlnConfigType>;
    /**
     * Gets the app configuration for a given user address and remote chain ID.
     *
     * @param {aptos.MaybeHexString} uaAddress - The user address.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {object} [query] - Optional query parameters.
     * @param {bigint | number} [query.ledgerVersion] - The ledger version.
     * @returns {Promise<UlnConfigType>} A promise that resolves to the configuration.
     * @throws {Error} If the SDK accounts layerzero is undefined.
     */
    getAppConfig(uaAddress: aptos.MaybeHexString, remoteChainId: aptos.BCS.Uint16, query?: {
        ledgerVersion?: bigint | number;
    }): Promise<UlnConfigType>;
    /**
     * Merges the given configuration with the default configuration.
     *
     * @param {UlnConfigType} config - The configuration.
     * @param {UlnConfigType} defaultConfig - The default configuration.
     * @returns {UlnConfigType} The merged configuration.
     */
    private mergeConfig;
    /**
     * Quotes the fee for a given user address, destination chain ID, and payload size.
     *
     * @param {aptos.MaybeHexString} uaAddress - The user address.
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {number} payloadSize - The payload size.
     * @param {object} [query] - Optional query parameters.
     * @param {bigint | number} [query.ledgerVersion] - The ledger version.
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the fee.
     * @throws {Error} If the SDK accounts layerzero is undefined.
     */
    quoteFee(uaAddress: aptos.MaybeHexString, dstChainId: aptos.BCS.Uint16, payloadSize: number, query?: {
        ledgerVersion?: bigint | number;
    }): Promise<aptos.BCS.Uint64>;
}

/**
 * The zero address in hex string format.
 */
declare const ZERO_ADDRESS_HEX: string;
/**
 * The zero address in byte array format.
 */
declare const ZERO_ADDRESS_BYTES: Uint8Array;
/**
 * The gas limit safety basis points.
 */
declare const GAS_LIMIT_SAFETY_BPS = 2000;
/**
 * Encodes a packet into a buffer.
 *
 * @param {Packet} packet - The packet to encode.
 * @returns {Buffer} The encoded packet.
 */
declare function encodePacket(packet: Packet): Buffer;
/**
 * Computes the GUID for a packet.
 *
 * @param {Packet} packet - The packet.
 * @returns {string} The computed GUID.
 */
declare function computeGuid(packet: Packet): string;
type GetAddressSizeOfChainFunc = (chainId: number) => Promise<number>;
/**
 * decode the packet generated on the Aptos chain only, it assumes that the size of the source address is 32
 *
 * @param {Buffer} buf - The buffer containing the encoded packet.
 * @param {number | GetAddressSizeOfChainFunc} getAddressSizeOfChain - A number or a function to return the size of the destination address.
 * @returns {Promise<Packet>} The decoded packet.
 */
declare function decodePacket(buf: Buffer, getAddressSizeOfChain: number | GetAddressSizeOfChainFunc): Promise<Packet>;
/**
 * Decodes an encoded packet string.
 *
 * @param {string} encodedPacket - The encoded packet string.
 * @param {number} dstAddressSize - The size of the destination address.
 * @returns {Promise<Packet>} The decoded packet.
 */
declare function decodePacketString(encodedPacket: string, dstAddressSize: number): Promise<Packet>;
/**
 * Computes the SHA3-256 hash of a buffer.
 *
 * @param {Buffer} buf - The buffer to hash.
 * @returns {string} The hash of the buffer.
 */
declare function hashBuffer(buf: Buffer): string;
/**
 * Computes the hash of a packet.
 *
 * @param {Packet} packet - The packet to hash.
 * @returns {string} The hash of the packet.
 */
declare function hashPacket(packet: Packet): string;
/**
 * Rebuilds a packet from an event.
 *
 * @param {aptos.Types.Event} event - The event.
 * @param {GetAddressSizeOfChainFunc | number} getAddressSizeOfChain - A function or number to get the address size of the chain.
 * @returns {Promise<Packet>} The rebuilt packet.
 */
declare function rebuildPacketFromEvent(event: aptos.Types.Event, getAddressSizeOfChain: GetAddressSizeOfChainFunc | number): Promise<Packet>;
/**
 * Generates a multisig public key and address.
 *
 * @param {Uint8Array[]} publicKeys - The public keys.
 * @param {number} threshold - The threshold.
 * @returns {Promise<[aptos.TxnBuilderTypes.MultiEd25519PublicKey, string]>} The multisig public key and address.
 */
declare function generateMultisig(publicKeys: Uint8Array[], threshold: number): Promise<[aptos.TxnBuilderTypes.MultiEd25519PublicKey, string]>;
/**
 * Signs a BCS transaction with multiple signatures.
 *
 * @param {aptos.TxnBuilderTypes.MultiEd25519PublicKey} pubkey - The multisig public key.
 * @param {aptos.TxnBuilderTypes.RawTransaction} rawTx - The raw transaction.
 * @param {aptos.HexString[]} signatures - The signatures.
 * @param {number[]} bitmap - The bitmap.
 * @returns {aptos.BCS.Bytes} The signed BCS transaction.
 */
declare function multiSigSignedBCSTxn(pubkey: aptos.TxnBuilderTypes.MultiEd25519PublicKey, rawTx: aptos.TxnBuilderTypes.RawTransaction, signatures: aptos.HexString[], bitmap: number[]): aptos.BCS.Bytes;
/**
 * Ensures the full address format.
 *
 * @param {string | aptos.HexString} address - The address.
 * @returns {aptos.HexString} The full address.
 */
declare function fullAddress(address: string | aptos.HexString): aptos.HexString;
/**
 * Converts a hex string to an ASCII string.
 * https://github.com/ChainSafe/web3.js/blob/release/1.7.5/packages/web3-utils/src/index.js#L166
 *
 * @param {string} hex - The hex string.
 * @returns {string} The ASCII string.
 * @throws {Error} If the hex string is invalid.
 */
declare function hexToAscii(hex: string): string;
/**
 * Checks if two addresses are the same.
 *
 * @param {string | HexString} a - The first address.
 * @param {string | HexString} b - The second address.
 * @returns {boolean} True if the addresses are the same, false otherwise.
 */
declare function isSameAddress(a: string | HexString, b: string | HexString): boolean;
/**
 * Checks if an address is the zero address.
 *
 * @param {string | HexString} a - The address.
 * @returns {boolean} True if the address is the zero address, false otherwise.
 */
declare function isZeroAddress(a: string | HexString): boolean;
/**
 * Converts a Uint64 to bytes.
 *
 * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} number - The number to convert.
 * @returns {aptos.BCS.Bytes} The bytes.
 */
declare function convertUint64ToBytes(number: aptos.BCS.Uint64 | aptos.BCS.Uint32): aptos.BCS.Bytes;
/**
 * Converts bytes to a Uint64.
 *
 * @param {aptos.BCS.Bytes} bytes - The bytes to convert.
 * @returns {aptos.BCS.Uint64} The Uint64.
 */
declare function convertBytesToUint64(bytes: aptos.BCS.Bytes): aptos.BCS.Uint64;
/**
 * Checks if an error is an API error with a specific status.
 *
 * @param {any} e - The error.
 * @param {number} status - The status.
 * @returns {boolean} True if the error is an API error with the specified status, false otherwise.
 */
declare function isErrorOfApiError(e: any, status: number): boolean;
/**
 * Converts aptos.BCS.Bytes to a Uint8Array, left padding with 0x0 elements.
 *
 * @param {aptos.BCS.Bytes} data - The data to convert.
 * @param {number} length - The length of the resulting array.
 * @returns {Uint8Array} The resulting Uint8Array.
 */
declare function bytesToUint8Array(data: aptos.BCS.Bytes, length: number): Uint8Array;
/**
 * Converts a hex string to a Uint8Array, left padding with 0x0 elements.
 *
 * @deprecated use {@link stringToPaddedUint8Array}
 * @param {string} str - The hex string.
 * @param {number} length - The length of the resulting array.
 * @returns {Uint8Array} The resulting Uint8Array.
 */
declare function convertToPaddedUint8Array(str: string, length: number): Uint8Array;
/**
 * Converts a hex string to a Uint8Array, left padding with 0x0 elements.
 *
 * @param {string} str - The hex string.
 * @param {number} length - The length of the resulting array.
 * @returns {Uint8Array} The resulting Uint8Array.
 */
declare function stringToPaddedUint8Array(str: string, length: number): Uint8Array;
/**
 * Left pads a Uint8Array with 0x0 elements.
 *
 * @param {Uint8Array} bytes - The bytes to pad.
 * @param {number} length - The length of the resulting array.
 * @returns {Uint8Array} The resulting Uint8Array.
 */
declare function paddingUint8Array(bytes: Uint8Array, length: number): Uint8Array;
/**
 * convert a hex string to Uint8Array
 * 0x123 will be [0x01, 0x23] instead of [0x12, 0x03]
 *
 * @param {string} str - The hex string.
 * @returns {Uint8Array} The resulting Uint8Array.
 */
declare function stringToUint8Array(str: string): Uint8Array;
/**
 * Interface representing a multiple signature item.
 */
interface MutipleSignatureItem {
    /**
     * The signature in hex string format.
     */
    signature: aptos.HexString;
    /**
     * The bitmap index.
     */
    bitmap: number;
}
/**
 * Type representing a function that signs data with multiple signers.
 *
 * @param {Uint8Array} data - The data to sign.
 * @returns {Promise<MutipleSignatureItem[]>} A promise that resolves to an array of multiple signature items.
 */
type MultipleSignFunc = (data: Uint8Array) => Promise<MutipleSignatureItem[]>;
/**
 * Creates a sign function with multiple signers.
 *
 * @param {...aptos.AptosAccount[]} signers - The signers.
 * @returns {MultipleSignFunc} The sign function.
 */
declare function makeSignFuncWithMultipleSigners(...signers: aptos.AptosAccount[]): (data: Uint8Array) => Promise<MutipleSignatureItem[]>;
/**
 * Applies a gas limit safety margin.
 *
 * @param {string} gasUsed - The gas used.
 * @returns {bigint} The gas limit with safety margin applied.
 */
declare function applyGasLimitSafety(gasUsed: string): bigint;
/**
 * Decodes a payload.
 *
 * @param {Buffer} payload - The payload.
 * @returns {{ packetType: number, remoteCoinAddr: Buffer, receiverBytes: Buffer, amount: BN }} The decoded payload.
 */
declare function decodePayload(payload: Buffer): {
    packetType: number;
    remoteCoinAddr: Buffer;
    receiverBytes: Buffer;
    amount: BN;
};
/**
 * Gets the signed transaction hash.
 *
 * @param {Uint8Array} signedTransaction - The signed transaction.
 * @returns {string} The transaction hash.
 */
declare function getSignedTransactionHash(signedTransaction: Uint8Array): string;
/**
 * Gets the address from a public key.
 *
 * @param {aptos.TxnBuilderTypes.Ed25519PublicKey} publicKey - The public key.
 * @returns {aptos.HexString} The address.
 */
declare function getAddressFromPublicKey(publicKey: aptos.TxnBuilderTypes.Ed25519PublicKey): aptos.HexString;
/**
 * return the type arguments, which is needed to call lz_receive
 *
 * @param {aptos.BCS.Bytes} bytecode - The bytecode generated by `make compile-script-template`.
 * @param {SDK} sdk - The SDK instance.
 * @param {aptos.TxnBuilderTypes.Ed25519PublicKey} publicKey - The public key of the signer who will submit the transaction.
 * @param {aptos.BCS.Bytes} dstAddress - The UA address on Aptos.
 * @param {aptos.BCS.Uint16} srcChainId - The source chain ID of the packet.
 * @param {aptos.BCS.Bytes} srcAddress - The source address (UA address) of the packet.
 * @param {aptos.BCS.Bytes} payload - The payload of the packet.
 * @returns {Promise<string[]>} The type arguments.
 */
declare function getLzReceiveTypeArguments(bytecode: aptos.BCS.Bytes, sdk: SDK, publicKey: aptos.TxnBuilderTypes.Ed25519PublicKey, dstAddress: aptos.BCS.Bytes, srcChainId: aptos.BCS.Uint16, srcAddress: aptos.BCS.Bytes, payload: aptos.BCS.Bytes): Promise<string[]>;
/**
 * Gets the resource address.
 *
 * @param {aptos.MaybeHexString} source - The source address.
 * @param {Uint8Array} seed - The seed.
 * @returns {aptos.HexString} The resource address.
 */
declare function getResourceAddress(source: aptos.MaybeHexString, seed: Uint8Array): aptos.HexString;
/**
 * Gets an Aptos account from a private key.
 *
 * @param {string} key - The private key.
 * @returns {aptos.AptosAccount} The Aptos account.
 */
declare function getAccountFromPrivateKey(key: string): aptos.AptosAccount;
/**
 * Gets an Aptos account from a mnemonic phrase.
 *
 * @param {string} mnemonic - The mnemonic phrase.
 * @param {string} [path="m/44'/637'/0'/0'/0'"] - The derivation path.
 * @returns {aptos.AptosAccount} The Aptos account.
 * @throws {Error} If the derivation path is invalid.
 */
declare function getAccountFromMnemonic(mnemonic: string, path?: string): aptos.AptosAccount;
/**
 * Normalizes a TypeInfo object.
 *
 * @param {TypeInfo} typeInfo - The TypeInfo object.
 * @returns {TypeInfo} The normalized TypeInfo object.
 */
declare function normalizeTypeInfo(typeInfo: TypeInfo): TypeInfo;
/**
 * Builds a struct tag from a TypeInfo object.
 *
 * @param {TypeInfo} typeInfo - The TypeInfo object.
 * @returns {string} The struct tag.
 */
declare function buildStructTagFromTypeInfo(typeInfo: TypeInfo): string;
/**
 * Checks if a value is a TypeInfo object.
 *
 * @param {TypeInfo | any} value - The value to check.
 * @returns {boolean} True if the value is a TypeInfo object, false otherwise.
 */
declare function isTypeInfo(value: TypeInfo | any): value is TypeInfo;

declare const utils_GAS_LIMIT_SAFETY_BPS: typeof GAS_LIMIT_SAFETY_BPS;
  type utils_GetAddressSizeOfChainFunc = GetAddressSizeOfChainFunc;
  type utils_MultipleSignFunc = MultipleSignFunc;
  type utils_MutipleSignatureItem = MutipleSignatureItem;
  declare const utils_ZERO_ADDRESS_BYTES: typeof ZERO_ADDRESS_BYTES;
  declare const utils_ZERO_ADDRESS_HEX: typeof ZERO_ADDRESS_HEX;
  declare const utils_applyGasLimitSafety: typeof applyGasLimitSafety;
  declare const utils_buildStructTagFromTypeInfo: typeof buildStructTagFromTypeInfo;
  declare const utils_bytesToUint8Array: typeof bytesToUint8Array;
  declare const utils_computeGuid: typeof computeGuid;
  declare const utils_convertBytesToUint64: typeof convertBytesToUint64;
  declare const utils_convertToPaddedUint8Array: typeof convertToPaddedUint8Array;
  declare const utils_convertUint64ToBytes: typeof convertUint64ToBytes;
  declare const utils_decodePacket: typeof decodePacket;
  declare const utils_decodePacketString: typeof decodePacketString;
  declare const utils_decodePayload: typeof decodePayload;
  declare const utils_encodePacket: typeof encodePacket;
  declare const utils_fullAddress: typeof fullAddress;
  declare const utils_generateMultisig: typeof generateMultisig;
  declare const utils_getAccountFromMnemonic: typeof getAccountFromMnemonic;
  declare const utils_getAccountFromPrivateKey: typeof getAccountFromPrivateKey;
  declare const utils_getAddressFromPublicKey: typeof getAddressFromPublicKey;
  declare const utils_getLzReceiveTypeArguments: typeof getLzReceiveTypeArguments;
  declare const utils_getResourceAddress: typeof getResourceAddress;
  declare const utils_getSignedTransactionHash: typeof getSignedTransactionHash;
  declare const utils_hashBuffer: typeof hashBuffer;
  declare const utils_hashPacket: typeof hashPacket;
  declare const utils_hexToAscii: typeof hexToAscii;
  declare const utils_isErrorOfApiError: typeof isErrorOfApiError;
  declare const utils_isSameAddress: typeof isSameAddress;
  declare const utils_isTypeInfo: typeof isTypeInfo;
  declare const utils_isZeroAddress: typeof isZeroAddress;
  declare const utils_makeSignFuncWithMultipleSigners: typeof makeSignFuncWithMultipleSigners;
  declare const utils_multiSigSignedBCSTxn: typeof multiSigSignedBCSTxn;
  declare const utils_normalizeTypeInfo: typeof normalizeTypeInfo;
  declare const utils_paddingUint8Array: typeof paddingUint8Array;
  declare const utils_rebuildPacketFromEvent: typeof rebuildPacketFromEvent;
  declare const utils_stringToPaddedUint8Array: typeof stringToPaddedUint8Array;
  declare const utils_stringToUint8Array: typeof stringToUint8Array;
  declare namespace utils {
  export { utils_GAS_LIMIT_SAFETY_BPS as GAS_LIMIT_SAFETY_BPS, type utils_GetAddressSizeOfChainFunc as GetAddressSizeOfChainFunc, type utils_MultipleSignFunc as MultipleSignFunc, type utils_MutipleSignatureItem as MutipleSignatureItem, utils_ZERO_ADDRESS_BYTES as ZERO_ADDRESS_BYTES, utils_ZERO_ADDRESS_HEX as ZERO_ADDRESS_HEX, utils_applyGasLimitSafety as applyGasLimitSafety, utils_buildStructTagFromTypeInfo as buildStructTagFromTypeInfo, utils_bytesToUint8Array as bytesToUint8Array, utils_computeGuid as computeGuid, utils_convertBytesToUint64 as convertBytesToUint64, utils_convertToPaddedUint8Array as convertToPaddedUint8Array, utils_convertUint64ToBytes as convertUint64ToBytes, utils_decodePacket as decodePacket, utils_decodePacketString as decodePacketString, utils_decodePayload as decodePayload, utils_encodePacket as encodePacket, utils_fullAddress as fullAddress, utils_generateMultisig as generateMultisig, utils_getAccountFromMnemonic as getAccountFromMnemonic, utils_getAccountFromPrivateKey as getAccountFromPrivateKey, utils_getAddressFromPublicKey as getAddressFromPublicKey, utils_getLzReceiveTypeArguments as getLzReceiveTypeArguments, utils_getResourceAddress as getResourceAddress, utils_getSignedTransactionHash as getSignedTransactionHash, utils_hashBuffer as hashBuffer, utils_hashPacket as hashPacket, utils_hexToAscii as hexToAscii, utils_isErrorOfApiError as isErrorOfApiError, utils_isSameAddress as isSameAddress, utils_isTypeInfo as isTypeInfo, utils_isZeroAddress as isZeroAddress, utils_makeSignFuncWithMultipleSigners as makeSignFuncWithMultipleSigners, utils_multiSigSignedBCSTxn as multiSigSignedBCSTxn, utils_normalizeTypeInfo as normalizeTypeInfo, utils_paddingUint8Array as paddingUint8Array, utils_rebuildPacketFromEvent as rebuildPacketFromEvent, utils_stringToPaddedUint8Array as stringToPaddedUint8Array, utils_stringToUint8Array as stringToUint8Array };
}

/**
 * Class representing the ULN Receive module.
 */
declare class UlnReceive {
    private sdk;
    /**
     * The module name.
     */
    readonly module: string;
    /**
     * Creates an instance of the UlnReceive class.
     *
     * @param {SDK} sdk - The SDK instance.
     */
    constructor(sdk: SDK);
    /**
     * Initializes the module.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    initialize(signer: aptos.AptosAccount): Promise<aptos.Types.Transaction>;
    /**
     * Checks if the module is initialized.
     *
     * @returns {Promise<boolean>} A promise that resolves to true if the module is initialized, false otherwise.
     */
    isInitialize(): Promise<boolean>;
    /**
     * Gets the payload for the oracle propose transaction.
     *
     * @param {Uint8Array} hash - The hash.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} confirmations - The number of confirmations.
     * @returns {Promise<aptos.Types.EntryFunctionPayload>} A promise that resolves to the transaction payload.
     */
    getOracleProposePayload(hash: Uint8Array, confirmations: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.Types.EntryFunctionPayload>;
    /**
     * Proposes an oracle transaction.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} hash - The hash.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} confirmations - The number of confirmations.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    oraclePropose(signer: aptos.AptosAccount, hash: string, confirmations: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.Types.Transaction>;
    /**
     * Gets the proposal for a given oracle and hash.
     *
     * @param {aptos.MaybeHexString} oracle - The oracle address.
     * @param {string} hash - The hash.
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the proposal.
     */
    getProposal(oracle: aptos.MaybeHexString, hash: string): Promise<aptos.BCS.Uint64>;
    /**
     * Gets the payload for the relayer verify transaction.
     *
     * @param {Uint8Array} dstAddress - The destination address.
     * @param {Uint8Array} packetBytes - The packet bytes.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} confirmations - The number of confirmations.
     * @returns {Promise<aptos.Types.EntryFunctionPayload>} A promise that resolves to the transaction payload.
     */
    getRelayerVerifyPayload(dstAddress: Uint8Array, packetBytes: Uint8Array, confirmations: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.Types.EntryFunctionPayload>;
    /**
     * Verifies a relayer transaction.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {Uint8Array} dstAddress - The destination address.
     * @param {Uint8Array} packetBytes - The packet bytes.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} confirmations - The number of confirmations.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    relayerVerify(signer: aptos.AptosAccount, dstAddress: Uint8Array, packetBytes: Uint8Array, confirmations: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.Types.Transaction>;
    /**
     * Gets the payload for the oracle propose transaction with multisig.
     *
     * @param {string} multisigAccountAddress - The multisig account address.
     * @param {Buffer} hash - The hash.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} confirmations - The number of confirmations.
     * @returns {Promise<aptos.TxnBuilderTypes.TransactionPayload>} A promise that resolves to the transaction payload.
     */
    oracleProposePayloadMS(multisigAccountAddress: string, hash: Buffer, confirmations: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.TxnBuilderTypes.TransactionPayload>;
    /**
     * Gets the raw transaction for the oracle propose transaction with multisig.
     *
     * @param {string} multisigAccountAddress - The multisig account address.
     * @param {Buffer} hash - The hash.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} confirmations - The number of confirmations.
     * @returns {Promise<aptos.TxnBuilderTypes.RawTransaction>} A promise that resolves to the raw transaction.
     */
    oracleProposeTxn(multisigAccountAddress: string, hash: Buffer, confirmations: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.TxnBuilderTypes.RawTransaction>;
    /**
     * Gets the signing message for submitting a hash.
     *
     * @param {aptos.TxnBuilderTypes.RawTransaction} txn - The raw transaction.
     * @returns {aptos.TxnBuilderTypes.SigningMessage} The signing message.
     */
    getSubmitHashSigningMessage(txn: aptos.TxnBuilderTypes.RawTransaction): aptos.TxnBuilderTypes.SigningMessage;
    /**
     * Proposes an oracle transaction with multisig.
     *
     * @param {string} multisigAccountAddress - The multisig account address.
     * @param {aptos.TxnBuilderTypes.MultiEd25519PublicKey} multisigAccountPubkey - The multisig account public key.
     * @param {MultipleSignFunc} signFunc - The sign function.
     * @param {Buffer} hash - The hash.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} confirmations - The number of confirmations.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    oracleProposeMS(multisigAccountAddress: string, multisigAccountPubkey: aptos.TxnBuilderTypes.MultiEd25519PublicKey, signFunc: MultipleSignFunc, hash: Buffer, confirmations: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.Types.Transaction>;
}

/**
 * Class representing a ULN Signer.
 */
declare class UlnSigner {
    private sdk;
    /**
     * The module name.
     */
    readonly module: string;
    /**
     * The module name with namespace.
     */
    readonly moduleName: string;
    /**
     * Creates an instance of the UlnSigner class.
     *
     * @param {SDK} sdk - The SDK instance.
     */
    constructor(sdk: SDK);
    /**
     * Creates a transaction payload for registering.
     *
     * @returns {Promise<aptos.TxnBuilderTypes.TransactionPayload>} The transaction payload.
     */
    register_TransactionPayload(): Promise<aptos.TxnBuilderTypes.TransactionPayload>;
    /**
     * Registers a multisig account.
     *
     * @param {string} multisigAccountAddress - The multisig account address.
     * @param {aptos.TxnBuilderTypes.MultiEd25519PublicKey} multisigAccountPubkey - The multisig account public key.
     * @param {MultipleSignFunc} signFunc - The sign function.
     * @returns {Promise<aptos.Types.Transaction>} The transaction.
     */
    registerMS(multisigAccountAddress: string, multisigAccountPubkey: aptos.TxnBuilderTypes.MultiEd25519PublicKey, signFunc: MultipleSignFunc): Promise<aptos.Types.Transaction>;
    /**
     * Checks if an address is registered.
     *
     * @param {aptos.MaybeHexString} address - The address to check.
     * @returns {Promise<boolean>} True if the address is registered, false otherwise.
     */
    isRegistered(address: aptos.MaybeHexString): Promise<boolean>;
    /**
     * Creates a payload for registering.
     *
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    registerPayload(): aptos.Types.EntryFunctionPayload;
    /**
     * Registers an account.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @returns {Promise<aptos.Types.Transaction>} The transaction.
     */
    register(signer: aptos.AptosAccount): Promise<aptos.Types.Transaction>;
    /**
     * Creates a transaction payload for setting a fee.
     *
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} baseFee - The base fee.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} feePerByte - The fee per byte.
     * @returns {Promise<aptos.TxnBuilderTypes.TransactionPayload>} The transaction payload.
     */
    getSetFee_TransactionPayload(dstChainId: aptos.BCS.Uint16, baseFee: aptos.BCS.Uint64 | aptos.BCS.Uint32, feePerByte: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.TxnBuilderTypes.TransactionPayload>;
    /**
     * Creates a payload for setting a fee.
     *
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} baseFee - The base fee.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} feePerByte - The fee per byte.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setFeePayload(dstChainId: aptos.BCS.Uint16, baseFee: aptos.BCS.Uint64 | aptos.BCS.Uint32, feePerByte: aptos.BCS.Uint64 | aptos.BCS.Uint32): aptos.Types.EntryFunctionPayload;
    /**
     * Sets a fee.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} baseFee - The base fee.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} feePerByte - The fee per byte.
     * @returns {Promise<aptos.Types.Transaction>} The transaction.
     */
    setFee(signer: aptos.AptosAccount, dstChainId: aptos.BCS.Uint16, baseFee: aptos.BCS.Uint64 | aptos.BCS.Uint32, feePerByte: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.Types.Transaction>;
    /**
     * Sets a fee for a multisig account.
     *
     * @param {string} multisigAccountAddress - The multisig account address.
     * @param {aptos.TxnBuilderTypes.MultiEd25519PublicKey} multisigAccountPubkey - The multisig account public key.
     * @param {MultipleSignFunc} signFunc - The sign function.
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} baseFee - The base fee.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} feePerByte - The fee per byte.
     * @returns {Promise<aptos.Types.Transaction>} The transaction.
     */
    setFeeMS(multisigAccountAddress: string, multisigAccountPubkey: aptos.TxnBuilderTypes.MultiEd25519PublicKey, signFunc: MultipleSignFunc, dstChainId: aptos.BCS.Uint16, baseFee: aptos.BCS.Uint64 | aptos.BCS.Uint32, feePerByte: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.Types.Transaction>;
    /**
     * Gets the fee for a given address and destination chain ID.
     *
     * @param {aptos.MaybeHexString} address - The address.
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {Object} [query] - The query parameters.
     * @param {bigint | number} [query.ledgerVersion] - The ledger version.
     * @returns {Promise<UlnSignerFee>} The fee.
     */
    getFee(address: aptos.MaybeHexString, dstChainId: aptos.BCS.Uint16, query?: {
        ledgerVersion?: bigint | number;
    }): Promise<UlnSignerFee>;
}

/**
 * Class representing the ULN (Universal Layer Network).
 */
declare class Uln {
    /**
     * Instance of UlnReceive.
     */
    Receive: UlnReceive;
    /**
     * Instance of UlnSigner.
     */
    Signer: UlnSigner;
    /**
     * Instance of UlnConfig.
     */
    Config: UlnConfig;
    /**
     * Instance of MsgLibV1_0.
     */
    MsgLibV1: MsgLibV1_0;
    /**
     * Instance of PacketEvent.
     */
    PacketEvent: PacketEvent;
    /**
     * Creates an instance of the Uln class.
     *
     * @param {SDK} sdk - The SDK instance.
     */
    constructor(sdk: SDK);
}

type index$2_MsgLibV1_0 = MsgLibV1_0;
  declare const index$2_MsgLibV1_0: typeof MsgLibV1_0;
  type index$2_PacketEvent = PacketEvent;
  declare const index$2_PacketEvent: typeof PacketEvent;
  type index$2_Uln = Uln;
  declare const index$2_Uln: typeof Uln;
  type index$2_UlnConfig = UlnConfig;
  declare const index$2_UlnConfig: typeof UlnConfig;
  type index$2_UlnReceive = UlnReceive;
  declare const index$2_UlnReceive: typeof UlnReceive;
  type index$2_UlnSigner = UlnSigner;
  declare const index$2_UlnSigner: typeof UlnSigner;
  declare namespace index$2 {
  export { index$2_MsgLibV1_0 as MsgLibV1_0, index$2_PacketEvent as PacketEvent, index$2_Uln as Uln, index$2_UlnConfig as UlnConfig, index$2_UlnReceive as UlnReceive, index$2_UlnSigner as UlnSigner };
}

declare class Uln301 {
    private sdk;
    /**
     * The module name.
     */
    readonly module: string;
    readonly adminModule: string;
    readonly routerModule: string;
    /**
     * Creates an instance of the UlnReceive class.
     *
     * @param {SDK} sdk - The SDK instance.
     */
    constructor(sdk: SDK);
    private emptyUlnConfig;
    private emptyExecutorConfig;
    createInitializePayload(eid: aptos.BCS.Uint32): Promise<aptos.Types.EntryFunctionPayload>;
    isInitialized(): Promise<boolean>;
    createSetDefaultUlnSendConfigPayload(dstEid: aptos.BCS.Uint32, ulnConfig: types.UlnConfig): Promise<aptos.Types.EntryFunctionPayload>;
    setDefaultUlnSendConfig(signer: aptos.AptosAccount, dstEid: aptos.BCS.Uint32, ulnConfig: types.UlnConfig): Promise<aptos.Types.Transaction>;
    createSetDefaultUlnReceiveConfigPayload(srcEid: aptos.BCS.Uint32, ulnConfig: types.UlnConfig): Promise<aptos.Types.EntryFunctionPayload>;
    setDefaultUlnReceiveConfig(signer: aptos.AptosAccount, srcEid: aptos.BCS.Uint32, ulnConfig: types.UlnConfig): Promise<aptos.Types.Transaction>;
    createSetDefaultExecutorConfigPayload(eid: aptos.BCS.Uint32, executorConfig: types.ExecutorConfig): Promise<aptos.Types.EntryFunctionPayload>;
    setDefaultExecutorConfig(signer: aptos.AptosAccount, eid: aptos.BCS.Uint32, executorConfig: types.ExecutorConfig): Promise<aptos.Types.Transaction>;
    createSetWorkerConfigForFeeLibRoutingOptInPayload(optIn: boolean): Promise<aptos.Types.EntryFunctionPayload>;
    setWorkerConfigForFeeLibRoutingOptIn(signer: aptos.AptosAccount, optIn: boolean): Promise<aptos.Types.Transaction>;
    getTreasury(): Promise<aptos.MaybeHexString>;
    getDefaultUlnSendConfig(dstEid: aptos.BCS.Uint32): Promise<types.UlnConfig>;
    getDefaultUlnReceiveConfig(srcEid: aptos.BCS.Uint32): Promise<types.UlnConfig>;
    getDefaultExecutorConfig(eid: aptos.BCS.Uint32): Promise<types.ExecutorConfig>;
    getAppSendConfig(oappAddress: string, dstEid: aptos.BCS.Uint32): Promise<types.UlnConfig>;
    getAppReceiveConfig(oappAddress: string, srcEid: aptos.BCS.Uint32): Promise<types.UlnConfig>;
    getAppExecutorConfig(oappAddress: string, eid: aptos.BCS.Uint32): Promise<types.ExecutorConfig>;
    workerConfigForFeeLibRoutingOptIn(): Promise<boolean>;
    verifiable(packetHeader: string, payloadHash: string): Promise<boolean>;
    getVerificationConfirmations(packetHeaderHash: string, payloadHash: string, dvnAddress: string): Promise<aptos.BCS.Uint64>;
    version(): Promise<[aptos.BCS.Uint64, aptos.BCS.Uint64, aptos.BCS.Uint64]>;
    getUaConfig(uaAddress: string, chainId: aptos.BCS.Uint64, configType: types.ConfigType): Promise<types.UlnConfig>;
    /**
     * Parses the ULN configuration response.
     *
     * @param {UlnConfigResponse} ulnConfigResponse - The ULN configuration response.
     * @returns {UlnConfig} The parsed ULN configuration.
     */
    private parseUlnConfig;
    /**
     * Parses the executor configuration response.
     *
     * @param {ExecutorConfigResponse} executorConfigResponse - The executor configuration response.
     * @returns {ExecutorConfig} The parsed executor configuration.
     */
    private parseExecutorConfig;
}

declare class Uln301Receiver {
    private sdk;
    /**
     * The module name.
     */
    readonly module: string;
    /**
     * Creates an instance of the UlnReceive class.
     *
     * @param {SDK} sdk - The SDK instance.
     */
    constructor(sdk: SDK);
    createSetChainAddressSizePayload(eid: aptos.BCS.Uint32, size: aptos.BCS.Uint64): Promise<aptos.Types.EntryFunctionPayload>;
    setChainAddressSize(signer: aptos.AptosAccount, eid: aptos.BCS.Uint32, size: aptos.BCS.Uint64): Promise<aptos.Types.Transaction>;
    createCommitVerificationPayload(uaType: string, rawPacketBytes: Uint8Array): Promise<aptos.Types.EntryFunctionPayload>;
    commitVerification(signer: aptos.AptosAccount, uaType: string, rawPacketBytes: Uint8Array): Promise<aptos.Types.Transaction>;
    /**
     * Checks if the module is initialized.
     *
     * @returns {Promise<boolean>} A promise that resolves to true if the module is initialized, false otherwise.
     */
    isInitialize(): Promise<boolean>;
    getAddressSize(chainId: aptos.BCS.Uint32): Promise<aptos.BCS.Uint64>;
}

/**
 * Class representing the Layerzero module.
 */
declare class Layerzero {
    /**
     * The Channel instance.
     * @see {@link Channel}
     */
    Channel: Channel;
    /**
     * The Executor instance.
     * @see {@link Executor}
     */
    Executor: Executor;
    /**
     * The Endpoint instance.
     * @see {@link Endpoint}
     */
    Endpoint: Endpoint;
    /**
     * The Uln instance.
     * @see {@link Uln}
     */
    Uln: Uln;
    /**
     * The Uln301 instance.
     * @see {@link Uln301}
     */
    Uln301: Uln301;
    /**
     * The Uln301Receiver instance.
     * @see {@link Uln301Receiver}
     */
    Uln301Receiver: Uln301Receiver;
    /**
     * The MsgLibConfig instance.
     * @see {@link MsgLibConfig}
     */
    MsgLibConfig: MsgLibConfig;
    /**
     * The MsgLibAuth instance.
     * @see {@link MsgLibAuth}
     */
    MsgLibAuth: MsgLibAuth;
    /**
     * The ExecutorConfig instance.
     * @see {@link ExecutorConfig}
     */
    ExecutorConfig: ExecutorConfig;
    /**
     * The MsgLib instance.
     * @see {@link MsgLib}
     */
    MsgLib: MsgLib;
    /**
     * Creates an instance of the Layerzero class.
     *
     * @param {SDK} sdk - The SDK instance.
     */
    constructor(sdk: SDK);
}

/**
 * Node URLs for different environments.
 */
declare const NODE_URL: {
    [env in Environment]: string;
};
/**
 * Faucet URLs for different environments.
 */
declare const FAUCET_URL: {
    [env in Environment]: string;
};
/**
 * Layerzero addresses for different stages.
 */
declare const LAYERZERO_ADDRESS: {
    [stage in Stage]?: string;
};
declare const ULN_301_ADDRESS: {
    [stage in Stage]?: string;
};
declare const ULN_301_RECEIVE_HELPER_ADDRESS: {
    [stage in Stage]?: string;
};
declare const MSGLIB_ROUTING_HELPER_ADDRESS: {
    [stage in Stage]?: string;
};
/**
 * Layerzero apps addresses for different stages.
 */
declare const LAYERZERO_APPS_ADDRESS: {
    [stage in Stage]?: string;
};
/**
 * Oracle addresses for different stages.
 */
declare const ORACLE_ADDRESS: {
    [stage in Stage]?: string;
};
/**
 * Oracle signer addresses for different stages.
 */
declare const ORACLE_SIGNER_ADDRESS: {
    [stage in Stage]?: string;
};
/**
 * Relayer signer addresses for different stages.
 */
declare const RELAYER_SIGNER_ADDRESS: {
    [stage in Stage]?: string;
};
/**
 * Executor addresses for different stages.
 */
declare const EXECUTOR_ADDRESS: {
    [stage in Stage]?: string;
};
/**
 * Executor extension addresses for different stages.
 */
declare const EXECUTOR_EXT_ADDRESS: {
    [stage in Stage]?: string;
};
/**
 * Executor v2 addresses for different stages.
 */
declare const EXECUTOR_V2_ADDRESS: {
    [stage in Stage]?: string;
};
/**
 * Layerzero apps public keys for different stages.
 */
declare const LAYERZERO_APPS_PUBKEY: {
    [stage in Stage]?: string;
};
/**
 * Bridge addresses for different stages.
 */
declare const BRIDGE_ADDRESS: {
    [stage in Stage]?: string;
};
/**
 * Bridge precrime addresses for different stages.
 */
declare const BRIDGE_PRECRIME_ADDRESS: {
    [stage in Stage]?: string;
};
/**
 * OFT precrime addresses for different stages.
 */
declare const OFT_PRECRIME_ADDRESS: {
    [stage in Stage]?: string;
};
/**
 * Counter addresses for different stages.
 */
declare const COUNTER_ADDRESS: {
    [stage in Stage]?: string;
};
declare const LAYERZERO_VIEW_ADDRESS: {
    [stage in Stage]?: string;
};
declare const LAYERZERO_VIEW_ULN301_ADDRESS: {
    [stage in Stage]?: string;
};
declare const AIRDROP_WRAPPER_ADDRESS: {
    [stage in Stage]?: string;
};

declare const constants_AIRDROP_WRAPPER_ADDRESS: typeof AIRDROP_WRAPPER_ADDRESS;
  declare const constants_BRIDGE_ADDRESS: typeof BRIDGE_ADDRESS;
  declare const constants_BRIDGE_PRECRIME_ADDRESS: typeof BRIDGE_PRECRIME_ADDRESS;
  declare const constants_COUNTER_ADDRESS: typeof COUNTER_ADDRESS;
  declare const constants_EXECUTOR_ADDRESS: typeof EXECUTOR_ADDRESS;
  declare const constants_EXECUTOR_EXT_ADDRESS: typeof EXECUTOR_EXT_ADDRESS;
  declare const constants_EXECUTOR_V2_ADDRESS: typeof EXECUTOR_V2_ADDRESS;
  declare const constants_FAUCET_URL: typeof FAUCET_URL;
  declare const constants_LAYERZERO_ADDRESS: typeof LAYERZERO_ADDRESS;
  declare const constants_LAYERZERO_APPS_ADDRESS: typeof LAYERZERO_APPS_ADDRESS;
  declare const constants_LAYERZERO_APPS_PUBKEY: typeof LAYERZERO_APPS_PUBKEY;
  declare const constants_LAYERZERO_VIEW_ADDRESS: typeof LAYERZERO_VIEW_ADDRESS;
  declare const constants_LAYERZERO_VIEW_ULN301_ADDRESS: typeof LAYERZERO_VIEW_ULN301_ADDRESS;
  declare const constants_MSGLIB_ROUTING_HELPER_ADDRESS: typeof MSGLIB_ROUTING_HELPER_ADDRESS;
  declare const constants_NODE_URL: typeof NODE_URL;
  declare const constants_OFT_PRECRIME_ADDRESS: typeof OFT_PRECRIME_ADDRESS;
  declare const constants_ORACLE_ADDRESS: typeof ORACLE_ADDRESS;
  declare const constants_ORACLE_SIGNER_ADDRESS: typeof ORACLE_SIGNER_ADDRESS;
  declare const constants_RELAYER_SIGNER_ADDRESS: typeof RELAYER_SIGNER_ADDRESS;
  declare const constants_ULN_301_ADDRESS: typeof ULN_301_ADDRESS;
  declare const constants_ULN_301_RECEIVE_HELPER_ADDRESS: typeof ULN_301_RECEIVE_HELPER_ADDRESS;
  declare namespace constants {
  export { constants_AIRDROP_WRAPPER_ADDRESS as AIRDROP_WRAPPER_ADDRESS, constants_BRIDGE_ADDRESS as BRIDGE_ADDRESS, constants_BRIDGE_PRECRIME_ADDRESS as BRIDGE_PRECRIME_ADDRESS, constants_COUNTER_ADDRESS as COUNTER_ADDRESS, constants_EXECUTOR_ADDRESS as EXECUTOR_ADDRESS, constants_EXECUTOR_EXT_ADDRESS as EXECUTOR_EXT_ADDRESS, constants_EXECUTOR_V2_ADDRESS as EXECUTOR_V2_ADDRESS, constants_FAUCET_URL as FAUCET_URL, constants_LAYERZERO_ADDRESS as LAYERZERO_ADDRESS, constants_LAYERZERO_APPS_ADDRESS as LAYERZERO_APPS_ADDRESS, constants_LAYERZERO_APPS_PUBKEY as LAYERZERO_APPS_PUBKEY, constants_LAYERZERO_VIEW_ADDRESS as LAYERZERO_VIEW_ADDRESS, constants_LAYERZERO_VIEW_ULN301_ADDRESS as LAYERZERO_VIEW_ULN301_ADDRESS, constants_MSGLIB_ROUTING_HELPER_ADDRESS as MSGLIB_ROUTING_HELPER_ADDRESS, constants_NODE_URL as NODE_URL, constants_OFT_PRECRIME_ADDRESS as OFT_PRECRIME_ADDRESS, constants_ORACLE_ADDRESS as ORACLE_ADDRESS, constants_ORACLE_SIGNER_ADDRESS as ORACLE_SIGNER_ADDRESS, constants_RELAYER_SIGNER_ADDRESS as RELAYER_SIGNER_ADDRESS, constants_ULN_301_ADDRESS as ULN_301_ADDRESS, constants_ULN_301_RECEIVE_HELPER_ADDRESS as ULN_301_RECEIVE_HELPER_ADDRESS };
}

/**
 * Enum representing different coin types.
 */
declare enum CoinType {
    APTOS = "AptosCoin",// native coin
    WETH = "WETH",
    WBTC = "WBTC",
    USDC = "USDC",
    USDT = "USDT",
    BUSD = "BUSD",
    USDD = "USDD"
}
/**
 * Type representing a bridge coin type.
 */
type BridgeCoinType = CoinType.WETH | CoinType.WBTC | CoinType.USDC | CoinType.USDT | CoinType.BUSD | CoinType.USDD;
/**
 * Type representing a coin type that may be a bridge coin type, a string, or a TypeInfo object.
 */
type MayBeBridgeCoinType = BridgeCoinType | string | TypeInfo;
/**
 * Class representing a coin.
 */
declare class Coin {
    private sdk;
    private readonly bridge;
    /**
     * Creates an instance of the Coin class.
     *
     * @param {SDK} sdk - The SDK instance.
     * @param {aptos.MaybeHexString} [bridge] - The bridge address.
     */
    constructor(sdk: SDK, bridge?: aptos.MaybeHexString);
    /**
     * Gets the coin type as a string.
     *
     * @param {CoinType | string | TypeInfo} coin - The coin type.
     * @returns {string} The coin type as a string.
     */
    getCoinType(coin: CoinType | string | TypeInfo): string;
    /**
     * Creates a payload for transferring a coin.
     *
     * @param {CoinType} coin - The coin type.
     * @param {aptos.MaybeHexString} to - The recipient address.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} amount - The amount to transfer.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    transferPayload(coin: CoinType, to: aptos.MaybeHexString, amount: aptos.BCS.Uint64 | aptos.BCS.Uint32): aptos.Types.EntryFunctionPayload;
    /**
     * Transfers a coin.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {CoinType} coin - The coin type.
     * @param {aptos.MaybeHexString} to - The recipient address.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} amount - The amount to transfer.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    transfer(signer: aptos.AptosAccount, coin: CoinType, to: aptos.MaybeHexString, amount: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.Types.Transaction>;
    /**
     * Gets the balance of a coin for a given owner.
     *
     * @param {CoinType} coin - The coin type.
     * @param {aptos.MaybeHexString} owner - The owner address.
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the balance.
     */
    balance(coin: CoinType, owner: aptos.MaybeHexString): Promise<aptos.BCS.Uint64>;
    /**
     * Checks if an account is registered for a given coin.
     *
     * @param {CoinType} coin - The coin type.
     * @param {aptos.MaybeHexString} accountAddr - The account address.
     * @returns {Promise<boolean>} A promise that resolves to true if the account is registered, false otherwise.
     */
    isAccountRegistered(coin: CoinType, accountAddr: aptos.MaybeHexString): Promise<boolean>;
}

declare const DEFAULT_LIMITER_CAP_SD = 1000000000000;
declare const DEFAULT_LIMITER_WINDOW_SEC: number;
/**
 * Interface representing a remote coin.
 */
interface RemoteCoin {
    /**
     * The address of the remote coin.
     */
    address: aptos.BCS.Bytes;
    /**
     * The total value locked (TVL) in SD.
     */
    tvlSD: aptos.BCS.Uint64;
    /**
     * Indicates whether the coin is unwrappable.
     */
    unwrappable: boolean;
}
/**
 * Enum representing packet types.
 */
declare enum PacketType {
    RECIEVE = 0,
    SEND = 1
}
/**
 * Class representing a bridge.
 */
declare class Bridge {
    private sdk;
    private coin;
    private lzApp;
    private readonly uaType;
    readonly address: aptos.MaybeHexString;
    readonly module: string;
    readonly moduleName: string;
    SEND_PAYLOAD_LENGTH: number;
    /**
     * Creates an instance of Bridge.
     *
     * @param {SDK} sdk - The SDK instance.
     * @param {Coin} coin - The coin instance.
     * @param {aptos.MaybeHexString} [bridge] - The bridge address.
     * @param {aptos.MaybeHexString} [lzApp] - The LzApp address.
     */
    constructor(sdk: SDK, coin: Coin, bridge?: aptos.MaybeHexString, lzApp?: aptos.MaybeHexString);
    /**
     * Sets the application configuration.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint16} major - The major version.
     * @param {aptos.BCS.Uint8} minor - The minor version.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint8} configType - The configuration type.
     * @param {aptos.BCS.Bytes} configBytes - The configuration bytes.
     * @returns {Promise<aptos.Types.Transaction>} The transaction.
     */
    setAppConfig(signer: aptos.AptosAccount, major: aptos.BCS.Uint16, minor: aptos.BCS.Uint8, remoteChainId: aptos.BCS.Uint16, configType: aptos.BCS.Uint8, configBytes: aptos.BCS.Bytes): Promise<aptos.Types.Transaction>;
    /**
     * Gets the minimum destination gas.
     *
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Uint64} type - The type.
     * @returns {Promise<aptos.BCS.Uint64>} The minimum destination gas.
     */
    getMinDstGas(dstChainId: aptos.BCS.Uint16, type: aptos.BCS.Uint64): Promise<aptos.BCS.Uint64>;
    /**
     * Sets the minimum destination gas payload.
     *
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Uint64} packetType - The packet type.
     * @param {aptos.BCS.Uint64} minGas - The minimum gas.
     * @returns {aptos.Types.EntryFunctionPayload} The entry function payload.
     */
    setMinDstGasPayload(dstChainId: aptos.BCS.Uint16, packetType: aptos.BCS.Uint64, minGas: aptos.BCS.Uint64): aptos.Types.EntryFunctionPayload;
    /**
     * @deprecated use {@link isCustomAdapterParamsEnabled} instead
     */
    customAdapterParamsEnabled(): Promise<boolean>;
    /**
     * Checks if custom adapter parameters are enabled.
     *
     * @returns {Promise<boolean>} True if custom adapter parameters are enabled, false otherwise.
     */
    isCustomAdapterParamsEnabled(): Promise<boolean>;
    /**
     * Enables or disables custom adapter parameters.
     *
     * @param {boolean} enable - Whether to enable custom adapter parameters.
     * @returns {aptos.Types.EntryFunctionPayload} The entry function payload.
     */
    enableCustomAdapterParamsPayload(enable: boolean): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the remote bridge payload.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Bytes} remoteBridgeAddr - The remote bridge address.
     * @returns {aptos.Types.EntryFunctionPayload} The entry function payload.
     */
    setRemoteBridgePayload(remoteChainId: aptos.BCS.Uint16, remoteBridgeAddr: aptos.BCS.Bytes): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the remote bridge.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Bytes} remoteBridgeAddr - The remote bridge address.
     * @returns {Promise<aptos.Types.Transaction>} The transaction.
     */
    setRemoteBridge(signer: aptos.AptosAccount, remoteChainId: aptos.BCS.Uint16, remoteBridgeAddr: aptos.BCS.Bytes): Promise<aptos.Types.Transaction>;
    /**
     * Registers a coin payload.
     *
     * @param {BridgeCoinType} coin - The coin type.
     * @param {string} name - The name of the coin.
     * @param {string} symbol - The symbol of the coin.
     * @param {aptos.BCS.Uint8} decimals - The decimals of the coin.
     * @param {aptos.BCS.Uint32 | aptos.BCS.Uint64} limiterCapSD - The limiter cap in SD.
     * @returns {aptos.Types.EntryFunctionPayload} The entry function payload.
     */
    registerCoinPayload(coin: BridgeCoinType, name: string, symbol: string, decimals: aptos.BCS.Uint8, limiterCapSD: aptos.BCS.Uint32 | aptos.BCS.Uint64): aptos.Types.EntryFunctionPayload;
    /**
     * Registers a coin.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {BridgeCoinType} coin - The coin type.
     * @param {string} name - The name of the coin.
     * @param {string} symbol - The symbol of the coin.
     * @param {aptos.BCS.Uint8} decimals - The decimals of the coin.
     * @param {aptos.BCS.Uint32 | aptos.BCS.Uint64} limiterCapSD - The limiter cap in SD.
     * @returns {Promise<aptos.Types.Transaction>} The transaction.
     */
    registerCoin(signer: aptos.AptosAccount, coin: BridgeCoinType, name: string, symbol: string, decimals: aptos.BCS.Uint8, limiterCapSD: aptos.BCS.Uint32 | aptos.BCS.Uint64): Promise<aptos.Types.Transaction>;
    /**
     * Sets the remote coin payload.
     *
     * @param {BridgeCoinType} coin - The coin type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.MaybeHexString} remoteCoinAddr - The remote coin address.
     * @param {boolean} unwrappable - Whether the coin is unwrappable.
     * @returns {aptos.Types.EntryFunctionPayload} The entry function payload.
     */
    setRemoteCoinPayload(coin: BridgeCoinType, remoteChainId: aptos.BCS.Uint16, remoteCoinAddr: aptos.MaybeHexString, unwrappable: boolean): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the remote coin.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {BridgeCoinType} coin - The coin type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.MaybeHexString} remoteCoinAddr - The remote coin address.
     * @param {boolean} unwrappable - Whether the coin is unwrappable.
     * @returns {Promise<aptos.Types.Transaction>} The transaction.
     */
    setRemoteCoin(signer: aptos.AptosAccount, coin: BridgeCoinType, remoteChainId: aptos.BCS.Uint16, remoteCoinAddr: aptos.MaybeHexString, unwrappable: boolean): Promise<aptos.Types.Transaction>;
    /**
     * Sets the force resume payload.
     *
     * @param {aptos.BCS.Uint16} srcChainId - The source chain ID.
     * @returns {aptos.Types.EntryFunctionPayload} The entry function payload.
     */
    forceResumePayload(srcChainId: aptos.BCS.Uint16): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the force resume.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint16} srcChainId - The source chain ID.
     * @returns {Promise<aptos.Types.Transaction>} The transaction.
     */
    forceResume(signer: aptos.AptosAccount, srcChainId: aptos.BCS.Uint16): Promise<aptos.Types.Transaction>;
    /**
     * Sets the pause state for a coin.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {BridgeCoinType} coin - The coin type.
     * @param {boolean} paused - Whether to pause the coin.
     * @returns {Promise<aptos.Types.Transaction>} The transaction.
     */
    setPause(signer: aptos.AptosAccount, coin: BridgeCoinType, paused: boolean): Promise<aptos.Types.Transaction>;
    /**
     * Sets the send coin payload.
     *
     * @param {BridgeCoinType} coin - The coin type.
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Bytes} dstReceiver - The destination receiver address.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} amountLD - The amount in LD.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} nativeFee - The native fee.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} zroFee - The ZRO fee.
     * @param {boolean} unwrap - Whether to unwrap the coin.
     * @param {aptos.BCS.Bytes} adapterParams - The adapter parameters.
     * @param {aptos.BCS.Bytes} msglibParams - The message library parameters.
     * @returns {aptos.Types.EntryFunctionPayload} The entry function payload.
     */
    sendCoinPayload(coin: BridgeCoinType, dstChainId: aptos.BCS.Uint16, dstReceiver: aptos.BCS.Bytes, amountLD: aptos.BCS.Uint64 | aptos.BCS.Uint32, nativeFee: aptos.BCS.Uint64 | aptos.BCS.Uint32, zroFee: aptos.BCS.Uint64 | aptos.BCS.Uint32, unwrap: boolean, adapterParams: aptos.BCS.Bytes, msglibPararms: aptos.BCS.Bytes): aptos.Types.EntryFunctionPayload;
    /**
     * Sends a coin.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {BridgeCoinType} coin - The coin type.
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Bytes} dstReceiver - The destination receiver address.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} amountLD - The amount in LD.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} nativeFee - The native fee.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} zroFee - The ZRO fee.
     * @param {boolean} unwrap - Whether to unwrap the coin.
     * @param {aptos.BCS.Bytes} adapterParams - The adapter parameters.
     * @param {aptos.BCS.Bytes} msglibParams - The message library parameters.
     * @returns {Promise<aptos.Types.Transaction>} The transaction.
     */
    sendCoin(signer: aptos.AptosAccount, coin: BridgeCoinType, dstChainId: aptos.BCS.Uint16, dstReceiver: aptos.BCS.Bytes, amountLD: aptos.BCS.Uint64 | aptos.BCS.Uint32, nativeFee: aptos.BCS.Uint64 | aptos.BCS.Uint32, zroFee: aptos.BCS.Uint64 | aptos.BCS.Uint32, unwrap: boolean, adapterParams: aptos.BCS.Bytes, msglibParams: aptos.BCS.Bytes): Promise<aptos.Types.Transaction>;
    /**
     * Sets the lz receive payload.
     *
     * @param {BridgeCoinType} coin - The coin type.
     * @param {aptos.BCS.Uint16} srcChainId - The source chain ID.
     * @param {aptos.BCS.Bytes} srcAddress - The source address.
     * @param {aptos.BCS.Bytes} payload - The payload.
     * @returns {aptos.Types.EntryFunctionPayload} The entry function payload.
     */
    lzReceivePayload(coin: BridgeCoinType, srcChainId: aptos.BCS.Uint16, srcAddress: aptos.BCS.Bytes, payload: aptos.BCS.Bytes): aptos.Types.EntryFunctionPayload;
    /**
     * Receives a LayerZero message.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {BridgeCoinType} coin - The coin type.
     * @param {aptos.BCS.Uint16} srcChainId - The source chain ID.
     * @param {aptos.BCS.Bytes} srcAddress - The source address.
     * @param {aptos.BCS.Bytes} payload - The payload.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    lzReceive(signer: aptos.AptosAccount, coin: BridgeCoinType, srcChainId: aptos.BCS.Uint16, srcAddress: aptos.BCS.Bytes, payload: aptos.BCS.Bytes): Promise<aptos.Types.Transaction>;
    /**
     * Gets the types from a packet.
     *
     * @param {Packet} packet - The packet.
     * @returns {Promise<string[]>} A promise that resolves to the types.
     */
    getTypesFromPacket(packet: Packet): Promise<string[]>;
    /**
     * Creates a payload for claiming a coin.
     *
     * @param {BridgeCoinType} coin - The coin type.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    claimCoinPayload(coin: BridgeCoinType): aptos.Types.EntryFunctionPayload;
    /**
     * Claims a coin.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {BridgeCoinType} coin - The coin type.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    claimCoin(signer: aptos.AptosAccount, coin: BridgeCoinType): Promise<aptos.Types.Transaction>;
    /**
     * Checks if the global pause is enabled.
     *
     * @returns {Promise<boolean>} A promise that resolves to true if the global pause is enabled, false otherwise.
     */
    globalPaused(): Promise<boolean>;
    /**
     * Gets the remote bridge address for a given remote chain ID.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @returns {Promise<aptos.BCS.Bytes>} A promise that resolves to the remote bridge address.
     */
    getRemoteBridge(remoteChainId: aptos.BCS.Uint16): Promise<aptos.BCS.Bytes>;
    /**
     * Gets the coin type by remote coin address.
     *
     * @param {string | aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Bytes} remoteCoinAddr - The remote coin address.
     * @returns {Promise<TypeInfoEx>} A promise that resolves to the coin type information.
     */
    getCoinTypeByRemoteCoin(remoteChainId: string | aptos.BCS.Uint16, remoteCoinAddr: aptos.BCS.Bytes): Promise<TypeInfoEx>;
    /**
     * Gets the remote coin information.
     *
     * @param {MayBeBridgeCoinType} coin - The coin type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @returns {Promise<RemoteCoin>} A promise that resolves to the remote coin information.
     */
    getRemoteCoin(coin: MayBeBridgeCoinType, remoteChainId: aptos.BCS.Uint16): Promise<RemoteCoin>;
    /**
     * Gets the coin store resource.
     *
     * @param {MayBeBridgeCoinType} coin - The coin type.
     * @returns {Promise<aptos.Types.MoveResource>} A promise that resolves to the coin store resource.
     */
    private getCoinStore;
    /**
     * Gets the remote chains for a given coin.
     *
     * @param {MayBeBridgeCoinType} coin - The coin type.
     * @returns {Promise<string[]>} A promise that resolves to the remote chains.
     */
    getRemoteChains(coin: MayBeBridgeCoinType): Promise<string[]>;
    /**
     * Gets the remote coins for a given coin.
     *
     * @param {MayBeBridgeCoinType} coin - The coin type.
     * @returns {Promise<RemoteCoin[]>} A promise that resolves to the remote coins.
     */
    getRemoteCoins(coin: MayBeBridgeCoinType): Promise<RemoteCoin[]>;
    /**
     * Checks if a remote coin exists for a given coin and remote chain ID.
     *
     * @param {BridgeCoinType} coin - The coin type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @returns {Promise<boolean>} A promise that resolves to true if the remote coin exists, false otherwise.
     */
    hasRemoteCoin(coin: BridgeCoinType, remoteChainId: aptos.BCS.Uint16): Promise<boolean>;
    /**
     * Gets the claimable coin amount for a given coin and owner.
     *
     * @param {BridgeCoinType} coin - The coin type.
     * @param {aptos.MaybeHexString} owner - The owner address.
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the claimable coin amount.
     */
    getClaimableCoin(coin: BridgeCoinType, owner: aptos.MaybeHexString): Promise<aptos.BCS.Uint64>;
    /**
     * Checks if a coin is registered.
     *
     * @param {BridgeCoinType} coin - The coin type.
     * @returns {Promise<boolean>} A promise that resolves to true if the coin is registered, false otherwise.
     */
    hasCoinRegistered(coin: BridgeCoinType): Promise<boolean>;
    /**
     * Gets the LD to SD rate for a given coin.
     *
     * @param {BridgeCoinType} coin - The coin type.
     * @returns {Promise<string>} A promise that resolves to the LD to SD rate.
     */
    getLd2SdRate(coin: BridgeCoinType): Promise<string>;
    /**
     * Converts an amount from SD to LD.
     *
     * @param {BridgeCoinType} coin - The coin type.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} amountSD - The amount in SD.
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the amount in LD.
     */
    convertAmountToLD(coin: BridgeCoinType, amountSD: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.BCS.Uint64>;
    /**
     * Converts an amount from LD to SD.
     *
     * @param {BridgeCoinType} coin - The coin type.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} amountLD - The amount in LD.
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the amount in SD.
     */
    convertAmountToSD(coin: BridgeCoinType, amountLD: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.BCS.Uint64>;
    /**
     * Creates a payload for registering a coin.
     *
     * @param {BridgeCoinType} coin - The coin type.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    registerPayload(coin: BridgeCoinType): aptos.Types.EntryFunctionPayload;
    /**
     * Registers a coin.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {BridgeCoinType} coin - The coin type.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    coinRegister(signer: aptos.AptosAccount, coin: BridgeCoinType): Promise<aptos.Types.Transaction>;
    /**
     * Gets the coin type store resource.
     *
     * @returns {Promise<aptos.Types.MoveResource>} A promise that resolves to the coin type store resource.
     */
    private getCoinTypeStore;
    /**
     * Gets the coin types.
     *
     * @returns {Promise<TypeInfoEx[]>} A promise that resolves to the coin types.
     */
    getCoinTypes(): Promise<TypeInfoEx[]>;
    /**
     * Gets the coin information for a given coin type.
     *
     * @param {MayBeBridgeCoinType} coinType - The coin type.
     * @returns {Promise<CoinInfoEx>} A promise that resolves to the coin information.
     */
    getCoinInfo(coinType: MayBeBridgeCoinType): Promise<CoinInfoEx>;
    /**
     * Gets the limited amount for a given coin.
     *
     * @param {BridgeCoinType} coin - The coin type.
     * @returns {Promise<{ limited: boolean; amount: aptos.BCS.Uint64 }>} A promise that resolves to the limited amount.
     */
    getLimitedAmount(coin: BridgeCoinType): Promise<{
        limited: boolean;
        amount: aptos.BCS.Uint64;
    }>;
    /**
     * Gets the current timestamp.
     *
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the current timestamp.
     */
    private getCurrentTimestamp;
    /**
     * Creates a payload for setting the limiter cap.
     *
     * @param {BridgeCoinType} coin - The coin type.
     * @param {boolean} enable - Whether to enable the limiter.
     * @param {aptos.BCS.Uint32 | aptos.BCS.Uint64} capSD - The cap in SD.
     * @param {aptos.BCS.Uint32 | aptos.BCS.Uint64} windowSec - The window in seconds.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setLimiterCapPayload(coin: BridgeCoinType, enable: boolean, capSD: aptos.BCS.Uint32 | aptos.BCS.Uint64, windowSec: aptos.BCS.Uint32 | aptos.BCS.Uint64): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the limiter cap.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {BridgeCoinType} coin - The coin type.
     * @param {boolean} enable - Whether to enable the limiter.
     * @param {aptos.BCS.Uint32 | aptos.BCS.Uint64} capSD - The cap in SD.
     * @param {aptos.BCS.Uint32 | aptos.BCS.Uint64} windowSec - The window in seconds.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setLimiterCap(signer: aptos.AptosAccount, coin: BridgeCoinType, enable: boolean, capSD: aptos.BCS.Uint32 | aptos.BCS.Uint64, windowSec: aptos.BCS.Uint32 | aptos.BCS.Uint64): Promise<aptos.Types.Transaction>;
    /**
     * Gets the limit cap for a given coin.
     *
     * @param {BridgeCoinType} coin - The coin type.
     * @returns {Promise<{ enabled: boolean; capSD: aptos.BCS.Uint64; windowSec: aptos.BCS.Uint64 }>} A promise that resolves to an object containing the limit cap information.
     * @throws {Error} If an error occurs while fetching the limit cap.
     */
    getLimitCap(coin: BridgeCoinType): Promise<{
        enabled: boolean;
        capSD: aptos.BCS.Uint64;
        windowSec: aptos.BCS.Uint64;
    }>;
    /**
     * Sets the global pause state.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {boolean} pause - The pause state to set.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setGlobalPause(signer: aptos.AptosAccount, pause: boolean): Promise<aptos.Types.Transaction>;
}

type bridge_Bridge = Bridge;
  declare const bridge_Bridge: typeof Bridge;
  declare const bridge_DEFAULT_LIMITER_CAP_SD: typeof DEFAULT_LIMITER_CAP_SD;
  declare const bridge_DEFAULT_LIMITER_WINDOW_SEC: typeof DEFAULT_LIMITER_WINDOW_SEC;
  type bridge_PacketType = PacketType;
  declare const bridge_PacketType: typeof PacketType;
  type bridge_RemoteCoin = RemoteCoin;
  declare namespace bridge {
  export { bridge_Bridge as Bridge, bridge_DEFAULT_LIMITER_CAP_SD as DEFAULT_LIMITER_CAP_SD, bridge_DEFAULT_LIMITER_WINDOW_SEC as DEFAULT_LIMITER_WINDOW_SEC, bridge_PacketType as PacketType, type bridge_RemoteCoin as RemoteCoin };
}

/**
 * Class representing a Counter application.
 */
declare class Counter {
    /**
     * The SDK instance.
     */
    private sdk;
    /**
     * The LzApp instance.
     */
    private lzApp;
    /**
     * The user application type.
     */
    private readonly uaType;
    /**
     * The address of the counter.
     */
    readonly address: aptos.MaybeHexString;
    /**
     * The length of the send payload.
     */
    SEND_PAYLOAD_LENGTH: number;
    /**
     * Creates an instance of Counter.
     *
     * @param {SDK} sdk - The SDK instance.
     * @param {aptos.MaybeHexString} counter - The counter address.
     * @param {aptos.MaybeHexString} [lzApp] - The LzApp address.
     */
    constructor(sdk: SDK, counter: aptos.MaybeHexString, lzApp?: aptos.MaybeHexString);
    /**
     * Initializes the counter.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @returns {Promise<aptos.Types.Transaction>} The transaction result.
     */
    initialize(signer: aptos.AptosAccount): Promise<aptos.Types.Transaction>;
    /**
     * Gets the remote address for a given chain ID.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @returns {Promise<aptos.BCS.Bytes>} The remote address.
     */
    getRemote(remoteChainId: aptos.BCS.Uint16): Promise<aptos.BCS.Bytes>;
    /**
     * Gets the current count.
     *
     * @returns {Promise<aptos.BCS.Uint64>} The current count.
     */
    getCount(): Promise<aptos.BCS.Uint64>;
    /**
     * Creates a payload for setting a remote address.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Bytes} remoteAddress - The remote address.
     * @returns {aptos.Types.EntryFunctionPayload} The entry function payload.
     */
    setRemotePayload(remoteChainId: aptos.BCS.Uint16, remoteAddress: aptos.BCS.Bytes): aptos.Types.EntryFunctionPayload;
    /**
     * Sets a remote address.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Bytes} remoteAddress - The remote address.
     * @returns {Promise<aptos.Types.Transaction>} The transaction result.
     */
    setRemote(signer: aptos.AptosAccount, remoteChainId: aptos.BCS.Uint16, remoteAddress: aptos.BCS.Bytes): Promise<aptos.Types.Transaction>;
    /**
     * Creates a payload for setting the executor version and address.
     *
     * @param {string} uaType - The user application type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint8} executorVersion - The executor version.
     * @param {string} executorAddress - The executor address.
     * @returns {aptos.Types.EntryFunctionPayload} The entry function payload.
     */
    setExecutorPayload(uaType: string, remoteChainId: aptos.BCS.Uint16, executorVersion: aptos.BCS.Uint8, executorAddress: string): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the executor version and address.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} uaType - The user application type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint8} executorVersion - The executor version.
     * @param {string} executorAddress - The executor address.
     * @returns {Promise<aptos.Types.Transaction>} The transaction result.
     */
    setExecutor(signer: aptos.AptosAccount, uaType: string, remoteChainId: aptos.BCS.Uint16, executorVersion: aptos.BCS.Uint8, executorAddress: string): Promise<aptos.Types.Transaction>;
    /**
     * Creates a payload for setting the send msglib.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint16} majorVersion - The major version.
     * @param {aptos.BCS.Uint8} minorVersion - The minor version.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setAppSendMsglibPayload(remoteChainId: aptos.BCS.Uint16, majorVersion: aptos.BCS.Uint16, minorVersion: aptos.BCS.Uint8): aptos.Types.EntryFunctionPayload;
    /**
     * Creates a payload for setting the receive msglib.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint16} majorVersion - The major version.
     * @param {aptos.BCS.Uint8} minorVersion - The minor version.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setAppReceiveMsglibPayload(remoteChainId: aptos.BCS.Uint16, majorVersion: aptos.BCS.Uint16, minorVersion: aptos.BCS.Uint8): aptos.Types.EntryFunctionPayload;
    /**
     * Creates a payload for setting the application configuration.
     *
     * @param {aptos.BCS.Uint16} majorVersion - The major version.
     * @param {aptos.BCS.Uint8} minorVersion - The minor version.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint8} configType - The configuration type.
     * @param {aptos.BCS.Bytes} configBytes - The configuration bytes.
     * @returns {aptos.Types.EntryFunctionPayload} The entry function payload.
     */
    setAppConfigPayload(majorVersion: aptos.BCS.Uint16, minorVersion: aptos.BCS.Uint8, remoteChainId: aptos.BCS.Uint16, configType: aptos.BCS.Uint8, configBytes: aptos.BCS.Bytes): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the application configuration.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint16} majorVersion - The major version.
     * @param {aptos.BCS.Uint8} minorVersion - The minor version.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint8} configType - The configuration type.
     * @param {aptos.BCS.Bytes} configBytes - The configuration bytes.
     * @returns {Promise<aptos.Types.Transaction>} The transaction result.
     */
    setAppConfig(signer: aptos.AptosAccount, majorVersion: aptos.BCS.Uint16, minorVersion: aptos.BCS.Uint8, remoteChainId: aptos.BCS.Uint16, configType: aptos.BCS.Uint8, configBytes: aptos.BCS.Bytes): Promise<aptos.Types.Transaction>;
    /**
     * Sets the application configuration bundle.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint16} majorVersion - The major version.
     * @param {aptos.BCS.Uint8} minorVersion - The minor version.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {UlnConfigType} config - The configuration bundle.
     * @returns {Promise<void>} A promise that resolves when the configuration is set.
     */
    setAppConfigBundle(signer: aptos.AptosAccount, majorVersion: aptos.BCS.Uint16, minorVersion: aptos.BCS.Uint8, remoteChainId: aptos.BCS.Uint16, config: UlnConfigType): Promise<void>;
    /**
     * Creates a payload for sending data to a remote chain.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} fee - The fee amount.
     * @param {Uint8Array} adapterParams - The adapter parameters.
     * @returns {aptos.Types.EntryFunctionPayload} The entry function payload.
     */
    sendToRemotePayload(remoteChainId: aptos.BCS.Uint16, fee: aptos.BCS.Uint64 | aptos.BCS.Uint32, adapterParams: Uint8Array): aptos.Types.EntryFunctionPayload;
    /**
     * Sends data to a remote chain.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} fee - The fee amount.
     * @param {Uint8Array} adapterParams - The adapter parameters.
     * @returns {Promise<aptos.Types.Transaction>} The transaction result.
     */
    sendToRemote(signer: aptos.AptosAccount, remoteChainId: aptos.BCS.Uint16, fee: aptos.BCS.Uint64 | aptos.BCS.Uint32, adapterParams: Uint8Array): Promise<aptos.Types.Transaction>;
    /**
     * Receives data from a remote chain.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Bytes} remoteAddress - The remote address.
     * @param {aptos.BCS.Bytes} payload - The payload data.
     * @returns {Promise<aptos.Types.Transaction>} The transaction result.
     */
    lzReceive(signer: aptos.AptosAccount, remoteChainId: aptos.BCS.Uint16, remoteAddress: aptos.BCS.Bytes, payload: aptos.BCS.Bytes): Promise<aptos.Types.Transaction>;
    /**
     * Checks if a counter is created for a given address.
     *
     * @param {aptos.MaybeHexString} address - The address to check.
     * @returns {Promise<boolean>} True if the counter is created, false otherwise.
     */
    isCounterCreated(address: aptos.MaybeHexString): Promise<boolean>;
    /**
     * Gets the fee quote for sending a message to a remote chain.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {string} adapterParams - The adapter parameters.
     * @param {boolean} payInZro - Whether to pay the fee in ZRO tokens.
     * @returns {Promise<[aptos.BCS.Uint64, aptos.BCS.Uint64]>} A tuple containing the native fee and ZRO fee.
     */
    quoteFee(remoteChainId: aptos.BCS.Uint16, adapterParams: string, payInZro: boolean): Promise<[aptos.BCS.Uint64, aptos.BCS.Uint64]>;
}

/**
 * Class representing a Multisig Oracle.
 */
declare class MultisigOracle {
    sdk: SDK;
    readonly address: aptos.MaybeHexString;
    readonly module: string;
    readonly moduleName: string;
    /**
     * Creates an instance of the MultisigOracle class.
     *
     * @param {SDK} sdk - The SDK instance.
     * @param {aptos.MaybeHexString} address - The address of the multisig oracle.
     */
    constructor(sdk: SDK, address: aptos.MaybeHexString);
    /**
     * Gets the payload for proposing a transaction.
     *
     * @param {Uint8Array} hash - The hash of the transaction.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} confirmations - The number of confirmations required.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getProposePayload(hash: Uint8Array, confirmations: aptos.BCS.Uint64 | aptos.BCS.Uint32): aptos.Types.EntryFunctionPayload;
    /**
     * Proposes a transaction.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {Uint8Array} hash - The hash of the transaction.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} confirmations - The number of confirmations required.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    propose(signer: aptos.AptosAccount, hash: Uint8Array, confirmations: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.Types.Transaction>;
    /**
     * Gets the entry function for proposing a transaction.
     *
     * @param {aptos.MaybeHexString} hash - The hash of the transaction.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} confirmations - The number of confirmations required.
     * @returns {aptos.TxnBuilderTypes.TransactionPayloadEntryFunction} The entry function.
     */
    getProposeEntryFunction(hash: aptos.MaybeHexString, confirmations: aptos.BCS.Uint64 | aptos.BCS.Uint32): aptos.TxnBuilderTypes.TransactionPayloadEntryFunction;
    /**
     * Gets the payload for transferring the validator role.
     *
     * @param {aptos.MaybeHexString} newValidator - The new validator address.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getTransferValidatorPayload(newValidator: aptos.MaybeHexString): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the validator.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.MaybeHexString} newValidator - The new validator address.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setValidator(signer: aptos.AptosAccount, newValidator: aptos.MaybeHexString): Promise<aptos.Types.Transaction>;
    /**
     * Gets the payload for setting an admin.
     *
     * @param {aptos.MaybeHexString} candidate - The candidate address.
     * @param {boolean} active - The active state.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getSetAdminPayload(candidate: aptos.MaybeHexString, active: boolean): aptos.Types.EntryFunctionPayload;
    /**
     * Sets an admin.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.MaybeHexString} candidate - The candidate address.
     * @param {boolean} active - The active state.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setAdmin(signer: aptos.AptosAccount, candidate: aptos.MaybeHexString, active: boolean): Promise<aptos.Types.Transaction>;
    /**
     * Gets the payload for allowlisting a user address.
     *
     * @param {aptos.MaybeHexString} ua - The user address.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getAllowlistPayload(ua: aptos.MaybeHexString): aptos.Types.EntryFunctionPayload;
    /**
     * Allowlists a user address.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.MaybeHexString} ua - The user address.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    allowlist(signer: aptos.AptosAccount, ua: aptos.MaybeHexString): Promise<aptos.Types.Transaction>;
    /**
     * Gets the payload for denylisting a user address.
     *
     * @param {aptos.MaybeHexString} ua - The user address.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getDenylistPayload(ua: aptos.MaybeHexString): aptos.Types.EntryFunctionPayload;
    /**
     * Denylists a user address.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.MaybeHexString} ua - The user address.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    denylist(signer: aptos.AptosAccount, ua: aptos.MaybeHexString): Promise<aptos.Types.Transaction>;
    /**
     * Gets the payload for setting the fee.
     *
     * @param {aptos.BCS.Uint64} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint64} baseFee - The base fee.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getSetFeePayload(remoteChainId: aptos.BCS.Uint64, baseFee: aptos.BCS.Uint64): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the fee.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint64} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint64} baseFee - The base fee.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setFee(signer: aptos.AptosAccount, remoteChainId: aptos.BCS.Uint64, baseFee: aptos.BCS.Uint64): Promise<aptos.Types.Transaction>;
    /**
     * Gets the payload for withdrawing the fee.
     *
     * @param {aptos.MaybeHexString} receiver - The receiver address.
     * @param {aptos.BCS.Uint64} amount - The amount to withdraw.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getWithdrawFeePayload(receiver: aptos.MaybeHexString, amount: aptos.BCS.Uint64): aptos.Types.EntryFunctionPayload;
    /**
     * Withdraws the fee.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.MaybeHexString} receiver - The receiver address.
     * @param {aptos.BCS.Uint64} amount - The amount to withdraw.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    withdrawFee(signer: aptos.AptosAccount, receiver: aptos.MaybeHexString, amount: aptos.BCS.Uint64): Promise<aptos.Types.Transaction>;
    /**
     * Checks if an account is an admin.
     *
     * @param {aptos.MaybeHexString} account - The account address.
     * @returns {Promise<boolean>} A promise that resolves to true if the account is an admin, false otherwise.
     */
    isAdmin(account: aptos.MaybeHexString): Promise<boolean>;
    /**
     * Gets the validator address.
     *
     * @returns {Promise<aptos.MaybeHexString>} A promise that resolves to the validator address.
     */
    getValidator(): Promise<aptos.MaybeHexString>;
    /**
     * Checks if an account is a validator.
     *
     * @param {aptos.MaybeHexString} validator - The validator address.
     * @returns {Promise<boolean>} A promise that resolves to true if the account is a validator, false otherwise.
     */
    isValidator(validator: aptos.MaybeHexString): Promise<boolean>;
    /**
     * Gets the multisig public key and address.
     *
     * @param {string[]} validatorPubKeys - The validator public keys.
     * @returns {Promise<[aptos.TxnBuilderTypes.MultiEd25519PublicKey, string]>} A promise that resolves to the multisig public key and address.
     */
    getMultisigPubKeyAndAddress(validatorPubKeys: string[]): Promise<[aptos.TxnBuilderTypes.MultiEd25519PublicKey, string]>;
    /**
     * Gets the resource address.
     *
     * @returns {Promise<string>} A promise that resolves to the resource address.
     */
    getResourceAddress(): Promise<string>;
}

/**
 * Class representing a Multisig Oracle TSS.
 */
declare class MultisigOracleTss {
    sdk: SDK;
    readonly address: aptos.MaybeHexString;
    readonly module: string;
    readonly moduleName: string;
    /**
     * Creates an instance of the MultisigOracleTss class.
     *
     * @param {SDK} sdk - The SDK instance.
     * @param {aptos.MaybeHexString} address - The address of the multisig oracle.
     */
    constructor(sdk: SDK, address: aptos.MaybeHexString);
    /**
     * Gets the payload for proposing a transaction.
     *
     * @param {Uint8Array} hash - The hash of the transaction.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} confirmations - The number of confirmations.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} expiration - The expiration time.
     * @param {Uint8Array} signatures - The signatures.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getProposePayload(hash: Uint8Array, confirmations: aptos.BCS.Uint64 | aptos.BCS.Uint32, expiration: aptos.BCS.Uint64 | aptos.BCS.Uint32, signatures: Uint8Array): aptos.Types.EntryFunctionPayload;
    /**
     * Proposes a transaction.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {Uint8Array} hash - The hash of the transaction.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} confirmations - The number of confirmations.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} expiration - The expiration time.
     * @param {Uint8Array} signatures - The signatures.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    propose(signer: aptos.AptosAccount, hash: Uint8Array, confirmations: aptos.BCS.Uint64 | aptos.BCS.Uint32, expiration: aptos.BCS.Uint64 | aptos.BCS.Uint32, signatures: Uint8Array): Promise<aptos.Types.Transaction>;
    /**
     * Gets the payload for setting a validator.
     *
     * @param {Uint8Array} validator - The validator address.
     * @param {boolean} active - Whether the validator is active.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} expiration - The expiration time.
     * @param {Uint8Array} signatures - The signatures.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getSetValidatorPayload(validator: Uint8Array, active: boolean, expiration: aptos.BCS.Uint64 | aptos.BCS.Uint32, signatures: Uint8Array): aptos.Types.EntryFunctionPayload;
    /**
     * Sets a validator.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {Uint8Array} validator - The validator address.
     * @param {boolean} active - Whether the validator is active.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} expiration - The expiration time.
     * @param {Uint8Array} signatures - The signatures.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setValidator(signer: aptos.AptosAccount, validator: Uint8Array, active: boolean, expiration: aptos.BCS.Uint64 | aptos.BCS.Uint32, signatures: Uint8Array): Promise<aptos.Types.Transaction>;
    /**
     * Gets the payload for setting the threshold.
     *
     * @param {aptos.BCS.Uint8} threshold - The threshold.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} expiration - The expiration time.
     * @param {Uint8Array} signatures - The signatures.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getSetThresholdPayload(threshold: aptos.BCS.Uint8, expiration: aptos.BCS.Uint64 | aptos.BCS.Uint32, signatures: Uint8Array): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the threshold.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint8} threshold - The threshold.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} expiration - The expiration time.
     * @param {Uint8Array} signatures - The signatures.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setThreshold(signer: aptos.AptosAccount, threshold: aptos.BCS.Uint8, expiration: aptos.BCS.Uint64 | aptos.BCS.Uint32, signatures: Uint8Array): Promise<aptos.Types.Transaction>;
    /**
     * Gets the payload for setting an admin.
     *
     * @param {aptos.MaybeHexString} candidate - The candidate address.
     * @param {boolean} active - Whether the admin is active.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} expiration - The expiration time.
     * @param {Uint8Array} signatures - The signatures.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getSetAdminPayload(candidate: aptos.MaybeHexString, active: boolean, expiration: aptos.BCS.Uint64 | aptos.BCS.Uint32, signatures: Uint8Array): aptos.Types.EntryFunctionPayload;
    /**
     * Sets an admin.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.MaybeHexString} candidate - The candidate address.
     * @param {boolean} active - Whether the admin is active.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} expiration - The expiration time.
     * @param {Uint8Array} signatures - The signatures.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setAdmin(signer: aptos.AptosAccount, candidate: aptos.MaybeHexString, active: boolean, expiration: aptos.BCS.Uint64 | aptos.BCS.Uint32, signatures: Uint8Array): Promise<aptos.Types.Transaction>;
    /**
     * Gets the payload for allowlisting a user.
     *
     * @param {aptos.MaybeHexString} ua - The user address.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} expiration - The expiration time.
     * @param {Uint8Array} signatures - The signatures.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getAllowlistPayload(ua: aptos.MaybeHexString, expiration: aptos.BCS.Uint64 | aptos.BCS.Uint32, signatures: Uint8Array): aptos.Types.EntryFunctionPayload;
    /**
     * Allowlists a user.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.MaybeHexString} ua - The user address.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} expiration - The expiration time.
     * @param {Uint8Array} signatures - The signatures.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    allowlist(signer: aptos.AptosAccount, ua: aptos.MaybeHexString, expiration: aptos.BCS.Uint64 | aptos.BCS.Uint32, signatures: Uint8Array): Promise<aptos.Types.Transaction>;
    /**
     * Gets the payload for denylisting a user.
     *
     * @param {aptos.MaybeHexString} ua - The user address.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} expiration - The expiration time.
     * @param {Uint8Array} signatures - The signatures.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getDenylistPayload(ua: aptos.MaybeHexString, expiration: aptos.BCS.Uint64 | aptos.BCS.Uint32, signatures: Uint8Array): aptos.Types.EntryFunctionPayload;
    /**
     * Denylists a user.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.MaybeHexString} ua - The user address.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} expiration - The expiration time.
     * @param {Uint8Array} signatures - The signatures.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    denylist(signer: aptos.AptosAccount, ua: aptos.MaybeHexString, expiration: aptos.BCS.Uint64 | aptos.BCS.Uint32, signatures: Uint8Array): Promise<aptos.Types.Transaction>;
    /**
     * Gets the payload for initializing the configuration.
     *
     * @param {Uint8Array[]} validators - The validators.
     * @param {aptos.BCS.Uint8} threshold - The threshold.
     * @param {aptos.MaybeHexString[]} admins - The admins.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getInitConfigPayload(validators: Uint8Array[], threshold: aptos.BCS.Uint8, admins: aptos.MaybeHexString[]): {
        function: string;
        type_arguments: never[];
        arguments: (number | Uint8Array[] | aptos.MaybeHexString[])[];
    };
    /**
     * Initializes the configuration.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {Uint8Array[]} validators - The validators.
     * @param {aptos.BCS.Uint8} threshold - The threshold.
     * @param {aptos.MaybeHexString[]} admins - The admins.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    initConfig(signer: aptos.AptosAccount, validators: Uint8Array[], threshold: aptos.BCS.Uint8, admins: aptos.MaybeHexString[]): Promise<aptos.Types.Transaction>;
    /**
     * Gets the payload for setting the fee.
     *
     * @param {aptos.BCS.Uint64} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint64} baseFee - The base fee.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getSetFeePayload(remoteChainId: aptos.BCS.Uint64, baseFee: aptos.BCS.Uint64): {
        function: string;
        type_arguments: never[];
        arguments: bigint[];
    };
    /**
     * Gets the payload for upgrading the contract.
     *
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getUpgradePayload(): {
        function: string;
        type_arguments: never[];
        arguments: never[];
    };
    /**
     * Upgrades the contract.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    upgrade(signer: aptos.AptosAccount): Promise<aptos.Types.Transaction>;
    /**
     * Gets the payload for setting the use of MSO.
     *
     * @param {boolean} useMso - Whether to use MSO.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getSetUseMsoPayload(useMso: boolean): {
        function: string;
        type_arguments: never[];
        arguments: boolean[];
    };
    /**
     * Sets the use of MSO.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {boolean} useMso - Whether to use MSO.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setUseMso(signer: aptos.AptosAccount, useMso: boolean): Promise<aptos.Types.Transaction>;
    /**
     * Sets the fee.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint64} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint64} baseFee - The base fee.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setFee(signer: aptos.AptosAccount, remoteChainId: aptos.BCS.Uint64, baseFee: aptos.BCS.Uint64): Promise<aptos.Types.Transaction>;
    /**
     * Gets the payload for withdrawing the fee.
     *
     * @param {aptos.MaybeHexString} receiver - The receiver address.
     * @param {aptos.BCS.Uint64} amount - The amount to withdraw.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getWithdrawFeePayload(receiver: aptos.MaybeHexString, amount: aptos.BCS.Uint64): aptos.Types.EntryFunctionPayload;
    /**
     * Withdraws the fee.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.MaybeHexString} receiver - The receiver address.
     * @param {aptos.BCS.Uint64} amount - The amount to withdraw.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    withdrawFee(signer: aptos.AptosAccount, receiver: aptos.MaybeHexString, amount: aptos.BCS.Uint64): Promise<aptos.Types.Transaction>;
    /**
     * Gets the list of admin addresses.
     *
     * @returns {Promise<aptos.MaybeHexString[]>} A promise that resolves to the list of admin addresses.
     */
    getAdmins(): Promise<aptos.MaybeHexString[]>;
    /**
     * Gets the list of validator addresses.
     *
     * @returns {Promise<aptos.MaybeHexString[]>} A promise that resolves to the list of validator addresses.
     */
    getValidators(): Promise<aptos.MaybeHexString[]>;
    /**
     * Gets the threshold value.
     *
     * @returns {Promise<aptos.BCS.Uint8>} A promise that resolves to the threshold value.
     */
    getThreshold(): Promise<aptos.BCS.Uint8>;
    /**
     * Gets the resource address.
     *
     * @returns {Promise<string>} A promise that resolves to the resource address.
     */
    getResourceAddress(): Promise<string>;
    /**
     * Checks if an account is an admin.
     *
     * @param {aptos.MaybeHexString} account - The account address.
     * @returns {Promise<boolean>} A promise that resolves to true if the account is an admin, false otherwise.
     */
    isAdmin(account: aptos.MaybeHexString): Promise<boolean>;
    /**
     * Checks if an account is a validator.
     *
     * @param {aptos.MaybeHexString} validator - The validator address.
     * @returns {Promise<boolean>} A promise that resolves to true if the account is a validator, false otherwise.
     */
    isValidator(validator: aptos.MaybeHexString): Promise<boolean>;
    /**
     * Hashes the propose function data.
     *
     * @param {aptos.MaybeHexString} hash - The hash.
     * @param {number} blockConfirmation - The block confirmation.
     * @param {number} expiration - The expiration time.
     * @returns {string} The hashed propose function data.
     */
    hashPropose(hash: aptos.MaybeHexString, blockConfirmation: number, expiration: number): string;
    /**
     * Hashes the set validator function data.
     *
     * @param {aptos.MaybeHexString} validator - The validator address.
     * @param {boolean} active - The active state.
     * @param {number} expiration - The expiration time.
     * @returns {string} The hashed set validator function data.
     */
    hashSetValidator(validator: aptos.MaybeHexString, active: boolean, expiration: number): string;
    /**
     * Hashes the set threshold function data.
     *
     * @param {aptos.BCS.Uint8} threshold - The threshold value.
     * @param {number} expiration - The expiration time.
     * @returns {string} The hashed set threshold function data.
     */
    hashSetThreshold(threshold: aptos.BCS.Uint8, expiration: number): string;
    /**
     * Hashes the allowlist function data.
     *
     * @param {aptos.MaybeHexString} ua - The user address.
     * @param {number} expiration - The expiration time.
     * @returns {string} The hashed allowlist function data.
     */
    hashAllowlist(ua: aptos.MaybeHexString, expiration: number): string;
    /**
     * Hashes the denylist function data.
     *
     * @param {aptos.MaybeHexString} ua - The user address.
     * @param {number} expiration - The expiration time.
     * @returns {string} The hashed denylist function data.
     */
    hashDenylist(ua: aptos.MaybeHexString, expiration: number): string;
}

/**
 * Class representing an OFT (Omnichain Fungible Token).
 */
declare class OFT {
    readonly address: aptos.MaybeHexString;
    readonly module: string;
    SEND_PAYLOAD_LENGTH: number;
    private sdk;
    private lzApp;
    /**
     * Creates an instance of the OFT class.
     *
     * @param {SDK} sdk - The SDK instance.
     */
    constructor(sdk: SDK);
    /**
     * Sets the application configuration.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} oftType - The OFT type.
     * @param {aptos.BCS.Uint16} major - The major version.
     * @param {aptos.BCS.Uint8} minor - The minor version.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint8} configType - The configuration type.
     * @param {aptos.BCS.Bytes} configBytes - The configuration bytes.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setAppConfig(signer: aptos.AptosAccount, oftType: string, major: aptos.BCS.Uint16, minor: aptos.BCS.Uint8, remoteChainId: aptos.BCS.Uint16, configType: aptos.BCS.Uint8, configBytes: aptos.BCS.Bytes): Promise<aptos.Types.Transaction>;
    /**
     * Gets the minimum destination gas.
     *
     * @param {string} oftType - The OFT type.
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Uint64} type - The type.
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the minimum destination gas.
     */
    getMinDstGas(oftType: string, dstChainId: aptos.BCS.Uint16, type: aptos.BCS.Uint64): Promise<aptos.BCS.Uint64>;
    /**
     * Gets the payload for setting the minimum destination gas.
     *
     * @param {string} oftType - The OFT type.
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Uint64} packetType - The packet type.
     * @param {aptos.BCS.Uint64} minGas - The minimum gas.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setMinDstGasPayload(oftType: string, dstChainId: aptos.BCS.Uint16, packetType: aptos.BCS.Uint64, minGas: aptos.BCS.Uint64): aptos.Types.EntryFunctionPayload;
    /**
     * Checks if custom adapter parameters are enabled.
     *
     * @param {string} oftType - The OFT type.
     * @returns {Promise<boolean>} A promise that resolves to true if custom adapter parameters are enabled, false otherwise.
     */
    customAdapterParamsEnabled(oftType: string): Promise<boolean>;
    /**
     * Gets the payload for enabling custom adapter parameters.
     *
     * @param {string} oftType - The OFT type.
     * @param {boolean} enable - Whether to enable custom adapter parameters.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    enableCustomAdapterParamsPayload(oftType: string, enable: boolean): aptos.Types.EntryFunctionPayload;
    /**
     * Gets the payload for setting the remote address.
     *
     * @param {string} oftType - The OFT type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Bytes} remoteOftAddr - The remote OFT address.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setRemotePayload(oftType: string, remoteChainId: aptos.BCS.Uint16, remoteOftAddr: aptos.BCS.Bytes): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the remote address.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} oftType - The OFT type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Bytes} remoteOftAddr - The remote OFT address.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setRemote(signer: aptos.AptosAccount, oftType: string, remoteChainId: aptos.BCS.Uint16, remoteOftAddr: aptos.BCS.Bytes): Promise<aptos.Types.Transaction>;
    /**
     * Gets the remote address.
     *
     * @param {string} oftType - The OFT type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @returns {Promise<aptos.BCS.Bytes>} A promise that resolves to the remote address.
     */
    getRemote(oftType: string, remoteChainId: aptos.BCS.Uint16): Promise<aptos.BCS.Bytes>;
    /**
     * Gets the payload for setting the default fee.
     *
     * @param {string} oftType - The OFT type.
     * @param {aptos.BCS.Uint64} feeBp - The fee basis points.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    payloadOfSetDefaultFee(oftType: string, feeBp: aptos.BCS.Uint64): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the default fee.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} oftType - The OFT type.
     * @param {aptos.BCS.Uint64} feeBp - The fee basis points.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setDefaultFee(signer: aptos.AptosAccount, oftType: string, feeBp: aptos.BCS.Uint64): Promise<aptos.Types.Transaction>;
    /**
     * Gets the default fee.
     *
     * @param {string} oftType - The OFT type.
     * @returns {Promise<string>} A promise that resolves to the default fee.
     */
    getDefaultFee(oftType: string): Promise<string>;
    /**
     * Gets the payload for setting the fee.
     *
     * @param {string} oftType - The OFT type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {boolean} enabled - Whether the fee is enabled.
     * @param {aptos.BCS.Uint64} feeBp - The fee basis points.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    payloadOfSetFee(oftType: string, remoteChainId: aptos.BCS.Uint16, enabled: boolean, feeBp: aptos.BCS.Uint64): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the fee.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} oftType - The OFT type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {boolean} enabled - Whether the fee is enabled.
     * @param {aptos.BCS.Uint64} feeBp - The fee basis points.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setFee(signer: aptos.AptosAccount, oftType: string, remoteChainId: aptos.BCS.Uint16, enabled: boolean, feeBp: aptos.BCS.Uint64): Promise<aptos.Types.Transaction>;
    /**
     * Gets the fee.
     *
     * @param {string} oftType - The OFT type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @returns {Promise<string>} A promise that resolves to the fee.
     */
    getFee(oftType: string, remoteChainId: aptos.BCS.Uint16): Promise<string>;
    /**
     * Gets the payload for setting the fee owner.
     *
     * @param {string} oftType - The OFT type.
     * @param {aptos.MaybeHexString} owner - The owner address.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    payloadOfSetFeeOwner(oftType: string, owner: aptos.MaybeHexString): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the fee owner.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} oftType - The OFT type.
     * @param {aptos.MaybeHexString} owner - The owner address.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setFeeOwner(signer: aptos.AptosAccount, oftType: string, owner: aptos.MaybeHexString): Promise<aptos.Types.Transaction>;
    /**
     * Gets the fee owner.
     *
     * @param {string} oftType - The OFT type.
     * @returns {Promise<aptos.HexString>} A promise that resolves to the fee owner.
     */
    getFeeOwner(oftType: string): Promise<aptos.HexString>;
    /**
     * Gets the payload for sending a coin.
     *
     * @param {string} oftType - The OFT type.
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Bytes} dstReceiver - The destination receiver address.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} amount - The amount to send.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} minAmount - The minimum amount.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} nativeFee - The native fee.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} zroFee - The ZRO fee.
     * @param {aptos.BCS.Bytes} adapterParams - The adapter parameters.
     * @param {aptos.BCS.Bytes} msglibParams - The message library parameters.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    sendCoinPayload(oftType: string, dstChainId: aptos.BCS.Uint16, dstReceiver: aptos.BCS.Bytes, amount: aptos.BCS.Uint64 | aptos.BCS.Uint32, minAmount: aptos.BCS.Uint64 | aptos.BCS.Uint32, nativeFee: aptos.BCS.Uint64 | aptos.BCS.Uint32, zroFee: aptos.BCS.Uint64 | aptos.BCS.Uint32, adapterParams: aptos.BCS.Bytes, msglibPararms: aptos.BCS.Bytes): aptos.Types.EntryFunctionPayload;
    /**
     * Sends a coin.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} oftType - The OFT type.
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Bytes} dstReceiver - The destination receiver address.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} amount - The amount to send.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} minAmount - The minimum amount.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} nativeFee - The native fee.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} zroFee - The ZRO fee.
     * @param {aptos.BCS.Bytes} adapterParams - The adapter parameters.
     * @param {aptos.BCS.Bytes} msglibParams - The message library parameters.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    sendCoin(signer: aptos.AptosAccount, oftType: string, dstChainId: aptos.BCS.Uint16, dstReceiver: aptos.BCS.Bytes, amount: aptos.BCS.Uint64 | aptos.BCS.Uint32, minAmount: aptos.BCS.Uint64 | aptos.BCS.Uint32, nativeFee: aptos.BCS.Uint64 | aptos.BCS.Uint32, zroFee: aptos.BCS.Uint64 | aptos.BCS.Uint32, adapterParams: aptos.BCS.Bytes, msglibParams: aptos.BCS.Bytes): Promise<aptos.Types.Transaction>;
    /**
     * Creates the payload for the LayerZero receive function.
     *
     * @param {string} oftType - The type of the OFT.
     * @param {aptos.BCS.Uint16} srcChainId - The source chain ID.
     * @param {aptos.BCS.Bytes} srcAddress - The source address.
     * @param {aptos.BCS.Bytes} payload - The payload.
     * @returns {aptos.Types.EntryFunctionPayload} The payload for the LayerZero receive function.
     */
    payloadOfLzReceive(oftType: string, srcChainId: aptos.BCS.Uint16, srcAddress: aptos.BCS.Bytes, payload: aptos.BCS.Bytes): aptos.Types.EntryFunctionPayload;
    /**
     * Executes the LayerZero receive function.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} oftType - The type of the OFT.
     * @param {aptos.BCS.Uint16} srcChainId - The source chain ID.
     * @param {aptos.BCS.Bytes} srcAddress - The source address.
     * @param {aptos.BCS.Bytes} payload - The payload.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    lzReceive(signer: aptos.AptosAccount, oftType: string, srcChainId: aptos.BCS.Uint16, srcAddress: aptos.BCS.Bytes, payload: aptos.BCS.Bytes): Promise<aptos.Types.Transaction>;
    /**
     * Creates the payload for claiming a coin.
     *
     * @param {string} oftType - The type of the OFT.
     * @returns {aptos.Types.EntryFunctionPayload} The payload for claiming a coin.
     */
    payloadOfClaimCoin(oftType: string): aptos.Types.EntryFunctionPayload;
    /**
     * Claims a coin.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} oftType - The type of the OFT.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    claimCoin(signer: aptos.AptosAccount, oftType: string): Promise<aptos.Types.Transaction>;
    /**
     * Checks if the OFT is initialized.
     *
     * @param {string} oftType - The type of the OFT.
     * @returns {Promise<boolean>} A promise that resolves to true if the OFT is initialized, false otherwise.
     */
    isInitialized(oftType: string): Promise<boolean>;
    /**
     * Gets the claimable coin amount for a given owner.
     *
     * @param {string} oftType - The type of the OFT.
     * @param {aptos.MaybeHexString} owner - The owner address.
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the claimable coin amount.
     */
    getClaimableCoin(oftType: string, owner: aptos.MaybeHexString): Promise<aptos.BCS.Uint64>;
    /**
     * Gets the total value locked for the OFT.
     *
     * @param {string} oftType - The type of the OFT.
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the total value locked.
     */
    getTotalValueLocked(oftType: string): Promise<aptos.BCS.Uint64>;
    /**
     * Gets the LD to SD rate for the OFT.
     *
     * @param {string} oftType - The type of the OFT.
     * @returns {Promise<string>} A promise that resolves to the LD to SD rate.
     */
    getLd2SdRate(oftType: string): Promise<string>;
    /**
     * Converts an amount from SD to LD.
     *
     * @param {string} oftType - The type of the OFT.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} amountSD - The amount in SD.
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the amount in LD.
     */
    convertAmountToLD(oftType: string, amountSD: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.BCS.Uint64>;
    /**
     * Converts an amount from LD to SD.
     *
     * @param {string} oftType - The type of the OFT.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} amountLD - The amount in LD.
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the amount in SD.
     */
    convertAmountToSD(oftType: string, amountLD: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.BCS.Uint64>;
    /**
     * Creates the payload for registering a coin.
     *
     * @param {string} oftType - The type of the OFT.
     * @returns {aptos.Types.EntryFunctionPayload} The payload for registering a coin.
     */
    payloadOfCoinRegister(oftType: string): aptos.Types.EntryFunctionPayload;
    /**
     * Registers a coin.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} oftType - The type of the OFT.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    coinRegister(signer: aptos.AptosAccount, oftType: string): Promise<aptos.Types.Transaction>;
    /**
     * Gets the address from the OFT type.
     *
     * @param {string} oftType - The type of the OFT.
     * @returns {string} The address.
     * @throws {Error} If the OFT type is invalid.
     */
    getTypeAddress(oftType: string): string;
    /**
     * Gets the global store resource for the OFT.
     *
     * @param {string} oftType - The type of the OFT.
     * @returns {Promise<aptos.Types.MoveResource>} A promise that resolves to the global store resource.
     */
    private getGlobalStore;
    /**
     * Gets the coin store resource for the OFT.
     *
     * @param {string} oftType - The type of the OFT.
     * @returns {Promise<aptos.Types.MoveResource>} A promise that resolves to the coin store resource.
     */
    private getCoinStore;
    /**
     * Creates the payload for transferring a coin.
     *
     * @param {string} oftType - The type of the OFT.
     * @param {aptos.MaybeHexString} to - The recipient address.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} amount - The amount to transfer.
     * @returns {aptos.Types.EntryFunctionPayload} The payload for transferring a coin.
     */
    transferPayload(oftType: string, to: aptos.MaybeHexString, amount: aptos.BCS.Uint64 | aptos.BCS.Uint32): aptos.Types.EntryFunctionPayload;
    /**
     * Transfers a coin.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} oftType - The type of the OFT.
     * @param {aptos.MaybeHexString} to - The recipient address.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} amount - The amount to transfer.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    transfer(signer: aptos.AptosAccount, oftType: string, to: aptos.MaybeHexString, amount: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.Types.Transaction>;
    /**
     * Gets the balance of a coin for a given owner.
     *
     * @param {string} oftType - The type of the OFT.
     * @param {aptos.MaybeHexString} owner - The owner address.
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the balance.
     */
    balance(oftType: string, owner: aptos.MaybeHexString): Promise<aptos.BCS.Uint64>;
    /**
     * Checks if an account is registered for a given coin.
     *
     * @param {string} oftType - The type of the OFT.
     * @param {aptos.MaybeHexString} accountAddr - The account address.
     * @returns {Promise<boolean>} A promise that resolves to true if the account is registered, false otherwise.
     */
    isAccountRegistered(oftType: string, accountAddr: aptos.MaybeHexString): Promise<boolean>;
    /**
     * Gets the current timestamp.
     *
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the current timestamp.
     */
    private getCurrentTimestamp;
    /**
     * Gets the supply of a coin for a given owner.
     *
     * @param {string} oftType - The type of the OFT.
     * @param {aptos.MaybeHexString} oftOwner - The owner address.
     * @returns {Promise<aptos.BCS.Uint128>} A promise that resolves to the supply.
     */
    supply(oftType: string, oftOwner: aptos.MaybeHexString): Promise<aptos.BCS.Uint128>;
}

/**
 * Class representing an Oracle.
 */
declare class Oracle {
    sdk: SDK;
    /**
     * The address of the Oracle.
     */
    readonly address: aptos.MaybeHexString;
    /**
     * The module of the Oracle.
     */
    readonly module: string;
    /**
     * The module name of the Oracle.
     */
    readonly moduleName: string;
    /**
     * Creates an instance of the Oracle class.
     *
     * @param {SDK} sdk - The SDK instance.
     * @param {aptos.MaybeHexString} address - The address of the Oracle.
     */
    constructor(sdk: SDK, address: aptos.MaybeHexString);
    /**
     * Gets the threshold value.
     *
     * @returns {Promise<aptos.BCS.Uint8>} A promise that resolves to the threshold value.
     */
    getThreshold(): Promise<aptos.BCS.Uint8>;
    /**
     * Creates a payload for setting the threshold.
     *
     * @param {aptos.BCS.Uint8} threshold - The threshold value.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setThresholdPayload(threshold: aptos.BCS.Uint8): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the threshold value.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint8} threshold - The threshold value.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setThreshold(signer: aptos.AptosAccount, threshold: aptos.BCS.Uint8): Promise<aptos.Types.Transaction>;
    /**
     * Checks if a validator is valid.
     *
     * @param {aptos.MaybeHexString} validator - The validator address.
     * @returns {Promise<boolean>} A promise that resolves to true if the validator is valid, false otherwise.
     */
    isValidator(validator: aptos.MaybeHexString): Promise<boolean>;
    /**
     * Creates a payload for setting a validator.
     *
     * @param {aptos.MaybeHexString} validator - The validator address.
     * @param {boolean} active - The active status of the validator.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setValidatorPayload(validator: aptos.MaybeHexString, active: boolean): aptos.Types.EntryFunctionPayload;
    /**
     * Sets a validator.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.MaybeHexString} validator - The validator address.
     * @param {boolean} active - The active status of the validator.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setValidator(signer: aptos.AptosAccount, validator: aptos.MaybeHexString, active: boolean): Promise<aptos.Types.Transaction>;
    /**
     * Creates a payload for setting a fee.
     *
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} baseFee - The base fee.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setFeePayload(dstChainId: aptos.BCS.Uint16, baseFee: aptos.BCS.Uint64 | aptos.BCS.Uint32): aptos.Types.EntryFunctionPayload;
    /**
     * Sets a fee.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint16} dstChainId - The destination chain ID.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} baseFee - The base fee.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setFee(signer: aptos.AptosAccount, dstChainId: aptos.BCS.Uint16, baseFee: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.Types.Transaction>;
    /**
     * Creates a payload for proposing a transaction.
     *
     * @param {Uint8Array} hash - The hash of the transaction.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} confirmations - The number of confirmations.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    getProposePayload(hash: Uint8Array, confirmations: aptos.BCS.Uint64 | aptos.BCS.Uint32): aptos.Types.EntryFunctionPayload;
    /**
     * Proposes a transaction.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {Uint8Array} hash - The hash of the transaction.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} confirmations - The number of confirmations.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    propose(signer: aptos.AptosAccount, hash: Uint8Array, confirmations: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<aptos.Types.Transaction>;
    /**
     * Checks if a proposal is submitted.
     *
     * @param {aptos.MaybeHexString} validator - The validator address.
     * @param {string} hash - The hash of the transaction.
     * @param {aptos.BCS.Uint64 | aptos.BCS.Uint32} confirmations - The number of confirmations.
     * @returns {Promise<boolean>} A promise that resolves to true if the proposal is submitted, false otherwise.
     */
    isSubmitted(validator: aptos.MaybeHexString, hash: string, confirmations: aptos.BCS.Uint64 | aptos.BCS.Uint32): Promise<boolean>;
    /**
     * Gets the resource address.
     *
     * @returns {Promise<string>} A promise that resolves to the resource address.
     */
    getResourceAddress(): Promise<string>;
    /**
     * Withdraws a fee.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.MaybeHexString} receiver - The receiver address.
     * @param {aptos.BCS.Uint64} amount - The amount to withdraw.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    withdrawFee(signer: aptos.AptosAccount, receiver: aptos.MaybeHexString, amount: aptos.BCS.Uint64): Promise<aptos.Types.Transaction>;
}

/**
 * Class representing the LzApp.
 */
declare class LzApp {
    /**
     * The SDK instance.
     */
    private sdk;
    /**
     * The LzApp address.
     */
    private readonly lzApp;
    /**
     * The UA address.
     */
    private readonly ua;
    /**
     * Creates an instance of the LzApp class.
     *
     * @param {SDK} sdk - The SDK instance.
     * @param {aptos.MaybeHexString} lzApp - The LzApp address.
     * @param {aptos.MaybeHexString} ua - The UA address.
     */
    constructor(sdk: SDK, lzApp: aptos.MaybeHexString, ua: aptos.MaybeHexString);
    /**
     * Gets the remote address for a given remote chain ID.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @returns {Promise<aptos.BCS.Bytes>} A promise that resolves to the remote address.
     */
    getRemote(remoteChainId: aptos.BCS.Uint16): Promise<aptos.BCS.Bytes>;
    /**
     * Gets the minimum destination gas for a given UA type, remote chain ID, and packet type.
     *
     * @param {string} uaType - The UA type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint64} packetType - The packet type.
     * @returns {Promise<aptos.BCS.Uint64>} A promise that resolves to the minimum destination gas.
     */
    getMinDstGas(uaType: string, remoteChainId: aptos.BCS.Uint16, packetType: aptos.BCS.Uint64): Promise<aptos.BCS.Uint64>;
    /**
     * Creates a payload for setting the minimum destination gas.
     *
     * @param {string} uaType - The UA type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint64} packetType - The packet type.
     * @param {aptos.BCS.Uint64} minDstGas - The minimum destination gas.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setMinDstPayload(uaType: string, remoteChainId: aptos.BCS.Uint16, packetType: aptos.BCS.Uint64, minDstGas: aptos.BCS.Uint64): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the minimum destination gas.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} uaType - The UA type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint64} packetType - The packet type.
     * @param {aptos.BCS.Uint64} minDstGas - The minimum destination gas.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setMinDstGas(signer: aptos.AptosAccount, uaType: string, remoteChainId: aptos.BCS.Uint16, packetType: aptos.BCS.Uint64, minDstGas: aptos.BCS.Uint64): Promise<aptos.Types.Transaction>;
    /**
     * Creates a payload for setting the remote address.
     *
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Bytes} remoteAddress - The remote address.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setRemotePaylaod(remoteChainId: aptos.BCS.Uint16, remoteAddress: aptos.BCS.Bytes): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the remote address.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Bytes} remoteAddress - The remote address.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setRemote(signer: aptos.AptosAccount, remoteChainId: aptos.BCS.Uint16, remoteAddress: aptos.BCS.Bytes): Promise<aptos.Types.Transaction>;
    /**
     * Creates a payload for setting the executor version and address.
     *
     * @param {string} uaType - The user application type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint8} executorVersion - The executor version.
     * @param {string} executorAddress - The executor address.
     * @returns {aptos.Types.EntryFunctionPayload} The entry function payload.
     */
    setExecutorPayload(uaType: string, remoteChainId: aptos.BCS.Uint16, executorVersion: aptos.BCS.Uint8, executorAddress: string): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the executor version and address.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} uaType - The user application type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint8} executorVersion - The executor version.
     * @param {string} executorAddress - The executor address.
     * @returns {Promise<aptos.Types.Transaction>} The transaction result.
     */
    setExecutor(signer: aptos.AptosAccount, uaType: string, remoteChainId: aptos.BCS.Uint16, executorVersion: aptos.BCS.Uint8, executorAddress: string): Promise<aptos.Types.Transaction>;
    /**
     * Creates a payload for setting the send msglib.
     *
     * @param {string} uaType - The user application type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint16} majorVersion - The major version.
     * @param {aptos.BCS.Uint8} minorVersion - The minor version.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setSendMsglibPayload(uaType: string, remoteChainId: aptos.BCS.Uint16, majorVersion: aptos.BCS.Uint16, minorVersion: aptos.BCS.Uint8): aptos.Types.EntryFunctionPayload;
    /**
     * Creates a payload for setting the receive msglib.
     *
     * @param {string} uaType - The user application type.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint16} majorVersion - The major version.
     * @param {aptos.BCS.Uint8} minorVersion - The minor version.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setReceiveMsglibPayload(uaType: string, remoteChainId: aptos.BCS.Uint16, majorVersion: aptos.BCS.Uint16, minorVersion: aptos.BCS.Uint8): aptos.Types.EntryFunctionPayload;
    /**
     * Creates a payload for setting the configuration.
     *
     * @param {string} uaType - The UA type.
     * @param {aptos.BCS.Uint16} majorVersion - The major version.
     * @param {aptos.BCS.Uint8} minorVersion - The minor version.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint8} configType - The configuration type.
     * @param {aptos.BCS.Bytes} configBytes - The configuration bytes.
     * @returns {aptos.Types.EntryFunctionPayload} The payload.
     */
    setConfigPayload(uaType: string, majorVersion: aptos.BCS.Uint16, minorVersion: aptos.BCS.Uint8, remoteChainId: aptos.BCS.Uint16, configType: aptos.BCS.Uint8, configBytes: aptos.BCS.Bytes): aptos.Types.EntryFunctionPayload;
    /**
     * Sets the configuration.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} uaType - The UA type.
     * @param {aptos.BCS.Uint16} majorVersion - The major version.
     * @param {aptos.BCS.Uint8} minorVersion - The minor version.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {aptos.BCS.Uint8} configType - The configuration type.
     * @param {aptos.BCS.Bytes} configBytes - The configuration bytes.
     * @returns {Promise<aptos.Types.Transaction>} A promise that resolves to the transaction.
     */
    setConfig(signer: aptos.AptosAccount, uaType: string, majorVersion: aptos.BCS.Uint16, minorVersion: aptos.BCS.Uint8, remoteChainId: aptos.BCS.Uint16, configType: aptos.BCS.Uint8, configBytes: aptos.BCS.Bytes): Promise<aptos.Types.Transaction>;
    /**
     * Sets the configuration bundle.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {string} uaType - The UA type.
     * @param {aptos.BCS.Uint16} majorVersion - The major version.
     * @param {aptos.BCS.Uint8} minorVersion - The minor version.
     * @param {aptos.BCS.Uint16} remoteChainId - The remote chain ID.
     * @param {UlnConfigType} config - The configuration.
     * @returns {Promise<void>} A promise that resolves when the configuration bundle is set.
     */
    setConfigBundle(signer: aptos.AptosAccount, uaType: string, majorVersion: aptos.BCS.Uint16, minorVersion: aptos.BCS.Uint8, remoteChainId: aptos.BCS.Uint16, config: UlnConfigType): Promise<void>;
}

/**
 * Class representing the PreCrime module.
 */
declare class PreCrime {
    private sdk;
    /**
     * The address of the PreCrime module.
     */
    readonly address: aptos.MaybeHexString;
    /**
     * The module path for the PreCrime module.
     */
    readonly module: string;
    /**
     * The module name for the PreCrime module.
     */
    readonly moduleName: string;
    /**
     * Creates an instance of the PreCrime class.
     *
     * @param {SDK} sdk - The SDK instance.
     * @param {aptos.MaybeHexString} address - The address of the PreCrime module.
     */
    constructor(sdk: SDK, address: aptos.MaybeHexString);
    /**
     * Set the precrime peers for a given OFT type.
     *
     * @param {string} oftType - The OFT type, e.g. 0x1::BTCbOFT::BTCb.
     * @param {aptos.BCS.Uint32[]} eids - The EIDs to set the precrime peers for, e.g. [101, 102, 106] for [ETHEREUM, BSC, AVALANCHE].
     * @param {aptos.MaybeHexString[]} precrimePeers - The precrime peers to set.
     * @returns {aptos.Types.EntryFunctionPayload} The payload to be used in the transaction.
     */
    setPreCrimePeersPayload(oftType: string, eids: aptos.BCS.Uint32[], precrimePeers: aptos.MaybeHexString[]): aptos.Types.EntryFunctionPayload;
    /**
     * Set the max batch size for a given OFT type.
     *
     * @param {string} oftType - The OFT type, e.g. 0x1::BTCbOFT::BTCb.
     * @param {aptos.BCS.Uint64} maxBatchSize - The max batch size to set.
     * @returns {aptos.Types.EntryFunctionPayload} The payload to be used in the transaction.
     */
    setMaxBatchSizePayload(oftType: string, maxBatchSize: aptos.BCS.Uint64): aptos.Types.EntryFunctionPayload;
    /**
     * Get the configuration for the given packets.
     *
     * @param {aptos.MaybeHexString[]} packets - The packets to get the configuration for.
     * @param {string} [ledger_version] - The ledger version.
     * @returns {Promise<aptos.MaybeHexString>} The configuration.
     */
    getConfig(packets: aptos.MaybeHexString[], ledger_version?: string): Promise<aptos.MaybeHexString>;
    /**
     * Simulate the given packets.
     *
     * @param {aptos.MaybeHexString[]} packets - The packets to simulate.
     * @param {string} [ledger_version] - The ledger version.
     * @returns {Promise<aptos.MaybeHexString>} The simulation result.
     */
    simulate(packets: aptos.MaybeHexString[], ledger_version?: string): Promise<aptos.MaybeHexString>;
    /**
     * Perform precrime with the given packets and simulations.
     *
     * @param {aptos.MaybeHexString[]} packets - The packets to precrime.
     * @param {aptos.MaybeHexString[]} simulations - The simulations to use for precrime.
     * @param {string} [ledger_version] - The ledger version.
     * @returns {Promise<boolean>} The result of the precrime.
     */
    precrime(packets: aptos.MaybeHexString[], simulations: aptos.MaybeHexString[], ledger_version?: string): Promise<boolean>;
    /**
     * Get the configuration types for the given packets.
     *
     * @param {aptos.MaybeHexString[]} packets - The packets to get the configuration types for.
     * @param {string} [ledger_version] - The ledger version.
     * @returns {Promise<string[]>} The configuration types.
     */
    getConfigTypes(packets: aptos.MaybeHexString[], ledger_version?: string): Promise<string[]>;
    /**
     * Get the simulation types for the given packets.
     *
     * @param {aptos.MaybeHexString[]} packets - The packets to get the simulation types for.
     * @param {string} [ledger_version] - The ledger version.
     * @returns {Promise<string[]>} The simulation types.
     */
    getSimulateTypes(packets: aptos.MaybeHexString[], ledger_version?: string): Promise<string[]>;
    /**
     * Get the precrime types for the given packets and simulations.
     *
     * @param {aptos.MaybeHexString[]} packets - The packets to get the precrime types for.
     * @param {aptos.MaybeHexString[]} simulations - The simulations to use for precrime.
     * @param {string} [ledger_version] - The ledger version.
     * @returns {Promise<string[]>} The precrime types.
     */
    getPreCrimeTypes(packets: aptos.MaybeHexString[], simulations: aptos.MaybeHexString[], ledger_version?: string): Promise<string[]>;
    /**
     * Format the given types.
     *
     * @param {TypeInfo[]} types - The types to format.
     * @returns {string[]} The formatted types.
     */
    private formatTypes;
    /**
     * Assert that the given OFT type is valid.
     *
     * @param {string} oftType - The OFT type to assert.
     * @throws {Error} If the OFT type is invalid.
     */
    private assertType;
}

type index$1_Coin = Coin;
  declare const index$1_Coin: typeof Coin;
  type index$1_Counter = Counter;
  declare const index$1_Counter: typeof Counter;
  type index$1_LzApp = LzApp;
  declare const index$1_LzApp: typeof LzApp;
  type index$1_MultisigOracle = MultisigOracle;
  declare const index$1_MultisigOracle: typeof MultisigOracle;
  type index$1_MultisigOracleTss = MultisigOracleTss;
  declare const index$1_MultisigOracleTss: typeof MultisigOracleTss;
  type index$1_OFT = OFT;
  declare const index$1_OFT: typeof OFT;
  type index$1_Oracle = Oracle;
  declare const index$1_Oracle: typeof Oracle;
  type index$1_PreCrime = PreCrime;
  declare const index$1_PreCrime: typeof PreCrime;
  declare namespace index$1 {
  export { index$1_Coin as Coin, index$1_Counter as Counter, index$1_LzApp as LzApp, index$1_MultisigOracle as MultisigOracle, index$1_MultisigOracleTss as MultisigOracleTss, index$1_OFT as OFT, index$1_Oracle as Oracle, index$1_PreCrime as PreCrime, index$1_bridge as bridge };
}

/**
 * Rebuilds a compiled script bytecode with updated addresses and names.
 *
 * @param {string | Uint8Array} bytecode - The original bytecode.
 * @param {Array<{ oldValue: Uint8Array, newValue: Uint8Array }>} addresses - The addresses to update.
 * @param {Array<{ oldValue: string, newValue: string }>} names - The names to update.
 * @returns {string} The updated bytecode as a hex string.
 */
declare function rebuildCompileScriptBytecode(bytecode: string | Uint8Array, addresses: {
    oldValue: Uint8Array;
    newValue: Uint8Array;
}[], names: {
    oldValue: string;
    newValue: string;
}[]): string;

declare const index_rebuildCompileScriptBytecode: typeof rebuildCompileScriptBytecode;
  declare namespace index {
  export { index_rebuildCompileScriptBytecode as rebuildCompileScriptBytecode };
}

/**
 * Options for configuring accounts.
 */
type AccountsOption = {
    layerzero?: aptos.MaybeHexString;
    layerzero_common?: aptos.MaybeHexString;
    msglib_auth?: aptos.MaybeHexString;
    msglib_v1_1?: aptos.MaybeHexString;
    msglib_v2?: aptos.MaybeHexString;
    msglib_v2_1?: aptos.MaybeHexString;
    msglib_v3?: aptos.MaybeHexString;
    msglib_routing_helper?: aptos.MaybeHexString;
    uln_301?: aptos.MaybeHexString;
    uln_301_receiver?: aptos.MaybeHexString;
    zro?: aptos.MaybeHexString;
    executor_auth?: aptos.MaybeHexString;
    executor_ext?: aptos.MaybeHexString;
    executor_v2?: aptos.MaybeHexString;
    layerzero_apps?: aptos.MaybeHexString;
    layerzero_apps_pubkey?: aptos.MaybeHexString;
} & {
    [key: string]: aptos.MaybeHexString;
};
/**
 * Options for configuring the SDK.
 */
interface SdkOptions {
    /**
     * The Aptos client provider.
     */
    provider: aptos.AptosClient;
    /**
     * The stage of the SDK.
     */
    stage?: Stage;
    /**
     * The accounts options.
     */
    accounts?: AccountsOption;
}
/**
 * The main SDK class for interacting with Layerzero.
 */
declare class SDK {
    /**
     * The stage of the SDK.
     */
    stage: Stage;
    /**
     * The Aptos client instance.
     */
    client: aptos.AptosClient;
    /**
     * The Layerzero module instance.
     */
    LayerzeroModule: Layerzero;
    /**
     * The accounts options.
     */
    accounts: AccountsOption;
    /**
     * Creates an instance of the SDK class.
     *
     * @param {SdkOptions} options - The SDK options.
     */
    constructor(options: SdkOptions);
    viewFunction(payload: aptos.Types.ViewRequest): Promise<aptos.Types.MoveValue[]>;
    /**
     * Sends and confirms a BCS transaction.
     *
     * @param {aptos.BCS.Bytes} bcsTransction - The BCS transaction.
     * @returns {Promise<aptos.Types.Transaction>} The confirmed transaction.
     */
    sendAndConfirmBcsTransaction(bcsTransction: aptos.BCS.Bytes): Promise<aptos.Types.Transaction>;
    /**
     * Sends and confirms a transaction.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.Types.EntryFunctionPayload} payload - The transaction payload.
     * @returns {Promise<aptos.Types.Transaction>} The confirmed transaction.
     */
    sendAndConfirmTransaction(signer: aptos.AptosAccount, payload: aptos.Types.EntryFunctionPayload): Promise<aptos.Types.Transaction>;
    sendAndConfirmScriptTransaction(signer: aptos.AptosAccount, payload: aptos.TxnBuilderTypes.Script): Promise<aptos.Types.Transaction>;
    /**
     * Estimates the gas for a transaction.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {aptos.Types.EntryFunctionPayload} payload - The transaction payload.
     * @returns {Promise<{ max_gas_amount: string, gas_unit_price: string }>} The gas estimation.
     */
    estimateGas(signer: aptos.AptosAccount, payload: aptos.Types.EntryFunctionPayload): Promise<{
        max_gas_amount: string;
        gas_unit_price: string;
    }>;
    estimateScriptTxGas(signer: aptos.AptosAccount, payload: aptos.TxnBuilderTypes.TransactionPayloadScript): Promise<{
        max_gas_amount: string;
        gas_unit_price: string;
    }>;
    innerEstimateGas(signer: aptos.AptosAccount, txnRequest: aptos.TxnBuilderTypes.RawTransaction): Promise<{
        max_gas_amount: string;
        gas_unit_price: string;
    }>;
    /**
     * Sends and confirms a multi-signature transaction.
     *
     * @param {aptos.AptosClient} client - The Aptos client.
     * @param {string} multisigAccountAddress - The multi-signature account address.
     * @param {aptos.TxnBuilderTypes.MultiEd25519PublicKey} multisigAccountPubkey - The multi-signature account public key.
     * @param {aptos.TxnBuilderTypes.TransactionPayload} payload - The transaction payload.
     * @param {MultipleSignFunc} [signFunc] - The sign function.
     * @param {MutipleSignatureItem[]} [signedItems] - The signed items.
     * @returns {Promise<aptos.Types.Transaction_UserTransaction>} The confirmed transaction.
     */
    sendAndConfirmMultiSigTransaction(client: aptos.AptosClient, multisigAccountAddress: string, multisigAccountPubkey: aptos.TxnBuilderTypes.MultiEd25519PublicKey, payload: aptos.TxnBuilderTypes.TransactionPayload, signFunc?: MultipleSignFunc, signedItems?: MutipleSignatureItem[]): Promise<aptos.Types.Transaction_UserTransaction>;
    /**
     * Deploys a package.
     *
     * @param {aptos.AptosAccount} signer - The signer account.
     * @param {Uint8Array} metadata - The package metadata.
     * @param {aptos.TxnBuilderTypes.Module[]} modules - The modules to deploy.
     * @returns {Promise<string>} The transaction hash.
     */
    deploy(signer: aptos.AptosAccount, metadata: Uint8Array, modules: aptos.TxnBuilderTypes.Module[]): Promise<string>;
    /**
     * Waits for a transaction to be confirmed and retrieves it.
     *
     * @param {string} txnHash - The transaction hash.
     * @returns {Promise<aptos.Types.Transaction>} The confirmed transaction.
     */
    private waitAndGetTransaction;
    /**
     * Sends and confirms a raw transaction.
     *
     * @param {Uint8Array} signedTransaction - The signed transaction.
     * @returns {Promise<aptos.Types.Transaction>} The confirmed transaction.
     */
    private sendAndConfirmRawTransaction;
}

export { type AccountsOption, SDK, type SdkOptions, index$1 as apps, constants, index as format, index$3 as types, index$2 as uln, utils };
