import { Component, ProjectOptions } from "projen";
import { TypeScriptCompilerOptions, NodeProjectOptions, JestOptions } from "projen/lib/javascript";
import { TypeScriptProjectOptions, TypeScriptProject } from "projen/lib/typescript";
export declare const PUBLISH_FILE_PATTERNS: string[];
export declare const TEST_FILE_SUFFIXES: string[];
export declare const TEST_FOLDERS: string[];
export declare const DEV_FILE_PATTERNS: string[];
export declare const PROJEN_COMPILER_OPTION_DEFAULTS: TypeScriptCompilerOptions;
export declare const RECOMMENDED_TSCONFIG_COMPILER_OPTIONS: TypeScriptCompilerOptions;
export declare const RECOMMENDED_TSCONFIG_NODE_20: Partial<TypeScriptProjectOptions>;
export declare const PROJEN_VERSION = "0.88.0";
export declare const CONSTRUCTS_VERSION = "10.3.0";
export declare const RECOMMENDED_NODE_20: Partial<TypeScriptProjectOptions>;
export declare const RECOMMENDED_PNPM_8: Partial<TypeScriptProjectOptions>;
export declare const RECOMMENDED_ESLINT_CONFIG: Partial<TypeScriptProjectOptions>;
export declare const RECOMMENDED_JEST_CONFIG: Partial<TypeScriptProjectOptions>;
export declare const RECOMMENDED_PRETTIER_CONFIG: Partial<NodeProjectOptions>;
export declare const RECOMMENDED_NODE_20_PROJECT_OPTIONS: Omit<ProjectOptions & NodeProjectOptions & TypeScriptProjectOptions, "defaultReleaseBranch" | "name">;
export declare class DKBugFixes extends Component {
    constructor(project: TypeScriptProject);
}
export declare class DKEslintConfig extends Component {
    constructor(project: TypeScriptProject);
}
export declare enum DKTaskName {
    CLEAN_COMPILE = "clean-compile",
    CI = "ci",
    DOCGEN_REMOVE = "docgen:remove",
    I = "i",
    LINT = "lint",
    TEST_UNIT = "test-unit",
    TYPE_CHECK = "type-check",
    UPGRADE_PACKAGE = "upgrade:package"
}
export declare class DKTasks extends Component {
    static readonly IS_NOT_RELEASE_CONDITION = "if [ \"$RELEASE\" = \"true\" ] ; then exit 1 ; fi";
    project: TypeScriptProject;
    constructor(project: TypeScriptProject);
    preSynthesize(): void;
}
export interface JestTransformerOptions {
    /**
     * Additional modules for jest to transform, typically ESM modules.
     *
     * @default - A list of known ESM modules commonly used in projects
     */
    readonly modulesToTransform?: string[];
}
export interface Node20TypeScriptProjectJestOptions extends JestOptions, JestTransformerOptions {
}
export declare class JestTransformer extends Component {
    static ESM_MODULES_TO_TRANSFORM: string[];
    private readonly _modulesToTransform;
    constructor(project: TypeScriptProject, options?: Node20TypeScriptProjectJestOptions);
    get modulesToTransform(): Set<string>;
    addModulesToTransform(...modules: string[]): void;
    removeModulesToTransform(...modules: string[]): void;
    private buildTransformIgnorePatterns;
}
export interface Node20TypeScriptProjectOptions extends TypeScriptProjectOptions {
    jestOptions?: Node20TypeScriptProjectJestOptions;
}
export declare class Node20TypeScriptProject extends TypeScriptProject {
    readonly jestTransformer: JestTransformer;
    constructor(options: Node20TypeScriptProjectOptions);
}
