import { Requester } from '../http/Requester';
import { ApiKey } from '../types/ApiKey';
import { ScannerApp, ScannerAppInput } from '../types/ScannerApp';
import { ScannerDeviceInfo } from '../types/ScannerDeviceInfo';
import Endpoint from './Endpoint';
/**
 * Communicate with the scanners endpoints.
 */
export default class ScannersEndpoint extends Endpoint {
    /**
     * Constructor.
     *
     * @param req The object to use to make requests.
     */
    constructor(req: Requester);
    /**
     * Returns the scanner app by registration code.
     *
     * @param registrationCode The registration code of the scanner app.
     * @returns The scanner app.
     */
    getByRegistrationCode: (registrationCode: string) => Promise<ScannerApp | null>;
    /**
     * Registers a new scanner device.
     *
     * @param scannerApp The scanner app being registered.
     * @param pushToken The push token to send notifications to the device.
     * @param deviceInfo The device info.
     */
    registerDevice: (scannerApp: ScannerApp, pushToken: string, deviceInfo: ScannerDeviceInfo) => Promise<ApiKey | null>;
    /**
     * Deregisters a scanner device.
     *
     * @param apiKey The API received when registering the device.
     */
    deregisterDevice: (apiKey: ApiKey) => Promise<void>;
    /**
     * Returns all the scanner apps for the authenticated organization.
     */
    getAll: () => Promise<ScannerApp[]>;
    /**
     * Returns the scanner app with the given ID.
     *
     * @param id The ID of the scanner app.
     */
    getById: (id: string) => Promise<ScannerApp | null>;
    /**
     * Creates a new scanner app.
     *
     * @param app The scanner app to create.
     */
    createApp: (app: ScannerAppInput) => Promise<ScannerApp | null>;
    /**
     * Updates a scanner app.
     *
     * @param id The ID of the scanner app.
     * @param app The scanner app to update.
     */
    updateApp: (id: string, app: ScannerAppInput) => Promise<ScannerApp | null>;
    /**
     * Deletes a scanner app.
     *
     * @param id The ID of the scanner app.
     */
    deleteApp: (id: string) => Promise<void>;
}
