/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { TlvTag, TlvTypeLength } from "./TlvCodec.js";
import { TlvEncodingOptions, TlvReader, TlvSchema, TlvWriter } from "./TlvSchema.js";
/**
 * Schema to encode a nullable value in TLV.
 *
 * @see {@link MatterSpecification.v10.Core} § A.11.6
 */
export declare class NullableSchema<T> extends TlvSchema<T | null> {
    readonly schema: TlvSchema<T>;
    constructor(schema: TlvSchema<T>);
    encodeTlvInternal(writer: TlvWriter, value: T | null, tag?: TlvTag, options?: TlvEncodingOptions): void;
    decodeTlvInternalValue(reader: TlvReader, typeLength: TlvTypeLength): T | null;
    validate(value: T | null): void;
    injectField(value: T, fieldId: number, fieldValue: any, injectChecker: (fieldValue: any) => boolean): T;
    removeField(value: T, fieldId: number, removeChecker: (fieldValue: any) => boolean): T;
}
/** Nullable TLV schema. */
export declare const TlvNullable: <T>(schema: TlvSchema<T>) => NullableSchema<T>;
//# sourceMappingURL=TlvNullable.d.ts.map