export interface UserQuestionOption {
    label: string;
    description?: string;
    recommended?: boolean;
}
export interface UserQuestion {
    id: string;
    header: string;
    question: string;
    multiSelect?: boolean;
    options?: UserQuestionOption[];
    allowFreeformInput?: boolean;
}
export interface UserQuestionAnswer {
    selected: string[];
    freeText: string | null;
    skipped: boolean;
}
export interface UserQuestionRequest {
    id: string;
    sessionId: string;
    userId: string | null;
    requestedBy: string | null;
    title: string;
    questions: UserQuestion[];
    createdAt: string;
    expiresAt: string;
    status: "pending" | "submitted" | "cancelled" | "timeout";
}
export interface UserQuestionResult {
    answers: Record<string, UserQuestionAnswer>;
}
export interface UserQuestionServiceOptions {
    defaultTimeoutMs?: number;
    onRequest?: (request: UserQuestionRequest) => void;
    onResolved?: (request: UserQuestionRequest) => void;
}
export declare class UserQuestionService {
    private readonly pending;
    private readonly defaultTimeoutMs;
    private readonly onRequest?;
    private readonly onResolved?;
    constructor(options?: UserQuestionServiceOptions);
    ask(input: {
        sessionId: string;
        userId?: string | null;
        requestedBy?: string | null;
        title?: string;
        questions: UserQuestion[];
        timeoutMs?: number;
    }): Promise<UserQuestionResult | null>;
    listPending(sessionId?: string, userId?: string | null): UserQuestionRequest[];
    submit(requestId: string, result: UserQuestionResult, userId?: string | null): boolean;
    cancel(requestId: string, userId?: string | null): boolean;
    private resolveRequest;
}
//# sourceMappingURL=user-questions.d.ts.map