export interface Config { auth_required: boolean | undefined; auth_message: string; components: any[]; css: string | null; js: string | null; head: string | null; dependencies: any[]; dev_mode: boolean; enable_queue: boolean; layout: any; mode: "blocks" | "interface"; root: string; root_url?: string; theme: string; title: string; version: string; space_id: string | null; is_colab: boolean; show_api: boolean; stylesheets: string[]; path: string; protocol?: "sse_v1" | "sse" | "ws"; } export interface Payload { data: unknown[]; fn_index?: number; event_data?: unknown; time?: Date; } export interface PostResponse { error?: string; [x: string]: any; } export interface UploadResponse { error?: string; files?: string[]; } export interface Status { queue: boolean; code?: string; success?: boolean; stage: "pending" | "error" | "complete" | "generating"; broken?: boolean; size?: number; position?: number; eta?: number; message?: string; progress_data?: { progress: number | null; index: number | null; length: number | null; unit: string | null; desc: string | null; }[]; time?: Date; } export interface LogMessage { log: string; level: "warning" | "info"; } export interface SpaceStatusNormal { status: "sleeping" | "running" | "building" | "error" | "stopped"; detail: | "SLEEPING" | "RUNNING" | "RUNNING_BUILDING" | "BUILDING" | "NOT_FOUND"; load_status: "pending" | "error" | "complete" | "generating"; message: string; } export interface SpaceStatusError { status: "space_error" | "paused"; detail: | "NO_APP_FILE" | "CONFIG_ERROR" | "BUILD_ERROR" | "RUNTIME_ERROR" | "PAUSED"; load_status: "error"; message: string; discussions_enabled: boolean; } export type SpaceStatus = SpaceStatusNormal | SpaceStatusError; export type status_callback_function = (a: Status) => void; export type SpaceStatusCallback = (a: SpaceStatus) => void; export type EventType = "data" | "status" | "log"; export interface EventMap { data: Payload; status: Status; log: LogMessage; } export type Event = { [P in K]: EventMap[P] & { type: P; endpoint: string; fn_index: number }; }[K]; export type EventListener = (event: Event) => void; export type ListenerMap = { [P in K]?: EventListener[]; }; export interface FileData { name: string; orig_name?: string; size?: number; data: string; blob?: File; is_file?: boolean; mime_type?: string; alt_text?: string; }