imagen3: ModelReference<
    z.ZodObject<
        z.objectUtil.extendShape<
            {
                maxOutputTokens: z.ZodOptional<z.ZodNumber>;
                stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                temperature: z.ZodOptional<z.ZodNumber>;
                topK: z.ZodOptional<z.ZodNumber>;
                topP: z.ZodOptional<z.ZodNumber>;
                version: z.ZodOptional<z.ZodString>;
            },
            {
                addWatermark: z.ZodOptional<z.ZodBoolean>;
                aspectRatio: z.ZodOptional<
                    z.ZodEnum<["1:1", "9:16", "16:9", "3:4", "4:3"]>,
                >;
                editConfig: z.ZodOptional<
                    z.ZodObject<
                        {
                            editMode: z.ZodOptional<
                                z.ZodEnum<
                                    [
                                        "inpainting-insert",
                                        "inpainting-remove",
                                        "outpainting",
                                        "product-image",
                                    ],
                                >,
                            >;
                            guidanceScale: z.ZodOptional<z.ZodNumber>;
                            maskDilation: z.ZodOptional<z.ZodNumber>;
                            maskMode: z.ZodOptional<
                                z.ZodObject<
                                    { classes: z.ZodOptional<(...)>; maskType: z.ZodEnum<(...)> },
                                    "strip",
                                    z.ZodTypeAny,
                                    { classes?: (...) | (...); maskType: (...) | (...) | (...) },
                                    { classes?: (...) | (...); maskType: (...) | (...) | (...) },
                                >,
                            >;
                            productPosition: z.ZodOptional<z.ZodEnum<["reposition", "fixed"]>>;
                        },
                        "passthrough",
                        z.ZodTypeAny,
                        z.objectOutputType<
                            {
                                editMode: z.ZodOptional<z.ZodEnum<[(...), (...), (...), (...)]>>;
                                guidanceScale: z.ZodOptional<z.ZodNumber>;
                                maskDilation: z.ZodOptional<z.ZodNumber>;
                                maskMode: z.ZodOptional<
                                    z.ZodObject<
                                        { classes: ...; maskType: ... },
                                        "strip",
                                        z.ZodTypeAny,
                                        { classes?: ...; maskType: ... },
                                        { classes?: ...; maskType: ... },
                                    >,
                                >;
                                productPosition: z.ZodOptional<z.ZodEnum<[(...), (...)]>>;
                            },
                            z.ZodTypeAny,
                            "passthrough",
                        >,
                        z.objectInputType<
                            {
                                editMode: z.ZodOptional<z.ZodEnum<[(...), (...), (...), (...)]>>;
                                guidanceScale: z.ZodOptional<z.ZodNumber>;
                                maskDilation: z.ZodOptional<z.ZodNumber>;
                                maskMode: z.ZodOptional<
                                    z.ZodObject<
                                        { classes: ...; maskType: ... },
                                        "strip",
                                        z.ZodTypeAny,
                                        { classes?: ...; maskType: ... },
                                        { classes?: ...; maskType: ... },
                                    >,
                                >;
                                productPosition: z.ZodOptional<z.ZodEnum<[(...), (...)]>>;
                            },
                            z.ZodTypeAny,
                            "passthrough",
                        >,
                    >,
                >;
                language: z.ZodOptional<
                    z.ZodEnum<
                        [
                            "auto",
                            "en",
                            "es",
                            "hi",
                            "ja",
                            "ko",
                            "pt",
                            "zh-TW",
                            "zh",
                            "zh-CN",
                        ],
                    >,
                >;
                location: z.ZodOptional<z.ZodString>;
                mode: z.ZodOptional<z.ZodEnum<["upscale"]>>;
                negativePrompt: z.ZodOptional<z.ZodString>;
                personGeneration: z.ZodOptional<
                    z.ZodEnum<["dont_allow", "allow_adult", "allow_all"]>,
                >;
                safetySetting: z.ZodOptional<
                    z.ZodEnum<["block_most", "block_some", "block_few", "block_fewest"]>,
                >;
                seed: z.ZodOptional<z.ZodNumber>;
                storageUri: z.ZodOptional<z.ZodString>;
                upscaleConfig: z.ZodOptional<
                    z.ZodObject<
                        { upscaleFactor: z.ZodEnum<["x2", "x4"]> },
                        "strip",
                        z.ZodTypeAny,
                        { upscaleFactor: "x2" | "x4" },
                        { upscaleFactor: "x2" | "x4" },
                    >,
                >;
            },
        >,
        "passthrough",
        z.ZodTypeAny,
        z.objectOutputType<
            z.objectUtil.extendShape<
                {
                    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
                    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                    temperature: z.ZodOptional<z.ZodNumber>;
                    topK: z.ZodOptional<z.ZodNumber>;
                    topP: z.ZodOptional<z.ZodNumber>;
                    version: z.ZodOptional<z.ZodString>;
                },
                {
                    addWatermark: z.ZodOptional<z.ZodBoolean>;
                    aspectRatio: z.ZodOptional<
                        z.ZodEnum<["1:1", "9:16", "16:9", "3:4", "4:3"]>,
                    >;
                    editConfig: z.ZodOptional<
                        z.ZodObject<
                            {
                                editMode: z.ZodOptional<z.ZodEnum<[(...), (...), (...), (...)]>>;
                                guidanceScale: z.ZodOptional<z.ZodNumber>;
                                maskDilation: z.ZodOptional<z.ZodNumber>;
                                maskMode: z.ZodOptional<
                                    z.ZodObject<
                                        { classes: ...; maskType: ... },
                                        "strip",
                                        z.ZodTypeAny,
                                        { classes?: ...; maskType: ... },
                                        { classes?: ...; maskType: ... },
                                    >,
                                >;
                                productPosition: z.ZodOptional<z.ZodEnum<[(...), (...)]>>;
                            },
                            "passthrough",
                            z.ZodTypeAny,
                            z.objectOutputType<
                                {
                                    editMode: z.ZodOptional<z.ZodEnum<(...)>>;
                                    guidanceScale: z.ZodOptional<z.ZodNumber>;
                                    maskDilation: z.ZodOptional<z.ZodNumber>;
                                    maskMode: z.ZodOptional<
                                        z.ZodObject<(...), (...), (...), (...), (...)>,
                                    >;
                                    productPosition: z.ZodOptional<z.ZodEnum<(...)>>;
                                },
                                z.ZodTypeAny,
                                "passthrough",
                            >,
                            z.objectInputType<
                                {
                                    editMode: z.ZodOptional<z.ZodEnum<(...)>>;
                                    guidanceScale: z.ZodOptional<z.ZodNumber>;
                                    maskDilation: z.ZodOptional<z.ZodNumber>;
                                    maskMode: z.ZodOptional<
                                        z.ZodObject<(...), (...), (...), (...), (...)>,
                                    >;
                                    productPosition: z.ZodOptional<z.ZodEnum<(...)>>;
                                },
                                z.ZodTypeAny,
                                "passthrough",
                            >,
                        >,
                    >;
                    language: z.ZodOptional<
                        z.ZodEnum<
                            [
                                "auto",
                                "en",
                                "es",
                                "hi",
                                "ja",
                                "ko",
                                "pt",
                                "zh-TW",
                                "zh",
                                "zh-CN",
                            ],
                        >,
                    >;
                    location: z.ZodOptional<z.ZodString>;
                    mode: z.ZodOptional<z.ZodEnum<["upscale"]>>;
                    negativePrompt: z.ZodOptional<z.ZodString>;
                    personGeneration: z.ZodOptional<
                        z.ZodEnum<["dont_allow", "allow_adult", "allow_all"]>,
                    >;
                    safetySetting: z.ZodOptional<
                        z.ZodEnum<
                            ["block_most", "block_some", "block_few", "block_fewest"],
                        >,
                    >;
                    seed: z.ZodOptional<z.ZodNumber>;
                    storageUri: z.ZodOptional<z.ZodString>;
                    upscaleConfig: z.ZodOptional<
                        z.ZodObject<
                            { upscaleFactor: z.ZodEnum<["x2", "x4"]> },
                            "strip",
                            z.ZodTypeAny,
                            { upscaleFactor: "x2" | "x4" },
                            { upscaleFactor: "x2" | "x4" },
                        >,
                    >;
                },
            >,
            z.ZodTypeAny,
            "passthrough",
        >,
        z.objectInputType<
            z.objectUtil.extendShape<
                {
                    maxOutputTokens: z.ZodOptional<z.ZodNumber>;
                    stopSequences: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
                    temperature: z.ZodOptional<z.ZodNumber>;
                    topK: z.ZodOptional<z.ZodNumber>;
                    topP: z.ZodOptional<z.ZodNumber>;
                    version: z.ZodOptional<z.ZodString>;
                },
                {
                    addWatermark: z.ZodOptional<z.ZodBoolean>;
                    aspectRatio: z.ZodOptional<
                        z.ZodEnum<["1:1", "9:16", "16:9", "3:4", "4:3"]>,
                    >;
                    editConfig: z.ZodOptional<
                        z.ZodObject<
                            {
                                editMode: z.ZodOptional<z.ZodEnum<[(...), (...), (...), (...)]>>;
                                guidanceScale: z.ZodOptional<z.ZodNumber>;
                                maskDilation: z.ZodOptional<z.ZodNumber>;
                                maskMode: z.ZodOptional<
                                    z.ZodObject<
                                        { classes: ...; maskType: ... },
                                        "strip",
                                        z.ZodTypeAny,
                                        { classes?: ...; maskType: ... },
                                        { classes?: ...; maskType: ... },
                                    >,
                                >;
                                productPosition: z.ZodOptional<z.ZodEnum<[(...), (...)]>>;
                            },
                            "passthrough",
                            z.ZodTypeAny,
                            z.objectOutputType<
                                {
                                    editMode: z.ZodOptional<z.ZodEnum<(...)>>;
                                    guidanceScale: z.ZodOptional<z.ZodNumber>;
                                    maskDilation: z.ZodOptional<z.ZodNumber>;
                                    maskMode: z.ZodOptional<
                                        z.ZodObject<(...), (...), (...), (...), (...)>,
                                    >;
                                    productPosition: z.ZodOptional<z.ZodEnum<(...)>>;
                                },
                                z.ZodTypeAny,
                                "passthrough",
                            >,
                            z.objectInputType<
                                {
                                    editMode: z.ZodOptional<z.ZodEnum<(...)>>;
                                    guidanceScale: z.ZodOptional<z.ZodNumber>;
                                    maskDilation: z.ZodOptional<z.ZodNumber>;
                                    maskMode: z.ZodOptional<
                                        z.ZodObject<(...), (...), (...), (...), (...)>,
                                    >;
                                    productPosition: z.ZodOptional<z.ZodEnum<(...)>>;
                                },
                                z.ZodTypeAny,
                                "passthrough",
                            >,
                        >,
                    >;
                    language: z.ZodOptional<
                        z.ZodEnum<
                            [
                                "auto",
                                "en",
                                "es",
                                "hi",
                                "ja",
                                "ko",
                                "pt",
                                "zh-TW",
                                "zh",
                                "zh-CN",
                            ],
                        >,
                    >;
                    location: z.ZodOptional<z.ZodString>;
                    mode: z.ZodOptional<z.ZodEnum<["upscale"]>>;
                    negativePrompt: z.ZodOptional<z.ZodString>;
                    personGeneration: z.ZodOptional<
                        z.ZodEnum<["dont_allow", "allow_adult", "allow_all"]>,
                    >;
                    safetySetting: z.ZodOptional<
                        z.ZodEnum<
                            ["block_most", "block_some", "block_few", "block_fewest"],
                        >,
                    >;
                    seed: z.ZodOptional<z.ZodNumber>;
                    storageUri: z.ZodOptional<z.ZodString>;
                    upscaleConfig: z.ZodOptional<
                        z.ZodObject<
                            { upscaleFactor: z.ZodEnum<["x2", "x4"]> },
                            "strip",
                            z.ZodTypeAny,
                            { upscaleFactor: "x2" | "x4" },
                            { upscaleFactor: "x2" | "x4" },
                        >,
                    >;
                },
            >,
            z.ZodTypeAny,
            "passthrough",
        >,
    >,
> = ...