{{>licenseInfo}}

import ApiClient from './ApiClient';
{{#models}}
import {{#model}}{{classFilename}}{{/model}} from './{{#modelPackage}}{{modelPackage}}/{{/modelPackage}}{{importPath}}';
{{/models}}
{{#apiInfo}}
    {{#apis}}
import {{importPath}} from './{{#apiPackage}}{{apiPackage}}/{{/apiPackage}}{{importPath}}';
    {{/apis}}
{{/apiInfo}}

/**
    {{#projectDescription}}
 * {{projectDescription}}.
    {{/projectDescription}}
 * The "index" module provides access to constructors for all the classes which comprise the public API.
 * An AMD (recommended!) or CommonJS application will generally do something equivalent to the following:
 * var {{moduleName}} = require('{{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}index'); // See note below*.
 * var xxxSvc = new {{moduleName}}.XxxApi(); // Allocate the API class we're going to use.
 * var yyyModel = new {{moduleName}}.Yyy(); // Construct a model instance.
 * yyyModel.someProperty = 'someValue';
 * ...
 * var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
 * ...
 * *NOTE: For a top-level AMD script, use require(['{{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}index'], function(){...}) and put the application logic within the callback function.
 * A non-AMD browser application (discouraged) might do something like this:
 * var xxxSvc = new {{moduleName}}.XxxApi(); // Allocate the API class we're going to use.
 * var yyy = new {{moduleName}}.Yyy(); // Construct a model instance.
 * yyyModel.someProperty = 'someValue';
 * ...
 * var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
 * ...
 * @module {{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}index
 * @version {{projectVersion}}
 */
export {
    /**
     * The ApiClient constructor.
     * @property {module:{{#invokerPackage}}{{&invokerPackage}}/{{/invokerPackage}}ApiClient}
     */
    ApiClient,

    {{#models}}
    /**
     * The {{&importPath}} model constructor.
     * @property { module:{{#invokerPackage}}{{&invokerPackage}}/{{/invokerPackage}}{{#modelPackage}}{{&modelPackage}}/{{/modelPackage}}{{&importPath}} }
     */
    {{&importPath}},
    {{/models}}

    {{#apiInfo}}
        {{#apis}}
    /**
     * The {{&importPath}} service constructor.
     * @property { module:{{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}{{#apiPackage}}{{apiPackage}}/{{/apiPackage}}{{importPath}} }
     */
    {{importPath}},
        {{/apis}}
    {{/apiInfo}}
};
