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