import { type EndpointId, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, type SupervisionResult, type WithAddress } from "@zwave-js/core";
import { Bytes } from "@zwave-js/shared";
import { PhysicalCCAPI } from "../lib/API.js";
import { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, type RefreshValuesContext } from "../lib/CommandClass.js";
import { UserCredentialAdminCodeOperationResult, type UserCredentialCapability, UserCredentialCommand, UserCredentialCredentialReportType, type UserCredentialKeyLockerEntryCapability, UserCredentialKeyLockerEntryType, UserCredentialLearnStatus, UserCredentialModifierType, UserCredentialNameEncoding, UserCredentialOperationType, UserCredentialRule, UserCredentialType, UserCredentialUserReportType, UserCredentialUserType } from "../lib/_Types.js";
export type { UserCredentialCapability as UserCredentialCredentialCapability } from "../lib/_Types.js";
import type { CCEncodingContext, CCParsingContext } from "../lib/traits.js";
/**
 * Returns the canonical form of a credential for storage and reporting:
 * text credentials (PIN codes, passwords) are returned as strings, binary
 * credentials (biometric data, BLE/NFC/RFID identifiers, ...) as raw bytes.
 */
export declare function normalizeCredentialData(credentialType: UserCredentialType, credentialData: Bytes): string | Bytes;
import { UserCredentialCCValues } from "./_CCValues.generated.js";
export { UserCredentialCCValues };
export declare class UserCredentialCCAPI extends PhysicalCCAPI {
    supportsCommand(cmd: UserCredentialCommand): MaybeNotKnown<boolean>;
    getUserCapabilities(): Promise<Pick<UserCredentialCCUserCapabilitiesReport, "maxUserNameLength" | "numberOfSupportedUsers" | "supportedCredentialRules" | "supportedUserNameEncodings" | "supportedUserTypes" | "supportsAllUsersChecksum" | "supportsUserChecksum" | "supportsUserSchedule"> | undefined>;
    getCredentialCapabilities(): Promise<Pick<UserCredentialCCCredentialCapabilitiesReport, "credentialTypes" | "supportsAdminCode" | "supportsAdminCodeDeactivation" | "supportsCredentialChecksum"> | undefined>;
    getKeyLockerCapabilities(): Promise<Map<UserCredentialKeyLockerEntryType, UserCredentialKeyLockerEntryCapability> | undefined>;
    /**
     * Applications should not use this method directly. Prefer the
     * `endpoint.accessControl` API for managing users.
     */
    setUser(options: UserCredentialCCUserSetOptions): Promise<UserCredentialCCUserReport | undefined>;
    /**
     * Applications should not use this method directly. Prefer the
     * `endpoint.accessControl` API for querying users.
     */
    getUser(userId: number): Promise<UserCredentialCCUserReport | undefined>;
    /**
     * Applications should not use this method directly. Prefer the
     * `endpoint.accessControl` API for managing credentials.
     */
    setCredential(options: UserCredentialCCCredentialSetOptions): Promise<UserCredentialCCCredentialReport | undefined>;
    /**
     * Applications should not use this method directly. Prefer the
     * `endpoint.accessControl` API for querying credentials.
     */
    getCredential(userId: number, credentialType: UserCredentialType, credentialSlot: number): Promise<UserCredentialCCCredentialReport | undefined>;
    startCredentialLearn(options: UserCredentialCCCredentialLearnStartOptions): Promise<SupervisionResult | undefined>;
    cancelCredentialLearn(): Promise<SupervisionResult | undefined>;
    /**
     * Applications should not use this method directly. Prefer the
     * `endpoint.accessControl` API for reassigning credentials between users.
     */
    setUserCredentialAssociation(options: UserCredentialCCAssociationSetOptions): Promise<UserCredentialCCAssociationReport | undefined>;
    getAllUsersChecksum(): Promise<number | undefined>;
    getUserChecksum(userId: number): Promise<number | undefined>;
    getCredentialChecksum(credentialType: UserCredentialType): Promise<number | undefined>;
    setAdminPinCode(options: UserCredentialCCAdminPinCodeSetOptions): Promise<SupervisionResult | undefined>;
    getAdminPinCode(): Promise<string | undefined>;
    setKeyLockerEntry(options: UserCredentialCCKeyLockerEntrySetOptions): Promise<SupervisionResult | undefined>;
    getKeyLockerEntry(entryType: UserCredentialKeyLockerEntryType, entrySlot: number): Promise<Pick<UserCredentialCCKeyLockerEntryReport, "entrySlot" | "entryType" | "occupied"> | undefined>;
    sendUserCapabilitiesReport(options: UserCredentialCCUserCapabilitiesReportOptions): Promise<SupervisionResult | undefined>;
    sendCredentialCapabilitiesReport(options: UserCredentialCCCredentialCapabilitiesReportOptions): Promise<SupervisionResult | undefined>;
    sendKeyLockerCapabilitiesReport(options: UserCredentialCCKeyLockerCapabilitiesReportOptions): Promise<SupervisionResult | undefined>;
    sendUserReport(options: UserCredentialCCUserReportOptions): Promise<SupervisionResult | undefined>;
    sendCredentialReport(options: UserCredentialCCCredentialReportOptions): Promise<SupervisionResult | undefined>;
    sendCredentialLearnReport(options: UserCredentialCCCredentialLearnReportOptions): Promise<SupervisionResult | undefined>;
    sendUserCredentialAssociationReport(options: UserCredentialCCAssociationReportOptions): Promise<SupervisionResult | undefined>;
    sendAllUsersChecksumReport(options: UserCredentialCCAllUsersChecksumReportOptions): Promise<SupervisionResult | undefined>;
    sendUserChecksumReport(options: UserCredentialCCUserChecksumReportOptions): Promise<SupervisionResult | undefined>;
    sendCredentialChecksumReport(options: UserCredentialCCCredentialChecksumReportOptions): Promise<SupervisionResult | undefined>;
    sendAdminPinCodeReport(options: UserCredentialCCAdminPinCodeReportOptions): Promise<SupervisionResult | undefined>;
    sendKeyLockerEntryReport(options: UserCredentialCCKeyLockerEntryReportOptions): Promise<SupervisionResult | undefined>;
}
export declare class UserCredentialCC extends CommandClass {
    ccCommand: UserCredentialCommand;
    interview(ctx: InterviewContext): Promise<void>;
    refreshValues(ctx: RefreshValuesContext): Promise<void>;
    private purgeUserFromCache;
    private queryCredentialsForUser;
    static getSupportedUsersCached(ctx: GetValueDB, endpoint: EndpointId): MaybeNotKnown<number>;
    static getSupportedCredentialTypesCached(ctx: GetValueDB, endpoint: EndpointId): MaybeNotKnown<UserCredentialType[]>;
    static getCredentialCapabilitiesCached(ctx: GetValueDB, endpoint: EndpointId, credentialType: UserCredentialType): MaybeNotKnown<UserCredentialCapability>;
    static supportsAdminCodeCached(ctx: GetValueDB, endpoint: EndpointId): boolean;
}
export interface UserCredentialCCUserCapabilitiesReportOptions {
    numberOfSupportedUsers: number;
    supportedCredentialRules: UserCredentialRule[];
    maxUserNameLength: number;
    supportsUserSchedule: boolean;
    supportsAllUsersChecksum: boolean;
    supportsUserChecksum: boolean;
    supportedUserNameEncodings: UserCredentialNameEncoding[];
    supportedUserTypes: UserCredentialUserType[];
}
export declare class UserCredentialCCUserCapabilitiesReport extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCUserCapabilitiesReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCUserCapabilitiesReport;
    readonly numberOfSupportedUsers: number;
    readonly supportedCredentialRules: UserCredentialRule[];
    readonly maxUserNameLength: number;
    readonly supportsUserSchedule: boolean;
    readonly supportsAllUsersChecksum: boolean;
    readonly supportsUserChecksum: boolean;
    readonly supportedUserNameEncodings: UserCredentialNameEncoding[];
    readonly supportedUserTypes: UserCredentialUserType[];
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export declare class UserCredentialCCUserCapabilitiesGet extends UserCredentialCC {
}
export interface UserCredentialCCCredentialCapabilitiesReportOptions {
    supportsCredentialChecksum: boolean;
    supportsAdminCode: boolean;
    supportsAdminCodeDeactivation: boolean;
    credentialTypes: Map<UserCredentialType, UserCredentialCapability>;
}
export declare class UserCredentialCCCredentialCapabilitiesReport extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCCredentialCapabilitiesReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCCredentialCapabilitiesReport;
    readonly supportsCredentialChecksum: boolean;
    readonly supportsAdminCode: boolean;
    readonly supportsAdminCodeDeactivation: boolean;
    readonly credentialTypes: Map<UserCredentialType, UserCredentialCapability>;
    persistValues(ctx: PersistValuesContext): boolean;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export declare class UserCredentialCCCredentialCapabilitiesGet extends UserCredentialCC {
}
export interface UserCredentialCCKeyLockerCapabilitiesReportOptions {
    keyLockerCapabilities: Map<UserCredentialKeyLockerEntryType, UserCredentialKeyLockerEntryCapability>;
}
export declare class UserCredentialCCKeyLockerCapabilitiesReport extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCKeyLockerCapabilitiesReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCKeyLockerCapabilitiesReport;
    readonly keyLockerCapabilities: Map<UserCredentialKeyLockerEntryType, UserCredentialKeyLockerEntryCapability>;
    persistValues(ctx: PersistValuesContext): boolean;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export declare class UserCredentialCCKeyLockerCapabilitiesGet extends UserCredentialCC {
}
export type UserCredentialCCUserSetOptions = {
    userId: number;
} & (({
    operationType: UserCredentialOperationType.Add | UserCredentialOperationType.Modify;
    active?: boolean;
    credentialRule?: UserCredentialRule;
    nameEncoding?: UserCredentialNameEncoding;
    userName?: string;
} & ({
    userType: UserCredentialUserType.Expiring;
    expiringTimeoutMinutes: number;
} | {
    userType?: Exclude<UserCredentialUserType, UserCredentialUserType.Expiring>;
    expiringTimeoutMinutes?: undefined;
})) | {
    operationType: UserCredentialOperationType.Delete;
    userType?: undefined;
    active?: undefined;
    credentialRule?: undefined;
    expiringTimeoutMinutes?: undefined;
    nameEncoding?: undefined;
    userName?: undefined;
});
export declare class UserCredentialCCUserSet extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCUserSetOptions>);
    operationType: UserCredentialOperationType;
    userId: number;
    userType: UserCredentialUserType | undefined;
    active: boolean | undefined;
    credentialRule: UserCredentialRule | undefined;
    expiringTimeoutMinutes: number | undefined;
    nameEncoding: UserCredentialNameEncoding | undefined;
    userName: string | undefined;
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCUserSet;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export type UserCredentialCCUserReportOptions = {
    modifierType: UserCredentialModifierType;
    modifierNodeId: number;
    userId: number;
    userType: UserCredentialUserType;
    active: boolean;
    credentialRule: UserCredentialRule;
    expiringTimeoutMinutes: number;
    nameEncoding: UserCredentialNameEncoding;
    userName: string;
} & ({
    reportType: UserCredentialUserReportType.ResponseToGet;
    nextUserId: number;
} | {
    reportType: Exclude<UserCredentialUserReportType, UserCredentialUserReportType.ResponseToGet>;
    nextUserId?: undefined;
});
export declare class UserCredentialCCUserReport extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCUserReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCUserReport;
    readonly reportType: UserCredentialUserReportType;
    readonly nextUserId?: number;
    readonly modifierType: UserCredentialModifierType;
    readonly modifierNodeId: number;
    readonly userId: number;
    readonly userType: UserCredentialUserType;
    readonly active: boolean;
    readonly credentialRule: UserCredentialRule;
    readonly expiringTimeoutMinutes: number;
    readonly nameEncoding: UserCredentialNameEncoding;
    readonly userName: string;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    persistValues(ctx: PersistValuesContext): boolean;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface UserCredentialCCUserGetOptions {
    userId: number;
}
export declare class UserCredentialCCUserGet extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCUserGetOptions>);
    userId: number;
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCUserGet;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export type UserCredentialCCCredentialSetOptions = {
    userId: number;
    credentialType: UserCredentialType;
    credentialSlot: number;
} & ({
    operationType: UserCredentialOperationType.Add | UserCredentialOperationType.Modify;
    credentialData: Bytes;
} | {
    operationType: UserCredentialOperationType.Delete;
    credentialData?: undefined;
});
export declare class UserCredentialCCCredentialSet extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCCredentialSetOptions>);
    userId: number;
    credentialType: UserCredentialType;
    credentialSlot: number;
    operationType: UserCredentialOperationType;
    credentialData: Bytes | undefined;
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCCredentialSet;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export type UserCredentialCCCredentialReportOptions = {
    userId: number;
    credentialType: UserCredentialType;
    credentialSlot: number;
    modifierType: UserCredentialModifierType;
    modifierNodeId: number;
} & ({
    credentialReadBack: true;
    credentialData: Bytes;
} | {
    credentialReadBack: false;
    credentialData?: undefined;
}) & ({
    reportType: UserCredentialCredentialReportType.ResponseToGet;
    nextCredentialType: UserCredentialType;
    nextCredentialSlot: number;
} | {
    reportType: Exclude<UserCredentialCredentialReportType, UserCredentialCredentialReportType.ResponseToGet>;
    nextCredentialType?: undefined;
    nextCredentialSlot?: undefined;
});
export declare class UserCredentialCCCredentialReport extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCCredentialReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCCredentialReport;
    readonly reportType: UserCredentialCredentialReportType;
    readonly userId: number;
    readonly credentialType: UserCredentialType;
    readonly credentialSlot: number;
    readonly credentialReadBack: boolean;
    readonly credentialData?: Bytes;
    readonly modifierType: UserCredentialModifierType;
    readonly modifierNodeId: number;
    readonly nextCredentialType?: UserCredentialType;
    readonly nextCredentialSlot?: number;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    persistValues(ctx: PersistValuesContext): boolean;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface UserCredentialCCCredentialGetOptions {
    userId: number;
    credentialType: UserCredentialType;
    credentialSlot: number;
}
export declare class UserCredentialCCCredentialGet extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCCredentialGetOptions>);
    userId: number;
    credentialType: UserCredentialType;
    credentialSlot: number;
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCCredentialGet;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface UserCredentialCCCredentialLearnStartOptions {
    userId: number;
    credentialType: UserCredentialType;
    credentialSlot: number;
    operationType: UserCredentialOperationType;
    learnTimeout: number;
}
export declare class UserCredentialCCCredentialLearnStart extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCCredentialLearnStartOptions>);
    userId: number;
    credentialType: UserCredentialType;
    credentialSlot: number;
    operationType: UserCredentialOperationType;
    learnTimeout: number;
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCCredentialLearnStart;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export declare class UserCredentialCCCredentialLearnCancel extends UserCredentialCC {
}
export interface UserCredentialCCCredentialLearnReportOptions {
    learnStatus: UserCredentialLearnStatus;
    userId: number;
    credentialType: UserCredentialType;
    credentialSlot: number;
    stepsRemaining: number;
}
export declare class UserCredentialCCCredentialLearnReport extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCCredentialLearnReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCCredentialLearnReport;
    readonly learnStatus: UserCredentialLearnStatus;
    readonly userId: number;
    readonly credentialType: UserCredentialType;
    readonly credentialSlot: number;
    readonly stepsRemaining: number;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface UserCredentialCCAssociationReportOptions {
    credentialType: UserCredentialType;
    credentialSlot: number;
    destinationUserId: number;
    status: number;
}
export declare class UserCredentialCCAssociationReport extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCAssociationReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCAssociationReport;
    readonly credentialType: UserCredentialType;
    readonly credentialSlot: number;
    readonly destinationUserId: number;
    readonly status: number;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    persistValues(ctx: PersistValuesContext): boolean;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface UserCredentialCCAssociationSetOptions {
    credentialType: UserCredentialType;
    credentialSlot: number;
    destinationUserId: number;
}
export declare class UserCredentialCCAssociationSet extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCAssociationSetOptions>);
    credentialType: UserCredentialType;
    credentialSlot: number;
    destinationUserId: number;
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCAssociationSet;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface UserCredentialCCAllUsersChecksumReportOptions {
    checksum: number;
}
export declare class UserCredentialCCAllUsersChecksumReport extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCAllUsersChecksumReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCAllUsersChecksumReport;
    readonly checksum: number;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export declare class UserCredentialCCAllUsersChecksumGet extends UserCredentialCC {
}
export interface UserCredentialCCUserChecksumReportOptions {
    userId: number;
    checksum: number;
}
export declare class UserCredentialCCUserChecksumReport extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCUserChecksumReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCUserChecksumReport;
    readonly userId: number;
    readonly checksum: number;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface UserCredentialCCUserChecksumGetOptions {
    userId: number;
}
export declare class UserCredentialCCUserChecksumGet extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCUserChecksumGetOptions>);
    userId: number;
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCUserChecksumGet;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface UserCredentialCCCredentialChecksumReportOptions {
    credentialType: UserCredentialType;
    checksum: number;
}
export declare class UserCredentialCCCredentialChecksumReport extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCCredentialChecksumReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCCredentialChecksumReport;
    readonly credentialType: UserCredentialType;
    readonly checksum: number;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface UserCredentialCCCredentialChecksumGetOptions {
    credentialType: UserCredentialType;
}
export declare class UserCredentialCCCredentialChecksumGet extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCCredentialChecksumGetOptions>);
    credentialType: UserCredentialType;
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCCredentialChecksumGet;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface UserCredentialCCAdminPinCodeSetOptions {
    pinCode: string;
}
export declare class UserCredentialCCAdminPinCodeSet extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCAdminPinCodeSetOptions>);
    pinCode: string;
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCAdminPinCodeSet;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface UserCredentialCCAdminPinCodeReportOptions {
    operationResult: UserCredentialAdminCodeOperationResult;
    pinCode: string;
}
export declare class UserCredentialCCAdminPinCodeReport extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCAdminPinCodeReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCAdminPinCodeReport;
    readonly operationResult: UserCredentialAdminCodeOperationResult;
    readonly pinCode: string;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    persistValues(ctx: PersistValuesContext): boolean;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export declare class UserCredentialCCAdminPinCodeGet extends UserCredentialCC {
}
export type UserCredentialCCKeyLockerEntrySetOptions = {
    entryType: UserCredentialKeyLockerEntryType;
    entrySlot: number;
} & ({
    operationType: UserCredentialOperationType.Add | UserCredentialOperationType.Modify;
    entryData: Bytes;
} | {
    operationType: UserCredentialOperationType.Delete;
    entryData?: undefined;
});
export declare class UserCredentialCCKeyLockerEntrySet extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCKeyLockerEntrySetOptions>);
    entryType: UserCredentialKeyLockerEntryType;
    entrySlot: number;
    operationType: UserCredentialOperationType;
    entryData: Bytes | undefined;
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCKeyLockerEntrySet;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface UserCredentialCCKeyLockerEntryReportOptions {
    occupied: boolean;
    entryType: UserCredentialKeyLockerEntryType;
    entrySlot: number;
}
export declare class UserCredentialCCKeyLockerEntryReport extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCKeyLockerEntryReportOptions>);
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCKeyLockerEntryReport;
    readonly occupied: boolean;
    readonly entryType: UserCredentialKeyLockerEntryType;
    readonly entrySlot: number;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    persistValues(ctx: PersistValuesContext): boolean;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
export interface UserCredentialCCKeyLockerEntryGetOptions {
    entryType: UserCredentialKeyLockerEntryType;
    entrySlot: number;
}
export declare class UserCredentialCCKeyLockerEntryGet extends UserCredentialCC {
    constructor(options: WithAddress<UserCredentialCCKeyLockerEntryGetOptions>);
    entryType: UserCredentialKeyLockerEntryType;
    entrySlot: number;
    static from(raw: CCRaw, ctx: CCParsingContext): UserCredentialCCKeyLockerEntryGet;
    serialize(ctx: CCEncodingContext): Promise<Bytes>;
    toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
}
//# sourceMappingURL=UserCredentialCC.d.ts.map