<%- t.getFirstLineBanner() %>
import type { VovkFetcher } from 'vovk/fetcher';
import type { createRPC } from '<%= t.commonImports.createRPC %>';
<% Object.values(t.schema.segments).filter((segment) => segment.emitSchema).forEach((segment, i) => { if(segment.segmentType !== 'mixin') { %>
import type { Controllers as Controllers<%= i %> } from "<%= t.segmentMeta[segment.segmentName].segmentImportPath %>";
<% }}) %>
<% if (t.hasMixins) { %>
import type { Controllers as MixinControllers, Mixins } from "./mixins";
<% } %>
<% Object.entries(t.reExports).forEach(([reExportWhat, reExportFrom]) => { %>
export { <%= reExportWhat %> } from '<%= reExportFrom %>';
<% }) %>
<% Object.values(t.schema.segments).filter((segment) => segment.emitSchema).forEach((segment, i) => { %>
  <% Object.keys(segment.controllers).forEach((rpcModuleName) => { %>
export const <%= rpcModuleName %>: ReturnType<typeof createRPC<<%= segment.segmentType === 'mixin' ? `MixinControllers` : `Controllers${i}` %>["<%= rpcModuleName %>"], typeof import('<%- t.segmentImports[segment.segmentName].fetcher %>').fetcher extends VovkFetcher<infer U> ? U : never>>;
  <% }) 
}) %>
export { schema } from './schema.js';
<% if (t.hasMixins) { %>
export { Mixins };
<% } %>