/** * Shortlinks serve HTTP app. * * Surfaces the standard health/ready/version probes plus a versioned `/v1` * REST API guarded by @hasna/contracts API-key auth. All reads/writes go * through the injected Postgres store — there is no sync engine or cache in * the service. */ import { Hono } from "hono"; import type { ShortlinksKeyStatusResolver } from "../client-types.js"; import type { PoolQueryClient } from "../generated/storage-kit/query.js"; import { PgShortlinksStore } from "../pg-store.js"; import { type DomainsProvisioningClient } from "../domains-provisioning.js"; export interface ServeAppDeps { client: PoolQueryClient; store: PgShortlinksStore; version: string; /** Server data backend label (`sqlite` | `postgresql`) for probe payloads. */ backend: string; signingSecret: string; /** Lifecycle lookup for presented API keys (wire `store.keyStatus`). */ keyStatus?: ShortlinksKeyStatusResolver; audit?: (event: unknown) => void; /** Trust X-Forwarded-Host only behind a separately authenticated proxy. */ trustForwardedHost?: boolean; /** Shared secret required before configured public routing hints are trusted. */ linkRouterSecret?: string; managedDefaultDomain?: string; reservedPathPrefixes?: Iterable; linkRouterAuthHeader?: string; publicHostHeader?: string; publicProtoHeader?: string; /** The only authority allowed to buy or configure custom domains. */ domains?: DomainsProvisioningClient; } export declare function createServeApp(deps: ServeAppDeps): Hono;