import { type Express, type RequestHandler } from "express"; import type { TollgateConfig } from "./config.js"; import { type PaymentLayer } from "./payment.js"; import type { McpPaymentLayer } from "./mcp/payment.js"; import { type GasFloorService } from "./gas-floor.js"; export interface AppOptions { config?: TollgateConfig; /** Inject HTTP payment layer (tests). When omitted, built from config. */ paymentLayer?: PaymentLayer; /** Inject MCP payment layer (tests). */ mcpPaymentLayer?: McpPaymentLayer; /** Inject upstream handler (tests). */ upstreamHandler?: RequestHandler; /** Inject paid GET /v1/fetch-md handler (tests). */ fetchMdHandler?: RequestHandler; /** Skip mounting MCP transports (unit tests that only need HTTP). */ disableMcp?: boolean; /** Inject gas-floor service (tests). */ gasFloor?: GasFloorService; } export interface CreatedApp { app: Express; config: TollgateConfig; payment: PaymentLayer; mcpPayment?: McpPaymentLayer; publicDir: string; gasFloor: GasFloorService; } export declare function createApp(options?: AppOptions): Promise;