UNPKG

@ckb-lumos/codec

Version:

Make your own molecule binding in JavaScript(TypeScript)

42 lines 1.77 kB
import { AnyCodec, Codec, PackParam, PackResult, UnpackParam, UnpackResult } from "../base"; export interface NullableCodec<C extends AnyCodec = AnyCodec> extends AnyCodec { pack(packable?: PackParam<C>): PackResult<C>; unpack(unpackable?: UnpackParam<C>): UnpackResult<C>; } export declare function createNullableCodec<C extends AnyCodec = AnyCodec>(codec: C): NullableCodec<C>; type ObjectCodecShape = Record<string, AnyCodec>; export type ObjectCodec<Shape extends ObjectCodecShape = ObjectCodecShape> = Codec<{ [key in keyof Shape]: PackResult<Shape[key]>; }, { [key in keyof Shape]: UnpackResult<Shape[key]>; }, { [key in keyof Shape]: PackParam<Shape[key]>; }, { [key in keyof Shape]: UnpackParam<Shape[key]>; }>; /** * a high-order codec that helps to organize multiple codecs together into a single object * @param codecShape * @example * ```ts * const codec = createObjectCodec({ * r: Uint8, * g: Uint8, * b: Uint8, * }); * * // { r: ArrayBuffer([0xff]), g: ArrayBuffer([0x00]), b: ArrayBuffer([0x00]) } * codec.pack({ r: 255, g: 0, b: 0 }); * ``` */ export declare function createObjectCodec<Shape extends ObjectCodecShape>(codecShape: Shape): ObjectCodec<Shape>; export type ArrayCodec<C extends AnyCodec> = Codec<PackResult<C>[], UnpackResult<C>[], PackParam<C>[], UnpackParam<C>[]>; export declare function createArrayCodec<C extends AnyCodec>(codec: C): ArrayCodec<C>; /** * @param codec * @param afterCodecPack * @param beforeCodecUnpack */ export declare function enhancePack<C extends AnyCodec, Packed>(codec: C, afterCodecPack: (arg: PackResult<C>) => Packed, beforeCodecUnpack: (arg: Packed) => UnpackParam<C>): Codec<Packed, UnpackResult<C>, PackParam<C>>; export {}; //# sourceMappingURL=nested.d.ts.map