@ckb-lumos/codec
Version:
Make your own molecule binding in JavaScript(TypeScript)
27 lines • 1.69 kB
TypeScript
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