import type { EAuthorizationEffect } from '../../../../enum/class/authorization/effect.enum';
import type { IApiBaseEntity } from '../../../api-base-entity.interface';
import type { IApiAuthorizationRule } from './rule/interface';
import type { IApiAuthorizationScope } from './scope.interface';
import type { IApiAuthorizationSubject } from './subject.interface';
import type { TApiAuthorizationRuleResultTransform } from '../../../../type/class/api/authorization/rule/result-transform.type';
export interface IApiAuthorizationDecision<E extends IApiBaseEntity, R> {
    action: string;
    appliedRules: Array<IApiAuthorizationRule<E, R>>;
    effect: EAuthorizationEffect;
    policyId: string;
    resource?: E;
    resourceType: string;
    scope?: IApiAuthorizationScope<E>;
    subject: IApiAuthorizationSubject;
    transforms: Array<TApiAuthorizationRuleResultTransform<E, R>>;
}
