import { Access, AppInfo, Environment, User } from '../common.js';
import InstallationResponse from '../response-objects/installation-response.js';
import Form from '../response-objects/form.js';
import VoidResponse from '../response-objects/void-response.js';
export interface ExtensionRequest {
    user: User;
    environment: Environment;
    access: Access;
    authtoken: string;
    form: Form;
    app_info: AppInfo;
}
export default class ExtensionHandler {
    handleInstallation(handler: (req: ExtensionRequest, res: InstallationResponse, ...args: Array<unknown>) => Promise<InstallationResponse | undefined>): void;
    validateInstallation(handler: (req: ExtensionRequest, res: InstallationResponse, ...args: Array<unknown>) => Promise<InstallationResponse | undefined>): void;
    handleUninstallation(handler: (req: ExtensionRequest, res: VoidResponse, ...args: Array<unknown>) => Promise<VoidResponse | undefined>): void;
    newInstallationResponse(): InstallationResponse;
    newVoidResponse(): VoidResponse;
}
