import { SmrtClassOptions } from '@happyvertical/smrt-core'; export type PermissionCatalogSource = 'manifest' | 'config' | 'runtime'; export type PostgresPermissionAction = 'SELECT' | 'INSERT' | 'UPDATE' | 'DELETE'; export interface PostgresPermissionBinding { action: Lowercase | PostgresPermissionAction; permission?: string; schemaName?: string; tableName: string; tenantField?: string; } export interface PermissionDefinition { category?: string; className?: string; collection?: string; description?: string; name?: string; postgres?: { bindings?: PostgresPermissionBinding[]; }; qualifiedName?: string; slug: string; source?: PermissionCatalogSource; } export interface PermissionCatalog { customPermissions: PermissionDefinition[]; manifestPermissions: PermissionDefinition[]; permissions: PermissionDefinition[]; runtimePermissions: PermissionDefinition[]; } export interface PermissionCatalogSyncResult { catalog: PermissionCatalog; created: string[]; unchanged: string[]; updated: string[]; } export interface UsersConfig extends Record { permissions?: { custom?: PermissionDefinition[]; postgres?: { bindings?: PostgresPermissionBinding[]; enabled?: boolean; }; }; } export interface ConstructorLike { name?: string; } export interface CollectionLike { getItemClass?: () => ConstructorLike; } export type OperationPermissionCollectionInput = string | ConstructorLike | CollectionLike | object; declare global { var __smrtUsersPermissionRegistrations: Map | undefined; var __smrtUsersPermissionRegistrationCounter: number | undefined; } export declare function normalizeOperationPermissionAction(action: string): string; export declare function deriveOperationPermissionCollectionName(input: OperationPermissionCollectionInput): string; export declare function deriveOperationPermissionSlug(collection: OperationPermissionCollectionInput, action: string): string; export declare function registerPermissionDefinitions(definitions: PermissionDefinition[]): () => void; export declare class PermissionCatalogService { private readonly options; constructor(options?: SmrtClassOptions); getUsersConfig(): UsersConfig; getRuntimePermissionDefinitions(): PermissionDefinition[]; getCustomPermissionDefinitions(): PermissionDefinition[]; getCatalog(): PermissionCatalog; deriveOperationPermissionSlug(collection: OperationPermissionCollectionInput, action: string): string; hasPermissionSlug(slug: string): boolean; syncPermissionCatalog(): Promise; private getManifestPermissionDefinitions; static create(options?: SmrtClassOptions): PermissionCatalogService; } export declare function syncPermissionCatalog(options?: SmrtClassOptions): Promise; //# sourceMappingURL=PermissionCatalogService.d.ts.map