UNPKG

@ckb-lumos/codec

Version:

Make your own molecule binding in JavaScript(TypeScript)

27 lines 1.69 kB
export interface Codec<Packed, Unpacked, Packable = Unpacked, Unpackable = Packed> { pack: (packable: Packable) => Packed; unpack: (unpackable: Unpackable) => Unpacked; } export type AnyCodec = Codec<any, any>; export type PackResult<T extends AnyCodec> = T extends Codec<infer Packed, any, any, any> ? Packed : never; export type PackParam<T extends AnyCodec> = T extends Codec<any, any, infer Packable, any> ? Packable : never; export type UnpackResult<T extends AnyCodec> = T extends Codec<any, infer Unpacked, any, any> ? Unpacked : never; export type UnpackParam<T extends AnyCodec> = T extends Codec<any, any, any, infer Unpackable> ? Unpackable : never; export type Uint8ArrayCodec<Unpacked = any, Packable = Unpacked> = Codec<Uint8Array, Unpacked, Packable>; export type BytesLike = ArrayLike<number> | ArrayBuffer | string; export type BytesCodec<Unpacked = any, Packable = Unpacked> = Codec<Uint8Array, Unpacked, Packable, BytesLike>; /** * Create a codec to deal with bytes-like data. * @param codec */ export declare function createBytesCodec<Unpacked, Packable = Unpacked>(codec: Uint8ArrayCodec<Unpacked, Packable>): BytesCodec<Unpacked, Packable>; export type Fixed = { readonly __isFixedCodec__: true; readonly byteLength: number; }; export type FixedBytesCodec<Unpacked = any, Packable = Unpacked> = BytesCodec<Unpacked, Packable> & Fixed; export declare function isFixedCodec<T>(codec: BytesCodec<T>): codec is FixedBytesCodec<T>; export declare function createFixedBytesCodec<Unpacked, Packable = Unpacked>(codec: Uint8ArrayCodec<Unpacked, Packable> & { byteLength: number; }): FixedBytesCodec<Unpacked, Packable>; //# sourceMappingURL=base.d.ts.map