import { ProcedureError } from './errors.js'; import { ProcedureCodes } from './procedure-codes.js'; import { Prettify, TJSONSchema, TSchemaLib } from './schema/types.js'; export type TNoContextProvided = unknown; export type TLocalContext = { error: (code: ProcedureCodes & number, message: string, meta?: object) => ProcedureError; }; export type TProcedureRegistration = { name: string; config: { description?: string; hook?: (ctx: TContext, args?: any) => any; schema?: { args?: TJSONSchema; data?: TJSONSchema; }; validation?: { args?: (args: any) => { errors?: any[]; }; }; } & TExtendedConfig; handler: (ctx: TContext, args?: any) => Promise; }; export declare function Procedures( /** * Optionally provided builder to register Procedures */ builder?: { onCreate?: (procedure: Prettify<{ name: string; handler: (ctx: Prettify, args?: any) => Promise; config: Prettify<{ description?: string; hook?: (ctx: Prettify, args?: any) => Promise; schema?: { args?: TJSONSchema; data?: TJSONSchema; }; validation?: { args?: (args: any) => { errors?: any[]; }; }; } & TExtendedConfig>; }>) => void; }): { getProcedures: () => Map, args?: any) => Promise; schema?: { args?: TJSONSchema; data?: TJSONSchema; }; validation?: { args?: (args: any) => { errors?: any[]; }; }; } & TExtendedConfig>; handler: (ctx: Prettify, args: any) => Promise; }>; Create: (name: TName, config: { description?: string; hook?: (ctx: Prettify, args: TSchemaLib) => Promise>; schema?: { args?: TArgs; data?: TData; }; } & TExtendedConfig, handler: (ctx: Prettify, args: TSchemaLib) => Promise>) => { [K in TName]: (ctx: Prettify, args: TSchemaLib) => Promise>; } & { procedure: (ctx: Prettify, args: TSchemaLib) => Promise>; info: { name: TName; description?: string; hook?: (ctx: Prettify, args: TSchemaLib) => Promise>; schema: { args?: TArgs; data?: TData; }; validation?: { args?: (args: any) => { errors?: any[]; }; }; } & TExtendedConfig; }; };