@polkadot/types-codec
Version:
Implementation of the SCALE codec
75 lines (74 loc) • 2.33 kB
TypeScript
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>;
}