
declare class SDK {
  constructor(opts?: Options);

  base: string;
  token: string | (() => string);
  auth: string;

  {{#each api}}
  {{@key}}: {{capitalize @key}}API;
  {{/each}}
}

export interface Options {
  base?: string;
  token?: string | (() => string);
}

{{#each api}}
export interface {{capitalize @key}}API {
  {{#each operations}}
  /**
    * {{summary}}
    */
  {{#if responseDef}}
  {{name}}(req: {{capitalize name}}Request): Promise<{{capitalize name}}Response>;
  {{else}}
  {{name}}(req: {{capitalize name}}Request): Promise<void>;
  {{/if}}
  {{/each}}
}
{{/each}}

{{#each api}}
{{#each operations}}
{{#if requestDef}}
{{{requestDef}}};
{{/if}}
{{#if responseDef}}
{{{responseDef}}};
{{/if}}
{{/each}}
{{/each}}

{{#each schemaDefs}}
{{{this}}}
{{/each}}

export = SDK;