import { BaseName, Export, Extname, File as File$1, Import, Mode, OptionalPath, Path, ResolvedFile, Source } from "./globals-CwlRa4y3.js";
import { FunctionParams, JSDoc, Key, KubbNode, createFunctionParams } from "./types-Caq5b3m8.js";
import * as react1 from "react";
import { ReactNode } from "react";
import * as react_jsx_runtime0 from "react/jsx-runtime";
import { ConsolaInstance, LogLevel } from "consola";

//#region ../core/src/utils/EventEmitter.d.ts
declare class EventEmitter<TEvents extends Record<string, any>> {
  #private;
  constructor();
  emit<TEventName extends keyof TEvents & string>(eventName: TEventName, ...eventArg: TEvents[TEventName]): void;
  on<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void): void;
  off<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void): void;
  removeAll(): void;
}
//#endregion
//#region ../core/src/logger.d.ts
type DebugEvent = {
  date: Date;
  logs: string[];
  fileName?: string;
};
type Events$1 = {
  start: [message: string];
  success: [message: string];
  error: [message: string, cause: Error];
  warning: [message: string];
  debug: [DebugEvent];
  info: [message: string];
  progress_start: [{
    id: string;
    size: number;
    message?: string;
  }];
  progressed: [{
    id: string;
    message?: string;
  }];
  progress_stop: [{
    id: string;
  }];
};
type Logger = {
  /**
   * Optional config name to show in CLI output
   */
  name?: string;
  logLevel: LogLevel;
  consola?: ConsolaInstance;
  on: EventEmitter<Events$1>['on'];
  emit: EventEmitter<Events$1>['emit'];
  writeLogs: () => Promise<string[]>;
};
//#endregion
//#region ../core/src/utils/types.d.ts
type PossiblePromise<T> = Promise<T> | T;
type ArrayWithLength<T extends number, U extends any[] = []> = U['length'] extends T ? U : ArrayWithLength<T, [true, ...U]>;
type GreaterThan<T extends number, U extends number> = ArrayWithLength<U> extends [...ArrayWithLength<T>, ...infer _] ? false : true;
//#endregion
//#region ../core/src/types.d.ts
type InputPath = {
  /**
   * Specify your Swagger/OpenAPI file, either as an absolute path or a path relative to the root.
   */
  path: string;
};
type InputData = {
  /**
   * A `string` or `object` that contains your Swagger/OpenAPI data.
   */
  data: string | unknown;
};
type Input = InputPath | InputData | Array<InputPath>;
type BarrelType = 'all' | 'named' | 'propagate';
/**
 * @private
 */
type Config<TInput = Input> = {
  /**
   * The name to display in the CLI output.
   */
  name?: string;
  /**
   * The project root directory, which can be either an absolute path or a path relative to the location of your `kubb.config.ts` file.
   * @default process.cwd()
   */
  root: string;
  /**
   * You can use either `input.path` or `input.data`, depending on your specific needs.
   */
  input: TInput;
  output: {
    /**
     * The path where all generated files will be exported.
     * This can be an absolute path or a path relative to the specified root option.
     */
    path: string;
    /**
     * Clean the output directory before each build.
     */
    clean?: boolean;
    /**
     * Save files to the file system.
     * @default true
     */
    write?: boolean;
    /**
     * Override the extension to the generated imports and exports, by default each plugin will add an extension
     * @default { '.ts': '.ts'}
     */
    extension?: Record<Extname, Extname | ''>;
    /**
     * Specify how `index.ts` files should be created. You can also disable the generation of barrel files here. While each plugin has its own `barrelType` option, this setting controls the creation of the root barrel file, such as` src/gen/index.ts`.
     * @default 'named'
     */
    barrelType?: Exclude<BarrelType, 'propagate'> | false;
    /**
     * Add a default banner to the beginning of every generated file. This makes it clear that the file was generated by Kubb.
     * - 'simple': will only add banner with link to Kubb
     * - 'full': will add source, title, description and the OpenAPI version used
     * @default 'simple'
     */
    defaultBanner?: 'simple' | 'full' | false;
  };
  /**
   * An array of Kubb plugins that will be used in the generation.
   * Each plugin may include additional configurable options(defined in the plugin itself).
   * If a plugin depends on another plugin, an error will be returned if the required dependency is missing. See pre for more details.
   */
  plugins?: Array<Plugin>;
  /**
   * Hooks that will be called when a specific action is triggered in Kubb.
   */
  hooks?: {
    /**
     * Hook that will be triggered at the end of all executions.
     * Useful for running Prettier or ESLint to format/lint your code.
     */
    done?: string | Array<string>;
  };
};
type PluginFactoryOptions<
/**
 * Name to be used for the plugin, this will also be used for they key.
 */
TName extends string = string,
/**
 * Options of the plugin.
 */
TOptions extends object = object,
/**
 * Options of the plugin that can be used later on, see `options` inside your plugin config.
 */
TResolvedOptions extends object = TOptions,
/**
 * Context that you want to expose to other plugins.
 */
TContext = any,
/**
 * When calling `resolvePath` you can specify better types.
 */
TResolvePathOptions extends object = object> = {
  name: TName;
  /**
   * Same behaviour like what has been done with `QueryKey` in `@tanstack/react-query`
   */
  key: PluginKey<TName | string>;
  options: TOptions;
  resolvedOptions: TResolvedOptions;
  context: TContext;
  resolvePathOptions: TResolvePathOptions;
};
type PluginKey<TName> = [name: TName, identifier?: string | number];
type Plugin<TOptions extends PluginFactoryOptions = PluginFactoryOptions> = {
  /**
   * Unique name used for the plugin
   * @example @kubb/typescript
   */
  name: TOptions['name'];
  /**
   * Internal key used when a developer uses more than one of the same plugin
   * @private
   */
  key: TOptions['key'];
  /**
   * Specifies the preceding plugins for the current plugin. You can pass an array of preceding plugin names, and the current plugin will be executed after these plugins.
   * Can be used to validate dependent plugins.
   */
  pre?: Array<string>;
  /**
   * Specifies the succeeding plugins for the current plugin. You can pass an array of succeeding plugin names, and the current plugin will be executed before these plugins.
   */
  post?: Array<string>;
  /**
   * Options set for a specific plugin(see kubb.config.js), passthrough of options.
   */
  options: TOptions['resolvedOptions'];
} & (TOptions['context'] extends never ? {
  context?: never;
} : {
  context: TOptions['context'];
});
type PluginWithLifeCycle<TOptions extends PluginFactoryOptions = PluginFactoryOptions> = Plugin<TOptions> & PluginLifecycle<TOptions>;
type PluginLifecycle<TOptions extends PluginFactoryOptions = PluginFactoryOptions> = {
  /**
   * Start of the lifecycle of a plugin.
   * @type hookParallel
   */
  buildStart?: (this: PluginContext<TOptions>, Config: Config) => PossiblePromise<void>;
  /**
   * Resolve to a Path based on a baseName(example: `./Pet.ts`) and directory(example: `./models`).
   * Options can als be included.
   * @type hookFirst
   * @example ('./Pet.ts', './src/gen/') => '/src/gen/Pet.ts'
   */
  resolvePath?: (this: PluginContext<TOptions>, baseName: BaseName, mode?: Mode, options?: TOptions['resolvePathOptions']) => OptionalPath;
  /**
   * Resolve to a name based on a string.
   * Useful when converting to PascalCase or camelCase.
   * @type hookFirst
   * @example ('pet') => 'Pet'
   */
  resolveName?: (this: PluginContext<TOptions>, name: ResolveNameParams['name'], type?: ResolveNameParams['type']) => string;
  /**
   * End of the plugin lifecycle.
   * @type hookParallel
   */
  buildEnd?: (this: PluginContext<TOptions>) => PossiblePromise<void>;
};
type PluginLifecycleHooks = keyof PluginLifecycle;
type PluginParameter<H extends PluginLifecycleHooks> = Parameters<Required<PluginLifecycle>[H]>;
type ResolvePathParams<TOptions = object> = {
  pluginKey?: Plugin['key'];
  baseName: BaseName;
  mode?: Mode;
  /**
   * Options to be passed to 'resolvePath' 3th parameter
   */
  options?: TOptions;
};
type ResolveNameParams = {
  name: string;
  pluginKey?: Plugin['key'];
  /**
   * `file` will be used to customize the name of the created file(use of camelCase)
   * `function` can be used to customize the exported functions(use of camelCase)
   * `type` is a special type for TypeScript(use of PascalCase)
   * `const` can be used for variables(use of camelCase)
   */
  type?: 'file' | 'function' | 'type' | 'const';
};
type PluginContext<TOptions extends PluginFactoryOptions = PluginFactoryOptions> = {
  config: Config;
  fileManager: FileManager;
  pluginManager: PluginManager;
  addFile: (...file: Array<File$1>) => Promise<Array<ResolvedFile>>;
  resolvePath: (params: ResolvePathParams<TOptions['resolvePathOptions']>) => OptionalPath;
  resolveName: (params: ResolveNameParams) => string;
  logger: Logger;
  /**
   * All plugins
   */
  plugins: Plugin[];
  /**
   * Current plugin
   */
  plugin: Plugin<TOptions>;
};
/**
 * Specify the export location for the files and define the behavior of the output
 */
//#endregion
//#region ../core/src/FileManager.d.ts
type FileMetaBase = {
  pluginKey?: Plugin['key'];
};
type AddResult<T extends Array<File$1>> = Promise<Awaited<GreaterThan<T['length'], 1> extends true ? Promise<ResolvedFile[]> : Promise<ResolvedFile>>>;
type AddIndexesProps = {
  type: BarrelType | false | undefined;
  /**
   * Root based on root and output.path specified in the config
   */
  root: string;
  /**
   * Output for plugin
   */
  output: {
    path: string;
  };
  group?: {
    output: string;
    exportAs: string;
  };
  logger?: Logger;
  meta?: FileMetaBase;
};
type WriteFilesProps = {
  root: Config['root'];
  extension?: Record<Extname, Extname | ''>;
  logger?: Logger;
  dryRun?: boolean;
};
declare class FileManager {
  #private;
  constructor();
  add<T extends Array<File$1> = Array<File$1>>(...files: T): AddResult<T>;
  getByPath(path: Path): Promise<ResolvedFile | null>;
  deleteByPath(path: Path): Promise<void>;
  clear(): Promise<void>;
  getFiles(): Promise<Array<ResolvedFile>>;
  processFiles({
    dryRun,
    root,
    extension,
    logger
  }: WriteFilesProps): Promise<Array<ResolvedFile>>;
  getBarrelFiles({
    type,
    meta,
    root,
    output,
    logger
  }: AddIndexesProps): Promise<File$1[]>;
  static getMode(path: string | undefined | null): Mode;
}
//#endregion
//#region ../core/src/PluginManager.d.ts
type RequiredPluginLifecycle = Required<PluginLifecycle>;
type Strategy = 'hookFirst' | 'hookForPlugin' | 'hookParallel' | 'hookSeq';
type Executer<H extends PluginLifecycleHooks = PluginLifecycleHooks> = {
  message: string;
  strategy: Strategy;
  hookName: H;
  plugin: Plugin;
  parameters?: unknown[] | undefined;
  output?: unknown;
};
type ParseResult<H extends PluginLifecycleHooks> = RequiredPluginLifecycle[H];
type SafeParseResult<H extends PluginLifecycleHooks, Result = ReturnType<ParseResult<H>>> = {
  result: Result;
  plugin: Plugin;
};
type Options = {
  logger: Logger;
  /**
   * @default Number.POSITIVE_INFINITY
   */
  concurrency?: number;
};
type Events = {
  executing: [executer: Executer];
  executed: [executer: Executer];
  error: [error: Error];
};
type GetFileProps<TOptions = object> = {
  name: string;
  mode?: Mode;
  extname: Extname;
  pluginKey: Plugin['key'];
  options?: TOptions;
};
declare class PluginManager {
  #private;
  readonly plugins: Set<Plugin<PluginFactoryOptions<string, object, object, any, object>>>;
  readonly fileManager: FileManager;
  readonly events: EventEmitter<Events>;
  readonly config: Config;
  readonly executed: Array<Executer>;
  readonly logger: Logger;
  readonly options: Options;
  constructor(config: Config, options: Options);
  getFile<TOptions = object>({
    name,
    mode,
    extname,
    pluginKey,
    options
  }: GetFileProps<TOptions>): File$1<{
    pluginKey: Plugin['key'];
  }>;
  resolvePath: <TOptions = object>(params: ResolvePathParams<TOptions>) => OptionalPath;
  resolveName: (params: ResolveNameParams) => string;
  /**
   * Instead of calling `pluginManager.events.on` you can use `pluginManager.on`. This one also has better types.
   */
  on<TEventName extends keyof Events & string>(eventName: TEventName, handler: (...eventArg: Events[TEventName]) => void): void;
  /**
   * Run a specific hookName for plugin x.
   */
  hookForPlugin<H extends PluginLifecycleHooks>({
    pluginKey,
    hookName,
    parameters,
    message
  }: {
    pluginKey: Plugin['key'];
    hookName: H;
    parameters: PluginParameter<H>;
    message: string;
  }): Promise<Array<ReturnType<ParseResult<H>> | null>>;
  /**
   * Run a specific hookName for plugin x.
   */
  hookForPluginSync<H extends PluginLifecycleHooks>({
    pluginKey,
    hookName,
    parameters,
    message
  }: {
    pluginKey: Plugin['key'];
    hookName: H;
    parameters: PluginParameter<H>;
    message: string;
  }): Array<ReturnType<ParseResult<H>>> | null;
  /**
   * First non-null result stops and will return it's value.
   */
  hookFirst<H extends PluginLifecycleHooks>({
    hookName,
    parameters,
    skipped,
    message
  }: {
    hookName: H;
    parameters: PluginParameter<H>;
    skipped?: ReadonlySet<Plugin> | null;
    message: string;
  }): Promise<SafeParseResult<H>>;
  /**
   * First non-null result stops and will return it's value.
   */
  hookFirstSync<H extends PluginLifecycleHooks>({
    hookName,
    parameters,
    skipped,
    message
  }: {
    hookName: H;
    parameters: PluginParameter<H>;
    skipped?: ReadonlySet<Plugin> | null;
    message: string;
  }): SafeParseResult<H>;
  /**
   * Run all plugins in parallel(order will be based on `this.plugin` and if `pre` or `post` is set).
   */
  hookParallel<H extends PluginLifecycleHooks, TOuput = void>({
    hookName,
    parameters,
    message
  }: {
    hookName: H;
    parameters?: Parameters<RequiredPluginLifecycle[H]> | undefined;
    message: string;
  }): Promise<Awaited<TOuput>[]>;
  /**
   * Chains plugins
   */
  hookSeq<H extends PluginLifecycleHooks>({
    hookName,
    parameters,
    message
  }: {
    hookName: H;
    parameters?: PluginParameter<H>;
    message: string;
  }): Promise<void>;
  getPluginByKey(pluginKey: Plugin['key']): Plugin | undefined;
  getPluginsByKey(hookName: keyof PluginWithLifeCycle, pluginKey: Plugin['key']): Plugin[];
  static getDependedPlugins<T1 extends PluginFactoryOptions, T2 extends PluginFactoryOptions = never, T3 extends PluginFactoryOptions = never, TOutput = (T3 extends never ? (T2 extends never ? [T1: Plugin<T1>] : [T1: Plugin<T1>, T2: Plugin<T2>]) : [T1: Plugin<T1>, T2: Plugin<T2>, T3: Plugin<T3>])>(plugins: Array<Plugin>, dependedPluginNames: string | string[]): TOutput;
  static get hooks(): readonly ["buildStart", "resolvePath", "resolveName", "buildEnd"];
}
//#endregion
//#region src/components/App.d.ts
type AppContextProps = {
  /**
   * Exit (unmount)
   */
  readonly exit: (error?: Error) => void;
  readonly mode: Mode;
  readonly pluginManager: PluginManager;
  readonly plugin: Plugin;
};
type Props$5 = {
  readonly mode: Mode;
  readonly pluginManager: PluginManager;
  readonly plugin: Plugin;
  readonly children?: KubbNode;
};
declare function App({
  plugin,
  pluginManager,
  mode,
  children
}: Props$5): react_jsx_runtime0.JSX.Element;
declare namespace App {
  var Context: react1.Context<AppContextProps | undefined>;
  var displayName: string;
}
//#endregion
//#region src/components/Const.d.ts
type Props$4 = {
  key?: Key;
  /**
   * Name of the const
   */
  name: string;
  /**
   * Does this type need to be exported.
   */
  export?: boolean;
  /**
   * Type to make the const being typed
   */
  type?: string;
  /**
   * Options for JSdocs.
   */
  JSDoc?: JSDoc;
  /**
   * Use of `const` assertions
   */
  asConst?: boolean;
  children?: KubbNode;
};
declare function Const({
  name,
  export: canExport,
  type,
  JSDoc,
  asConst,
  children
}: Props$4): react_jsx_runtime0.JSX.Element;
declare namespace Const {
  var displayName: string;
}
//#endregion
//#region src/components/File.d.ts
type FileContextProps<TMeta extends FileMetaBase = FileMetaBase> = {
  /**
   * Name to be used to dynamicly create the baseName(based on input.path).
   * Based on UNIX basename
   * @link https://nodejs.org/api/path.html#pathbasenamepath-suffix
   */
  baseName: BaseName;
  /**
   * Path will be full qualified path to a specified file.
   */
  path: Path;
  meta?: TMeta;
};
type BasePropsWithBaseName = {
  /**
   * Name to be used to dynamicly create the baseName(based on input.path).
   * Based on UNIX basename
   * @link https://nodejs.org/api/path.html#pathbasenamepath-suffix
   */
  baseName: BaseName;
  /**
   * Path will be full qualified path to a specified file.
   */
  path: Path;
};
type BasePropsWithoutBaseName = {
  baseName?: never;
  /**
   * Path will be full qualified path to a specified file.
   */
  path?: Path;
};
type BaseProps = BasePropsWithBaseName | BasePropsWithoutBaseName;
type Props$3<TMeta extends FileMetaBase = FileMetaBase> = BaseProps & {
  key?: Key;
  meta?: TMeta;
  banner?: string;
  footer?: string;
  children?: KubbNode;
};
declare function File<TMeta extends FileMetaBase = FileMetaBase>({
  children,
  ...rest
}: Props$3<TMeta>): react_jsx_runtime0.JSX.Element;
declare namespace File {
  var displayName: string;
  var Export: typeof FileExport;
  var Import: typeof FileImport;
  var Source: typeof FileSource;
  var Context: react1.Context<FileContextProps<FileMetaBase>>;
}
type FileSourceProps = Omit<Source, 'value'> & {
  key?: Key;
  children?: KubbNode;
};
declare function FileSource({
  isTypeOnly,
  name,
  isExportable,
  isIndexable,
  children
}: FileSourceProps): react_jsx_runtime0.JSX.Element;
declare namespace FileSource {
  var displayName: string;
}
type FileExportProps = Export & {
  key?: Key;
};
declare function FileExport({
  name,
  path,
  isTypeOnly,
  asAlias
}: FileExportProps): react_jsx_runtime0.JSX.Element;
declare namespace FileExport {
  var displayName: string;
}
type FileImportProps = Import & {
  key?: Key;
};
declare function FileImport({
  name,
  root,
  path,
  isTypeOnly,
  isNameSpace
}: FileImportProps): react_jsx_runtime0.JSX.Element;
declare namespace FileImport {
  var displayName: string;
}
//#endregion
//#region src/components/Function.d.ts
type Props$2 = {
  key?: Key;
  /**
   * Name of the function.
   */
  name: string;
  /**
   * Add default when export is being used
   */
  default?: boolean;
  /**
   * Parameters/options/props that need to be used.
   */
  params?: string;
  /**
   * Does this function need to be exported.
   */
  export?: boolean;
  /**
   * Does the function has async/promise behaviour.
   * This will also add `Promise<returnType>` as the returnType.
   */
  async?: boolean;
  /**
   * Generics that needs to be added for TypeScript.
   */
  generics?: string | string[];
  /**
   * ReturnType(see async for adding Promise type).
   */
  returnType?: string;
  /**
   * Options for JSdocs.
   */
  JSDoc?: JSDoc;
  children?: KubbNode;
};
declare function Function({
  name,
  default: isDefault,
  export: canExport,
  async,
  generics,
  params,
  returnType,
  JSDoc,
  children
}: Props$2): react_jsx_runtime0.JSX.Element;
declare namespace Function {
  var displayName: string;
  var Arrow: typeof ArrowFunction;
}
type ArrowFunctionProps = Props$2 & {
  /**
   * Create Arrow function in one line
   */
  singleLine?: boolean;
};
declare function ArrowFunction({
  name,
  default: isDefault,
  export: canExport,
  async,
  generics,
  params,
  returnType,
  JSDoc,
  singleLine,
  children
}: ArrowFunctionProps): react_jsx_runtime0.JSX.Element;
declare namespace ArrowFunction {
  var displayName: string;
}
//#endregion
//#region src/components/Text.d.ts
type Props$1 = {
  key?: Key;
  /**
   * Change the indent.
   * @default 0
   */
  indentSize?: number;
  children?: KubbNode;
};
declare function Text({
  indentSize,
  children
}: Props$1): react_jsx_runtime0.JSX.Element;
declare namespace Text {
  var displayName: string;
  var Space: typeof Space;
}
type SpaceProps = {
  /**
   * Change the indent
   * @default 1
   */
  size?: number;
};
declare function Space({
  size
}: SpaceProps): react_jsx_runtime0.JSX.Element;
declare namespace Space {
  var displayName: string;
}
//#endregion
//#region src/components/Type.d.ts
type Props = {
  key?: Key;
  /**
   * Name of the type, this needs to start with a capital letter.
   */
  name: string;
  /**
   * Does this type need to be exported.
   */
  export?: boolean;
  /**
   * Options for JSdocs.
   */
  JSDoc?: JSDoc;
  children?: KubbNode;
};
declare function Type({
  name,
  export: canExport,
  JSDoc,
  children
}: Props): react_jsx_runtime0.JSX.Element;
declare namespace Type {
  var displayName: string;
}
//#endregion
//#region src/components/Root.d.ts
type RootContextProps<Meta extends Record<string, unknown> = Record<string, unknown>> = {
  /**
   * Exit (unmount) the whole Ink app.
   */
  readonly exit: (error?: Error) => void;
  readonly meta: Meta;
};
//#endregion
//#region src/renderer.d.ts
type RendererResult = {
  output: string;
  imports: Array<Import>;
  exports: Array<Export>;
  files: Array<File$1>;
};
//#endregion
//#region src/ReactTemplate.d.ts
type ReactTemplateOptions = {
  stdout?: NodeJS.WriteStream;
  stdin?: NodeJS.ReadStream;
  stderr?: NodeJS.WriteStream;
  logger?: Logger;
  /**
   * Set this to true to always see the result of the render in the console(line per render)
   */
  debug?: boolean;
};
type Context = Omit<RootContextProps, 'exit'>;
declare class ReactTemplate {
  #private;
  constructor(options: ReactTemplateOptions);
  get output(): string;
  get files(): Array<File$1>;
  resolveExitPromise: (result: RendererResult) => void;
  rejectExitPromise: (reason?: Error) => void;
  unsubscribeExit: () => void;
  onRender: () => void;
  onError(error: Error): void;
  onExit(error?: Error): void;
  render(node: ReactNode, context?: Context): RendererResult;
  renderToString(node: ReactNode, context?: Context): Promise<string>;
  unmount(error?: Error | number | null): void;
  waitUntilExit(): Promise<RendererResult>;
}
//#endregion
//#region src/createRoot.d.ts
declare function createRoot(options?: ReactTemplateOptions): ReactTemplate;
//#endregion
//#region src/hooks/useApp.d.ts
type AppResult<TOptions extends PluginFactoryOptions = PluginFactoryOptions> = {
  /**
   * Exit (unmount)
   */
  readonly exit: (error?: Error) => void;
  readonly plugin: Plugin<TOptions>;
  readonly mode: Mode;
  readonly pluginManager: PluginManager;
  readonly fileManager: FileManager;
  readonly getFile: PluginManager['getFile'];
};
/**
 * `useApp` will return the current App with plugin, pluginManager, fileManager and mode.
 */
declare function useApp<TOptions extends PluginFactoryOptions = PluginFactoryOptions>(): AppResult<TOptions>;
//#endregion
//#region src/hooks/useFile.d.ts
/**
 * `useFile` will return the current file when <File/> is used.
 */
declare function useFile<TMeta extends FileMetaBase = FileMetaBase>(): FileContextProps<TMeta>;
//#endregion
//#region src/hooks/useLifecycle.d.ts
/**
 * `useLifecycle` will return some helpers to exit/restart the generation.
 */
declare function useLifecycle(): {
  exit: (error?: Error) => void;
};
//#endregion
//#region src/index.d.ts
declare const createContext: typeof react1.createContext;
declare const createElement: typeof react1.createElement;
declare const useContext: typeof react1.useContext;
declare const useEffect: typeof react1.useEffect;
declare const useState: typeof react1.useState;
declare const useRef: typeof react1.useRef;
declare const use: typeof react1.use;
declare const useReducer: typeof react1.useReducer;
//#endregion
export { App, Const, File, Function, FunctionParams, Text, Type, createContext, createElement, createFunctionParams, createRoot, use, useApp, useContext, useEffect, useFile, useLifecycle, useReducer, useRef, useState };
//# sourceMappingURL=index.d.ts.map