/**
 * AccessControl ver10 module
 * @author Andrew D.Laptev <a.d.laptev@gmail.com>
 * @see https://www.onvif.org/ver10/accesscontrol/wsdl/accesscontrol.wsdl
 */
import { Onvif } from './onvif';
import Service from './service';
import { AccessPointState, Capabilities, CreateAccessPoint, CreateAccessPointResponse, CreateArea, CreateAreaResponse, DeleteAccessPoint, DeleteAccessPointAuthenticationProfile, DeleteArea, DisableAccessPoint, EnableAccessPoint, ExternalAuthorization, Feedback, GetAccessPointInfo, GetAccessPointInfoList, GetAccessPointInfoListResponse, GetAccessPointInfoResponse, GetAccessPointList, GetAccessPointListResponse, GetAccessPoints, GetAccessPointsResponse, GetAccessPointState, GetAreaInfo, GetAreaInfoList, GetAreaInfoListResponse, GetAreaInfoResponse, GetAreaList, GetAreaListResponse, GetAreas, GetAreasResponse, ModifyAccessPoint, ModifyArea, SetAccessPoint, SetAccessPointAuthenticationProfile, SetArea } from './interfaces/accesscontrol';
/**
 * AccessControl service
 * @example
 * ```ts
 *  const list = await cam.accessControl.getAccessPointInfoList();
 *  const token = list.accessPointInfo![0].token;
 *  console.log((await cam.accessControl.getAccessPointState({ token })).enabled);
 *  await cam.accessControl.disableAccessPoint({ token });
 * ```
 */
export default class AccessControl extends Service {
    constructor(onvif: Onvif);
    private static accessPointCapabilitiesToBuild;
    private static accessPointInfoToBuild;
    private static accessPointToBuild;
    private static areaInfoToBuild;
    private static areaToBuild;
    /**
     * Returns the capabilities of the access control service.
     */
    getServiceCapabilities(): Promise<Capabilities>;
    /**
     * Returns a list of access point info items.
     * @param options
     */
    getAccessPointInfoList(options?: GetAccessPointInfoList): Promise<GetAccessPointInfoListResponse>;
    /**
     * Returns access point info items for the requested tokens.
     * @param options
     */
    getAccessPointInfo({ token }: GetAccessPointInfo): Promise<GetAccessPointInfoResponse>;
    /**
     * Returns a list of access point items.
     * @param options
     */
    getAccessPointList(options?: GetAccessPointList): Promise<GetAccessPointListResponse>;
    /**
     * Returns access point items for the requested tokens.
     * @param options
     */
    getAccessPoints({ token }: GetAccessPoints): Promise<GetAccessPointsResponse>;
    /**
     * Creates a new access point.
     * @param options
     */
    createAccessPoint({ accessPoint }: CreateAccessPoint): Promise<CreateAccessPointResponse['token']>;
    /**
     * Creates or replaces an access point (requires ClientSuppliedTokenSupported).
     * @param options
     */
    setAccessPoint({ accessPoint }: SetAccessPoint): Promise<void>;
    /**
     * Modifies an existing access point.
     * @param options
     */
    modifyAccessPoint({ accessPoint }: ModifyAccessPoint): Promise<void>;
    /**
     * Deletes an access point.
     * @param options
     */
    deleteAccessPoint({ token }: DeleteAccessPoint): Promise<void>;
    /**
     * Sets the authentication profile of an access point.
     * @param options
     */
    setAccessPointAuthenticationProfile({ token, authenticationProfileToken, }: SetAccessPointAuthenticationProfile): Promise<void>;
    /**
     * Deletes the authentication profile reference from an access point.
     * @param options
     */
    deleteAccessPointAuthenticationProfile({ token }: DeleteAccessPointAuthenticationProfile): Promise<void>;
    /**
     * Returns a list of area info items.
     * @param options
     */
    getAreaInfoList(options?: GetAreaInfoList): Promise<GetAreaInfoListResponse>;
    /**
     * Returns area info items for the requested tokens.
     * @param options
     */
    getAreaInfo({ token }: GetAreaInfo): Promise<GetAreaInfoResponse>;
    /**
     * Returns a list of area items.
     * @param options
     */
    getAreaList(options?: GetAreaList): Promise<GetAreaListResponse>;
    /**
     * Returns area items for the requested tokens.
     * @param options
     */
    getAreas({ token }: GetAreas): Promise<GetAreasResponse>;
    /**
     * Creates a new area.
     * @param options
     */
    createArea({ area }: CreateArea): Promise<CreateAreaResponse['token']>;
    /**
     * Creates or replaces an area (requires ClientSuppliedTokenSupported).
     * @param options
     */
    setArea({ area }: SetArea): Promise<void>;
    /**
     * Modifies an existing area.
     * @param options
     */
    modifyArea({ area }: ModifyArea): Promise<void>;
    /**
     * Deletes an area.
     * @param options
     */
    deleteArea({ token }: DeleteArea): Promise<void>;
    /**
     * Returns the current state of an access point.
     * @param options
     */
    getAccessPointState({ token }: GetAccessPointState): Promise<AccessPointState>;
    /**
     * Enables an access point.
     * @param options
     */
    enableAccessPoint({ token }: EnableAccessPoint): Promise<void>;
    /**
     * Disables an access point.
     * @param options
     */
    disableAccessPoint({ token }: DisableAccessPoint): Promise<void>;
    /**
     * Informs the device about an external authorization decision.
     * @param options
     */
    externalAuthorization({ accessPointToken, credentialToken, reason, decision, }: ExternalAuthorization): Promise<void>;
    /**
     * Provides feedback for an access point.
     * @param options
     */
    feedback({ accessPointToken, feedbackType, recognitionType, textMessage }: Feedback): Promise<void>;
}
