import { Services, authorizations as authz } from '../typings'; import Ajv from 'ajv'; import { Obligation } from '../typings/authorizations'; export interface AuthzConfig { noPolicyVerb: authz.PolicyVerb; } export default class Authz { private config; private services; private validator; constructor(config: AuthzConfig, services: Services); static getScopes(scope: authz.Scope): Array; applyObligations(obj: any, obligations: Array): any; static areRulesValidated(validations: Array): boolean; static getDecision(decisions: Array, config: AuthzConfig): authz.Decision; static isAllowed(decisions: Array): boolean; static validateScope(validator: Ajv, schema: authz.JSONSchema, obj: object): authz.ScopeValidation; static validateRules(validator: Ajv, request: authz.AuthorizationRequest, attributes: authz.RequestAttributes, rules: Array): Array; static validatePolicy(validator: Ajv, request: authz.AuthorizationRequest, attributes: authz.RequestAttributes, policy: authz.Policy): authz.Decision; static validatePolicies(validator: Ajv, request: authz.AuthorizationRequest, attributes: authz.RequestAttributes, policies: Array, config: AuthzConfig): authz.Decision; getScopeAttributes(scope: authz.Scope): Promise>; getRequestAttributes(request: authz.AuthorizationRequest): Promise; getRequestPolicies(request: authz.AuthorizationRequest): Promise>; authorize(request: authz.AuthorizationRequest): Promise; }