@hyperlane-xyz/sdk
Version:
The official SDK for the Hyperlane Network
182 lines • 6.98 kB
TypeScript
import { z } from 'zod';
import { Address, Numberish, ProtocolType } from '@hyperlane-xyz/utils';
import type { ChainName } from '../types.js';
import type { TokenAmount } from './TokenAmount.js';
import { type TokenConnection } from './TokenConnection.js';
import { TokenStandard } from './TokenStandard.js';
export declare const TokenConfigSchema: z.ZodObject<{
chainName: z.ZodString;
standard: z.ZodNativeEnum<typeof TokenStandard>;
decimals: z.ZodNumber;
symbol: z.ZodString;
name: z.ZodString;
addressOrDenom: z.ZodEffects<z.ZodNullable<z.ZodString>, string, string | null>;
collateralAddressOrDenom: z.ZodOptional<z.ZodString>;
igpTokenAddressOrDenom: z.ZodOptional<z.ZodString>;
logoURI: z.ZodOptional<z.ZodString>;
connections: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
type: z.ZodOptional<z.ZodLiteral<import("./TokenConnection.js").TokenConnectionType.Hyperlane>>;
token: z.ZodString;
}, "strip", z.ZodTypeAny, {
token: string;
type?: import("./TokenConnection.js").TokenConnectionType.Hyperlane | undefined;
}, {
token: string;
type?: import("./TokenConnection.js").TokenConnectionType.Hyperlane | undefined;
}>, z.ZodObject<{
type: z.ZodLiteral<import("./TokenConnection.js").TokenConnectionType.Ibc>;
token: z.ZodString;
sourcePort: z.ZodString;
sourceChannel: z.ZodString;
}, "strip", z.ZodTypeAny, {
type: import("./TokenConnection.js").TokenConnectionType.Ibc;
token: string;
sourcePort: string;
sourceChannel: string;
}, {
type: import("./TokenConnection.js").TokenConnectionType.Ibc;
token: string;
sourcePort: string;
sourceChannel: string;
}>]>, z.ZodObject<{
type: z.ZodLiteral<import("./TokenConnection.js").TokenConnectionType.IbcHyperlane>;
token: z.ZodString;
sourcePort: z.ZodString;
sourceChannel: z.ZodString;
intermediateChainName: z.ZodString;
intermediateIbcDenom: z.ZodString;
intermediateRouterAddress: z.ZodString;
}, "strip", z.ZodTypeAny, {
type: import("./TokenConnection.js").TokenConnectionType.IbcHyperlane;
token: string;
sourcePort: string;
sourceChannel: string;
intermediateChainName: string;
intermediateIbcDenom: string;
intermediateRouterAddress: string;
}, {
type: import("./TokenConnection.js").TokenConnectionType.IbcHyperlane;
token: string;
sourcePort: string;
sourceChannel: string;
intermediateChainName: string;
intermediateIbcDenom: string;
intermediateRouterAddress: string;
}>]>, "many">>;
coinGeckoId: z.ZodOptional<z.ZodString>;
scale: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
numerator: z.ZodNumber;
denominator: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
numerator: number;
denominator: number;
}, {
numerator: number;
denominator: number;
}>, z.ZodObject<{
numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
}, "strip", z.ZodTypeAny, {
numerator: bigint;
denominator: bigint;
}, {
numerator: string | number | bigint;
denominator: string | number | bigint;
}>]>>;
warpRouteId: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
symbol: string;
name: string;
decimals: number;
chainName: string;
standard: TokenStandard;
addressOrDenom: string;
logoURI?: string | undefined;
scale?: number | {
numerator: number;
denominator: number;
} | {
numerator: bigint;
denominator: bigint;
} | undefined;
collateralAddressOrDenom?: string | undefined;
igpTokenAddressOrDenom?: string | undefined;
connections?: ({
token: string;
type?: import("./TokenConnection.js").TokenConnectionType.Hyperlane | undefined;
} | {
type: import("./TokenConnection.js").TokenConnectionType.Ibc;
token: string;
sourcePort: string;
sourceChannel: string;
} | {
type: import("./TokenConnection.js").TokenConnectionType.IbcHyperlane;
token: string;
sourcePort: string;
sourceChannel: string;
intermediateChainName: string;
intermediateIbcDenom: string;
intermediateRouterAddress: string;
})[] | undefined;
coinGeckoId?: string | undefined;
warpRouteId?: string | undefined;
}, {
symbol: string;
name: string;
decimals: number;
chainName: string;
standard: TokenStandard;
addressOrDenom: string | null;
logoURI?: string | undefined;
scale?: number | {
numerator: number;
denominator: number;
} | {
numerator: string | number | bigint;
denominator: string | number | bigint;
} | undefined;
collateralAddressOrDenom?: string | undefined;
igpTokenAddressOrDenom?: string | undefined;
connections?: ({
token: string;
type?: import("./TokenConnection.js").TokenConnectionType.Hyperlane | undefined;
} | {
type: import("./TokenConnection.js").TokenConnectionType.Ibc;
token: string;
sourcePort: string;
sourceChannel: string;
} | {
type: import("./TokenConnection.js").TokenConnectionType.IbcHyperlane;
token: string;
sourcePort: string;
sourceChannel: string;
intermediateChainName: string;
intermediateIbcDenom: string;
intermediateRouterAddress: string;
})[] | undefined;
coinGeckoId?: string | undefined;
warpRouteId?: string | undefined;
}>;
export type TokenArgs = Omit<z.infer<typeof TokenConfigSchema>, 'addressOrDenom' | 'connections'> & {
addressOrDenom: Address | string;
connections?: Array<TokenConnection>;
};
export interface ITokenMetadata extends TokenArgs {
protocol: ProtocolType;
amount(amount: Numberish): TokenAmount<this>;
isNft(): boolean;
isNative(): boolean;
isHypNative(): boolean;
isCollateralized(): boolean;
isHypToken(): boolean;
isIbcToken(): boolean;
isMultiChainToken(): boolean;
isCrossCollateralToken(): boolean;
getConnections(): TokenConnection[];
getConnectionForChain(chain: ChainName): TokenConnection | undefined;
addConnection(connection: TokenConnection): ITokenMetadata;
removeConnection(token: ITokenMetadata): ITokenMetadata;
equals(token?: ITokenMetadata): boolean;
isFungibleWith(token?: ITokenMetadata): boolean;
}
//# sourceMappingURL=ITokenMetadata.d.ts.map