import { Permission, SQLActor, SQLFunction, SQLGroup, SQLProcedure, SQLRowLevelSecurityPolicy, SQLSchema, SQLSequence, SQLTableMetadata, SQLUser, SQLView } from "./sql.js"; export interface SQLEntities { users: SQLUser[]; groups: SQLGroup[]; schemas: SQLSchema[]; tables: SQLTableMetadata[]; views: SQLView[]; rlsPolicies: SQLRowLevelSecurityPolicy[]; functions: SQLFunction[]; procedures: SQLProcedure[]; sequences: SQLSequence[]; } export interface SQLBackendContext { setupQuery?: string; teardownQuery?: string; transactionStartQuery?: string; transactionCommitQuery?: string; removeAllPermissionsFromActorsQueries: (users: SQLActor[], entities: SQLEntities) => string[]; compileGrantQueries: (permissions: Permission[], entities: SQLEntities) => string[]; } export interface SQLBackend { fetchEntities: () => Promise; getContext: (entities: SQLEntities) => Promise; }