import { z } from 'zod';
export declare const RUNTIME_PROTOCOL = 1;
export declare const vectorSchema: z.ZodObject<{
    x: z.ZodNumber;
    y: z.ZodNumber;
    z: z.ZodNumber;
}, z.core.$strict>;
export declare const worldDefinitionSchema: z.ZodObject<{
    version: z.ZodLiteral<1>;
    id: z.ZodString;
    title: z.ZodString;
    avatarProfile: z.ZodLiteral<"pocket-humanoid-v1">;
    protocol: z.ZodLiteral<1>;
    scene: z.ZodEnum<{
        plaza: "plaza";
        race: "race";
        starter: "starter";
    }>;
    roomLimit: z.ZodNumber;
    spawn: z.ZodObject<{
        x: z.ZodNumber;
        y: z.ZodNumber;
        z: z.ZodNumber;
    }, z.core.$strict>;
    bounds: z.ZodObject<{
        minX: z.ZodNumber;
        maxX: z.ZodNumber;
        minZ: z.ZodNumber;
        maxZ: z.ZodNumber;
    }, z.core.$strict>;
    collisions: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        minX: z.ZodNumber;
        maxX: z.ZodNumber;
        minZ: z.ZodNumber;
        maxZ: z.ZodNumber;
        height: z.ZodNumber;
    }, z.core.$strict>>;
    portals: z.ZodArray<z.ZodObject<{
        target: z.ZodString;
        position: z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
            z: z.ZodNumber;
        }, z.core.$strict>;
    }, z.core.$strict>>;
    collection: z.ZodArray<z.ZodString>;
    interactions: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        kind: z.ZodEnum<{
            switch: "switch";
            "race-ready": "race-ready";
            inspect: "inspect";
        }>;
        position: z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
            z: z.ZodNumber;
        }, z.core.$strict>;
        radius: z.ZodNumber;
    }, z.core.$strict>>;
}, z.core.$strict>;
export type WorldDefinition = z.infer<typeof worldDefinitionSchema>;
/** Stable registry order lays out each destination once, expanding into garden rings. */
export declare function hubPortals(targets: string[]): WorldDefinition['portals'];
export declare const defaultDefinition: (id: string, title: string, targets: string[]) => WorldDefinition;
export declare function publicDefinition(value: WorldDefinition): WorldDefinition;
