package {{package}};

import retrofit.Callback;
import retrofit.http.*;

{{#imports}}import {{import}};
{{/imports}}

{{^fullJavaUtil}}
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
{{/fullJavaUtil}}

{{#operations}}
    public interface {{classname}} {
    {{#operation}}
        /**
        * {{summary}}
        * Sync method
        * {{notes}}
        {{#allParams}}   * @param {{paramName}} {{description}}
        {{/allParams}}   * @return {{#returnType}}{{returnType}}}{{/returnType}}
        */
        {{#formParams}}{{#-first}}
            {{#isMultipart}}@Multipart{{/isMultipart}}{{^isMultipart}}@FormUrlEncoded{{/isMultipart}}{{/-first}}{{/formParams}}
        @{{httpMethod}}("{{path}}")
        {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Object{{/returnType}} {{operationId}}({{^allParams}});{{/allParams}}
        {{#allParams}}{{>libraries/retrofit/queryParams}}{{>libraries/retrofit/pathParams}}{{>libraries/retrofit/headerParams}}{{>libraries/retrofit/bodyParams}}{{>libraries/retrofit/formParams}}{{#hasMore}}, {{/hasMore}}{{^hasMore}}
            );{{/hasMore}}{{/allParams}}

        /**
        * {{summary}}
        * Async method
        {{#allParams}}   * @param {{paramName}} {{description}}
        {{/allParams}}   * @param cb callback method
        */
        {{#formParams}}{{#-first}}
            {{#isMultipart}}@Multipart{{/isMultipart}}{{^isMultipart}}@FormUrlEncoded{{/isMultipart}}{{/-first}}{{/formParams}}
        @{{httpMethod}}("{{path}}")
        void {{operationId}}(
        {{#allParams}}{{>libraries/retrofit/queryParams}}{{>libraries/retrofit/pathParams}}{{>libraries/retrofit/headerParams}}{{>libraries/retrofit/bodyParams}}{{>libraries/retrofit/formParams}}, {{/allParams}}Callback<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Object{{/returnType}}> cb
            );
    {{/operation}}
        }
{{/operations}}