from typing import Literal, Any, TypedDict

MetaKey = Literal[
  "user-agent",
  "authorization",
  "x-at",
  "x-by",
  "x-in",
  "x-zone",
  "x-lang",
  "x-token",
  "x-scope",
  "x-policy",
  "x-user-ip",
  "x-api-key",
  "x-saga-ttl",
  "x-api-token",
  "x-file-data",
  "x-stat-type",
  "x-request-id",
  "x-user-agent",
  "x-nested-keys",
  "x-saga-session",
  "x-authorization",
  "x-payment-amount",
  "x-no-api-response",
  "x-can-with-policies",
  "x-naming-convention",
  "x-stat-learning-rate",
  "x-stat-delay-datetime",
  "x-can-with-id-policies",
  "x-stat-additional-props",
  "x-protected-internal-use",
  "x-change-projection-value",
  "x-ignore-change-projection",
  "x-exclude-soft-delete-query",
]


class Metadata(TypedDict, total=False):
  # Using snake_case is conventional in Python
  user_agent: Any
  authorization: Any
  x_at: Any
  x_by: Any
  x_in: Any
  x_zone: Any
  x_lang: Any
  x_token: Any
  x_scope: Any
  x_policy: Any
  x_user_ip: Any
  x_api_key: Any
  x_saga_ttl: Any
  x_api_token: Any
  x_file_data: Any
  x_stat_type: Any
  x_request_id: Any
  x_user_agent: Any
  x_nested_keys: Any
  x_saga_session: Any
  x_authorization: Any
  x_payment_amount: Any
  x_no_api_response: Any
  x_can_with_policies: Any
  x_naming_convention: Any
  x_stat_learning_rate: Any
  x_stat_delay_datetime: Any
  x_can_with_id_policies: Any
  x_stat_additional_props: Any
  x_protected_internal_use: Any
  x_change_projection_value: Any
  x_ignore_change_projection: Any
  x_exclude_soft_delete_query: Any
