/**
 * Credential ver10 module
 * @author Andrew D.Laptev <a.d.laptev@gmail.com>
 * @see https://www.onvif.org/ver10/credential/wsdl/credential.wsdl
 */
import { Onvif } from './onvif';
import Service from './service';
import { AddToBlacklist, AddToWhitelist, Capabilities, CreateCredential, CreateCredentialResponse, CredentialState, DeleteCredential, DeleteCredentialAccessProfiles, DeleteCredentialIdentifier, DisableCredential, EnableCredential, GetBlacklist, GetBlacklistResponse, GetCredentialAccessProfiles, GetCredentialAccessProfilesResponse, GetCredentialIdentifiers, GetCredentialIdentifiersResponse, GetCredentialInfo, GetCredentialInfoList, GetCredentialInfoListResponse, GetCredentialInfoResponse, GetCredentialList, GetCredentialListResponse, GetCredentials, GetCredentialsResponse, GetCredentialState, GetSupportedFormatTypes, GetSupportedFormatTypesResponse, GetWhitelist, GetWhitelistResponse, ModifyCredential, RemoveFromBlacklist, RemoveFromWhitelist, ResetAntipassbackViolation, SetCredential, SetCredentialAccessProfiles, SetCredentialIdentifier } from './interfaces/credential';
/**
 * Credential service
 * @example
 * ```ts
 *  const list = await cam.credential.getCredentialInfoList();
 *  const token = list.credentialInfo![0].token;
 *  console.log((await cam.credential.getCredentialState({ token })).enabled);
 *  await cam.credential.enableCredential({ token });
 * ```
 */
export default class Credential extends Service {
    constructor(onvif: Onvif);
    private static attributeToBuild;
    private static credentialIdentifierTypeToBuild;
    private static credentialIdentifierToBuild;
    private static credentialIdentifierItemToBuild;
    private static credentialAccessProfileToBuild;
    private static credentialStateToBuild;
    private static credentialInfoToBuild;
    private static credentialToBuild;
    private static credentialDataToBuild;
    /**
     * Returns the capabilities of the credential service.
     */
    getServiceCapabilities(): Promise<Capabilities>;
    /**
     * Returns supported format types for a credential identifier type.
     * @param options
     */
    getSupportedFormatTypes({ credentialIdentifierTypeName, }: GetSupportedFormatTypes): Promise<GetSupportedFormatTypesResponse['formatTypeInfo']>;
    /**
     * Returns credential info items for the requested tokens.
     * @param options
     */
    getCredentialInfo({ token }: GetCredentialInfo): Promise<GetCredentialInfoResponse>;
    /**
     * Returns a list of credential info items.
     * @param options
     */
    getCredentialInfoList(options?: GetCredentialInfoList): Promise<GetCredentialInfoListResponse>;
    /**
     * Returns credential items for the requested tokens.
     * @param options
     */
    getCredentials({ token }: GetCredentials): Promise<GetCredentialsResponse>;
    /**
     * Returns a list of credential items.
     * @param options
     */
    getCredentialList(options?: GetCredentialList): Promise<GetCredentialListResponse>;
    /**
     * Creates a new credential.
     * @param options
     */
    createCredential({ credential, state }: CreateCredential): Promise<CreateCredentialResponse['token']>;
    /**
     * Creates or replaces a credential (requires ClientSuppliedTokenSupported).
     * @param options
     */
    setCredential({ credentialData }: SetCredential): Promise<void>;
    /**
     * Modifies an existing credential.
     * @param options
     */
    modifyCredential({ credential }: ModifyCredential): Promise<void>;
    /**
     * Deletes a credential.
     * @param options
     */
    deleteCredential({ token }: DeleteCredential): Promise<void>;
    /**
     * Returns the current state of a credential.
     * @param options
     */
    getCredentialState({ token }: GetCredentialState): Promise<CredentialState>;
    /**
     * Enables a credential.
     * @param options
     */
    enableCredential({ token, reason }: EnableCredential): Promise<void>;
    /**
     * Disables a credential.
     * @param options
     */
    disableCredential({ token, reason }: DisableCredential): Promise<void>;
    /**
     * Resets an anti-passback violation for a credential.
     * @param options
     */
    resetAntipassbackViolation({ credentialToken }: ResetAntipassbackViolation): Promise<void>;
    /**
     * Returns identifiers of a credential.
     * @param options
     */
    getCredentialIdentifiers({ credentialToken, }: GetCredentialIdentifiers): Promise<GetCredentialIdentifiersResponse['credentialIdentifier']>;
    /**
     * Sets a credential identifier.
     * @param options
     */
    setCredentialIdentifier({ credentialToken, credentialIdentifier }: SetCredentialIdentifier): Promise<void>;
    /**
     * Deletes a credential identifier by type name.
     * @param options
     */
    deleteCredentialIdentifier({ credentialToken, credentialIdentifierTypeName, }: DeleteCredentialIdentifier): Promise<void>;
    /**
     * Returns access profiles associated with a credential.
     * @param options
     */
    getCredentialAccessProfiles({ credentialToken, }: GetCredentialAccessProfiles): Promise<GetCredentialAccessProfilesResponse['credentialAccessProfile']>;
    /**
     * Sets access profiles associated with a credential.
     * @param options
     */
    setCredentialAccessProfiles({ credentialToken, credentialAccessProfile, }: SetCredentialAccessProfiles): Promise<void>;
    /**
     * Deletes access profiles associated with a credential.
     * @param options
     */
    deleteCredentialAccessProfiles({ credentialToken, accessProfileToken, }: DeleteCredentialAccessProfiles): Promise<void>;
    /**
     * Returns whitelisted credential identifiers.
     * @param options
     */
    getWhitelist(options?: GetWhitelist): Promise<GetWhitelistResponse>;
    /**
     * Adds credential identifiers to the whitelist.
     * @param options
     */
    addToWhitelist({ identifier }: AddToWhitelist): Promise<void>;
    /**
     * Removes credential identifiers from the whitelist.
     * @param options
     */
    removeFromWhitelist({ identifier }: RemoveFromWhitelist): Promise<void>;
    /**
     * Deletes all whitelisted credential identifiers.
     */
    deleteWhitelist(): Promise<void>;
    /**
     * Returns blacklisted credential identifiers.
     * @param options
     */
    getBlacklist(options?: GetBlacklist): Promise<GetBlacklistResponse>;
    /**
     * Adds credential identifiers to the blacklist.
     * @param options
     */
    addToBlacklist({ identifier }: AddToBlacklist): Promise<void>;
    /**
     * Removes credential identifiers from the blacklist.
     * @param options
     */
    removeFromBlacklist({ identifier }: RemoveFromBlacklist): Promise<void>;
    /**
     * Deletes all blacklisted credential identifiers.
     */
    deleteBlacklist(): Promise<void>;
}
