/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import type { ClientNode } from "#node/ClientNode.js";
import { Bytes, Crypto } from "@matter/general";
import { FabricId, FabricIndex, VendorId } from "@matter/types";
import type { OperationalCredentials } from "@matter/types/clusters/operational-credentials";
export declare const VERIFICATION_STATEMENT_SIZE = 85;
export declare namespace VendorIdVerification {
    interface SignData {
        fabricBindingVersion?: number;
        clientChallenge: Bytes;
        attChallenge: Bytes;
        fabricIndex: FabricIndex;
        fabric: {
            rootPublicKey: Bytes;
            fabricId: FabricId;
            rootVendorId: VendorId;
            vidVerificationStatement?: Bytes;
        };
    }
    /** Prepare the data to be signed for VID Verification */
    function dataToSign(data: SignData): {
        fabricBindingVersion: number;
        signatureData: Uint8Array<ArrayBufferLike>;
    };
    /**
     * Verify VendorId ownership using VID Verification protocol including needed requests to the device
     * TODO: Finalize this with DCL data and wire into controller as option
     *
     * It requires data read the the device (if relevant read non fabric filtered) for fabrics, nocs and
     * trustedRootCertificates to provide the raw input data for verification.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.10.1.
     */
    function verify(node: ClientNode, options: {
        noc: OperationalCredentials.Noc;
        rcac: Bytes;
        fabric: OperationalCredentials.FabricDescriptor;
    }): Promise<boolean | undefined>;
    /**
     * Verify VendorId ownership using VID Verification protocol on pure data level
     *
     * @see {@link MatterSpecification.v142.Cluster} § 6.4.10.1.
     */
    function verifyData(crypto: Crypto, options: {
        clientChallenge: Bytes;
        attChallenge: Bytes;
        signVerificationResponse: OperationalCredentials.SignVidVerificationResponse;
        noc: OperationalCredentials.Noc;
        rcac: Bytes;
        fabric: OperationalCredentials.FabricDescriptor;
    }): Promise<boolean>;
    function createStatementBytes(options: {
        version?: number;
        fabricBindingMessage: Bytes;
        signerSkid: Bytes;
    }): Uint8Array<ArrayBufferLike>;
    function parseStatement(statement: Bytes): {
        version: number;
        fabricBindingMessage: Uint8Array<ArrayBufferLike>;
        signerSkid: Uint8Array<ArrayBufferLike>;
        signature: Uint8Array<ArrayBufferLike> | undefined;
    };
}
//# sourceMappingURL=VendorIdVerification.d.ts.map