<%_
  let { 
    name,
    serviceList,
    messageTypeList,
    enumTypeList,
    dependencyList,
    pb_package: package
  } = proto;

  let {
    ignorePackage
  } = config;

  const importDependencies = helper.mapImports(dependencyList, name)
_%>

<%- include('/ts/header', { filename: name }) %>

<% if (serviceList.length > 0) { %>
<%- include('/ts/lib') %>
<% } %>

<% importDependencies.forEach( dependency => { _%>
<%- include('/ts/dependency', { dependency, helper, filename: name, config }) _%>
<% }); %>

<% if (!ignorePackage && package) { %>
export namespace <%=package%> {
<% } %>

<% serviceList.forEach( service => { %>
<%- include('/ts/service', { service, helper, filename: name, config }) %>
<% }); %>

<% messageTypeList.forEach( message => { %>
<%- include('/ts/message', { message, helper, filename: name, config }) %>
<% }); %>

<% enumTypeList.forEach( enumType => { %>
<%- include('/ts/enum', { enumType, helper, filename: name, config }) %>
<% }); _%>

<% if (!ignorePackage && package) { %>
}
<% } %>