import type { IncomingHttpHeaders } from 'node:http'; import type { GraphPointer } from 'clownface'; import type { DatasetCore, NamedNode } from '@rdfjs/types'; import type { KopflosEnvironment } from './env/index.js'; import type { Kopflos, KopflosResponse, Body, Query, ResultEnvelope } from './Kopflos.js'; import type { ResourceShapeMatch } from './resourceShape.js'; import type { HttpMethod } from './httpMethods.js'; type Dataset = ReturnType; export interface HandlerArgs { method: string; resourceShape: GraphPointer; handler: GraphPointer; env: KopflosEnvironment; subject: GraphPointer; subjectVariables: Record; property: NamedNode | undefined; object: GraphPointer | undefined; body: Body; query: Query; headers: IncomingHttpHeaders; } export interface SubjectHandler { (arg: HandlerArgs, response?: ResultEnvelope): KopflosResponse | Promise; } export interface ObjectHandler { (arg: Required, response?: ResultEnvelope): KopflosResponse | Promise; } export type Handler = SubjectHandler | ObjectHandler; export interface HandlerLookup { (match: ResourceShapeMatch, method: HttpMethod, kopflos: Kopflos): { pointer: GraphPointer; implementation: Array | Handler>; } | undefined; } export declare const loadHandlers: HandlerLookup; export {};