import { IncomingCommandEndpointBase } from "../incoming_message.js";
import { BufferObject } from "../../common.js";
import { EndpointAccessControlCommand } from "./command.js";
export interface EndpointSetUserOptions {
    active?: boolean;
    userType?: number;
    userName?: string;
    credentialRule?: number;
    expiringTimeoutMinutes?: number;
}
export interface IncomingCommandEndpointAccessControlIsSupported extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.isSupported;
}
export interface IncomingCommandEndpointAccessControlGetUserCapabilitiesCached extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.getUserCapabilitiesCached;
}
export interface IncomingCommandEndpointAccessControlGetCredentialCapabilitiesCached extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.getCredentialCapabilitiesCached;
}
export interface IncomingCommandEndpointAccessControlGetUser extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.getUser;
    userId: number;
}
export interface IncomingCommandEndpointAccessControlGetUserCached extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.getUserCached;
    userId: number;
}
export interface IncomingCommandEndpointAccessControlGetUsers extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.getUsers;
}
export interface IncomingCommandEndpointAccessControlGetUsersCached extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.getUsersCached;
}
export interface IncomingCommandEndpointAccessControlSetUser extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.setUser;
    userId: number;
    options: EndpointSetUserOptions;
}
export interface EndpointAddUserCredential {
    credentialType: number;
    credentialSlot: number;
    data: string | BufferObject;
}
export interface IncomingCommandEndpointAccessControlAddUser extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.addUser;
    userId: number;
    options: EndpointSetUserOptions;
    credential?: EndpointAddUserCredential;
}
export interface IncomingCommandEndpointAccessControlDeleteUser extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.deleteUser;
    userId: number;
}
export interface IncomingCommandEndpointAccessControlDeleteAllUsers extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.deleteAllUsers;
}
export interface IncomingCommandEndpointAccessControlGetCredential extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.getCredential;
    credentialType: number;
    credentialSlot: number;
}
export interface IncomingCommandEndpointAccessControlGetCredentialCached extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.getCredentialCached;
    credentialType: number;
    credentialSlot: number;
}
export interface IncomingCommandEndpointAccessControlGetCredentials extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.getCredentials;
    userId: number;
}
export interface IncomingCommandEndpointAccessControlGetCredentialsCached extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.getCredentialsCached;
    userId: number;
}
export interface IncomingCommandEndpointAccessControlGetCredentialsByType extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.getCredentialsByType;
    credentialType: number;
}
export interface IncomingCommandEndpointAccessControlGetCredentialsByTypeCached extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.getCredentialsByTypeCached;
    credentialType: number;
}
export interface IncomingCommandEndpointAccessControlGetAllCredentials extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.getAllCredentials;
}
export interface IncomingCommandEndpointAccessControlGetAllCredentialsCached extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.getAllCredentialsCached;
}
export interface IncomingCommandEndpointAccessControlAssignCredential extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.assignCredential;
    credentialType: number;
    credentialSlot: number;
    destinationUserId: number;
}
export interface IncomingCommandEndpointAccessControlSetCredential extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.setCredential;
    userId: number;
    credentialType: number;
    credentialSlot: number;
    data: string | BufferObject;
}
export interface IncomingCommandEndpointAccessControlDeleteCredential extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.deleteCredential;
    userId: number;
    credentialType: number;
    credentialSlot: number;
}
export interface IncomingCommandEndpointAccessControlStartCredentialLearn extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.startCredentialLearn;
    userId: number;
    credentialType: number;
    credentialSlot: number;
    timeout?: number;
}
export interface IncomingCommandEndpointAccessControlCancelCredentialLearn extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.cancelCredentialLearn;
}
export interface IncomingCommandEndpointAccessControlGetAdminCode extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.getAdminCode;
}
export interface IncomingCommandEndpointAccessControlSetAdminCode extends IncomingCommandEndpointBase {
    command: EndpointAccessControlCommand.setAdminCode;
    code: string;
}
export type IncomingMessageEndpointAccessControl = IncomingCommandEndpointAccessControlIsSupported | IncomingCommandEndpointAccessControlGetUserCapabilitiesCached | IncomingCommandEndpointAccessControlGetCredentialCapabilitiesCached | IncomingCommandEndpointAccessControlGetUser | IncomingCommandEndpointAccessControlGetUserCached | IncomingCommandEndpointAccessControlGetUsers | IncomingCommandEndpointAccessControlGetUsersCached | IncomingCommandEndpointAccessControlSetUser | IncomingCommandEndpointAccessControlAddUser | IncomingCommandEndpointAccessControlDeleteUser | IncomingCommandEndpointAccessControlDeleteAllUsers | IncomingCommandEndpointAccessControlGetCredential | IncomingCommandEndpointAccessControlGetCredentialCached | IncomingCommandEndpointAccessControlGetCredentials | IncomingCommandEndpointAccessControlGetCredentialsCached | IncomingCommandEndpointAccessControlGetCredentialsByType | IncomingCommandEndpointAccessControlGetCredentialsByTypeCached | IncomingCommandEndpointAccessControlGetAllCredentials | IncomingCommandEndpointAccessControlGetAllCredentialsCached | IncomingCommandEndpointAccessControlAssignCredential | IncomingCommandEndpointAccessControlSetCredential | IncomingCommandEndpointAccessControlDeleteCredential | IncomingCommandEndpointAccessControlStartCredentialLearn | IncomingCommandEndpointAccessControlCancelCredentialLearn | IncomingCommandEndpointAccessControlGetAdminCode | IncomingCommandEndpointAccessControlSetAdminCode;
