Variable CarWashCarSchemaConst

CarWashCarSchema: ZodObject<{
    colorHex: ZodString;
    createdAt: ZodString;
    id: ZodString;
    model: ZodString;
    name: ZodString;
    priceUsd: ZodNumber;
    sale: ZodObject<{
        soldAt: ZodOptional<ZodString>;
        soldToPlayerId: ZodOptional<ZodString>;
        status: ZodEnum<["available", "sold"]>;
    }, "strip", ZodTypeAny, {
        soldAt?: string;
        soldToPlayerId?: string;
        status: "available" | "sold";
    }, {
        soldAt?: string;
        soldToPlayerId?: string;
        status: "available" | "sold";
    }>;
    slot: ZodUnion<[ZodLiteral<1>, ZodLiteral<2>, ZodLiteral<3>, ZodLiteral<4>, ZodLiteral<5>, ZodLiteral<6>, ZodLiteral<7>, ZodLiteral<8>, ZodLiteral<9>]>;
    spaceId: ZodString;
    year: ZodNumber;
}, "strip", ZodTypeAny, {
    colorHex: string;
    createdAt: string;
    id: string;
    model: string;
    name: string;
    priceUsd: number;
    sale: {
        soldAt?: string;
        soldToPlayerId?: string;
        status: "available" | "sold";
    };
    slot:
        | 1
        | 2
        | 3
        | 4
        | 5
        | 6
        | 7
        | 8
        | 9;
    spaceId: string;
    year: number;
}, {
    colorHex: string;
    createdAt: string;
    id: string;
    model: string;
    name: string;
    priceUsd: number;
    sale: {
        soldAt?: string;
        soldToPlayerId?: string;
        status: "available" | "sold";
    };
    slot:
        | 1
        | 2
        | 3
        | 4
        | 5
        | 6
        | 7
        | 8
        | 9;
    spaceId: string;
    year: number;
}> = ...

Car-wash amenity car parked in one of nine slots.

Client renders the car via sprite-car.ts, parameterised by colorHex. Sold cars flip to a desaturated palette plus a SOLD banner overlay.

CarWashCarSchema.parse({
id: "car-1",
spaceId: "space-42",
slot: 5,
name: "Mustang",
model: "GT",
year: 2023,
priceUsd: 45000,
colorHex: "#ff3344",
createdAt: new Date().toISOString(),
sale: { status: "available" },
});