import { Buffer } from 'buffer' import { FastifyInstance } from './instance' import { FastifyBaseLogger } from './logger' import { FastifyRequest, RequestRouteOptions } from './request' import { RouteGenericInterface } from './route' import { FastifySchema } from './schema' import { CallSerializerTypeProvider, FastifyReplyType, FastifyTypeProvider, FastifyTypeProviderDefault, ResolveFastifyReplyType } from './type-provider' import { CodeToReplyKey, ContextConfigDefault, HttpHeader, HttpKeys, RawReplyDefaultExpression, RawRequestDefaultExpression, RawServerBase, RawServerDefault, ReplyDefault, ReplyKeysToCodes } from './utils' export interface ReplyGenericInterface { Reply?: ReplyDefault; } type HttpCodesReplyType = Partial> type ReplyTypeConstrainer> = RouteGenericReply extends HttpCodesReplyType & Record, never> ? Code extends keyof RouteGenericReply ? RouteGenericReply[Code] : CodeToReplyKey extends keyof RouteGenericReply ? RouteGenericReply[CodeToReplyKey] : unknown : RouteGenericReply export type ResolveReplyTypeWithRouteGeneric, SchemaCompiler extends FastifySchema = FastifySchema, TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault> = Code extends keyof SchemaCompiler['response'] ? CallSerializerTypeProvider : ResolveFastifyReplyType }> /** * FastifyReply is an instance of the standard http or http2 reply types. * It defaults to http.ServerResponse, and it also extends the relative reply object. */ export interface FastifyReply< RouteGeneric extends RouteGenericInterface = RouteGenericInterface, RawServer extends RawServerBase = RawServerDefault, RawRequest extends RawRequestDefaultExpression = RawRequestDefaultExpression, RawReply extends RawReplyDefaultExpression = RawReplyDefaultExpression, ContextConfig = ContextConfigDefault, SchemaCompiler extends FastifySchema = FastifySchema, TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault, ReplyType extends FastifyReplyType = ResolveFastifyReplyType > { readonly routeOptions: Readonly> raw: RawReply; elapsedTime: number; log: FastifyBaseLogger; request: FastifyRequest; server: FastifyInstance; code>(statusCode: Code): FastifyReply>; status>(statusCode: Code): FastifyReply>; statusCode: number; sent: boolean; send(payload?: ReplyType): FastifyReply; header(key: HttpHeader, value: any): FastifyReply; headers(values: Partial>): FastifyReply; getHeader(key: HttpHeader): number | string | string[] | undefined; getHeaders(): Record; removeHeader(key: HttpHeader): FastifyReply; hasHeader(key: HttpHeader): boolean; redirect(url: string, statusCode?: number): FastifyReply; writeEarlyHints(hints: Record, callback?: () => void): void; hijack(): FastifyReply; callNotFound(): void; type(contentType: string): FastifyReply; serializer(fn: (payload: any) => string): FastifyReply; serialize(payload: any): string | ArrayBuffer | Buffer; // Serialization Methods getSerializationFunction(httpStatus: string, contentType?: string): ((payload: { [key: string]: unknown }) => string) | undefined; getSerializationFunction(schema: { [key: string]: unknown }): ((payload: { [key: string]: unknown }) => string) | undefined; compileSerializationSchema(schema: { [key: string]: unknown }, httpStatus?: string, contentType?: string): (payload: { [key: string]: unknown }) => string; serializeInput(input: { [key: string]: unknown }, schema: { [key: string]: unknown }, httpStatus?: string, contentType?: string): string; serializeInput(input: { [key: string]: unknown }, httpStatus: string, contentType?: string): unknown; then(fulfilled: () => void, rejected: (err: Error) => void): void; trailer: ( key: string, fn: ((reply: FastifyReply, payload: string | Buffer | null) => Promise) | ((reply: FastifyReply, payload: string | Buffer | null, done: (err: Error | null, value?: string) => void) => void) ) => FastifyReply; hasTrailer(key: string): boolean; removeTrailer(key: string): FastifyReply; }