import { ChainGrpcWasmApi } from "@injectivelabs/sdk-ts";
import { JsonRpcProvider } from "@mysten/sui.js";
import { Commitment, Connection, PublicKeyInitData } from "@solana/web3.js";
import { LCDClient as TerraLCDClient } from "@terra-money/terra.js";
import { LCDClient as XplaLCDClient } from "@xpla/xpla.js";
import { Algodv2 } from "algosdk";
import { AptosClient } from "aptos";
import { ethers } from "ethers";
import { Provider } from "near-api-js/lib/providers";
import { ChainId, ChainName, CosmWasmChainId, CosmWasmChainName } from "../utils";
export interface WormholeWrappedInfo {
    isWrapped: boolean;
    chainId: ChainId;
    assetAddress: Uint8Array;
}
/**
 * Returns a origin chain and asset address on {originChain} for a provided Wormhole wrapped address
 * @param tokenBridgeAddress
 * @param provider
 * @param wrappedAddress
 * @returns
 */
export declare function getOriginalAssetEth(tokenBridgeAddress: string, provider: ethers.Signer | ethers.providers.Provider, wrappedAddress: string, lookupChain: ChainId | ChainName): Promise<WormholeWrappedInfo>;
export declare function getOriginalAssetTerra(client: TerraLCDClient, wrappedAddress: string): Promise<WormholeWrappedInfo>;
/**
 * Returns information about the asset
 * @param wrappedAddress Address of the asset in wormhole wrapped format (hex string)
 * @param client WASM api client
 * @returns Information about the asset
 */
export declare function getOriginalAssetInjective(wrappedAddress: string, client: ChainGrpcWasmApi): Promise<WormholeWrappedInfo>;
export declare function getOriginalAssetXpla(client: XplaLCDClient, wrappedAddress: string): Promise<WormholeWrappedInfo>;
export declare function getOriginalAssetCosmWasm(client: TerraLCDClient | XplaLCDClient, wrappedAddress: string, lookupChain: CosmWasmChainId | CosmWasmChainName): Promise<WormholeWrappedInfo>;
/**
 * Returns a origin chain and asset address on {originChain} for a provided Wormhole wrapped address
 * @param connection
 * @param tokenBridgeAddress
 * @param mintAddress
 * @param [commitment]
 * @returns
 */
export declare function getOriginalAssetSolana(connection: Connection, tokenBridgeAddress: PublicKeyInitData, mintAddress: PublicKeyInitData, commitment?: Commitment): Promise<WormholeWrappedInfo>;
export declare const getOriginalAssetSol: typeof getOriginalAssetSolana;
/**
 * Returns an origin chain and asset address on {originChain} for a provided Wormhole wrapped address
 * @param client Algodv2 client
 * @param tokenBridgeId Application ID of the token bridge
 * @param assetId Algorand asset index
 * @returns wrapped wormhole information structure
 */
export declare function getOriginalAssetAlgorand(client: Algodv2, tokenBridgeId: bigint, assetId: bigint): Promise<WormholeWrappedInfo>;
export declare function getOriginalAssetNear(provider: Provider, tokenAccount: string, assetAccount: string): Promise<WormholeWrappedInfo>;
/**
 * Gets the origin chain ID and address of an asset on Aptos, given its fully qualified type.
 * @param client Client used to transfer data to/from Aptos node
 * @param tokenBridgePackageId Address of token bridge
 * @param fullyQualifiedType Fully qualified type of asset
 * @returns Original chain ID and address of asset
 */
export declare function getOriginalAssetAptos(client: AptosClient, tokenBridgePackageId: string, fullyQualifiedType: string): Promise<WormholeWrappedInfo>;
export declare function getOriginalAssetSui(provider: JsonRpcProvider, tokenBridgeStateObjectId: string, coinType: string): Promise<WormholeWrappedInfo>;
