export type Engine = "godot" | "unity" | "unreal" | "bevy" | "phaser" | "generic"; export type AssetType = "sprite" | "sound" | "spritesheet" | "tilemap" | "scene" | "animation" | "particles" | "ui" | "shader" | "mesh" | "material"; export interface Config { baseUrl: string; apiKey?: string; } export interface Asset { id: string; name: string; description?: string; type: AssetType; engine: Engine; price: number; thumbnailFileId?: string; imageFileId?: string; b2FileId?: string; version: string; storeId: number; tagsList?: string[]; avgRating: number; ratingsCount: number; createdAt: string; updatedAt: string; } export interface AssetDetails extends Asset { spriteDetails?: SpriteDetails; soundDetails?: SoundDetails; spritesheetDetails?: SpritesheetDetails; tilemapDetails?: TilemapDetails; animationPlayerDetails?: AnimationDetails; } export interface SpriteDetails { id: number; assetId: number; offset: [number, number] | null; width: number; height: number; } export interface SoundDetails { id: number; assetId: number; volumeDb: number | null; durationMs: number | null; format: string | null; } export interface SpritesheetDetails { id: number; assetId: number; width: number; height: number; grid?: SpritesheetGrid; } export interface SpritesheetGrid { rows: number; columns: number; cellWidth: number; cellHeight: number; } export interface TilemapDetails { id: number; assetId: number; tilesheetId: number; mapData: string; width: number; height: number; } export interface AnimationDetails { id: number; assetId: number; animations: Animation[]; } export interface Animation { id: string; name: string; speed: number; loop: boolean; frames: AnimationFrame[]; } export interface AnimationFrame { index: number; spriteId?: number; duration?: number; } export interface SearchOptions { query?: string; type?: AssetType; engine?: Engine; tags?: string[]; storeId?: number; minPrice?: number; maxPrice?: number; sortBy?: "created_at" | "updated_at" | "price" | "avg_rating" | "ratings_count" | "name"; sortOrder?: "asc" | "desc"; limit?: number; offset?: number; } export interface SearchResult { assets: Asset[]; total: number; hasMore: boolean; } export interface CreateAssetInput { name: string; description?: string; type: AssetType; engine?: Engine; price: number; storeId: string; tagsList?: string[]; thumbnailFileId?: string; imageFileId?: string; } export interface Store { id: string; name: string; slug: string; description?: string; ownerId: string; createdAt: string; } export interface User { id: string; username: string; email?: string; avatarUrl?: string; } export interface ApiError { error: string; code: string; details?: Record; } export interface DeviceCodeResponse { device_code: string; user_code: string; verification_uri: string; expires_in: number; interval: number; } export type GenerationJobStatus = "pending" | "processing" | "completed" | "failed"; export type GenerationJobType = "sprite-animation" | "terrain-tilemap" | "creature-generation" | "world-generation" | "npc-generation" | "quest-generation"; export interface GenerationJob { jobId: string; status: GenerationJobStatus; type: GenerationJobType; pollUrl: string; result?: GenerationJobResult; error?: string; createdAt: string; completedAt?: string; } export interface GenerationJobResult { files: GeneratedFile[]; } export interface GeneratedFile { url: string; filename: string; mimeType: string; metadata: Record; } export interface CreatureGenerationParams { body?: { spineSegments?: number; bodyLength?: number; bodyRadius?: number; }; head?: { size?: number; jaw?: boolean; neckLength?: number; }; limbs?: { pairs?: number; segments?: number; length?: number; thickness?: number; }; tail?: { enabled?: boolean; segments?: number; length?: number; }; locomotion?: "biped" | "quadruped" | "centipede" | "insect" | "flying"; visualStyle?: "organic" | "voxel" | "low_poly"; voxelParams?: { resolution?: number; cubeSize?: number; }; animation?: { walkSpeed?: number; generateAnimations?: boolean; }; seed?: number; theme?: string; } export interface WorldGenerationParams { seed?: number; worldName?: string; size?: "small" | "medium" | "large" | "epic"; biomes?: { count?: number; types?: string[]; distribution?: string; }; civilizations?: { count?: number; techLevel?: string; conflictLevel?: number; }; settlements?: { count?: number; types?: string[]; }; theme?: string; } export interface NPCGenerationParams { seed?: number; worldSeed?: number; culture?: string; profession?: string; personality?: { traits?: string[]; alignment?: string; }; appearance?: { race?: string; age?: string; build?: string; }; count?: number; theme?: string; } export interface QuestGenerationParams { seed?: number; worldSeed?: number; type?: string; difficulty?: "trivial" | "easy" | "medium" | "hard" | "legendary"; giver?: string; rewards?: { goldRange?: [number, number]; reputationRange?: [number, number]; includeItems?: boolean; }; count?: number; theme?: string; } export interface Project { id: string; storeId: number; name: string; slug: string; description?: string; status: "draft" | "active" | "archived" | "completed"; visibility: "public" | "private" | "unlisted"; tags: string[]; createdAt: string; updatedAt: string; } export interface ProjectMember { id: string; projectId: string; userId: string; role: "owner" | "admin" | "contributor" | "viewer"; joinedAt: string; } export interface ProjectRelease { id: string; projectId: string; version: string; title: string; changelog?: string; isPrerelease: boolean; createdAt: string; } export interface RuntimeLoadOptions { cacheStrategy?: "none" | "memory" | "persistent"; maxCacheSize?: number; preloadRelated?: boolean; onProgress?: (loaded: number, total: number) => void; } //# sourceMappingURL=types.d.ts.map