import { Commitment, Connection, PublicKeyInitData } from "@solana/web3.js";
import { LCDClient } from "@terra-money/terra.js";
import { ChainGrpcWasmApi } from "@injectivelabs/sdk-ts";
import { Algodv2 } from "algosdk";
import { AptosClient } from "aptos";
import { ethers } from "ethers";
import { ChainId, ChainName } from "../utils";
import { Provider } from "near-api-js/lib/providers";
import { LCDClient as XplaLCDClient } from "@xpla/xpla.js";
import { JsonRpcProvider } from "@mysten/sui.js";
/**
 * Returns a foreign asset address on Ethereum for a provided native chain and asset address, AddressZero if it does not exist
 * @param tokenBridgeAddress
 * @param provider
 * @param originChain
 * @param originAsset zero pad to 32 bytes
 * @returns
 */
export declare function getForeignAssetEth(tokenBridgeAddress: string, provider: ethers.Signer | ethers.providers.Provider, originChain: ChainId | ChainName, originAsset: Uint8Array): Promise<string | null>;
export declare function getForeignAssetTerra(tokenBridgeAddress: string, client: LCDClient, originChain: ChainId | ChainName, originAsset: Uint8Array): Promise<string | null>;
/**
 * Returns the address of the foreign asset
 * @param tokenBridgeAddress Address of token bridge contact
 * @param client Holds the wallet and signing information
 * @param originChain The chainId of the origin of the asset
 * @param originAsset The address of the origin asset
 * @returns The foreign asset address or null
 */
export declare function getForeignAssetInjective(tokenBridgeAddress: string, client: ChainGrpcWasmApi, originChain: ChainId | ChainName, originAsset: Uint8Array): Promise<string | null>;
export declare function getForeignAssetXpla(tokenBridgeAddress: string, client: XplaLCDClient, originChain: ChainId | ChainName, originAsset: Uint8Array): Promise<string | null>;
/**
 * Returns a foreign asset address on Solana for a provided native chain and asset address
 * @param connection
 * @param tokenBridgeAddress
 * @param originChain
 * @param originAsset zero pad to 32 bytes
 * @param [commitment]
 * @returns
 */
export declare function getForeignAssetSolana(connection: Connection, tokenBridgeAddress: PublicKeyInitData, originChain: ChainId | ChainName, originAsset: Uint8Array, commitment?: Commitment): Promise<string | null>;
export declare function getForeignAssetAlgorand(client: Algodv2, tokenBridgeId: bigint, chain: ChainId | ChainName, contract: string): Promise<bigint | null>;
export declare function getForeignAssetNear(provider: Provider, tokenAccount: string, chain: ChainId | ChainName, contract: string): Promise<string | null>;
/**
 * Get qualified type of asset on Aptos given its origin info.
 * @param client Client used to transfer data to/from Aptos node
 * @param tokenBridgeAddress Address of token bridge
 * @param originChain Chain ID of chain asset is originally from
 * @param originAddress Asset address on origin chain
 * @returns Fully qualified type of asset on Aptos
 */
export declare function getForeignAssetAptos(client: AptosClient, tokenBridgeAddress: string, originChain: ChainId | ChainName, originAddress: string): Promise<string | null>;
export declare function getForeignAssetSui(provider: JsonRpcProvider, tokenBridgeStateObjectId: string, originChain: ChainId | ChainName, originAddress: Uint8Array): Promise<string | null>;
