import { AnyCodec, Codec, PackParam, PackResult, UnpackParam, UnpackResult } from "../base"; export interface NullableCodec extends AnyCodec { pack(packable?: PackParam): PackResult; unpack(unpackable?: UnpackParam): UnpackResult; } export declare function createNullableCodec(codec: C): NullableCodec; type ObjectCodecShape = Record; export type ObjectCodec = Codec<{ [key in keyof Shape]: PackResult; }, { [key in keyof Shape]: UnpackResult; }, { [key in keyof Shape]: PackParam; }, { [key in keyof Shape]: UnpackParam; }>; /** * 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(codecShape: Shape): ObjectCodec; export type ArrayCodec = Codec[], UnpackResult[], PackParam[], UnpackParam[]>; export declare function createArrayCodec(codec: C): ArrayCodec; /** * @param codec * @param afterCodecPack * @param beforeCodecUnpack */ export declare function enhancePack(codec: C, afterCodecPack: (arg: PackResult) => Packed, beforeCodecUnpack: (arg: Packed) => UnpackParam): Codec, PackParam>; export {}; //# sourceMappingURL=nested.d.ts.map