import { AuthorizeResponse, createAccessControl } from "./access.mjs"; import { LiteralString } from "@better-auth/core"; //#region src/plugins/access/types.d.ts type ArrayElement = T extends readonly (infer E)[] ? E : never; type SubArray = T[number][] | ReadonlyArray; type Subset> = { [P in K]: SubArray }; type Statements = { readonly [resource: string]: readonly LiteralString[]; }; type RoleStatements = { readonly [P in keyof TStatements]?: SubArray }; type RoleInput = TRoleStatements & (string extends keyof TRoleStatements ? {} : RoleStatements & Record, never>); type ExactRoleStatements = { readonly [P in keyof TStatements]: readonly [...TStatements[P]] }; type AccessControl = ReturnType>; type RoleAuthorizeRequest = { [P in keyof TStatements]?: SubArray | { actions: SubArray; connector: "OR" | "AND"; } }; type Role, TAuthorizeStatements extends Statements = TRoleStatements> = { authorize: (request: RoleAuthorizeRequest, connector?: ("OR" | "AND") | undefined) => AuthorizeResponse; statements: TRoleStatements; }; //#endregion export { AccessControl, ArrayElement, ExactRoleStatements, Role, RoleAuthorizeRequest, RoleInput, RoleStatements, Statements, SubArray, Subset };