pixai / src /shared /types.ts
ghuser1's picture
Upload 69 files
f703ba6 verified
export type ImageRatio = '1:1' | '3:2' | '2:3' | '4:3' | '3:4' | '16:9' | '9:16' | '21:9' | '9:21'
export type ImageQuality = 'auto' | 'low' | 'medium' | 'high'
export type ImageOutputFormat = 'png' | 'jpeg' | 'webp'
export type ImageBackground = 'auto' | 'opaque'
export type ImageModeration = 'auto' | 'low'
export type ImageInputFidelity = 'low' | 'high'
export type ImageStatus = 'succeeded' | 'failed'
export type GenerationRunStatus = 'running' | ImageStatus
export type GenerationMode = 'text-to-image' | 'image-to-image'
export type ReferenceImage = {
id: string
name: string
mimeType: string
filePath: string | null
fileSizeBytes: number
createdAt: string
}
export type ReferenceImageImportFile = {
name: string
mimeType: string
data: ArrayBuffer
}
export type GenerateImageInput = {
conversationId: string
prompt: string
model: string
ratio: ImageRatio
size: string
quality: ImageQuality
n: number
outputFormat?: ImageOutputFormat
outputCompression?: number
background?: ImageBackground
moderation?: ImageModeration
stream?: boolean
partialImages?: number
inputFidelity?: ImageInputFidelity
referenceImageIds?: string[]
}
export type PromptAssistInput = {
prompt?: string
hasReferenceImages?: boolean
}
export type Conversation = {
id: string
title: string
draftPrompt: string
model: string
ratio: ImageRatio
size: string
quality: ImageQuality
n: number
outputFormat: ImageOutputFormat
outputCompression: number | null
background: ImageBackground
moderation: ImageModeration
stream: boolean
partialImages: number | null
inputFidelity: ImageInputFidelity | null
autoSaveHistory: boolean
keepFailureDetails: boolean
referenceImages: ReferenceImage[]
createdAt: string
updatedAt: string
}
export type ConversationUpdate = Partial<
Pick<
Conversation,
| 'title'
| 'draftPrompt'
| 'model'
| 'ratio'
| 'size'
| 'quality'
| 'n'
| 'outputFormat'
| 'outputCompression'
| 'background'
| 'moderation'
| 'stream'
| 'partialImages'
| 'inputFidelity'
| 'autoSaveHistory'
| 'keepFailureDetails'
>
>
export type ConversationCreateInput = Partial<
Pick<
Conversation,
| 'model'
| 'ratio'
| 'size'
| 'quality'
| 'n'
| 'outputFormat'
| 'outputCompression'
| 'background'
| 'moderation'
| 'stream'
| 'partialImages'
| 'inputFidelity'
| 'autoSaveHistory'
| 'keepFailureDetails'
>
>
export type ImageHistoryItem = {
id: string
conversationId: string | null
runId: string | null
prompt: string
model: string
ratio: ImageRatio
size: string | null
quality: ImageQuality
requestIndex: number | null
durationMs: number | null
filePath: string | null
fileSizeBytes: number | null
status: ImageStatus
errorMessage: string | null
errorDetails: string | null
favorite: boolean
generationMode: GenerationMode
referenceImages: ReferenceImage[]
createdAt: string
}
export type GenerationRun = {
id: string
conversationId: string
prompt: string
model: string
ratio: ImageRatio
size: string | null
quality: ImageQuality
n: number
status: GenerationRunStatus
durationMs: number | null
errorMessage: string | null
errorDetails: string | null
generationMode: GenerationMode
referenceImages: ReferenceImage[]
createdAt: string
items: ImageHistoryItem[]
}
export type ProviderSettings = {
baseURL: string
apiKeyStored: boolean
defaultModel: string
promptModel: string
insecureStorage: boolean
}
export type ProviderSettingsUpdate = {
baseURL?: string
apiKey?: string | null
defaultModel?: string
promptModel?: string
}
export type GenerateImageResult = {
run: GenerationRun
items: ImageHistoryItem[]
errorMessage?: string
errorDetails?: string
canceled?: boolean
}
export type BatchDownloadResult = {
directory: string
saved: number
skipped: number
}
export type HistoryListOptions = {
query?: string
sort?: 'newest' | 'oldest'
favoritesOnly?: boolean
}
export type PixAIAPI = {
settings: {
get: () => Promise<ProviderSettings>
update: (input: ProviderSettingsUpdate) => Promise<ProviderSettings>
}
conversation: {
list: () => Promise<Conversation[]>
create: (input?: ConversationCreateInput) => Promise<Conversation>
update: (id: string, input: ConversationUpdate) => Promise<Conversation>
delete: (id: string) => Promise<void>
runs: (id: string) => Promise<GenerationRun[]>
}
image: {
generate: (input: GenerateImageInput) => Promise<GenerateImageResult>
cancel: (runId: string, requestIndex?: number) => Promise<void>
url: (id: string) => string
copy: (id: string) => Promise<void>
download: (id: string) => Promise<string | null>
downloadMany: (ids: string[]) => Promise<BatchDownloadResult | null>
}
prompt: {
inspire: (input?: PromptAssistInput) => Promise<string>
enrich: (input: PromptAssistInput & { prompt: string }) => Promise<string>
}
reference: {
importFiles: (conversationId: string, files: ReferenceImageImportFile[]) => Promise<ReferenceImage[]>
addFromHistory: (conversationId: string, historyId: string) => Promise<ReferenceImage[]>
remove: (conversationId: string, referenceImageId: string) => Promise<ReferenceImage[]>
reorder: (conversationId: string, referenceImageIds: string[]) => Promise<ReferenceImage[]>
url: (id: string) => string
}
history: {
list: (options?: HistoryListOptions) => Promise<ImageHistoryItem[]>
delete: (id: string) => Promise<void>
favorite: (id: string, favorite: boolean) => Promise<ImageHistoryItem>
}
shell: {
openPath: (filePath: string) => Promise<string>
}
}