import { OpenAPIHono } from "@hono/zod-openapi"; import type { EventBus } from "@voyant-travel/core"; import type { PostgresJsDatabase } from "drizzle-orm/postgres-js"; import type { QuotesRouteRuntime } from "../route-runtime.js"; type Env = { Variables: { db: PostgresJsDatabase; userId?: string; eventBus?: EventBus; }; }; export declare function createQuoteRoutes(runtime?: QuotesRouteRuntime): OpenAPIHono & import("hono/types").MergeSchemaPath<{ "/quotes/:id/products": { $get: { input: { param: { id: string; }; }; output: { data: { id: string; quoteId: string; productId: string | null; supplierServiceId: string | null; nameSnapshot: string; description: string | null; quantity: number; unitPriceAmountCents: number | null; costAmountCents: number | null; currency: string | null; discountAmountCents: number | null; createdAt: string; updatedAt: string; }[]; }; outputFormat: "json"; status: 200; }; }; } & { "/quotes/:id/products": { $post: { input: { param: { id: string; }; } & { json: { nameSnapshot: string; productId?: string | null | undefined; supplierServiceId?: string | null | undefined; description?: string | null | undefined; quantity?: number | undefined; unitPriceAmountCents?: number | null | undefined; costAmountCents?: number | null | undefined; currency?: string | null | undefined; discountAmountCents?: number | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { json: { nameSnapshot: string; productId?: string | null | undefined; supplierServiceId?: string | null | undefined; description?: string | null | undefined; quantity?: number | undefined; unitPriceAmountCents?: number | null | undefined; costAmountCents?: number | null | undefined; currency?: string | null | undefined; discountAmountCents?: number | null | undefined; }; }; output: { data: { id: string; quoteId: string; productId: string | null; supplierServiceId: string | null; nameSnapshot: string; description: string | null; quantity: number; unitPriceAmountCents: number | null; costAmountCents: number | null; currency: string | null; discountAmountCents: number | null; createdAt: string; updatedAt: string; }; }; outputFormat: "json"; status: 201; }; }; } & { "/quote-products/:id": { $patch: { input: { param: { id: string; }; } & { json: { productId?: string | null | undefined; supplierServiceId?: string | null | undefined; nameSnapshot?: string | undefined; description?: string | null | undefined; quantity?: number | undefined; unitPriceAmountCents?: number | null | undefined; costAmountCents?: number | null | undefined; currency?: string | null | undefined; discountAmountCents?: number | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { json: { productId?: string | null | undefined; supplierServiceId?: string | null | undefined; nameSnapshot?: string | undefined; description?: string | null | undefined; quantity?: number | undefined; unitPriceAmountCents?: number | null | undefined; costAmountCents?: number | null | undefined; currency?: string | null | undefined; discountAmountCents?: number | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; } & { json: { productId?: string | null | undefined; supplierServiceId?: string | null | undefined; nameSnapshot?: string | undefined; description?: string | null | undefined; quantity?: number | undefined; unitPriceAmountCents?: number | null | undefined; costAmountCents?: number | null | undefined; currency?: string | null | undefined; discountAmountCents?: number | null | undefined; }; }; output: { data: { id: string; quoteId: string; productId: string | null; supplierServiceId: string | null; nameSnapshot: string; description: string | null; quantity: number; unitPriceAmountCents: number | null; costAmountCents: number | null; currency: string | null; discountAmountCents: number | null; createdAt: string; updatedAt: string; }; }; outputFormat: "json"; status: 200; }; }; } & { "/quote-products/:id": { $delete: { input: { param: { id: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; }; output: { success: true; }; outputFormat: "json"; status: 200; }; }; }, "/"> & import("hono/types").MergeSchemaPath<{ "/quotes/:id/participants": { $get: { input: { param: { id: string; }; }; output: { data: { id: string; quoteId: string; personId: string; role: "traveler" | "booker" | "decision_maker" | "finance" | "other"; isPrimary: boolean; createdAt: string; }[]; }; outputFormat: "json"; status: 200; }; }; } & { "/quotes/:id/participants": { $post: { input: { param: { id: string; }; } & { json: { personId: string; role?: "traveler" | "booker" | "decision_maker" | "finance" | "other" | undefined; isPrimary?: boolean | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { json: { personId: string; role?: "traveler" | "booker" | "decision_maker" | "finance" | "other" | undefined; isPrimary?: boolean | undefined; }; }; output: { data: { id: string; quoteId: string; personId: string; role: "traveler" | "booker" | "decision_maker" | "finance" | "other"; isPrimary: boolean; createdAt: string; }; }; outputFormat: "json"; status: 201; }; }; } & { "/quote-participants/:id": { $delete: { input: { param: { id: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; }; output: { success: true; }; outputFormat: "json"; status: 200; }; }; }, "/"> & import("hono/types").MergeSchemaPath<{ "/quotes": { $get: { input: { query: { limit?: unknown; offset?: unknown; personId?: string | undefined; organizationId?: string | undefined; pipelineId?: string | undefined; stageId?: string | undefined; ownerId?: string | undefined; status?: "open" | "won" | "lost" | "archived" | undefined; search?: string | undefined; }; }; output: { data: { id: string; title: string; personId: string | null; organizationId: string | null; pipelineId: string; stageId: string; ownerId: string | null; status: "open" | "won" | "lost" | "archived"; acceptedVersionId: string | null; valueAmountCents: number | null; valueCurrency: string | null; paxCount: number | null; expectedCloseDate: string | null; source: string | null; sourceRef: string | null; lostReason: string | null; tags: string[]; customFields: { [x: string]: { [x: string]: import("hono/utils/types").JSONValue; }; }; description: string | null; createdBy: string | null; updatedBy: string | null; createdAt: string; updatedAt: string; stageChangedAt: string; closedAt: string | null; }[]; total: number; limit: number; offset: number; }; outputFormat: "json"; status: 200; }; }; } & { "/quotes": { $post: { input: { json: { title: string; pipelineId: string; stageId: string; personId?: string | null | undefined; organizationId?: string | null | undefined; ownerId?: string | null | undefined; status?: "open" | "won" | "lost" | "archived" | undefined; acceptedVersionId?: string | null | undefined; valueAmountCents?: number | null | undefined; valueCurrency?: string | null | undefined; paxCount?: number | null | undefined; description?: string | null | undefined; expectedCloseDate?: string | null | undefined; source?: string | null | undefined; sourceRef?: string | null | undefined; lostReason?: string | null | undefined; tags?: string[] | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { json: { title: string; pipelineId: string; stageId: string; personId?: string | null | undefined; organizationId?: string | null | undefined; ownerId?: string | null | undefined; status?: "open" | "won" | "lost" | "archived" | undefined; acceptedVersionId?: string | null | undefined; valueAmountCents?: number | null | undefined; valueCurrency?: string | null | undefined; paxCount?: number | null | undefined; description?: string | null | undefined; expectedCloseDate?: string | null | undefined; source?: string | null | undefined; sourceRef?: string | null | undefined; lostReason?: string | null | undefined; tags?: string[] | undefined; }; }; output: { data: { id: string; title: string; personId: string | null; organizationId: string | null; pipelineId: string; stageId: string; ownerId: string | null; status: "open" | "won" | "lost" | "archived"; acceptedVersionId: string | null; valueAmountCents: number | null; valueCurrency: string | null; paxCount: number | null; expectedCloseDate: string | null; source: string | null; sourceRef: string | null; lostReason: string | null; tags: string[]; customFields: { [x: string]: { [x: string]: import("hono/utils/types").JSONValue; }; }; description: string | null; createdBy: string | null; updatedBy: string | null; createdAt: string; updatedAt: string; stageChangedAt: string; closedAt: string | null; }; }; outputFormat: "json"; status: 201; }; }; } & { "/quotes/:id": { $get: { input: { param: { id: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; }; output: { data: { id: string; title: string; personId: string | null; organizationId: string | null; pipelineId: string; stageId: string; ownerId: string | null; status: "open" | "won" | "lost" | "archived"; acceptedVersionId: string | null; valueAmountCents: number | null; valueCurrency: string | null; paxCount: number | null; expectedCloseDate: string | null; source: string | null; sourceRef: string | null; lostReason: string | null; tags: string[]; customFields: { [x: string]: { [x: string]: import("hono/utils/types").JSONValue; }; }; description: string | null; createdBy: string | null; updatedBy: string | null; createdAt: string; updatedAt: string; stageChangedAt: string; closedAt: string | null; }; }; outputFormat: "json"; status: 200; }; }; } & { "/quotes/:id": { $patch: { input: { param: { id: string; }; } & { json: { title?: string | undefined; personId?: string | null | undefined; organizationId?: string | null | undefined; pipelineId?: string | undefined; stageId?: string | undefined; ownerId?: string | null | undefined; status?: "open" | "won" | "lost" | "archived" | undefined; acceptedVersionId?: string | null | undefined; valueAmountCents?: number | null | undefined; valueCurrency?: string | null | undefined; paxCount?: number | null | undefined; description?: string | null | undefined; expectedCloseDate?: string | null | undefined; source?: string | null | undefined; sourceRef?: string | null | undefined; lostReason?: string | null | undefined; tags?: string[] | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { json: { title?: string | undefined; personId?: string | null | undefined; organizationId?: string | null | undefined; pipelineId?: string | undefined; stageId?: string | undefined; ownerId?: string | null | undefined; status?: "open" | "won" | "lost" | "archived" | undefined; acceptedVersionId?: string | null | undefined; valueAmountCents?: number | null | undefined; valueCurrency?: string | null | undefined; paxCount?: number | null | undefined; description?: string | null | undefined; expectedCloseDate?: string | null | undefined; source?: string | null | undefined; sourceRef?: string | null | undefined; lostReason?: string | null | undefined; tags?: string[] | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; } & { json: { title?: string | undefined; personId?: string | null | undefined; organizationId?: string | null | undefined; pipelineId?: string | undefined; stageId?: string | undefined; ownerId?: string | null | undefined; status?: "open" | "won" | "lost" | "archived" | undefined; acceptedVersionId?: string | null | undefined; valueAmountCents?: number | null | undefined; valueCurrency?: string | null | undefined; paxCount?: number | null | undefined; description?: string | null | undefined; expectedCloseDate?: string | null | undefined; source?: string | null | undefined; sourceRef?: string | null | undefined; lostReason?: string | null | undefined; tags?: string[] | undefined; }; }; output: { data: { id: string; title: string; personId: string | null; organizationId: string | null; pipelineId: string; stageId: string; ownerId: string | null; status: "open" | "won" | "lost" | "archived"; acceptedVersionId: string | null; valueAmountCents: number | null; valueCurrency: string | null; paxCount: number | null; expectedCloseDate: string | null; source: string | null; sourceRef: string | null; lostReason: string | null; tags: string[]; customFields: { [x: string]: { [x: string]: import("hono/utils/types").JSONValue; }; }; description: string | null; createdBy: string | null; updatedBy: string | null; createdAt: string; updatedAt: string; stageChangedAt: string; closedAt: string | null; }; }; outputFormat: "json"; status: 200; }; }; } & { "/quotes/:id": { $delete: { input: { param: { id: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; }; output: { success: true; }; outputFormat: "json"; status: 200; }; }; }, "/">, "/">; export declare const quoteRoutes: OpenAPIHono & import("hono/types").MergeSchemaPath<{ "/quotes/:id/products": { $get: { input: { param: { id: string; }; }; output: { data: { id: string; quoteId: string; productId: string | null; supplierServiceId: string | null; nameSnapshot: string; description: string | null; quantity: number; unitPriceAmountCents: number | null; costAmountCents: number | null; currency: string | null; discountAmountCents: number | null; createdAt: string; updatedAt: string; }[]; }; outputFormat: "json"; status: 200; }; }; } & { "/quotes/:id/products": { $post: { input: { param: { id: string; }; } & { json: { nameSnapshot: string; productId?: string | null | undefined; supplierServiceId?: string | null | undefined; description?: string | null | undefined; quantity?: number | undefined; unitPriceAmountCents?: number | null | undefined; costAmountCents?: number | null | undefined; currency?: string | null | undefined; discountAmountCents?: number | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { json: { nameSnapshot: string; productId?: string | null | undefined; supplierServiceId?: string | null | undefined; description?: string | null | undefined; quantity?: number | undefined; unitPriceAmountCents?: number | null | undefined; costAmountCents?: number | null | undefined; currency?: string | null | undefined; discountAmountCents?: number | null | undefined; }; }; output: { data: { id: string; quoteId: string; productId: string | null; supplierServiceId: string | null; nameSnapshot: string; description: string | null; quantity: number; unitPriceAmountCents: number | null; costAmountCents: number | null; currency: string | null; discountAmountCents: number | null; createdAt: string; updatedAt: string; }; }; outputFormat: "json"; status: 201; }; }; } & { "/quote-products/:id": { $patch: { input: { param: { id: string; }; } & { json: { productId?: string | null | undefined; supplierServiceId?: string | null | undefined; nameSnapshot?: string | undefined; description?: string | null | undefined; quantity?: number | undefined; unitPriceAmountCents?: number | null | undefined; costAmountCents?: number | null | undefined; currency?: string | null | undefined; discountAmountCents?: number | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { json: { productId?: string | null | undefined; supplierServiceId?: string | null | undefined; nameSnapshot?: string | undefined; description?: string | null | undefined; quantity?: number | undefined; unitPriceAmountCents?: number | null | undefined; costAmountCents?: number | null | undefined; currency?: string | null | undefined; discountAmountCents?: number | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; } & { json: { productId?: string | null | undefined; supplierServiceId?: string | null | undefined; nameSnapshot?: string | undefined; description?: string | null | undefined; quantity?: number | undefined; unitPriceAmountCents?: number | null | undefined; costAmountCents?: number | null | undefined; currency?: string | null | undefined; discountAmountCents?: number | null | undefined; }; }; output: { data: { id: string; quoteId: string; productId: string | null; supplierServiceId: string | null; nameSnapshot: string; description: string | null; quantity: number; unitPriceAmountCents: number | null; costAmountCents: number | null; currency: string | null; discountAmountCents: number | null; createdAt: string; updatedAt: string; }; }; outputFormat: "json"; status: 200; }; }; } & { "/quote-products/:id": { $delete: { input: { param: { id: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; }; output: { success: true; }; outputFormat: "json"; status: 200; }; }; }, "/"> & import("hono/types").MergeSchemaPath<{ "/quotes/:id/participants": { $get: { input: { param: { id: string; }; }; output: { data: { id: string; quoteId: string; personId: string; role: "traveler" | "booker" | "decision_maker" | "finance" | "other"; isPrimary: boolean; createdAt: string; }[]; }; outputFormat: "json"; status: 200; }; }; } & { "/quotes/:id/participants": { $post: { input: { param: { id: string; }; } & { json: { personId: string; role?: "traveler" | "booker" | "decision_maker" | "finance" | "other" | undefined; isPrimary?: boolean | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { json: { personId: string; role?: "traveler" | "booker" | "decision_maker" | "finance" | "other" | undefined; isPrimary?: boolean | undefined; }; }; output: { data: { id: string; quoteId: string; personId: string; role: "traveler" | "booker" | "decision_maker" | "finance" | "other"; isPrimary: boolean; createdAt: string; }; }; outputFormat: "json"; status: 201; }; }; } & { "/quote-participants/:id": { $delete: { input: { param: { id: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; }; output: { success: true; }; outputFormat: "json"; status: 200; }; }; }, "/"> & import("hono/types").MergeSchemaPath<{ "/quotes": { $get: { input: { query: { limit?: unknown; offset?: unknown; personId?: string | undefined; organizationId?: string | undefined; pipelineId?: string | undefined; stageId?: string | undefined; ownerId?: string | undefined; status?: "open" | "won" | "lost" | "archived" | undefined; search?: string | undefined; }; }; output: { data: { id: string; title: string; personId: string | null; organizationId: string | null; pipelineId: string; stageId: string; ownerId: string | null; status: "open" | "won" | "lost" | "archived"; acceptedVersionId: string | null; valueAmountCents: number | null; valueCurrency: string | null; paxCount: number | null; expectedCloseDate: string | null; source: string | null; sourceRef: string | null; lostReason: string | null; tags: string[]; customFields: { [x: string]: { [x: string]: import("hono/utils/types").JSONValue; }; }; description: string | null; createdBy: string | null; updatedBy: string | null; createdAt: string; updatedAt: string; stageChangedAt: string; closedAt: string | null; }[]; total: number; limit: number; offset: number; }; outputFormat: "json"; status: 200; }; }; } & { "/quotes": { $post: { input: { json: { title: string; pipelineId: string; stageId: string; personId?: string | null | undefined; organizationId?: string | null | undefined; ownerId?: string | null | undefined; status?: "open" | "won" | "lost" | "archived" | undefined; acceptedVersionId?: string | null | undefined; valueAmountCents?: number | null | undefined; valueCurrency?: string | null | undefined; paxCount?: number | null | undefined; description?: string | null | undefined; expectedCloseDate?: string | null | undefined; source?: string | null | undefined; sourceRef?: string | null | undefined; lostReason?: string | null | undefined; tags?: string[] | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { json: { title: string; pipelineId: string; stageId: string; personId?: string | null | undefined; organizationId?: string | null | undefined; ownerId?: string | null | undefined; status?: "open" | "won" | "lost" | "archived" | undefined; acceptedVersionId?: string | null | undefined; valueAmountCents?: number | null | undefined; valueCurrency?: string | null | undefined; paxCount?: number | null | undefined; description?: string | null | undefined; expectedCloseDate?: string | null | undefined; source?: string | null | undefined; sourceRef?: string | null | undefined; lostReason?: string | null | undefined; tags?: string[] | undefined; }; }; output: { data: { id: string; title: string; personId: string | null; organizationId: string | null; pipelineId: string; stageId: string; ownerId: string | null; status: "open" | "won" | "lost" | "archived"; acceptedVersionId: string | null; valueAmountCents: number | null; valueCurrency: string | null; paxCount: number | null; expectedCloseDate: string | null; source: string | null; sourceRef: string | null; lostReason: string | null; tags: string[]; customFields: { [x: string]: { [x: string]: import("hono/utils/types").JSONValue; }; }; description: string | null; createdBy: string | null; updatedBy: string | null; createdAt: string; updatedAt: string; stageChangedAt: string; closedAt: string | null; }; }; outputFormat: "json"; status: 201; }; }; } & { "/quotes/:id": { $get: { input: { param: { id: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; }; output: { data: { id: string; title: string; personId: string | null; organizationId: string | null; pipelineId: string; stageId: string; ownerId: string | null; status: "open" | "won" | "lost" | "archived"; acceptedVersionId: string | null; valueAmountCents: number | null; valueCurrency: string | null; paxCount: number | null; expectedCloseDate: string | null; source: string | null; sourceRef: string | null; lostReason: string | null; tags: string[]; customFields: { [x: string]: { [x: string]: import("hono/utils/types").JSONValue; }; }; description: string | null; createdBy: string | null; updatedBy: string | null; createdAt: string; updatedAt: string; stageChangedAt: string; closedAt: string | null; }; }; outputFormat: "json"; status: 200; }; }; } & { "/quotes/:id": { $patch: { input: { param: { id: string; }; } & { json: { title?: string | undefined; personId?: string | null | undefined; organizationId?: string | null | undefined; pipelineId?: string | undefined; stageId?: string | undefined; ownerId?: string | null | undefined; status?: "open" | "won" | "lost" | "archived" | undefined; acceptedVersionId?: string | null | undefined; valueAmountCents?: number | null | undefined; valueCurrency?: string | null | undefined; paxCount?: number | null | undefined; description?: string | null | undefined; expectedCloseDate?: string | null | undefined; source?: string | null | undefined; sourceRef?: string | null | undefined; lostReason?: string | null | undefined; tags?: string[] | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { json: { title?: string | undefined; personId?: string | null | undefined; organizationId?: string | null | undefined; pipelineId?: string | undefined; stageId?: string | undefined; ownerId?: string | null | undefined; status?: "open" | "won" | "lost" | "archived" | undefined; acceptedVersionId?: string | null | undefined; valueAmountCents?: number | null | undefined; valueCurrency?: string | null | undefined; paxCount?: number | null | undefined; description?: string | null | undefined; expectedCloseDate?: string | null | undefined; source?: string | null | undefined; sourceRef?: string | null | undefined; lostReason?: string | null | undefined; tags?: string[] | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; } & { json: { title?: string | undefined; personId?: string | null | undefined; organizationId?: string | null | undefined; pipelineId?: string | undefined; stageId?: string | undefined; ownerId?: string | null | undefined; status?: "open" | "won" | "lost" | "archived" | undefined; acceptedVersionId?: string | null | undefined; valueAmountCents?: number | null | undefined; valueCurrency?: string | null | undefined; paxCount?: number | null | undefined; description?: string | null | undefined; expectedCloseDate?: string | null | undefined; source?: string | null | undefined; sourceRef?: string | null | undefined; lostReason?: string | null | undefined; tags?: string[] | undefined; }; }; output: { data: { id: string; title: string; personId: string | null; organizationId: string | null; pipelineId: string; stageId: string; ownerId: string | null; status: "open" | "won" | "lost" | "archived"; acceptedVersionId: string | null; valueAmountCents: number | null; valueCurrency: string | null; paxCount: number | null; expectedCloseDate: string | null; source: string | null; sourceRef: string | null; lostReason: string | null; tags: string[]; customFields: { [x: string]: { [x: string]: import("hono/utils/types").JSONValue; }; }; description: string | null; createdBy: string | null; updatedBy: string | null; createdAt: string; updatedAt: string; stageChangedAt: string; closedAt: string | null; }; }; outputFormat: "json"; status: 200; }; }; } & { "/quotes/:id": { $delete: { input: { param: { id: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; }; output: { success: true; }; outputFormat: "json"; status: 200; }; }; }, "/">, "/">; export {};