//#region src/prepare/BuildInterfaces.d.ts declare class BuildInterfaces { private static project; private static checker; /** * Generate configuration interfaces * * @param configDir */ static configs(configDir?: string): void; static tsconfig(): void; /** * Generate an `EnvRegistry` augmentation from the application's `.env` * schema, giving `env()` precise return types for app-specific variables. * * Mirrors {@link configs}: the declaration is appended to * `.arkstack/ark.d.ts`. Keys already typed by the framework's own * `EnvRegistry` are skipped so declaration merging never conflicts. * * @param envFile Explicit `.env` path; defaults to `.env.example` then `.env`. */ static env(envFile?: string): void; /** * Render an `EnvRegistry` augmentation for the variables declared in the * given `.env` contents. Pure (no filesystem) for testability. * * @param contents Raw `.env` file contents. * @param skip Variable names to omit (e.g. framework-owned keys). * @returns The `declare module` block, or `''` when nothing to emit. */ static envRegistryFromEnv(contents: string, skip?: string[]): string; /** * Prefer `.env.example` (the documented schema), then `.env`. * * @param root * @returns */ private static resolveEnvFile; /** * Parse `KEY=VALUE` lines, skipping blanks, comments and invalid names. * * @param contents * @returns */ private static parseEnvFile; /** * Infer a TS type from a value, mirroring env()'s runtime coercion. * * @param value * @returns */ private static inferEnvType; /** * Resolve the framework's own `EnvRegistry` keys to skip during generation. * * @returns */ private static frameworkEnvKeys; /** * Render a config name as a valid interface property key. Config file names * become `ConfigRegistry` keys verbatim (they're the same key `config()` * resolves by at runtime, e.g. `config('rate-limit.max')`), so a hyphenated * or otherwise non-identifier name must be quoted — otherwise the generated * `.d.ts` is a syntax error and the whole registry augmentation is dropped. * * @param name The config file base name (without `.ts`). */ private static propertyKey; private static generateConfig; private static resolveReturnTypeAnnotation; private static findNamedTypeImport; private static renderImports; /** * ts-morph resolves computed keys like path.join(...) as { [x: number]: any } * detect these by checking the type text for an index signature pattern * * @param type * @returns */ private static isDynamicMap; private static resolveType; } //#endregion //#region src/prepare/TSConfig.d.ts declare const TSConfig: { compilerOptions: { module: string; target: string; lib: string[]; moduleResolution: string; esModuleInterop: boolean; forceConsistentCasingInFileNames: boolean; strict: boolean; skipLibCheck: boolean; skipDefaultLibCheck: boolean; strictFunctionTypes: boolean; strictPropertyInitialization: boolean; strictBindCallApply: boolean; noImplicitAny: boolean; removeComments: boolean; experimentalDecorators: boolean; emitDecoratorMetadata: boolean; paths: { '@': string[]; 'src/*': string[]; '@app/*': string[]; '@core/*': string[]; '@controllers/*': string[]; '@models/*': string[]; }; }; include: string[]; }; declare const BaseTCConfig: { extends: string; }; //#endregion //#region src/index.d.ts interface RunConsoleOptions { logo?: string; } /** * Runs the console kernel, initializing the application and registering commands. * * @param options */ declare const runConsoleKernel: (options?: RunConsoleOptions) => Promise; //#endregion export { BaseTCConfig, BuildInterfaces, RunConsoleOptions, TSConfig, runConsoleKernel };