///
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 {};