import {{ sdk.namespace | caseDot }}.Client
import {{ sdk.namespace | caseDot }}.coroutines.CoroutineCallback
{% if method.parameters.all | filter((param) => param.type == 'file') | length > 0 %}
import {{ sdk.namespace | caseDot }}.models.InputFile
{% endif %}
import {{ sdk.namespace | caseDot }}.services.{{ service.name | caseUcfirst }}
{% set added = [] %}
{% for parameter in method.parameters.all %}
{% if method == parameter.required %}
{% if parameter.enumValues is not empty %}
{% if parameter.enumName is not empty %}
{% set name = parameter.enumName %}
{% else %}
{% set name = parameter.name %}
{% endif %}
{% if name not in added %}
import {{ sdk.namespace | caseDot }}.enums.{{ name | caseUcfirst }}
{% set added = added|merge([name]) %}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}

val client = Client(context)
    {%~ if method.auth|length > 0 %}
    .setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
    {%~ for node in method.auth %}
    {%~ for key,header in node|keys %}
    .set{{header | caseUcfirst}}("{{node[header]['x-appwrite']['demo'] | raw }}") // {{node[header].description}}
    {%~ endfor %}
    {%~ endfor %}
    {%~ endif %}

val {{ service.name | caseCamel }} = {{ service.name | caseUcfirst }}(client)

{% if method.type == 'webAuth' %}
{% else %}
val result = {% endif %}{{ service.name | caseCamel }}.{{ method.name | caseCamel }}({% if method.parameters.all | length == 0 %}){% endif %}

    {%~ for parameter in method.parameters.all %}
    {%~ if parameter.enumValues is not empty -%}
    {%~ if parameter.enumName is not empty -%}
    {%~ set name = parameter.enumName -%}
    {%~ else -%}
    {%~ set name = parameter.name -%}
    {%~ endif %}
    {{ parameter.name }} = {{ name }}.{{ (parameter.enumKeys[0] ?? parameter.enumValues[0]) | caseEnumKey }},{% if not parameter.required %} // (optional){% endif %}
    {%~ else %}
    {{ parameter.name }} = {{ parameter | paramExample }}, {% if not parameter.required %}// (optional){% endif %}
    {%~ endif %}

    {%~ endfor %}
{% if method.parameters.all | length > 0  %}){% endif %}
