import { AuthorizeType, Policy } from '../../common'; export declare const AccessDecisionManager: unique symbol; export declare const AccessDecisionVoter: unique symbol; export declare const SecurityMetadataSource: unique symbol; export declare const PolicyResolver: unique symbol; export declare const SecurityExpressionContextHandler: unique symbol; export declare const JexlEngineProvider: unique symbol; export declare const PolicyProvider: unique symbol; export declare const PolicyFactory: unique symbol; export declare const ResourceNameResolver: unique symbol; export declare const ActionNameResolver: unique symbol; export declare const SECURITY_EXPRESSION_CONTEXT_KEY = "SecurityExpressionContext"; export declare const ACCESS_GRANTED = 1; export declare const ACCESS_ABSTAIN = 0; export declare const ACCESS_DENIED = -1; export declare const TENANT_VOTER_PRIORITY = 2000; export declare const POLICY_BASED_VOTER_PRIORITY: number; export interface PolicyContext { principal: any; type: AuthorizeType; resource: string; } export interface PolicyProvider { provide(ctx: PolicyContext): Promise; } export interface PolicyFactory { create(options: any): Promise; support(options: any): Promise; } export interface PolicyResolver { resolve(policy: Policy, securityMetadata: SecurityMetadata): Promise; support(policy: Policy, securityMetadata: SecurityMetadata): Promise; } export interface JexlEngineProvider { provide(): T; } export interface SecurityExpressionContextHandler { handle(context: any): Promise; } export interface SecurityMetadata { authorizeType: AuthorizeType; action: string; resource: string; principal: any; policies: Policy[]; grant: number; } export interface SecurityMetadataContext { } export interface MethodSecurityMetadataContext extends SecurityMetadataContext { grant: number; authorizeType: AuthorizeType; method: string; args: any[]; target: any; returnValue?: any; } export interface SecurityMetadataSource { load(context: SecurityMetadataContext): Promise; } export interface AccessDecisionManager { decide(securityMetadata: SecurityMetadata): Promise; } export interface AccessDecisionVoter { vote(securityMetadata: SecurityMetadata): Promise; support(securityMetadata: SecurityMetadata): Promise; readonly priority: number; } export interface ResourceNameResolver { resolve(ctx: MethodSecurityMetadataContext): Promise; } export interface ActionNameResolver { resolve(ctx: MethodSecurityMetadataContext): Promise; } //# sourceMappingURL=access-protocol.d.ts.map