import '@plugjs/cov8';
import '@plugjs/eslint';
import '@plugjs/expect5';
import '@plugjs/typescript';
import type { ESBuildOptions, FindOptions, Pipe } from '@plugjs/plug';
export * from '@plugjs/plug';
/** Options for creating our shared build file */
export interface TasksOptions {
    /** The directory for the original sources (default: `src`) */
    sourceDir?: string;
    /** The destination directory of the transpiled sources (default: `dist`) */
    destDir?: string;
    /** The directory for the test files (default: `test`) */
    testDir?: string;
    /** The directory for the coverage report (default: `coverage`) */
    coverageDir?: string;
    /** The directory for the coverage data (default: `.coverage-data`) */
    coverageDataDir?: string;
    /** A directory containing extra types to use while transpiling (default: `types`) */
    extraTypesDir?: string;
    /** The `tsconfig.json` file used for _transpiling_ source TypeScript files (default: `tsconfig.json`) */
    tsconfigJson?: string;
    /** Extra `find` defintions for additional coverage sources */
    extraCoverage?: (readonly [glob: string, ...globs: string[], options: FindOptions])[];
    /** Extra `find` defintions for additional linting sources */
    extraLint?: (readonly [glob: string, ...globs: string[], options: FindOptions])[];
    /** The source `package.json` file (default: `package.json`) */
    packageJson?: string;
    /** The source `package.json` file (default: same as `packageJson` option) */
    outputPackageJson?: string;
    /** The extension used for CommonJS modules (default: `.cjs`) */
    cjsExtension?: string;
    /** The extension used for EcmaScript modules (default: `.mjs`) */
    esmExtension?: string;
    /** Enable CommonJS Modules or not (default: `true`) */
    cjs?: boolean;
    /** Enable EcmaScript Modules or not (default: `true`) */
    esm?: boolean;
    /** Enable or disable banners (default: `true` if `parallelize` is `false`) */
    banners?: boolean;
    /** Parallelize tasks (might make output confusing, default: `false`) */
    parallelize?: boolean;
    /** A glob pattern matching all test files (default: `**∕*.test.([cm])?ts`) */
    testGlob?: string;
    /** A glob pattern matching files to be exported (default: `index.*`) */
    exportsGlob?: string;
    /** Extra glob patterns matching files to be exported (default: `[]`) */
    exportsGlobs?: string[];
    /** Enable coverage when running tests (default: `true`) */
    coverage?: boolean;
    /** Minimum overall coverage percentage (default: `100`) */
    minimumCoverage?: number;
    /** Minimum per-file coverage percentage (default: `100`) */
    minimumFileCoverage?: number;
    /** Optimal overall coverage percentage (default: _none_) */
    optimalCoverage?: number;
    /** Optimal per-file coverage percentage (default: _none_) */
    optimalFileCoverage?: number;
    /**
     * ESBuild compilation options
     *
     * Default:
     *
     * ```
     * {
     *   platform: 'node',
     *   sourcemap: 'linked',
     *   sourcesContent: false,
     *   plugins: [ fixExtensions() ],
     * }
     * ```
     */
    esbuildOptions?: ESBuildOptions;
}
export declare function tasks(options?: TasksOptions): import("@plugjs/plug").Build<{
    /** The directory for the original sources (default: `src`) */
    sourceDir: string;
    /** The destination directory of the transpiled sources (default: `dist`) */
    destDir: string;
    /** The directory for the test files (default: `test`) */
    testDir: string;
    /** The directory for the coverage report (default: `coverage`) */
    coverageDir: string;
    /** The directory for the coverage data (default: `.coverage-data`) */
    coverageDataDir: string;
    /** A directory containing extra types to use while transpiling (default: `types`) */
    extraTypesDir: string;
    /** The `tsconfig.json` file used for _transpiling_ source TypeScript files (default: `tsconfig.json`) */
    tsconfigJson: string;
    /** The source `package.json` file (default: `package.json`) */
    packageJson: string;
    /** The source `package.json` file (default: same as `packageJson` option) */
    outputPackageJson: string;
    /** The extension used for CommonJS modules (default: `.cjs`) */
    cjsExtension: string;
    /** The extension used for EcmaScript modules (default: `.mjs`) */
    esmExtension: string;
    /** The extension used for CommonJS modules (default: `.cjs`) */
    cjs: string;
    /** The extension used for EcmaScript modules (default: `.mjs`) */
    esm: string;
    /** A glob pattern matching all test files (default: `**∕*.test.([cm])?ts`) */
    testGlob: string;
    /** A glob pattern matching files to be exported (default: `index.*`) */
    exportsGlob: string;
    /** Find all CommonJS source files (`*.cts`) */
    _find_sources_cts(): Pipe;
    /** Find all EcmaScript Module source files (`*.mts`) */
    _find_sources_mts(): Pipe;
    /** Find all typescript source files (`*.ts`, `*.mts` and `*.cts`) */
    _find_sources(): Pipe;
    /** Find all types definition files within sources */
    _find_types(): Pipe;
    /** Find all resource files (non-typescript files) within sources */
    _find_resources(): Pipe;
    /** Find all test source files */
    _find_tests(): Pipe;
    /** Find all source files to lint */
    _find_lint_sources(): Pipe;
    /** Find all source files for coverage */
    _find_coverage_sources(): Pipe;
    /** Transpile to CJS */
    transpile_cjs(): Pipe;
    /** Transpile to ESM */
    transpile_esm(): Pipe;
    /** Generate all .d.ts files */
    transpile_types(): Pipe;
    /** Copy all resources coming alongside our sources */
    copy_resources(): Pipe;
    /** Transpile all source code */
    transpile(): Promise<Pipe>;
    /** Check test types */
    test_types(): Promise<void>;
    /** Run tests */
    test_cjs(): Promise<void>;
    /** Run tests */
    test_esm(): Promise<void>;
    /** Run tests */
    test(): Promise<void>;
    /** Ensure tests have run and generate a coverage report */
    coverage(): Promise<Pipe>;
    /** Lint all sources */
    lint(): Promise<void>;
    /** Inject `exports` into the `package.json` file */
    exports(): Promise<Pipe>;
    /** Build everything. */
    all(): Promise<void>;
    /**
     * Default task (simply invokes `this._all()`).
     *
     * Override this and invoke `this._all()` to inject tasks _before_ or
     * _after_ the normal build execution.
     */
    default(): Promise<void>;
}>;
