/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { Bytes, type Cipher, MaybePromise, Timer } from "@matter/general";
import { DoorLock } from "@matter/types/clusters/door-lock";
import { LockAuth } from "./LockAuth.js";
import { LockSchedule } from "./LockSchedule.js";
declare const DoorLockBaseServerClass: import("../../index.js").ClusterBehavior.Type<import("./DoorLockBehavior.js").DoorLockBehaviorConstructor, import("@matter/types").ClusterType.WithSupportedFeatures<DoorLock, {
    aliroBleuwb: false;
    aliroProvisioning: false;
    credentialOverTheAirAccess: true;
    doorPositionSensor: true;
    faceCredentials: true;
    fingerCredentials: true;
    holidaySchedules: true;
    pinCredential: true;
    rfidCredential: true;
    unbolting: true;
    user: true;
    weekDayAccessSchedules: true;
    yearDayAccessSchedules: true;
}>, import("@matter/types").ClusterType.Concrete, new () => {}, "doorLock">;
/**
 * Full DoorLock server implementation covering all features including User and schedules.
 *
 * The server stores users, credentials, and schedules in nonvolatile extension fields on the State class. Credential
 * data is encrypted at rest with AES-128-CCM by default. Override {@link cipher} for custom encryption (e.g. HSM) or
 * {@link auth} to replace the entire storage backend.
 */
export declare class DoorLockBaseServer extends DoorLockBaseServerClass {
    #private;
    readonly state: DoorLockBaseServer.State;
    readonly internal: DoorLockBaseServer.Internal;
    initialize(): MaybePromise;
    [Symbol.asyncDispose](): MaybePromise;
    lockDoor(request: DoorLock.LockDoorRequest): MaybePromise;
    unlockDoor(request: DoorLock.UnlockDoorRequest): MaybePromise;
    unlockWithTimeout(request: DoorLock.UnlockWithTimeoutRequest): MaybePromise;
    unboltDoor(request: DoorLock.UnboltDoorRequest): MaybePromise;
    /**
     * The cipher used for credential encryption. Override to integrate with an HSM or other secure storage.
     */
    get cipher(): Cipher;
    /**
     * The credential/user store with integrated encryption. Override to replace the entire storage backend.
     */
    get auth(): LockAuth.Store;
    setUser(request: DoorLock.SetUserRequest): MaybePromise;
    getUser(request: DoorLock.GetUserRequest): DoorLock.GetUserResponse;
    clearUser(request: DoorLock.ClearUserRequest): MaybePromise;
    setCredential(request: DoorLock.SetCredentialRequest): DoorLock.SetCredentialResponse;
    getCredentialStatus(request: DoorLock.GetCredentialStatusRequest): DoorLock.GetCredentialStatusResponse;
    clearCredential(request: DoorLock.ClearCredentialRequest): MaybePromise;
    setWeekDaySchedule(request: DoorLock.SetWeekDayScheduleRequest): MaybePromise;
    getWeekDaySchedule(request: DoorLock.GetWeekDayScheduleRequest): DoorLock.GetWeekDayScheduleResponse;
    clearWeekDaySchedule(request: DoorLock.ClearWeekDayScheduleRequest): MaybePromise;
    setYearDaySchedule(request: DoorLock.SetYearDayScheduleRequest): MaybePromise;
    getYearDaySchedule(request: DoorLock.GetYearDayScheduleRequest): DoorLock.GetYearDayScheduleResponse;
    clearYearDaySchedule(request: DoorLock.ClearYearDayScheduleRequest): MaybePromise;
    setHolidaySchedule(request: DoorLock.SetHolidayScheduleRequest): MaybePromise;
    getHolidaySchedule(request: DoorLock.GetHolidayScheduleRequest): DoorLock.GetHolidayScheduleResponse;
    clearHolidaySchedule(request: DoorLock.ClearHolidayScheduleRequest): MaybePromise;
}
export declare namespace DoorLockBaseServer {
    class State extends DoorLockBaseServerClass.State {
        /**
         * Internal user database.
         */
        users: LockAuth.User[];
        /**
         * Internal credential store.
         */
        credentials: LockAuth.Credential[];
        /**
         * Internal week day schedule store.
         */
        weekDaySchedules: LockSchedule.WeekDay[];
        /**
         * Internal year day schedule store.
         */
        yearDaySchedules: LockSchedule.YearDay[];
        /**
         * Internal holiday schedule store.
         */
        holidaySchedules: LockSchedule.Holiday[];
        /**
         * AES-128-CCM key for credential encryption. Auto-generated on first use.
         */
        credentialKey?: Bytes;
    }
    class Internal {
        wrongCodeCount: number;
        autoRelockTimer?: Timer;
    }
}
declare const DoorLockServer_base: import("../../index.js").ClusterBehavior.Type<typeof DoorLockBaseServer, DoorLock, typeof DoorLock, typeof DoorLockBaseServer.Internal, "doorLock"> & {
    readonly id: "doorLock";
};
/**
 * Default DoorLock server with no features enabled. Use `.with()` to enable features.
 */
export declare class DoorLockServer extends DoorLockServer_base {
}
export {};
//# sourceMappingURL=DoorLockServer.d.ts.map