// THIS IS GENERATED CODE

// don't edit here


{{#definitions}}
export type {{&name}} = {{#tsType}}{{> type}}{{/tsType}}
{{/definitions}}

export type Definition = {{&allDefinitions}}

export abstract class {{&className}} {
  public domain: string
  public port: number
  public protocol: string = "{{&defaultProtocol}}"
  public basePath: string = "{{&basePath}}"

  constructor(host: string, port:number = 80, protocol:string = "http") {
    this.domain = host
    this.port = port
    this.protocol = protocol
  }

  abstract request(method: string, protocol: string, domain: string, port:number, path: string, queryParameters: any, body: any, headers: any, form: any, reject: Function, resolve: Function):void

{{#methods}}
  {{> method}}

{{/methods}}
}
