import { Router, type Request, type Response } from 'express';
import { TelemetryService } from '../services/TelemetryService';
type DemoRouterSessionPayload = {
    sessionId: string;
    sessionUrl: string;
    createdAt: number;
    expiresAt: number;
};
type DemoRouterSessionManager = {
    createSession: (userId: string) => Promise<DemoRouterSessionPayload>;
    getSession: (sessionId: string) => {
        sessionId: string;
        userId: string;
        createdAt: number;
        expiresAt: number;
    } | null;
    getSessionOwnerUserId: (sessionId: string) => string | null;
    getSessionUrl: (sessionId: string) => string;
    getActiveSessionCount: () => number;
    getTemplateProjectPath: () => string;
};
type DemoRouterOptions = {
    requireSignedInUsers: boolean;
    getActiveDemoSessionIdForRequest?: (req: Request) => string | null;
    storeActiveDemoSessionIdForRequest?: (req: Request, res: Response, demoSessionId: string) => void;
    clearActiveDemoSessionIdForRequest?: (req: Request, res: Response) => void;
    telemetry?: TelemetryService;
    deploymentEnv?: string;
};
export declare const resolveUserId: (authHeader: string | undefined, requireSignedInUsers: boolean) => Promise<string>;
export declare const createDemoRouter: (sessionManager: DemoRouterSessionManager, options: DemoRouterOptions) => Router;
export {};
//# sourceMappingURL=demo.d.ts.map