import { Oso } from "oso";
import { SQLEntities } from "./backend.js";
import { Value } from "./clause.js";
import { LiteralsContext } from "./oso.js";
import { Permission, SQLActor } from "./sql.js";
export interface ConvertPermissionSuccess
{
type: "success";
permissions: P[];
}
export interface ConvertPermissionError {
type: "error";
errors: string[];
}
export type ConvertPermissionResult
= ConvertPermissionSuccess
| ConvertPermissionError;
export interface ConvertPermissionArgs {
result: Map;
entities: SQLEntities;
allowAnyActor?: boolean;
strictFields?: boolean;
debug?: boolean;
literals: Map;
}
export declare function convertPermission({ result, entities, allowAnyActor, strictFields, debug, literals, }: ConvertPermissionArgs): ConvertPermissionResult;
export interface ParsePermissionsArgs {
oso: Oso;
entities: SQLEntities;
allowAnyActor?: boolean;
strictFields?: boolean;
debug?: boolean;
literalsContext: LiteralsContext;
}
export declare function parsePermissions({ oso, entities, allowAnyActor, strictFields, debug, literalsContext, }: ParsePermissionsArgs): Promise;
export declare function deduplicatePermissions(permissions: Permission[]): Permission[];
export interface UserRevokePolicyAll {
type: "all";
}
export interface UserRevokePolicyReferenced {
type: "referenced";
}
export interface UserRevokePolicyExplicit {
type: "users";
users: string[];
}
export type UserRevokePolicy = UserRevokePolicyAll | UserRevokePolicyReferenced | UserRevokePolicyExplicit;
export interface GetRevokeActorsArgs {
userRevokePolicy?: UserRevokePolicy;
permissions: Permission[];
entities: SQLEntities;
}
export interface GetRevokeActorsSuccessResult {
type: "success";
users: SQLActor[];
}
export interface GetRevokeActorsErrorResult {
type: "error";
errors: string[];
}
export type GetRevokeActorsResult = GetRevokeActorsSuccessResult | GetRevokeActorsErrorResult;
export declare function getRevokeActors({ userRevokePolicy, permissions, entities, }: GetRevokeActorsArgs): GetRevokeActorsResult;