import type { ILogger } from "../logging";
import { Assertion, Authorization, PermissionsChecker, PermissionsModel } from "../permissions";
import { IAuthorizationService } from "./types";
export type PermissionsAuthorizationServiceOptions = {
    model: PermissionsModel;
    authorize(user: IUser): string | Authorization | Promise<string | Authorization>;
};
declare const PermissionsAuthorizationService_base: {
    new (logger: ILogger, ...args: any[]): import("../services")._BaseService<"not_found" | "invalid_param" | "unauthorized" | "forbidden" | "not_allowed" | "invalid_state" | "misconfiguration" | "not_supported" | "processing_error">;
};
export declare class PermissionsAuthorizationService extends PermissionsAuthorizationService_base implements IAuthorizationService<Authorization> {
    protected options: PermissionsAuthorizationServiceOptions;
    protected permissions: PermissionsChecker;
    constructor(logger: ILogger, options: PermissionsAuthorizationServiceOptions);
    authorize(user: IUser): Promise<Authorization>;
    createAuthorization(authorization: string | Authorization): Authorization;
    check(authorization: Authorization, assertion: any): boolean;
    assert(authorization: Authorization, assertion: any): void;
    protected _getAssertion(assertion: any): Assertion;
}
export {};
