/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { FailsafeContext } from "#common/FailsafeContext.js";
import { FabricManager } from "#fabric/FabricManager.js";
import { Environment, Environmental, MaybePromise } from "#general";
import { SecureChannelProtocol } from "#securechannel/SecureChannelProtocol.js";
import { PaseServer } from "#session/pase/PaseServer.js";
import { SessionManager } from "#session/SessionManager.js";
import { CommissioningOptions } from "#types";
import { DeviceAdvertiser } from "./DeviceAdvertiser.js";
/**
 * The component allows commissioning configuration to change after the {@link DeviceCommissioner} is initialized.
 */
export declare abstract class CommissioningConfigProvider {
    abstract values: CommissioningOptions.Configuration;
}
/**
 * Interfaces the {@link DeviceCommissioner} with other components.
 */
export interface DeviceCommissionerContext {
    fabrics: FabricManager;
    sessions: SessionManager;
    advertiser: DeviceAdvertiser;
    secureChannelProtocol: SecureChannelProtocol;
    commissioningConfig: CommissioningConfigProvider;
}
/**
 * Implements commissioning for devices.
 *
 * Note this implements commissioning for a *local* device; use {@link ControllerCommissioner} to commission a *remote*
 * device.
 */
export declare class DeviceCommissioner {
    #private;
    constructor(context: DeviceCommissionerContext);
    static [Environmental.create](env: Environment): DeviceCommissioner;
    get failsafeContext(): FailsafeContext;
    allowEnhancedCommissioning(discriminator: number, paseServer: PaseServer, commissioningEndCallback: () => MaybePromise): Promise<void>;
    allowBasicCommissioning(commissioningEndCallback?: () => MaybePromise): Promise<void>;
    beginTimed(failsafeContext: FailsafeContext): void;
    get isFailsafeArmed(): boolean;
    assertFailsafeArmed(message?: string): void;
    endCommissioning(): Promise<void>;
    close(): Promise<void>;
}
//# sourceMappingURL=DeviceCommissioner.d.ts.map