// Copyright 2026 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // DO NOT EDIT. This file is generated by GeminiLanguageModel/scripts/typegen; // see its README.md for how to regenerate it. import Foundation /// Structured representation of a function declaration as defined by the [OpenAPI 3.0 /// specification](https://spec.openapis.org/oas/v3.0.3). Included in this declaration are the /// function name, description, parameters and response type. This FunctionDeclaration is a /// representation of a block of code that can be used as a `Tool` by the model and executed by the /// client. package struct FunctionDeclaration: Codable, Sendable, Equatable, Hashable, Buildable { /// Specifies the function Behavior. If not specified, the system keeps the current function call /// behavior. This field is currently only supported by the BidiGenerateContent method. package var behavior: Behavior? /// Description and purpose of the function. Model uses it to decide how and whether to call the /// function. package var description: String? /// Required. The name of the function to call. Must start with a letter or an underscore. Must be /// a-z, A-Z, 0-9, or contain underscores, dots, colons and dashes, with a maximum length of 128. package var name: String? /// Describes the parameters to the function in JSON Schema format. The schema must describe an /// object where the properties are the parameters to the function. For example: ``` { "type": /// "object", "properties": { "name": { "type": "string" }, "age": { "type": "integer" } }, /// "additionalProperties": false, "required": ["name", "age"], "propertyOrdering": ["name", /// "age"] } ``` This field is mutually exclusive with `parameters`. package var parametersJSONSchema: JSONObject? /// Describes the output from this function in JSON Schema format. The value specified by the /// schema is the response value of the function. This field is mutually exclusive with /// `response`. package var responseJSONSchema: JSONObject? /// Initializes a new `FunctionDeclaration`. package init() {} enum CodingKeys: String, CodingKey { case behavior case description case name case parametersJSONSchema = "parametersJsonSchema" case responseJSONSchema = "responseJsonSchema" } }