def METHOD_NAME(
    self,
    domain_name: str,
    elasticsearch_version: str,
    elasticsearch_cluster_config: Dict[str, Any],
    ebs_options: Dict[str, Any],
    access_policies: Dict[str, Any],
    snapshot_options: Dict[str, Any],
    vpc_options: Dict[str, Any],
    cognito_options: Dict[str, Any],
    encryption_at_rest_options: Dict[str, Any],
    node_to_node_encryption_options: Dict[str, Any],
    advanced_options: Dict[str, Any],
    log_publishing_options: Dict[str, Any],
    domain_endpoint_options: Dict[str, Any],
    advanced_security_options: Dict[str, Any],
    auto_tune_options: Dict[str, Any],
) -> Dict[str, Any]:
    # TODO: Persist/Return other attributes
    new_domain = Domain(
        region_name=self.region_name,
        domain_name=domain_name,
        es_version=elasticsearch_version,
        elasticsearch_cluster_config=elasticsearch_cluster_config,
        ebs_options=ebs_options,
        access_policies=access_policies,
        snapshot_options=snapshot_options,
        vpc_options=vpc_options,
        cognito_options=cognito_options,
        encryption_at_rest_options=encryption_at_rest_options,
        node_to_node_encryption_options=node_to_node_encryption_options,
        advanced_options=advanced_options,
        log_publishing_options=log_publishing_options,
        domain_endpoint_options=domain_endpoint_options,
        advanced_security_options=advanced_security_options,
        auto_tune_options=auto_tune_options,
    )
    self.domains[domain_name] = new_domain
    return new_domain.to_json()