/**
 * Copyright © 2023-2024 Nevis Security AG. All rights reserved.
 */
import { type AuthCloudApiRegistration } from './AuthCloudApiRegistration';
import { type Authentication } from './Authentication';
import { type Deregistration } from './Deregistration';
import { type DeviceInformationCheck } from './deviceInformation/DeviceInformationCheck';
import { type DeviceInformationSync } from './deviceInformation/DeviceInformationSync';
import { type DeviceInformationChange } from './DeviceInformationChange';
import { type OutOfBandOperation } from './outOfBand/OutOfBandOperation';
import { type OutOfBandPayloadDecode } from './outOfBand/OutOfBandPayloadDecode';
import { type PendingOutOfBandOperations } from './outOfBand/PendingOutOfBandOperations';
import { type PasswordChange } from './password/PasswordChange';
import { type PinChange } from './pin/PinChange';
import { type Registration } from './Registration';
/**
 * The interface used to obtain operation objects (registration, deregistration, authentication...).
 *
 * @see {@link MobileAuthenticationClient.operations}
 */
export declare abstract class Operations {
    /**
     * Returns an {@link OutOfBandOperation} object.
     *
     * The object can be used to process an {@link OutOfBandPayload} that was obtained from a QR code or
     * an Intent (push message for example).
     */
    abstract outOfBandOperation: OutOfBandOperation;
    /**
     * Returns an {@link OutOfBandPayloadDecode} object.
     *
     * The object can be used to decode an {@link OutOfBandPayload} from a String in JSON format.
     */
    abstract outOfBandPayloadDecode: OutOfBandPayloadDecode;
    /**
     * Returns a {@link Registration} object.
     *
     * The object can be used to register a new authenticator.
     */
    abstract registration: Registration;
    /**
     * Returns an {@link AuthCloudApiRegistration} object.
     *
     * The object can be used to register a new authenticator when using the Nevis Auth Cloud
     * enroll API.
     */
    abstract authCloudApiRegistration: AuthCloudApiRegistration;
    /**
     * Returns an {@link Authentication} object.
     *
     * The object can be used to authenticate using an already registered authenticator.
     */
    abstract authentication: Authentication;
    /**
     * Returns a {@link Deregistration} object.
     *
     * The object can be used to deregister authenticators.
     */
    abstract deregistration: Deregistration;
    /**
     * Returns a {@link DeviceInformationChange} object.
     *
     * The object can be used to update the device information.
     */
    abstract deviceInformationChange: DeviceInformationChange;
    /**
     * Returns a {@link DeviceInformationCheck} object.
     *
     * This operation allows identifying possible configuration mismatches between the server and
     * the application running the Mobile SDK.
     *
     * This is supported only when the backend uses nevisFIDO 7.2408.** or later.
     */
    abstract deviceInformationCheck: DeviceInformationCheck;
    /**
     * Returns a {@link DeviceInformationSync} object.
     *
     * This operation allows correcting the configuration mismatches between the server and the
     * application running the Mobile SDK that were found with a {@link DeviceInformationCheck} operation.
     *
     * This is supported only when the backend uses nevisFIDO 7.2408.** or later.
     */
    abstract deviceInformationSync: DeviceInformationSync;
    /**
     * Returns a {@link PendingOutOfBandOperations} object.
     *
     * This operation retrieves the out-of-band operations that have been started
     * in the server, and must be handled by the application running the Mobile SDK.
     *
     * This is supported only when the backend uses nevisFIDO 7.2402.** or later.
     *
     */
    abstract pendingOutOfBandOperations: PendingOutOfBandOperations;
    /**
     * Returns a {@link PinChange} object.
     *
     * The object can be used to change the PIN of a registered PIN authenticator.
     */
    abstract pinChange: PinChange;
    /**
     * Returns a {@link PasswordChange} object.
     *
     * The object can be used to change the password of a registered password authenticator.
     */
    abstract passwordChange: PasswordChange;
}
export declare class OperationsImpl extends Operations {
    outOfBandOperation: OutOfBandOperation;
    outOfBandPayloadDecode: OutOfBandPayloadDecode;
    registration: Registration;
    authCloudApiRegistration: AuthCloudApiRegistration;
    authentication: Authentication;
    deregistration: Deregistration;
    deviceInformationChange: DeviceInformationChange;
    deviceInformationCheck: DeviceInformationCheck;
    deviceInformationSync: DeviceInformationSync;
    pendingOutOfBandOperations: PendingOutOfBandOperations;
    pinChange: PinChange;
    passwordChange: PasswordChange;
}
//# sourceMappingURL=Operations.d.ts.map