import type { SceneResource } from '@hypersoniclabs/helix-manifest'; /** * A Scene resource whose bytes live in the Vault, not in this multipart body. * * The build endpoint never sees them: the Scene document carries the pin and * the backend re-resolves it against the Vault. They are carried through the * publish input anyway so the CLI can say what it is about to ship and so a * package with no bundle files at all is still recognisably non-empty. */ export type SceneV2VaultPin = { resourceId: string; resourceKind: SceneResource['kind']; assetId: string; revision: number; sha256: string; mimeType: string; bytes?: number; }; export type SceneV2WorldBuildInput = { worldId: string; profileId: string; scene: Buffer; resources: Array<{ path: string; bytes: Buffer; mimeType: string; }>; vaultPins: SceneV2VaultPin[]; /** How many child Scenes this document mounts. Mounted geometry is theirs. */ mountCount?: number; /** Zero-download render primitives carried directly by the Scene document. */ primitiveCount?: number; contentRating: 'everyone' | 'teen' | 'mature'; supportsMobile: boolean; requiresAuth: boolean; visibility: 'private' | 'unlisted' | 'public'; }; export declare function validateSceneV2WorldBuildInput(input: SceneV2WorldBuildInput): void; export declare function assertSafeSceneResourcePath(path: string): void; export declare function sceneV2WorldBuildPath(worldId: string): string; export declare function buildSceneV2WorldForm(input: SceneV2WorldBuildInput): { path: string; form: import("undici-types").FormData; }; export declare function createSceneV2DryRunReceipt(input: SceneV2WorldBuildInput): { schemaVersion: string; dryRun: boolean; published: boolean; authorizationRequired: boolean; method: string; path: string; worldId: string; profileId: string; visibility: "public" | "unlisted" | "private"; sceneSha256: string; resources: { path: string; mimeType: string; bytes: number; contentSha256: string; }[]; vaultPins: { contentSha256: string; bytes?: number | undefined; resourceId: string; resourceKind: "audio" | "texture" | "material" | "environment" | "terrain" | "model" | "collider" | "navmesh" | "component-data"; assetId: string; revision: number; mimeType: string; }[]; note: string; }; export declare function publishSceneV2World(api: { postMultipart(path: string, form: FormData): Promise; }, input: SceneV2WorldBuildInput): Promise;