import { Domain, MultiProvider } from './multi-provider';
import { AnyContext, TokenId, WormholeConfig } from './types';
import { Network, Chain } from '@wormhole-foundation/sdk';
/**
 * The WormholeContext manages connections to Wormhole Core, Bridge and NFT Bridge contracts.
 * It inherits from the {@link MultiProvider}, and ensures that its contracts
 * always use the latest registered providers and signers.
 *
 * For convenience, we've pre-constructed contexts for mainnet, testnet and devnet
 * deployments. These can be imported directly from the wormhole sdk.
 *
 * @example
 * // Set up mainnet and then access contracts as below:
 * const context = new WormholeContext('MAINNET');
 * let bridge = context.mustGetBridge('Ethereum');
 *
 * // interact easily with any chain!
 * // supports EVM, Solana, Terra, etc
 * const tokenId = {
 *   chain: 'Ethereum',
 *   address: '0x123...',
 * }
 * const receipt = context.send(
 *   tokenId,
 *   '10', // amount
 *   'Ethereum', // sending chain
 *   '0x789...', // sender address
 *   'moonbeam', // destination chain
 *   '0x789..., // recipient address on destination chain
 * )
 */
export declare class WormholeContext extends MultiProvider<Domain> {
    readonly conf: WormholeConfig;
    constructor(env: Network, conf?: WormholeConfig);
    get environment(): string;
    /**
     * Registers evm providers
     */
    registerProviders(): void;
    /**
     * Returns the chain "context", i.e. the class with chain-specific logic and methods
     * @param chain the chain name or chain id
     * @returns the chain context class
     * @throws Errors if context is not found
     */
    getContext(chain: Chain): AnyContext;
    /**
     * Checks if a transfer has been completed or not
     *
     * @param destChain The destination chain name or id
     * @param signedVAA The Signed VAA bytes
     * @returns True if the transfer has been completed, otherwise false
     */
    isTransferCompleted(destChain: Chain, signedVaa: string): Promise<boolean>;
    /**
     * Format an address to a 32-byte universal address, which can be utilized by the Wormhole contracts
     *
     * @param address The address as a string
     * @returns The address as a 32-byte Wormhole address
     */
    formatAddress(address: string, chain: Chain): any;
    /**
     * Parse an address from a 32-byte universal address to a canonical address
     *
     * @param address The 32-byte wormhole address
     * @returns The address in the blockchain specific format
     */
    parseAddress(address: any, chain: Chain): string;
    /**
     * Fetches the wrapped native token ID for a given chain
     *
     * @param chain The chain name or id
     * @returns The native token ID
     */
    getWrappedNativeTokenId(chain: Chain): Promise<TokenId>;
    /**
     * Get the default config for Mainnet or Testnet
     *
     * @param environment 'MAINNET' or 'TESTNET'
     * @returns A Wormhole Config
     */
    static getConfig(env: Network): WormholeConfig;
    sign(): void;
    approve(a: any, b: any, c: any, d: any): Promise<boolean>;
    getCurrentBlock(): number;
    mustGetProvider(a: any): void;
    get contracts(): {
        mustGetCore(a: any): void;
        mustGetBridge(a: any): void;
    };
}
//# sourceMappingURL=wormhole.d.ts.map