/** * 抓大鹅 Match3D 作品读写共享契约。 * 首版作品发布必须补齐游戏名称、标签、封面、题材、消除次数和难度。 */ import type { CreationAudioAsset } from './creationAudio'; export type Match3DWorkPublicationStatus = 'draft' | 'published' | string; export type Match3DGeneratedItemAssetStatus = | 'pending' | 'image_ready' | 'model_generating' | 'model_ready' | 'failed' | string; export interface Match3DGeneratedBackgroundAsset { prompt: string; imageSrc?: string | null; imageObjectKey?: string | null; containerPrompt?: string | null; containerImageSrc?: string | null; containerImageObjectKey?: string | null; status: string; error?: string | null; } export interface Match3DGeneratedItemImageView { viewId: string; viewIndex: number; imageSrc?: string | null; imageObjectKey?: string | null; } export interface Match3DGeneratedItemAsset { itemId: string; itemName: string; imageSrc?: string | null; imageObjectKey?: string | null; imageViews?: Match3DGeneratedItemImageView[]; modelSrc?: string | null; modelObjectKey?: string | null; modelFileName?: string | null; taskUuid?: string | null; subscriptionKey?: string | null; soundPrompt?: string | null; backgroundMusicTitle?: string | null; backgroundMusicStyle?: string | null; backgroundMusicPrompt?: string | null; backgroundMusic?: CreationAudioAsset | null; clickSound?: CreationAudioAsset | null; backgroundAsset?: Match3DGeneratedBackgroundAsset | null; status: Match3DGeneratedItemAssetStatus; error?: string | null; } export interface PutMatch3DAudioAssetsRequest { generatedItemAssets: Match3DGeneratedItemAsset[]; } export interface PersistMatch3DGeneratedModelRequest { itemId: string; itemName: string; sourceUrl: string; fileName?: string | null; taskUuid?: string | null; subscriptionKey?: string | null; } export interface PersistMatch3DGeneratedModelResponse { asset: Match3DGeneratedItemAsset; } export interface GenerateMatch3DCoverImageRequest { prompt: string; uploadedImageSrc?: string | null; referenceImageSrc?: string | null; referenceImageSrcs?: string[]; } export interface GenerateMatch3DCoverImageResponse { item: Match3DWorkProfile; coverImageSrc: string; coverImageObjectKey: string; prompt: string; } export interface GenerateMatch3DBackgroundImageRequest { prompt: string; } export interface GenerateMatch3DBackgroundImageResponse { item: Match3DWorkProfile; backgroundImageSrc: string; backgroundImageObjectKey: string; generatedBackgroundAsset: Match3DGeneratedBackgroundAsset; prompt: string; } export interface GenerateMatch3DContainerImageRequest { prompt: string; } export interface GenerateMatch3DContainerImageResponse { item: Match3DWorkProfile; containerImageSrc: string; containerImageObjectKey: string; generatedBackgroundAsset: Match3DGeneratedBackgroundAsset; prompt: string; } export type GenerateMatch3DItemAssetsMode = 'append' | 'replace'; export interface GenerateMatch3DItemAssetsRequest { itemNames: string[]; mode?: GenerateMatch3DItemAssetsMode; } export interface GenerateMatch3DItemAssetsResponse { item: Match3DWorkProfile; generatedItemAssets: Match3DGeneratedItemAsset[]; } export interface PutMatch3DWorkRequest { gameName: string; themeText?: string; summary: string; tags: string[]; coverImageSrc?: string | null; referenceImageSrc?: string | null; clearCount: number; difficulty: number; } export interface GenerateMatch3DWorkTagsRequest { gameName: string; themeText: string; summary?: string | null; } export interface GenerateMatch3DWorkTagsResponse { tags: string[]; } export interface Match3DWorkSummary { workId: string; profileId: string; ownerUserId: string; sourceSessionId?: string | null; gameName: string; themeText: string; summary: string; tags: string[]; coverImageSrc?: string | null; referenceImageSrc?: string | null; clearCount: number; difficulty: number; publicationStatus: Match3DWorkPublicationStatus; playCount: number; updatedAt: string; publishedAt?: string | null; publishReady: boolean; backgroundPrompt?: string | null; backgroundImageSrc?: string | null; backgroundImageObjectKey?: string | null; generatedBackgroundAsset?: Match3DGeneratedBackgroundAsset | null; generatedItemAssets?: Match3DGeneratedItemAsset[]; } export interface Match3DWorkProfile extends Match3DWorkSummary {} export interface Match3DWorksResponse { items: Match3DWorkSummary[]; } export interface Match3DWorkDetailResponse { item: Match3DWorkProfile; } export interface Match3DWorkMutationResponse { item: Match3DWorkProfile; }