/// import Ajv from 'ajv'; import { FastifyReply } from 'fastify'; import { StatusCodes } from 'http-status-codes'; export declare type AllResponses = ApiResponse | ApiDataResponse | ApiErrorResponse | PolicyDeniedResponse | ValidationErrorResponse | UnauthorizedErrorResponse | ResourceNotFoundResponse | OperationNotAllowedResponse | QueryFailureResponse; export declare type ApiResponseBody = { body: null; }; export declare class ApiResponse { readonly statusCode: StatusCodes; error: any | null; data: any | null; constructor(statusCode: StatusCodes, error?: any | null, data?: any | null); send(reply: FastifyReply): FastifyReply; } export declare class ApiDataResponse extends ApiResponse { readonly statusCode: StatusCodes; data: T; constructor(statusCode: StatusCodes, data: T); } interface ApiError { type: string; message: string; context: Record; } export declare class ApiErrorResponse extends ApiResponse { readonly statusCode: StatusCodes; error: T; constructor(statusCode: StatusCodes, error: T); } interface PolicyDeniedError extends ApiError { type: 'DENIED_BY_POLICY'; } export declare class PolicyDeniedResponse extends ApiErrorResponse { constructor(context?: Record); } interface ValidationError extends ApiError { type: 'VALIDATION_ERROR'; errors: Ajv.ErrorObject[]; } export declare class ValidationErrorResponse extends ApiErrorResponse { constructor(errors: Ajv.ErrorObject[], context?: Record, message?: string); } interface UnauthorizedError extends ApiError { type: 'UNAUTHORIZED'; } export declare class UnauthorizedErrorResponse extends ApiErrorResponse { constructor(context?: Record); } interface ResourceNotFound extends ApiError { type: 'RESOURCE_NOT_FOUND'; } export declare class ResourceNotFoundResponse extends ApiErrorResponse { constructor(context?: Record); } interface OperationNotAllowed extends ApiError { type: 'OPERATION_NOT_ALLOWED'; } export declare class OperationNotAllowedResponse extends ApiErrorResponse { constructor(context?: Record); } interface QueryFailure extends ApiError { type: 'QUERY_FAILURE'; } export declare class QueryFailureResponse extends ApiErrorResponse { constructor(context?: Record); } export declare class TokenExpiredResponse extends ApiErrorResponse { constructor(); } export {};