/**
 * DoorControl ver10 module
 * @author Andrew D.Laptev <a.d.laptev@gmail.com>
 * @see https://www.onvif.org/ver10/pacs/doorcontrol.wsdl
 */
import { Onvif } from './onvif';
import Service from './service';
import { AccessDoor, BlockDoor, Capabilities, CreateDoor, CreateDoorResponse, DeleteDoor, DoorState, DoubleLockDoor, GetDoorInfo, GetDoorInfoList, GetDoorInfoListResponse, GetDoorInfoResponse, GetDoorList, GetDoorListResponse, GetDoors, GetDoorsResponse, GetDoorState, LockDoor, LockDownDoor, LockDownReleaseDoor, LockOpenDoor, LockOpenReleaseDoor, ModifyDoor, SetDoor, UnlockDoor } from './interfaces/doorcontrol';
/**
 * DoorControl service
 * @example
 * ```ts
 *  const doorsList = await cam.doorControl.getDoorList();
 *  const token = doorsList.door![0].token;
 *  console.log((await cam.doorControl.getDoorState({ token })).doorMode);
 *  await cam.doorControl.unlockDoor({ token });
 *  console.log((await cam.doorControl.getDoorState({ token })).doorMode);
 * ```
 */
export default class DoorControl extends Service {
    constructor(onvif: Onvif);
    private static tokensToBuild;
    private static doorCapabilitiesToBuild;
    private static timingsToBuild;
    private static doorInfoToBuild;
    private static doorToBuild;
    /**
     * Returns the capabilities of the door control service.
     */
    getServiceCapabilities(): Promise<Capabilities>;
    /**
     * Returns a list of door info items.
     * @param options
     */
    getDoorInfoList(options?: GetDoorInfoList): Promise<GetDoorInfoListResponse>;
    /**
     * Returns door info items for the requested tokens.
     * @param options
     */
    getDoorInfo({ token }: GetDoorInfo): Promise<GetDoorInfoResponse>;
    /**
     * Returns a list of door items.
     * @param options
     */
    getDoorList(options?: GetDoorList): Promise<GetDoorListResponse>;
    /**
     * Returns door items for the requested tokens.
     * @param options
     */
    getDoors({ token }: GetDoors): Promise<GetDoorsResponse>;
    /**
     * Creates a new door.
     * @param options
     */
    createDoor({ door }: CreateDoor): Promise<CreateDoorResponse['token']>;
    /**
     * Creates or replaces a door (requires ClientSuppliedTokenSupported).
     * @param options
     */
    setDoor({ door }: SetDoor): Promise<void>;
    /**
     * Modifies an existing door.
     * @param options
     */
    modifyDoor({ door }: ModifyDoor): Promise<void>;
    /**
     * Deletes a door.
     * @param options
     */
    deleteDoor({ token }: DeleteDoor): Promise<void>;
    /**
     * Returns the current state of a door.
     * @param options
     */
    getDoorState({ token }: GetDoorState): Promise<DoorState>;
    /**
     * Grants momentary access to a door.
     * @param options
     */
    accessDoor(options: AccessDoor): Promise<void>;
    /**
     * Locks a door.
     * @param options
     */
    lockDoor({ token }: LockDoor): Promise<void>;
    /**
     * Unlocks a door.
     * @param options
     */
    unlockDoor({ token }: UnlockDoor): Promise<void>;
    /**
     * Blocks a door.
     * @param options
     */
    blockDoor({ token }: BlockDoor): Promise<void>;
    /**
     * Puts a door in lock-down mode.
     * @param options
     */
    lockDownDoor({ token }: LockDownDoor): Promise<void>;
    /**
     * Releases lock-down mode on a door.
     * @param options
     */
    lockDownReleaseDoor({ token }: LockDownReleaseDoor): Promise<void>;
    /**
     * Puts a door in lock-open mode.
     * @param options
     */
    lockOpenDoor({ token }: LockOpenDoor): Promise<void>;
    /**
     * Releases lock-open mode on a door.
     * @param options
     */
    lockOpenReleaseDoor({ token }: LockOpenReleaseDoor): Promise<void>;
    /**
     * Activates double-lock on a door.
     * @param options
     */
    doubleLockDoor({ token }: DoubleLockDoor): Promise<void>;
}
