/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { VendorId } from "../datatype/VendorId.js";
import { TlvSchema } from "../tlv/TlvSchema.js";
import { BitField, BitFieldEnum, BitFlag, TypeFromBitmapSchema } from "./BitmapSchema.js";
import { Schema } from "./Schema.js";
/** See {@link MatterSpecification.v13.Core} § 5.1.3.1 Table 38 */
export declare enum CommissioningFlowType {
    /** When not commissioned, the device always enters commissioning mode upon power-up. */
    Standard = 0,
    /** User action required to enter commissioning mode. */
    UserIntent = 1,
    /** Interaction with a vendor-specified means is needed before commissioning. */
    Custom = 2
}
/** See {@link MatterSpecification.v13.Core} § 5.1.3.1 Table 39 */
export declare const DiscoveryCapabilitiesBitmap: {
    /** Device supports BLE for discovery when not commissioned. */
    ble: BitFlag;
    /** Device is already on the IP network. */
    onIpNetwork: BitFlag;
};
export declare const DiscoveryCapabilitiesSchema: import("./BitmapSchema.js").BitmapSchemaInternal<{
    /** Device supports BLE for discovery when not commissioned. */
    ble: BitFlag;
    /** Device is already on the IP network. */
    onIpNetwork: BitFlag;
}>;
/** See {@link MatterSpecification.v13.Core} § 5.1.3.1 Table 38 */
declare const QrCodeDataSchema: import("./BitmapSchema.js").ByteArrayBitmapSchemaInternal<{
    version: BitField;
    vendorId: BitField;
    productId: BitField;
    flowType: BitFieldEnum<CommissioningFlowType>;
    discoveryCapabilities: BitField;
    discriminator: BitField;
    passcode: BitField;
}>;
export type QrCodeData = TypeFromBitmapSchema<typeof QrCodeDataSchema> & {
    /**
     * See {@link MatterSpecification.v13.Core} § 5.1.5
     * Variable length TLV data. Zero length if TLV is not included. This data is byte-aligned.
     * All elements SHALL be housed within an anonymous top-level structure container.
     */
    tlvData?: Uint8Array;
};
/**
 * Default field definition that can be enhanced with manufacturer specific Fields for the TlvSchema to use.
 * See {@link MatterSpecification.v13.Core} § 5.1.5
 */
export declare const QrCodeTlvDataDefaultFields: {
    /** Device Serial # */
    serialNumber: import("../tlv/TlvObject.js").OptionalFieldType<import("../tlv/TlvSchema.js").TlvStream>;
    pbkdfIterations: import("../tlv/TlvObject.js").OptionalFieldType<number>;
    pbkdfSalt: import("../tlv/TlvObject.js").OptionalFieldType<Uint8Array<ArrayBufferLike>>;
    /**
     * Number of devices that are expected to be onboarded using this payload when using the Enhanced Commissioning
     * Method
     */
    numberOfDevices: import("../tlv/TlvObject.js").OptionalFieldType<number>;
    /**
     * Time, in seconds, during which the device(s) are expected to be commissionable using the Enhanced Commissioning
     * Method
     */
    commissioningTimeout: import("../tlv/TlvObject.js").OptionalFieldType<number>;
};
declare class QrPairingCodeSchema extends Schema<QrCodeData[], string> {
    protected encodeInternal(payloadData: QrCodeData[]): string;
    protected decodeInternal(encoded: string): QrCodeData[];
    /**
     * Decodes the TLV data from the QR code payload.
     * This method especially also handles that an encoded serialNumber can be UTF-8-String or a Unsigned Integer.
     *
     * @param data Encoded TLV data
     * @param schema The schema to use for decoding the TLV data, by default a schema with the QrCodeTlvDataDefaultFields is used
     */
    decodeTlvData(data: Uint8Array, schema?: TlvSchema<any>): any;
    /**
     * Encodes the TLV data for the QR code payload.
     * This method especially also handles that an encoded serialNumber can be UTF-8-String or a Unsigned Integer.
     *
     * @param data Data object to encode
     * @param schema The schema to use for encoding the TLV data, by default a schema with the QrCodeTlvDataDefaultFields is used
     */
    encodeTlvData(data: Record<string, any>, schema?: TlvSchema<any>): Uint8Array<ArrayBufferLike>;
}
export declare const QrPairingCodeCodec: QrPairingCodeSchema;
export type ManualPairingData = {
    discriminator?: number;
    shortDiscriminator?: number;
    passcode: number;
    vendorId?: VendorId;
    productId?: number;
};
/** See {@link MatterSpecification.v10.Core} § 5.1.4.1 Table 38/39/40 */
declare class ManualPairingCodeSchema extends Schema<ManualPairingData, string> {
    protected encodeInternal({ discriminator, passcode, vendorId, productId }: ManualPairingData): string;
    protected decodeInternal(encoded: string): ManualPairingData;
}
export declare const ManualPairingCodeCodec: ManualPairingCodeSchema;
export {};
//# sourceMappingURL=PairingCodeSchema.d.ts.map