import type { TokenAddress, TokenPublicKeyString } from '@keetanetwork/keetanet-client/lib/account.js';
import { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';
import * as CurrencyInfo from '@keetanetwork/currency-info';
import type { ChainLocationType } from '../services/asset-movement/common.js';
export type KeetaNetAccount = InstanceType<typeof KeetaNetLib.Account>;
export type KeetaNetStorageAccount = InstanceType<typeof KeetaNetLib.Account<typeof KeetaNetLib.Account.AccountKeyAlgorithm.STORAGE>>;
export type KeetaNetToken = InstanceType<typeof KeetaNetLib.Account<typeof KeetaNetLib.Account.AccountKeyAlgorithm.TOKEN>>;
export type KeetaNetTokenPublicKeyString = ReturnType<InstanceType<typeof KeetaNetLib.Account<typeof KeetaNetLib.Account.AccountKeyAlgorithm.TOKEN>>['publicKeyString']['get']>;
export type HexString = `0x${string}`;
export type CurrencySearchCanonical = CurrencyInfo.ISOCurrencyCode | `$${string}`;
export type CurrencySearchInput = CurrencySearchCanonical | CurrencyInfo.Currency;
export type TokenSearchInput = TokenAddress | TokenPublicKeyString;
export type TokenSearchCanonical = TokenPublicKeyString;
type ChainAssetType = {
    evm: HexString;
} & {
    [K in 'solana' | 'bitcoin' | 'tron']: string;
};
export type ExternalChainLocationType = Exclude<ChainLocationType, 'keeta'>;
export type ExternalChainAsset<T extends ExternalChainLocationType = ExternalChainLocationType> = {
    [K in T]: `${K}:${ChainAssetType[K]}`;
}[T];
export type EVMAsset = ExternalChainAsset<'evm'>;
export type TronAsset = ExternalChainAsset<'tron'>;
export type SolanaAsset = ExternalChainAsset<'solana'>;
export type BitcoinAsset = ExternalChainAsset<'bitcoin'>;
export type ChainAssetString = ExternalChainAsset | TokenPublicKeyString;
export type MovableAssetSearchInput = CurrencySearchInput | TokenSearchInput | ChainAssetString;
export type MovableAssetSearchCanonical = CurrencySearchCanonical | TokenSearchCanonical | ChainAssetString;
export type MovableAsset = TokenAddress | TokenPublicKeyString | CurrencySearchInput | ChainAssetString;
export declare function toEVMAsset(input: HexString): EVMAsset;
export declare function parseEVMAsset(input: EVMAsset): HexString;
export declare function isEVMAsset(input: unknown): input is EVMAsset;
export declare function toTronAsset(input: string): TronAsset;
export declare function parseTronAsset(input: TronAsset): string;
export declare function isTronAsset(input: unknown): input is TronAsset;
export declare function toSolanaAsset(input: string): SolanaAsset;
export declare function parseSolanaAsset(input: SolanaAsset): string;
export declare function isSolanaAsset(input: unknown): input is SolanaAsset;
export declare function isBitcoinAsset(input: unknown): input is BitcoinAsset;
export declare function isExternalChainAsset<T extends ExternalChainLocationType = ExternalChainLocationType>(input: unknown, type?: T): input is ExternalChainAsset<T>;
export declare function convertAssetSearchInputToCanonical(input: MovableAssetSearchInput): MovableAssetSearchCanonical;
export {};
//# sourceMappingURL=asset.d.ts.map