import type { AnyDrizzleDb } from "@voyant-travel/db"; import type { QuoteProposalRoutesOptions, QuoteVersionSnapshotRoutesOptions } from "./proposal-routes.js"; import type { ResolveQuoteParticipantPersonById } from "./route-runtime.js"; /** Node-host behavior required by the package-owned Quotes module factory. */ export interface QuotesRuntime { resolveParticipantPersonById: ResolveQuoteParticipantPersonById; } /** Deployment behavior required by the proposal extension. */ export type QuotesProposalRuntime = QuoteProposalRoutesOptions; /** Deployment behavior required by the quote-version snapshot extension. */ export type QuotesSnapshotRuntime = QuoteVersionSnapshotRoutesOptions; export interface QuoteProposalNotificationInput { idempotencyKey: string; templateSlug: string; to: string; channel: "email" | "sms"; data: Record; quoteId: string; quoteVersionId: string; } export interface QuoteProposalNotificationDelivery { id: string; status: "pending" | "sent" | "failed" | "cancelled"; channel: "email" | "sms"; provider: string; providerMessageId: string | null; toAddress: string; } /** Notifications-owned delivery behavior consumed by the Quotes proposal composer. */ export interface QuotesNotificationsRuntime { /** Exact graph-selected durable provider identities available to this adapter. */ readonly providerNames: readonly string[]; /** * Atomically enqueue one vetted-template proposal notification. Provider * dispatch is worker-only and uses the selected durable provider runtime. */ enqueueQuoteProposal(db: AnyDrizzleDb, input: QuoteProposalNotificationInput): Promise; } export declare const quotesRuntimePort: import("@voyant-travel/core/project").VoyantPort; export declare const quotesProposalRuntimePort: import("@voyant-travel/core/project").VoyantPort; export declare const quotesSnapshotRuntimePort: import("@voyant-travel/core/project").VoyantPort; export declare const quotesNotificationsRuntimePort: import("@voyant-travel/core/project").VoyantPort;