export type RuntimeEnv = "browser" | "terminal" | "unknown"; export type TimerApi = Readonly<{ setTimeout: typeof setTimeout; clearTimeout: typeof clearTimeout; setInterval: typeof setInterval; clearInterval: typeof clearInterval; }>; export type RafApi = Readonly<{ request: (cb: FrameRequestCallback) => number; cancel: (id: number) => void; }>; export type ClipboardApi = Readonly<{ supported: boolean; canRead?: boolean; canWrite?: boolean; readText: () => Promise; writeText: (text: string) => Promise; }>; export type RuntimeOptions = Readonly<{ clipboard?: ClipboardApi; }>; export type Runtime = Readonly<{ env: Readonly<{ kind: RuntimeEnv; isBrowser: boolean; isTerminal: boolean; }>; now: () => number; timer: TimerApi; raf: RafApi; clipboard: ClipboardApi; getWindow: () => Window | null; getDocument: () => Document | null; measureText: (text: string, opts?: Readonly<{ font?: string; }>) => number | null; }>; export declare function createRuntime(kind?: RuntimeEnv, options?: RuntimeOptions): Runtime;