/**
 * Device module
 * @author Andrew D.Laptev <a.d.laptev@gmail.com>
 */
import { Onvif, SetSystemDateAndTimeExtended } from './onvif';
import Service from './service';
import { AddIPAddressFilter, AddScopes, CreateCertificate, CreateDot1XConfiguration, CreateStorageConfiguration, CreateUsers, DeleteCertificates, DeleteDot1XConfiguration, DeleteGeoLocation, DeleteStorageConfiguration, DeleteUserRole, DeleteUsers, DeviceServiceCapabilities, GetAuthFailureWarningConfigurationResponse, GetCapabilities, GetCertificateInformation, GetDeviceInformationResponse, GetDot11Status, GetDot1XConfiguration, GetPasswordComplexityConfigurationResponse, GetPkcs10Request, GetServices, GetServicesResponse, GetStorageConfiguration, GetSystemLog, GetUserRoles, LoadCACertificates, LoadCertificateWithPrivateKey, LoadCertificates, RemoveIPAddressFilter, RemoveScopes, RestoreSystem, ScanAvailableDot11Networks, SendAuxiliaryCommand, Service as DeviceService, SetAccessPolicy, SetAuthFailureWarningConfiguration, SetCertificatesStatus, SetClientCertificateMode, SetDNS, SetDiscoveryMode, SetDot1XConfiguration, SetDPAddresses, SetDynamicDNS, SetGeoLocation, SetHashingAlgorithm, SetHostname, SetHostnameFromDHCP, SetIPAddressFilter, SetNetworkDefaultGateway, SetNetworkInterfaces, SetNetworkInterfacesResponse, SetNetworkProtocols, SetNTP, SetPasswordComplexityConfiguration, SetPasswordHistoryConfiguration, SetRelayOutputSettings, SetRelayOutputState, SetRemoteDiscoveryMode, SetRemoteUser, SetStorageConfiguration, SetSystemFactoryDefault, SetUser, SetUserRole, SetZeroConfiguration, StorageConfiguration, UpgradeFirmware, UpgradeSystemFirmware } from './interfaces/devicemgmt';
import { BackupFile, BinaryData, Capabilities, Certificate, CertificateStatus, DNSInformation, Dot1XConfiguration, DynamicDNSInformation, HostnameInformation, IPAddressFilter, NetworkGateway, NetworkHost, NetworkInterface, NetworkProtocol, NetworkZeroConfiguration, NTPInformation, RelayOutput, RemoteUser, Scope, User } from './interfaces/onvif';
import { AnyURI } from './interfaces/basics';
import { LocationEntity, ReferenceToken } from './interfaces/common';
/**
 * Device methods
 */
export default class Device extends Service {
    #private;
    get services(): DeviceService[];
    media2Support: boolean;
    get scopes(): Scope[];
    get serviceCapabilities(): DeviceServiceCapabilities | undefined;
    get NTP(): NTPInformation | undefined;
    get DNS(): DNSInformation | undefined;
    get networkInterfaces(): NetworkInterface[] | undefined;
    constructor(onvif: Onvif);
    private static namesToBuild;
    private static binaryDataToBuild;
    private static attachmentDataToBuild;
    private static backupFilesToBuild;
    private static networkHostToBuild;
    private static networkHostsToBuild;
    private static prefixedIPv4ToBuild;
    private static prefixedIPv6ToBuild;
    private static ipAddressFilterToBuild;
    private static networkProtocolToBuild;
    private static userToBuild;
    private static userRoleToBuild;
    private static remoteUserToBuild;
    private static certificateToBuild;
    private static certificatesToBuild;
    private static certificateStatusToBuild;
    private static certificateWithPrivateKeyToBuild;
    private static dot1XConfigurationToBuild;
    private static relayOutputSettingsToBuild;
    private static userCredentialToBuild;
    private static storageConfigurationDataToBuild;
    private static storageConfigurationToBuild;
    private static locationEntitiesToBuild;
    getSystemDateAndTime(): Promise<import("./onvif").SystemDateTimeExtended>;
    setSystemDateAndTime(options: SetSystemDateAndTimeExtended): Promise<import("./onvif").SystemDateTimeExtended>;
    /**
     * Returns information about services of the device.
     */
    getServices({ includeCapability }?: GetServices): Promise<GetServicesResponse>;
    /**
     * This method has been replaced by the more generic {@link Device.getServices | GetServices} method.
     * For capabilities of individual services refer to the GetServiceCapabilities methods.
     * @param options
     * @param options.category
     */
    getCapabilities(options?: GetCapabilities): Promise<Capabilities>;
    /**
     * Receive device information
     */
    getDeviceInformation(): Promise<GetDeviceInformationResponse>;
    /**
     * Receive hostname information
     */
    getHostname(): Promise<HostnameInformation>;
    /**
     * Receive the scope parameters of a device
     */
    getScopes(): Promise<Scope[]>;
    /**
     * Set the scope parameters of a device
     * @param scopes Array of scope's uris
     */
    setScopes(scopes: AnyURI[]): Promise<Scope[]>;
    /**
     * Returns the capabilities of the device service. The result is returned in a typed answer
     */
    getServiceCapabilities(): Promise<DeviceServiceCapabilities>;
    /**
     * This operation reboots the device
     */
    systemReboot(): Promise<string>;
    /**
     * This operation gets the NTP settings from a device. If the device supports NTP, it shall be possible to get the
     * NTP server settings through the GetNTP command.
     */
    getNTP(): Promise<NTPInformation>;
    /**
     * Set the NTP settings on a device
     */
    setNTP(options: SetNTP): Promise<NTPInformation>;
    /**
     * This operation gets the DNS settings from a device. The device shall return its DNS configurations through the
     * GetDNS command.
     */
    getDNS(): Promise<DNSInformation>;
    setDNS(options: SetDNS): Promise<DNSInformation>;
    /**
     * This operation gets the network interface configuration from a device. The device shall support return of network
     * interface configuration settings as defined by the NetworkInterface type through the GetNetworkInterfaces command.
     */
    getNetworkInterfaces(): Promise<NetworkInterface[]>;
    /**
     * Set network interfaces information
     */
    setNetworkInterfaces(options: SetNetworkInterfaces): Promise<SetNetworkInterfacesResponse>;
    setSystemFactoryDefault({ factoryDefault }: SetSystemFactoryDefault): Promise<void>;
    upgradeSystemFirmware({ firmware }: UpgradeSystemFirmware): Promise<string | undefined>;
    restoreSystem({ backupFiles }: RestoreSystem): Promise<void>;
    getSystemBackup(): Promise<BackupFile[]>;
    getSystemLog({ logType }: GetSystemLog): Promise<any>;
    getSystemSupportInformation(): Promise<any>;
    addScopes({ scopeItem }: AddScopes): Promise<void>;
    removeScopes({ scopeItem }: RemoveScopes): Promise<AnyURI[] | undefined>;
    getDiscoveryMode(): Promise<any>;
    setDiscoveryMode({ discoveryMode }: SetDiscoveryMode): Promise<void>;
    getRemoteDiscoveryMode(): Promise<any>;
    setRemoteDiscoveryMode({ remoteDiscoveryMode }: SetRemoteDiscoveryMode): Promise<void>;
    getDPAddresses(): Promise<NetworkHost[] | undefined>;
    setDPAddresses({ DPAddress }: SetDPAddresses): Promise<void>;
    getEndpointReference(): Promise<any>;
    getUserRoles(options?: GetUserRoles): Promise<any>;
    setUserRole({ userRole }: SetUserRole): Promise<void>;
    deleteUserRole({ userRole }: DeleteUserRole): Promise<void>;
    getRemoteUser(): Promise<RemoteUser | undefined>;
    setRemoteUser({ remoteUser }: SetRemoteUser): Promise<void>;
    getUsers(): Promise<User[]>;
    createUsers({ user }: CreateUsers): Promise<void>;
    deleteUsers({ username }: DeleteUsers): Promise<void>;
    setUser({ user }: SetUser): Promise<void>;
    getWsdlUrl(): Promise<AnyURI>;
    getPasswordComplexityOptions(): Promise<any>;
    getPasswordComplexityConfiguration(): Promise<GetPasswordComplexityConfigurationResponse>;
    setPasswordComplexityConfiguration(options: SetPasswordComplexityConfiguration): Promise<void>;
    getPasswordHistoryConfiguration(): Promise<any>;
    setPasswordHistoryConfiguration(options: SetPasswordHistoryConfiguration): Promise<void>;
    getAuthFailureWarningOptions(): Promise<any>;
    getAuthFailureWarningConfiguration(): Promise<GetAuthFailureWarningConfigurationResponse>;
    setAuthFailureWarningConfiguration(options: SetAuthFailureWarningConfiguration): Promise<void>;
    setHostname({ name }: SetHostname): Promise<void>;
    setHostnameFromDHCP({ fromDHCP }: SetHostnameFromDHCP): Promise<boolean>;
    getDynamicDNS(): Promise<DynamicDNSInformation>;
    setDynamicDNS(options: SetDynamicDNS): Promise<void>;
    getNetworkProtocols(): Promise<NetworkProtocol[]>;
    setNetworkProtocols({ networkProtocols }: SetNetworkProtocols): Promise<void>;
    getNetworkDefaultGateway(): Promise<NetworkGateway>;
    setNetworkDefaultGateway(options: SetNetworkDefaultGateway): Promise<void>;
    getZeroConfiguration(): Promise<NetworkZeroConfiguration>;
    setZeroConfiguration({ interfaceToken, enabled }: SetZeroConfiguration): Promise<void>;
    getIPAddressFilter(): Promise<IPAddressFilter>;
    setIPAddressFilter({ IPAddressFilter }: SetIPAddressFilter): Promise<void>;
    addIPAddressFilter({ IPAddressFilter }: AddIPAddressFilter): Promise<void>;
    removeIPAddressFilter({ IPAddressFilter }: RemoveIPAddressFilter): Promise<void>;
    getAccessPolicy(): Promise<BinaryData>;
    setAccessPolicy({ policyFile }: SetAccessPolicy): Promise<void>;
    createCertificate(options?: CreateCertificate): Promise<any>;
    getCertificates(): Promise<Certificate[]>;
    getCertificatesStatus(): Promise<CertificateStatus[]>;
    setCertificatesStatus({ certificateStatus }: SetCertificatesStatus): Promise<void>;
    deleteCertificates({ certificateID }: DeleteCertificates): Promise<void>;
    getPkcs10Request(options: GetPkcs10Request): Promise<any>;
    loadCertificates({ NVTCertificate }: LoadCertificates): Promise<void>;
    getClientCertificateMode(): Promise<boolean>;
    setClientCertificateMode({ enabled }: SetClientCertificateMode): Promise<void>;
    getCACertificates(): Promise<Certificate[]>;
    loadCertificateWithPrivateKey({ certificateWithPrivateKey }: LoadCertificateWithPrivateKey): Promise<void>;
    getCertificateInformation({ certificateID }: GetCertificateInformation): Promise<any>;
    loadCACertificates({ CACertificate }: LoadCACertificates): Promise<void>;
    createDot1XConfiguration({ dot1XConfiguration }: CreateDot1XConfiguration): Promise<void>;
    setDot1XConfiguration({ dot1XConfiguration }: SetDot1XConfiguration): Promise<void>;
    getDot1XConfiguration({ dot1XConfigurationToken }: GetDot1XConfiguration): Promise<any>;
    getDot1XConfigurations(): Promise<Dot1XConfiguration[]>;
    deleteDot1XConfiguration({ dot1XConfigurationToken }: DeleteDot1XConfiguration): Promise<void>;
    getRelayOutputs(): Promise<RelayOutput[]>;
    setRelayOutputSettings({ relayOutputToken, properties }: SetRelayOutputSettings): Promise<void>;
    setRelayOutputState({ relayOutputToken, logicalState }: SetRelayOutputState): Promise<void>;
    sendAuxiliaryCommand({ auxiliaryCommand }: SendAuxiliaryCommand): Promise<any>;
    getDot11Capabilities(): Promise<any>;
    getDot11Status({ interfaceToken }: GetDot11Status): Promise<any>;
    scanAvailableDot11Networks({ interfaceToken }: ScanAvailableDot11Networks): Promise<any>;
    getSystemUris(): Promise<any>;
    startFirmwareUpgrade(): Promise<any>;
    upgradeFirmware({ version }: UpgradeFirmware): Promise<any>;
    startSystemRestore(): Promise<any>;
    setHashingAlgorithm({ algorithm }: SetHashingAlgorithm): Promise<void>;
    getStorageConfigurations(): Promise<StorageConfiguration[]>;
    createStorageConfiguration({ storageConfiguration }: CreateStorageConfiguration): Promise<ReferenceToken>;
    getStorageConfiguration({ token }: GetStorageConfiguration): Promise<any>;
    setStorageConfiguration({ storageConfiguration }: SetStorageConfiguration): Promise<void>;
    deleteStorageConfiguration({ token }: DeleteStorageConfiguration): Promise<void>;
    getGeoLocation(): Promise<LocationEntity[]>;
    setGeoLocation({ location }: SetGeoLocation): Promise<void>;
    deleteGeoLocation({ location }: DeleteGeoLocation): Promise<void>;
}
