/**
* Copyright 2023 Kapeta Inc.
* SPDX-License-Identifier: BUSL-1.1
*/
///
import { UIPagePrompt } from './stormClient';
import { StormEvent, StormEventPage, StormImage, UIShell } from './events';
import { EventEmitter } from 'node:events';
export interface ImagePrompt {
name: string;
description: string;
source: 'local' | 'cdn' | 'example';
title: string;
type: 'image' | 'css' | 'javascript' | 'html';
url: string;
content: string;
}
type InitialPrompt = Omit & {
shellType?: 'public' | 'admin' | 'user';
};
export declare class PageQueue extends EventEmitter {
private readonly queue;
private readonly eventQueue;
private readonly handle;
private readonly systemId;
private readonly systemPrompt;
private readonly references;
private readonly pages;
private readonly images;
private uiShells;
private theme;
constructor(handle: string, systemId: string, systemPrompt: string, concurrency?: number);
on(event: 'error', listener: (error: unknown) => void): this;
on(event: 'event', listener: (data: StormEvent) => void | Promise): this;
on(event: 'page', listener: (data: StormEventPage) => void | Promise): this;
on(event: 'image', listener: (data: StormImage, source: ImagePrompt) => void | Promise): this;
emit(type: 'error', error: unknown): boolean;
emit(type: 'event', event: StormEvent): boolean;
emit(type: 'page', event: StormEventPage): boolean;
emit(type: 'image', event: StormImage, source: ImagePrompt): boolean;
addUiShell(uiShell: UIShell): void;
setUiTheme(theme: string): void;
private hasPrompt;
addPrompt(initialPrompt: InitialPrompt, conversationId?: string, overwrite?: boolean, globalEdit?: boolean): Promise;
/**
* Get the existing pages
*/
private getExistingPages;
private processPageEventWithReferences;
cancel(): void;
wait(): Promise;
private addImagePrompt;
generate(prompt: UIPagePrompt, conversationId: string): Promise;
private resolveReferences;
}
export {};