vtube-studio/types.ts

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 }>
};
}
}