import { StringFormatType } from '../utils';
import { ISecurityClaim } from './ISecurityClaim';
import { ISecurityProvider } from './ISecurityProvider';
export interface AuthorizeOptions {
    users?: string[];
    roles?: string[];
    resources?: string[];
    claims?: ISecurityClaim[];
    type?: 'hasAll' | 'hasAny' | 'except';
    providerName?: string;
    errorMessage?: StringFormatType;
}
export declare class SecurityManager {
    private static securityProviders;
    private static defaultName;
    static get DefaultProvider(): ISecurityProvider;
    static get DefaultProviderName(): string;
    static getSecurityProvider(name: string): ISecurityProvider;
    static registerSecurityProviders(defaultName?: string, ...securityProviders: ISecurityProvider[]): void;
}
export declare function authorized<P>(options?: AuthorizeOptions): Promise<boolean>;
