use crate::{ModelPricing, ProviderPricing};

pub const GEMINI: ProviderPricing = ProviderPricing {
	name: "gemini",
	models: GEMINI_MODELS,
};

const GEMINI_MODELS: &[ModelPricing] = &[
	ModelPricing {
		name: "gemini-3.5-flash",
		input_cached: Some(0.15),
		input_normal: 1.5,
		output_normal: 9.0,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-3.1-pro",
		input_cached: Some(0.2),
		input_normal: 2.0,
		output_normal: 12.0,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-3.1-pro-customtools",
		input_cached: Some(0.2),
		input_normal: 2.0,
		output_normal: 12.0,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-3.1-flash-lite",
		input_cached: Some(0.025),
		input_normal: 0.25,
		output_normal: 1.5,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-3.1-flash-image",
		input_cached: None,
		input_normal: 0.5,
		output_normal: 3.0,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-3-pro",
		input_cached: Some(0.2),
		input_normal: 2.0,
		output_normal: 12.0,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-3-flash",
		input_cached: Some(0.05),
		input_normal: 0.5,
		output_normal: 3.0,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-3-pro-image",
		input_cached: None,
		input_normal: 2.0,
		output_normal: 12.0,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-2.5-pro",
		input_cached: Some(0.125),
		input_normal: 1.25,
		output_normal: 10.0,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-2.5-flash",
		input_cached: Some(0.03),
		input_normal: 0.3,
		output_normal: 2.5,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-2.5-flash-lite",
		input_cached: Some(0.01),
		input_normal: 0.1,
		output_normal: 0.4,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-2.5-flash-image",
		input_cached: None,
		input_normal: 0.3,
		output_normal: 2.5,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-2.0-flash",
		input_cached: Some(0.025),
		input_normal: 0.1,
		output_normal: 0.4,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-2.0-flash-lite",
		input_cached: None,
		input_normal: 0.075,
		output_normal: 0.3,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-flash-latest",
		input_cached: Some(0.05),
		input_normal: 0.5,
		output_normal: 3.0,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-flash-lite-latest",
		input_cached: Some(0.01),
		input_normal: 0.1,
		output_normal: 0.4,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-pro-latest",
		input_cached: Some(0.2),
		input_normal: 2.0,
		output_normal: 12.0,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-embedding-001",
		input_cached: None,
		input_normal: 0.15,
		output_normal: 0.0,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-robotics-er-1.6",
		input_cached: None,
		input_normal: 1.0,
		output_normal: 5.0,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-robotics-er-1.5",
		input_cached: None,
		input_normal: 0.3,
		output_normal: 2.5,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemini-2.5-computer-use",
		input_cached: None,
		input_normal: 1.25,
		output_normal: 10.0,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemma-3",
		input_cached: Some(0.0),
		input_normal: 0.0,
		output_normal: 0.0,
		output_reasoning: None,
	},
	ModelPricing {
		name: "gemma-3n",
		input_cached: Some(0.0),
		input_normal: 0.0,
		output_normal: 0.0,
		output_reasoning: None,
	},
];
