import { Numberish, ProtocolType } from '@hyperlane-xyz/utils';
import type { ChainMetadata } from '../metadata/chainMetadataTypes.js';
import type { ChainName } from '../types.js';
import type { ITokenMetadata, TokenArgs } from './ITokenMetadata.js';
import type { TokenConnection } from './TokenConnection.js';
import { TokenAmount } from './TokenAmount.js';
export declare function tokenIdentifiersEqual(left?: string, right?: string): boolean;
export declare class TokenMetadata implements ITokenMetadata {
    chainName: TokenArgs['chainName'];
    standard: TokenArgs['standard'];
    decimals: TokenArgs['decimals'];
    symbol: TokenArgs['symbol'];
    name: TokenArgs['name'];
    addressOrDenom: TokenArgs['addressOrDenom'];
    collateralAddressOrDenom: TokenArgs['collateralAddressOrDenom'];
    igpTokenAddressOrDenom: TokenArgs['igpTokenAddressOrDenom'];
    logoURI: TokenArgs['logoURI'];
    connections: TokenArgs['connections'];
    coinGeckoId: TokenArgs['coinGeckoId'];
    scale: TokenArgs['scale'];
    warpRouteId: TokenArgs['warpRouteId'];
    readonly protocol: ProtocolType;
    constructor(args: TokenArgs);
    static FromChainMetadataNativeToken<T extends typeof TokenMetadata>(this: T, chainMetadata: ChainMetadata): InstanceType<T>;
    amount(amount: Numberish): TokenAmount<this>;
    isNft(): boolean;
    isNative(): boolean;
    isHypNative(): boolean;
    isCollateralized(): boolean;
    isHypToken(): boolean;
    isXerc20(): boolean;
    isIbcToken(): boolean;
    isMultiChainToken(): boolean;
    isCrossCollateralToken(): boolean;
    getConnections(): TokenConnection[];
    getConnectionForChain(chain: ChainName): TokenConnection | undefined;
    addConnection(connection: TokenConnection): TokenMetadata;
    removeConnection(token: ITokenMetadata): TokenMetadata;
    equals(token?: ITokenMetadata): boolean;
    isFungibleWith(token?: ITokenMetadata): boolean;
}
//# sourceMappingURL=TokenMetadata.d.ts.map