56 lines
1.1 KiB
TypeScript
56 lines
1.1 KiB
TypeScript
|
|
export enum AppState {
|
|
SETUP = 'SETUP',
|
|
CREATION = 'CREATION',
|
|
RIGGING = 'RIGGING',
|
|
STUDIO = 'STUDIO',
|
|
}
|
|
|
|
export interface Rect {
|
|
x: number;
|
|
y: number;
|
|
w: number;
|
|
h: number;
|
|
}
|
|
|
|
export interface AvatarConfig {
|
|
imageUrl: string;
|
|
name: string;
|
|
description: string;
|
|
leftEye?: Rect;
|
|
rightEye?: Rect;
|
|
mouth?: Rect;
|
|
skinColor?: string;
|
|
textureClosedEye?: Rect;
|
|
textureOpenMouth?: Rect;
|
|
mainBody?: Rect;
|
|
chromaKeyColor?: string;
|
|
}
|
|
|
|
export interface TrackingData {
|
|
rotationX: number; // Pitch
|
|
rotationY: number; // Yaw
|
|
rotationZ: number; // Roll
|
|
translationX: number;
|
|
translationY: number;
|
|
mouthOpen: number;
|
|
isBlinkingLeft: boolean;
|
|
isBlinkingRight: boolean;
|
|
}
|
|
|
|
export interface AIStudio {
|
|
hasSelectedApiKey(): Promise<boolean>;
|
|
openSelectKey(): Promise<void>;
|
|
}
|
|
|
|
// Make `window.aistudio` available globally in the browser environment
|
|
declare global {
|
|
interface Window {
|
|
aistudio?: AIStudio;
|
|
// electronAPI is injected by the preload script when running inside Electron
|
|
electronAPI?: {
|
|
generateAvatar: (prompt: string) => Promise<{ image: string }>
|
|
};
|
|
}
|
|
}
|