import type { Schema } from '../../data/schema/types.js'; import type { DB } from '../../data/db/index.js'; import type { AuthRequirement, PermissionMeta } from '../di/types.js'; export type ResourceId = string; export interface PaginationConfig { readonly defaultLimit: number; readonly maxLimit: number; } export interface PaginationParams { readonly limit: number; readonly offset: number; } export interface PaginatedResponse { readonly data: T[]; readonly pagination: { readonly limit: number; readonly offset: number; readonly total: number; readonly hasMore: boolean; }; } export interface ResourceListOp { (db: DB, auth: TAuth, tenant: string | null): Promise; } export interface ResourceListPaginatedOp { (db: DB, auth: TAuth, tenant: string | null, pagination: PaginationParams): Promise<{ data: unknown[]; total: number; }>; } export interface ResourceListCursorOp { (db: DB, auth: TAuth, tenant: string | null, pagination: import('./paginate.js').CursorPaginationParams): Promise>; } export interface ResourceGetOp { (db: DB, auth: TAuth, tenant: string | null, id: ResourceId): Promise; } export interface ResourceCreateOp { readonly input?: Schema; readonly handler: (db: DB, auth: TAuth, tenant: string | null, input: unknown) => Promise; } export interface ResourceUpdateOp { readonly input?: Schema; readonly handler: (db: DB, auth: TAuth, tenant: string | null, id: ResourceId, input: unknown) => Promise; } export interface ResourceDeleteOp { (db: DB, auth: TAuth, tenant: string | null, id: ResourceId): Promise; } export interface ResourceOperations { readonly list?: ResourceListOp; readonly listPaginated?: ResourceListPaginatedOp; readonly listCursor?: ResourceListCursorOp; readonly get?: ResourceGetOp; readonly create?: ResourceCreateOp; readonly update?: ResourceUpdateOp; readonly delete?: ResourceDeleteOp; readonly batch?: Record>; } export interface ResourceMeta { readonly name: string; readonly database: string; readonly authRequirement: AuthRequirement; readonly permission: PermissionMeta | null; readonly pagination: PaginationConfig | null; } export interface Resource { readonly meta: ResourceMeta; readonly operations: ResourceOperations; } //# sourceMappingURL=types.d.ts.map