///
import * as wh from "@certusone/wormhole-sdk";
import * as ethers from "ethers";
import * as context from "./context";
import * as types from ".";
import * as utilities from "./utilities";
import { PublicKey } from "@solana/web3.js";
import { ClientContext } from "./client";
import { Header } from ".";
export interface TransferPayload {
amount: bigint;
originAddress: string;
originChain: wh.ChainId;
targetAddress: string;
targetChain: wh.ChainId;
fee: bigint;
payload3?: Uint8Array;
}
export interface TransferPayloadWithData {
amount: bigint;
originAddress: types.ForeignAddr;
originChain: wh.ChainId;
targetAddress: types.ForeignAddr;
targetChain: wh.ChainId;
fromAddress: types.ForeignAddr;
payload3: Uint8Array;
}
export interface BaseVAA {
version: number;
guardianSetIndex: number;
timestamp: number;
nonce: number;
emitterChain: wh.ChainId;
emitterAddress: Uint8Array;
sequence: number;
consistencyLevel: number;
payload: Uint8Array;
}
export declare type Provider = ethers.providers.Provider;
export declare function getMintEVM(ctx: context.EvmContextNoSigner, token: types.XTokenLocator): Promise;
export declare function getMintSolana(ctx: context.SolanaContextNoSigner, token: types.XTokenLocator): Promise;
export declare function getXTokenLocatorFromSolanaMint(ctx: ClientContext, mint: PublicKey): Promise;
export declare function getXTokenLocatorFromEVMMint(ctx: ClientContext, mint: string): Promise;
export declare function ensureTokenAttested(ctx: context.Context, token: types.XTokenLocator): Promise;
export declare function ensureTokenAttestedEVM(ctx: context.Context, token: types.XTokenLocator): Promise;
export declare function ensureTokenAttestedSolana(ctx: context.Context, token: types.XTokenLocator): Promise;
export declare function transferEvmToSolanaNative(ctx: context.Context, mint: string, amountInDecimalSpace: number): Promise;
export declare function transferEvmNativeToSolana(ctx: context.Context, mint: string, amountIn: number): Promise;
export declare function redeemTransferOnSolana(ctx: context.Context, seq: string): Promise;
export declare function redeemTransferOnEVM(ctx: context.Context, seq: string): Promise;
export declare function getSignedVaaWithBackoff(emitterAddress: string, sequence: string, chainID: wh.ChainId, whRPC: string, { backoff, silent, retries }?: utilities.RetryOptions): Promise;
export declare function parseTransferTokenWithPayload(baseVAA: wh.ParsedVaa): Promise;
export declare function tryParseTransferTokenWithPayload(baseVAA: wh.ParsedVaa): Promise;
export declare function getAndParseEvmVaa(ctx: {
chainId: wh.ChainId;
} & context.PIDS, seq: string, silent?: boolean): Promise<{
header: Header;
transfer?: TransferPayloadWithData;
vaaBytes: Uint8Array;
baseVAA: wh.ParsedVaa;
}>;
export declare function parseHeader(bytes: Uint8Array | Buffer, silent?: boolean): types.Header;