import { Static, TSchema } from "@sinclair/typebox"; export declare class ResponseError { status: T; data: { error: string; details?: P; }; constructor(status: T, message: string, details?: P); toJSON(): { status: T; data: { error: string; details?: P; }; }; throw(): void; } export declare class ResponseBadRequest extends ResponseError<400, T> { constructor(message: string, details?: T); } export declare class ResponseUnauthorized extends ResponseError<401, T> { constructor(message: string, details?: T); } export declare class ResponseForbidden extends ResponseError<403, T> { constructor(message: string, details?: T); } export declare class ResponseNotFound extends ResponseError<404, T> { constructor(message: string, details?: T); } export declare class ResponseConflict extends ResponseError<409, T> { constructor(message: string, details?: T); } export declare class ResponseUnprocessableEntity extends ResponseError<422, T> { constructor(message: string, details?: T); } export declare class ResponseTooManyRequests extends ResponseError<429, T> { constructor(message: string, details?: T); } export declare class ResponseInternalServerError extends ResponseError<500, T> { constructor(message: string, details?: T); } export declare class ResponseServiceUnavailable extends ResponseError<503, T> { constructor(message: string, details?: T); } export declare class Response { status: S; data: T; constructor(data: T, status: S); } export declare const ResponseErrorSchema: import("@sinclair/typebox").TObject<{ error: import("@sinclair/typebox").TString; details: import("@sinclair/typebox").TOptional; }>; export declare const ResponseSuccessSchema: import("@sinclair/typebox").TObject<{ success: import("@sinclair/typebox").TLiteral; }>; export declare const ResponseFailureSchema: import("@sinclair/typebox").TObject<{ success: import("@sinclair/typebox").TLiteral; error: import("@sinclair/typebox").TOptional; }>; export declare const useResponseErrorSchema: (code: Code, schema?: S) => { register: readonly [Code, import("@sinclair/typebox").TObject<{ error: import("@sinclair/typebox").TString; details: import("@sinclair/typebox").TOptional | (S extends import("@sinclair/typebox").TOptional ? import("@sinclair/typebox").TOptional : import("@sinclair/typebox").Ensure>); }>]; send:

>(message: string, details?: P) => ResponseError; }; export declare const useResponseSchema: (code: Code, schema: S) => { register: readonly [Code, S]; send:

>(data: P) => Response; }; export declare const buildResponseCodes: (successSchema: S, errorSchema?: E) => { readonly 200: S; readonly 400: import("@sinclair/typebox").TObject<{ error: import("@sinclair/typebox").TString; details: import("@sinclair/typebox").TOptional; }> | E; readonly 401: import("@sinclair/typebox").TObject<{ error: import("@sinclair/typebox").TString; details: import("@sinclair/typebox").TOptional; }> | E; readonly 403: import("@sinclair/typebox").TObject<{ error: import("@sinclair/typebox").TString; details: import("@sinclair/typebox").TOptional; }> | E; readonly 404: import("@sinclair/typebox").TObject<{ error: import("@sinclair/typebox").TString; details: import("@sinclair/typebox").TOptional; }> | E; readonly 409: import("@sinclair/typebox").TObject<{ error: import("@sinclair/typebox").TString; details: import("@sinclair/typebox").TOptional; }> | E; readonly 422: import("@sinclair/typebox").TObject<{ error: import("@sinclair/typebox").TString; details: import("@sinclair/typebox").TOptional; }> | E; readonly 429: import("@sinclair/typebox").TObject<{ error: import("@sinclair/typebox").TString; details: import("@sinclair/typebox").TOptional; }> | E; readonly 500: import("@sinclair/typebox").TObject<{ error: import("@sinclair/typebox").TString; details: import("@sinclair/typebox").TOptional; }> | E; readonly 503: import("@sinclair/typebox").TObject<{ error: import("@sinclair/typebox").TString; details: import("@sinclair/typebox").TOptional; }> | E; }; export declare const buildExtraResponseCodes: (successSchema: S, errorSchema?: E) => { 200: S; 400: import("@sinclair/typebox").TObject<{ error: import("@sinclair/typebox").TString; details: import("@sinclair/typebox").TOptional; }> | E; 401: import("@sinclair/typebox").TObject<{ error: import("@sinclair/typebox").TString; details: import("@sinclair/typebox").TOptional; }> | E; 403: import("@sinclair/typebox").TObject<{ error: import("@sinclair/typebox").TString; details: import("@sinclair/typebox").TOptional; }> | E; }; export declare const useResponseSchemas: (successSchema: S, errorSchema?: E) => { codes: { 200: S; 400: import("@sinclair/typebox").TObject<{ error: import("@sinclair/typebox").TString; details: import("@sinclair/typebox").TOptional | (E extends import("@sinclair/typebox").TOptional ? import("@sinclair/typebox").TOptional : import("@sinclair/typebox").Ensure>); }>; 401: import("@sinclair/typebox").TObject<{ error: import("@sinclair/typebox").TString; details: import("@sinclair/typebox").TOptional | (E extends import("@sinclair/typebox").TOptional ? import("@sinclair/typebox").TOptional : import("@sinclair/typebox").Ensure>); }>; 403: import("@sinclair/typebox").TObject<{ error: import("@sinclair/typebox").TString; details: import("@sinclair/typebox").TOptional | (E extends import("@sinclair/typebox").TOptional ? import("@sinclair/typebox").TOptional : import("@sinclair/typebox").Ensure>); }>; }; sendError:

(message: string, details?: P) => ResponseError<400, P>; sendSuccess:

(data: P) => Response; send: | Static>(data: T) => ReturnType<(

(message: string, details?: P) => ResponseError<400, P>)> | ReturnType<(

(data: P) => Response)>; }; export declare const responseSuccess: (data: T) => Response; export declare const response200: (data: T) => Response; export declare const response201: (data: T) => Response; export declare const response202: (data: T) => Response; export declare const response204: () => Response; export declare const responseNull: () => Response; export declare const responseError: (message: string, details?: T) => ResponseError<400, T>; export declare const responseOk: () => Response<{ success: boolean; }, 200>; export declare const responseFail: (error?: string) => Response<{ success: boolean; error: string; } | { success: boolean; error?: undefined; }, 400>; export declare const response400:

(message: string, details?: P) => ResponseError<400, P>; export declare const response401:

(message: string, details?: P) => ResponseError<401, P>; export declare const response403:

(message: string, details?: P) => ResponseError<403, P>; export declare const response404:

(message: string, details?: P) => ResponseError<404, P>; export declare const response409:

(message: string, details?: P) => ResponseError<409, P>; export declare const response422:

(message: string, details?: P) => ResponseError<422, P>; export declare const response429:

(message: string, details?: P) => ResponseError<429, P>; export declare const response500:

(message: string, details?: P) => ResponseError<500, P>; export declare const response503:

(message: string, details?: P) => ResponseError<503, P>; export declare const responseForbidden:

(message: string, details?: Static

) => ResponseError<403, (P & { params: []; })["static"]>; export declare const responseNotFound:

(message: string, details?: Static

) => ResponseError<404, (P & { params: []; })["static"]>; export declare const responseConflict:

(message: string, details?: Static

) => ResponseError<409, (P & { params: []; })["static"]>; export declare const responseUnprocessableEntity:

(message: string, details?: Static

) => ResponseError<422, (P & { params: []; })["static"]>; export declare const responseTooManyRequests:

(message: string, details?: Static

) => ResponseError<429, (P & { params: []; })["static"]>; export declare const responseBadRequest:

(message: string, details?: Static

) => ResponseError<400, (P & { params: []; })["static"]>; //# sourceMappingURL=response.d.ts.map