UNPKG

@polkadot/types-codec

Version:
75 lines (74 loc) 2.33 kB
import type { BN } from '@polkadot/util'; import type { ArgsDef, Codec } from './codec.js'; import type { AnyTuple } from './helpers.js'; export interface ICompact<T extends INumber = INumber> extends Codec { toBigInt(): bigint; toBn(): BN; toNumber(): number; unwrap(): T; } export interface IEnum extends Codec { readonly defIndexes: number[]; readonly defKeys: string[]; readonly index: number; readonly isBasic: boolean; readonly type: string; readonly value: Codec; toNumber(): number; } export interface IMap<K extends Codec = Codec, V extends Codec = Codec> extends Map<K, V>, Codec { } export interface INumber extends Codec { bitLength(): number; toBigInt(): bigint; toBn(): BN; toNumber(): number; toPrimitive(disableAscii?: boolean): string | number; } export interface IFloat extends Codec { toNumber(): number; } export interface IOption<T extends Codec = Codec> extends Codec { readonly isNone: boolean; readonly isSome: boolean; readonly value: Codec; unwrap(): T; unwrapOr<O>(other: O): T | O; unwrapOrDefault(): T; } export interface IResult<O extends Codec = Codec, E extends Codec = Codec> extends IEnum { readonly asErr: E; readonly asOk: O; readonly isErr: boolean; readonly isOk: boolean; } export interface ISet<K = string> extends Set<K>, Codec { readonly strings: string[]; } export interface IStruct<K = string, V extends Codec = Codec> extends Map<K, V>, Codec { readonly defKeys: string[]; getAtIndex(index: number): Codec; toArray(): Codec[]; } export interface IText extends String, Codec { } export type ITuple<T extends AnyTuple = Codec[]> = T & Codec; export interface IU8a extends Uint8Array, Codec { readonly isAscii: boolean; readonly isUtf8: boolean; bitLength(): number; toHuman(isExtended?: boolean, disableAscii?: boolean): any; toJSON(): any; toUtf8(): string; } export interface IVec<T extends Codec = Codec> extends Array<T>, Codec { toArray(): T[]; } export interface IMethod<A extends AnyTuple = AnyTuple, M = any> extends Codec { readonly args: A; readonly argsDef: ArgsDef; readonly callIndex: Uint8Array; readonly data: Uint8Array; readonly meta: M; is: (tx: IMethod<AnyTuple>) => tx is IMethod<A>; }