import { Codec, Decoder, Encoder, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder, VariableSizeCodec, VariableSizeDecoder, VariableSizeEncoder } from './codec'; type NumberEncoder = Encoder | Encoder; type FixedSizeNumberEncoder = FixedSizeEncoder | FixedSizeEncoder; type NumberDecoder = Decoder | Decoder; type FixedSizeNumberDecoder = FixedSizeDecoder | FixedSizeDecoder; type NumberCodec = Codec | Codec; type FixedSizeNumberCodec = FixedSizeCodec | FixedSizeCodec; /** * Stores the size of the `encoder` in bytes as a prefix using the `prefix` encoder. * * See {@link addCodecSizePrefix} for more information. * * @typeParam TFrom - The type of the value to encode. * * @see {@link addCodecSizePrefix} */ export declare function addEncoderSizePrefix(encoder: FixedSizeEncoder, prefix: FixedSizeNumberEncoder): FixedSizeEncoder; export declare function addEncoderSizePrefix(encoder: Encoder, prefix: NumberEncoder): VariableSizeEncoder; /** * Bounds the size of the nested `decoder` by reading its encoded `prefix`. * * See {@link addCodecSizePrefix} for more information. * * @typeParam TTo - The type of the decoded value. * * @see {@link addCodecSizePrefix} */ export declare function addDecoderSizePrefix(decoder: FixedSizeDecoder, prefix: FixedSizeNumberDecoder): FixedSizeDecoder; export declare function addDecoderSizePrefix(decoder: Decoder, prefix: NumberDecoder): VariableSizeDecoder; /** * Stores the byte size of any given codec as an encoded number prefix. * * This sets a limit on variable-size codecs and tells us when to stop decoding. * When encoding, the size of the encoded data is stored before the encoded data itself. * When decoding, the size is read first to know how many bytes to read next. * * @typeParam TFrom - The type of the value to encode. * @typeParam TTo - The type of the decoded value. * * @example * For example, say we want to bound a variable-size base-58 string using a `u32` size prefix. * Here’s how you can use the `addCodecSizePrefix` function to achieve that. * * ```ts * const getU32Base58Codec = () => addCodecSizePrefix(getBase58Codec(), getU32Codec()); * * getU32Base58Codec().encode('hello world'); * // 0x0b00000068656c6c6f20776f726c64 * // | └-- Our encoded base-58 string. * // └-- Our encoded u32 size prefix. * ``` * * @remarks * Separate {@link addEncoderSizePrefix} and {@link addDecoderSizePrefix} functions are also available. * * ```ts * const bytes = addEncoderSizePrefix(getBase58Encoder(), getU32Encoder()).encode('hello'); * const value = addDecoderSizePrefix(getBase58Decoder(), getU32Decoder()).decode(bytes); * ``` * * @see {@link addEncoderSizePrefix} * @see {@link addDecoderSizePrefix} */ export declare function addCodecSizePrefix(codec: FixedSizeCodec, prefix: FixedSizeNumberCodec): FixedSizeCodec; export declare function addCodecSizePrefix(codec: Codec, prefix: NumberCodec): VariableSizeCodec; export {}; //# sourceMappingURL=add-codec-size-prefix.d.ts.map