import type { BN } from '@polkadot/util'; import type { ArgsDef, Codec } from './codec.js'; import type { AnyTuple } from './helpers.js'; export interface ICompact 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 extends Map, 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 extends Codec { readonly isNone: boolean; readonly isSome: boolean; readonly value: Codec; unwrap(): T; unwrapOr(other: O): T | O; unwrapOrDefault(): T; } export interface IResult extends IEnum { readonly asErr: E; readonly asOk: O; readonly isErr: boolean; readonly isOk: boolean; } export interface ISet extends Set, Codec { readonly strings: string[]; } export interface IStruct extends Map, Codec { readonly defKeys: string[]; getAtIndex(index: number): Codec; toArray(): Codec[]; } export interface IText extends String, Codec { } export type ITuple = 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 extends Array, Codec { toArray(): T[]; } export interface IMethod extends Codec { readonly args: A; readonly argsDef: ArgsDef; readonly callIndex: Uint8Array; readonly data: Uint8Array; readonly meta: M; is: (tx: IMethod) => tx is IMethod; }