import { GuidValue } from "@omnia/fx-models/internal-do-not-import-from-here/shared/models";
import { Identity } from "./identities";
export interface SecurityRule {
    roleId: GuidValue;
    logicalOperator?: "OR" | "AND";
}
export interface RolePermissionSetting {
    roleId: string;
    identities: Identity[];
}
export interface PermissionBinding {
    identity: Identity;
    roleId: GuidValue;
    resource: string;
    appInstanceId?: GuidValue;
    readonly systemDefinedRules?: SecurityRule[];
}
export declare enum OmniaRoleType {
    Tenant = 0,
    Global = 1,
    Custom = 2
}
export interface RoleEvaluationResult {
    roleId: GuidValue;
    resource: string;
    hasPermission: boolean;
    parentRoleResult: RoleEvaluationResult;
    securityResultsRoleResult: {
        [roleId: string]: RoleEvaluationResult;
    };
    editableRolesResult: {
        [roleId: string]: RoleEvaluationResult;
    };
}
export interface OmniaRole {
    id: GuidValue;
    name: string;
    permissionEvaluatorType: string;
    resourceEvaluatorType: string;
    roleType: OmniaRoleType;
    parentRole?: GuidValue;
    rules: SecurityRule[];
}
export interface AccessTokenInfo {
    resource: string;
    value: string;
    expiresOn: number;
}
declare abstract class RoleResourceEvaluator {
    abstract getRoleResourceWithContext(context: {
        [key: string]: string | number;
    }): Promise<string>;
}
declare abstract class RolePermissionEvaluator {
    abstract evaluateRoleWithContext(context: {
        [key: string]: string | number;
    }): Promise<boolean>;
}
declare class AppInstanceResourceEvaluator implements RoleResourceEvaluator {
    getRoleResourceWithContext(context: {
        [key: string]: string | number;
    }): Promise<string>;
}
declare class BusinessProfileResourceEvaluator implements RoleResourceEvaluator {
    getRoleResourceWithContext(context: {
        [key: string]: string | number;
    }): Promise<string>;
}
export { AppInstanceResourceEvaluator, BusinessProfileResourceEvaluator, RoleResourceEvaluator, RolePermissionEvaluator };
