/**
 * Auto-generated from resolvedTests_v3.schema.json
 * Do not edit manually
 */
/**
 * Load environment variables from the specified `.env` file.
 */
export type LoadVariables = string;
export type FileTypePredefined = "markdown" | "asciidoc" | "html" | "dita";
export type FileTypeCustom = {
    [k: string]: unknown;
} | {
    [k: string]: unknown;
};
/**
 * Perform a native shell command.
 */
export type RunShell = RunShellCommandSimple | RunShellCommandDetailed;
/**
 * Command to perform in the machine's default shell.
 */
export type RunShellCommandSimple = string;
/**
 * OpenAPI description and configuration.
 */
export type OpenApi = {
    [k: string]: unknown;
};
/**
 * Configuration for Heretto CMS integrations. Each entry specifies a Heretto instance and a scenario to build and test.
 */
export type HerettoCMSIntegrations = HerettoCMSIntegration[];
/**
 * OpenAPI description and configuration.
 */
export type OpenApi1 = {
    [k: string]: unknown;
} | {
    [k: string]: unknown;
};
/**
 * A Doc Detective test.
 */
export type Test = {
    [k: string]: unknown;
} | {
    [k: string]: unknown;
};
/**
 * A collection of resolved tests ready to be performed.
 */
export interface ResolvedTests {
    /**
     * Unique identifier for the resolved tests.
     */
    resolvedTestsId?: string;
    config?: Config;
    /**
     * Test specifications that were performed.
     *
     * @minItems 1
     */
    specs: [Specification, ...Specification[]];
    [k: string]: unknown;
}
/**
 * Configuration options for Doc Detective operations.
 */
export interface Config {
    /**
     * JSON Schema for this object.
     */
    $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/config_v3.schema.json";
    /**
     * Identifier for the configuration.
     */
    configId?: string;
    /**
     * Path to the configuration file.
     */
    configPath?: string;
    /**
     * Path(s) to test specifications and documentation source files. May be paths to specific files or to directories to scan for files.
     */
    input?: string | [string, ...string[]];
    /**
     * Path of the directory in which to store the output of Doc Detective commands. If a file path is specified, Doc Detective attempts to honor the file name specified, but file path behavior is controlled by the configured reporters.
     */
    output?: string;
    /**
     * Reporters to use when emitting test results. Built-in reporters: `terminal`, `json`, `html`, `runFolder`. The `runFolder` reporter (enabled by default) archives each run's results as `<output>/.doc-detective/run-<runId>/testResults.json`, beside any screenshots the run captured, in addition to the flat output the `json` reporter writes. Custom reporters registered via `registerReporter()` can also be referenced by name.
     */
    reporters?: string[];
    /**
     * Regex patterns (case-insensitive) applied to each spec's `specId`. If set, only specs whose `specId` matches at least one pattern are run. Equivalent to `--spec` on the CLI. Each entry must contain at least one non-whitespace character.
     */
    specFilter?: string[];
    /**
     * Regex patterns (case-insensitive) applied to each test's `testId`. If set, only tests whose `testId` matches at least one pattern are run. Equivalent to `--test` on the CLI. Each entry must contain at least one non-whitespace character.
     */
    testFilter?: string[];
    /**
     * If `true` searches `input`, `setup`, and `cleanup` paths recursively for test specifications and source files.
     */
    recursive?: boolean;
    /**
     * Whether paths should be interpreted as relative to the current working directory (`cwd`) or to the file in which they're specified (`file`).
     */
    relativePathBase?: "cwd" | "file";
    loadVariables?: LoadVariables;
    /**
     * Default protocol and domain to use for relative URLs.
     */
    origin?: string;
    /**
     * Query parameters to append to URLs resolved against `origin`. Values support environment variable substitution via `$VAR` syntax. Step-level `params` on `goTo` / `checkLink` are merged on top of these, with step keys winning on collision. WARNING: values are embedded in request URLs and appear verbatim in test results, logs, and reports — avoid putting long-lived secrets here.
     */
    originParams?: {
        [k: string]: string;
    };
    /**
     * Path(s) to test specifications to perform before those specified by `input`. Useful for setting up testing environments.
     */
    beforeAny?: string | string[];
    /**
     * Path(s) to test specifications to perform after those specified by `input`. Useful for cleaning up testing environments.
     */
    afterAll?: string | string[];
    /**
     * Whether or not to detect steps in input files based on defined markup.
     */
    detectSteps?: boolean;
    /**
     * Whether or not to run potentially unsafe steps, such as those that might modify files or system state.
     */
    allowUnsafeSteps?: boolean;
    /**
     * If `true`, crawls sitemap.xml files specified by URL to find additional files to test.
     */
    crawl?: boolean;
    /**
     * If `true`, processes DITA maps and includes generated files as inputs.
     */
    processDitaMaps?: boolean;
    /**
     * Amount of detail to output when performing an operation.
     */
    logLevel?: "silent" | "error" | "warning" | "info" | "debug";
    /**
     * Contexts to run the test in. Overrides contexts defined at the config and spec levels.
     */
    runOn?: Context[];
    /**
     * Configuration for file types and their markup detection.
     */
    fileTypes?: [
        FileTypePredefined | FileTypeCustom | FileTypeExecutable,
        ...(FileTypePredefined | FileTypeCustom | FileTypeExecutable)[]
    ];
    integrations?: IntegrationsOptions;
    telemetry?: TelemetryOptions;
    hints?: HintsOptions;
    /**
     * Number of concurrent test runners. Set to true to use CPU core count (capped at 4).
     */
    concurrentRunners?: number | boolean;
    environment?: EnvironmentDetails;
    /**
     * @deprecated
     * Deprecated and ignored. Previously reserved for an interactive step-through debugger that was never implemented. Retained so existing configs continue to validate. For diagnostics, run `doc-detective debug` or set the `DOC_DETECTIVE_DEBUG` environment variable.
     */
    debug?: boolean | "stepThrough";
    /**
     * If `true`, fully resolve tests (file/env config merge, schema validation, file detection, inline-test extraction) and emit the resolved test plan as JSON, but do not execute any steps. Equivalent to `--dry-run` on the CLI.
     */
    dryRun?: boolean;
    /**
     * If `true`, captures a screenshot after every step that runs in a browser, in addition to any explicit `screenshot` steps. Images are saved in the per-run artifact directory (`<output>/.doc-detective/run-<runId>/`) at paths derived from spec, test, and context IDs plus the step's order, action, and ID (for example, `screenshots/<specId>/<testId>/<contextId>/01-goTo-s4f2a91c.png`), so the same step lands on the same relative path in every run's folder for run-over-run comparison. Specs and tests can override this value with their own `autoScreenshot` fields (test level wins over spec level, which wins over config level). Equivalent to `--auto-screenshot` on the CLI.
     */
    autoScreenshot?: boolean;
    /**
     * If `true`, records a video of every test context that runs in a browser, in addition to any explicit `record` steps. The recording wraps the whole context (it starts before the first step and stops after the last) and always uses the `ffmpeg` engine. Videos are saved in the per-run artifact directory (`<output>/.doc-detective/run-<runId>/`) at paths derived from spec, test, and context IDs (for example, `recordings/<specId>/<testId>/<contextId>.mp4`), so the same context lands on the same relative path in every run's folder for run-over-run comparison. Specs and tests can override this value with their own `autoRecord` fields (test level wins over spec level, which wins over config level). Equivalent to `--auto-record` on the CLI.
     */
    autoRecord?: boolean;
    /**
     * If `true` (default), the CLI checks for a newer published `doc-detective` on startup and self-updates before running tests. Updates happen for global (`npm i -g`) and `npx` installs only — local installs (where `doc-detective` is a project dep) get an informational message instead, since auto-updating would mutate the user's lockfile. CI environments and the `DOC_DETECTIVE_SKIP_AUTO_UPDATE=1` env var also skip the check. Set to `false` to pin to the installed version. Equivalent to `--no-auto-update` on the CLI.
     */
    autoUpdate?: boolean;
    /**
     * Directory for lazy-installed runtime assets (heavy npm packages, browser binaries, ffmpeg). Defaults to `<os.tmpdir()>/doc-detective/`. Override here, with the `DOC_DETECTIVE_CACHE_DIR` env var, or with `--cache-dir` on the CLI when the default temp location is unsuitable (e.g., baked container images where temp gets cleared on reboot).
     */
    cacheDir?: string;
}
/**
 * A context in which to perform tests. If no contexts are specified but a context is required by one or more tests, Doc Detective attempts to identify a supported context in the current environment and run tests against it. For example, if a browser isn't specified but is required by steps in the test, Doc Detective will search for and use a supported browser available in the current environment.
 */
export interface Context {
    /**
     * JSON Schema for this object.
     */
    $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/context_v3.schema.json";
    /**
     * Unique identifier for the context.
     */
    contextId?: string;
    /**
     * Platforms to run tests on.
     */
    platforms?: ("linux" | "mac" | "windows") | ("linux" | "mac" | "windows")[];
    /**
     * Browsers to run tests on.
     */
    browsers?: ("chrome" | "firefox" | "safari" | "webkit") | Browser | (("chrome" | "firefox" | "safari" | "webkit") | Browser1)[];
}
/**
 * Browser configuration.
 */
export interface Browser {
    /**
     * Name of the browser.
     */
    name: "chrome" | "firefox" | "safari" | "webkit";
    /**
     * If `true`, runs the browser in headless mode.
     */
    headless?: boolean;
    window?: BrowserWindow;
    viewport?: BrowserViewport;
}
/**
 * Browser dimensions.
 */
export interface BrowserWindow {
    /**
     * Width of the browser window in pixels.
     */
    width?: number;
    /**
     * Height of the browser window in pixels.
     */
    height?: number;
}
/**
 * Viewport dimensions.
 */
export interface BrowserViewport {
    /**
     * Width of the viewport in pixels.
     */
    width?: number;
    /**
     * Height of the viewport in pixels.
     */
    height?: number;
}
/**
 * Browser configuration.
 */
export interface Browser1 {
    /**
     * Name of the browser.
     */
    name: "chrome" | "firefox" | "safari" | "webkit";
    /**
     * If `true`, runs the browser in headless mode.
     */
    headless?: boolean;
    window?: BrowserWindow1;
    viewport?: BrowserViewport1;
}
/**
 * Browser dimensions.
 */
export interface BrowserWindow1 {
    /**
     * Width of the browser window in pixels.
     */
    width?: number;
    /**
     * Height of the browser window in pixels.
     */
    height?: number;
}
/**
 * Viewport dimensions.
 */
export interface BrowserViewport1 {
    /**
     * Width of the viewport in pixels.
     */
    width?: number;
    /**
     * Height of the viewport in pixels.
     */
    height?: number;
}
export interface FileTypeExecutable {
    /**
     * File extensions to use with type.
     */
    extensions: string | [string, ...string[]];
    /**
     * `runShell` step to perform for this file type. Use $1 as a placeholder for the file path.
     */
    runShell?: RunShell;
    [k: string]: unknown;
}
export interface RunShellCommandDetailed {
    /**
     * Command to perform in the machine's default shell.
     */
    command: string;
    /**
     * Arguments for the command.
     */
    args?: string[];
    /**
     * Working directory for the command.
     */
    workingDirectory?: string;
    /**
     * Expected exit codes of the command. If the command's actual exit code isn't in this list, the step fails.
     */
    exitCodes?: number[];
    /**
     * Content expected in the command's stdout or stderr. If the expected content can't be found in the command's stdout or stderr, the step fails. Supports strings and regular expressions. To use a regular expression, the string must start and end with a forward slash, like in `/^hello-world.* /`.
     */
    stdio?: string;
    /**
     * File path to save the command's output, relative to `directory`.
     */
    path?: string;
    /**
     * Directory to save the command's output. If the directory doesn't exist, creates the directory. If not specified, the directory is your media directory.
     */
    directory?: string;
    /**
     * Allowed variation as a fraction (0 to 1) of text different between the current output and previously saved output. For example, 0.1 means 10%. If the difference between the current output and the previous output is greater than `maxVariation`, the step fails. If output doesn't exist at `path`, this value is ignored.
     */
    maxVariation?: number;
    /**
     * If `true`, overwrites the existing output at `path` if it exists.
     * If `aboveVariation`, overwrites the existing output at `path` if the difference between the new output and the existing output is greater than `maxVariation`.
     */
    overwrite?: "true" | "false" | "aboveVariation";
    /**
     * Max time in milliseconds the command is allowed to run. If the command runs longer than this, the step fails.
     */
    timeout?: number;
}
/**
 * Options for connecting to external services.
 */
export interface IntegrationsOptions {
    openApi?: (OpenApi & OpenAPIDescriptionTest)[];
    docDetectiveApi?: DocDetectiveOrchestrationAPI;
    heretto?: HerettoCMSIntegrations;
}
export interface OpenAPIDescriptionTest {
    [k: string]: unknown;
}
/**
 * Configuration for Doc Detective Orchestration API integration.
 */
export interface DocDetectiveOrchestrationAPI {
    /**
     * API key for authenticating with the Doc Detective Orchestration API.
     */
    apiKey?: string;
}
export interface HerettoCMSIntegration {
    /**
     * Unique identifier for this Heretto integration. Used in logs and results.
     */
    name: string;
    /**
     * The organization subdomain used to access Heretto CCMS (e.g., 'thunderbird' for thunderbird.heretto.com).
     */
    organizationId: string;
    /**
     * Heretto CCMS username (email address) for API authentication.
     */
    username: string;
    /**
     * API token generated in Heretto CCMS for authentication. See https://help.heretto.com/en/heretto-ccms/api/ccms-api-authentication/basic-authentication#ariaid-title3
     */
    apiToken: string;
    /**
     * Name of the scenario to build and test.
     */
    scenarioName?: string;
    /**
     * Local path where Heretto content was downloaded. Set automatically during processing.
     */
    outputPath?: string;
    /**
     * Mapping of local file paths to Heretto file metadata. Set automatically during content loading.
     */
    fileMapping?: {
        [k: string]: {
            /**
             * The UUID of the file in Heretto.
             */
            fileId?: string;
            /**
             * The path of the file in Heretto.
             */
            filePath?: string;
            [k: string]: unknown;
        };
    };
    /**
     * If `true`, uploads changed screenshots and other media files back to Heretto CMS after test execution.
     */
    uploadOnChange?: boolean;
    /**
     * Mapping of Heretto file paths to their UUIDs and metadata. Set automatically during content loading by fetching ditamap resource dependencies.
     */
    resourceDependencies?: {
        [k: string]: {
            /**
             * The UUID of the file in Heretto.
             */
            uuid?: string;
            /**
             * The full xmldb path of the file in Heretto.
             */
            fullPath?: string;
            /**
             * The file name.
             */
            name?: string;
            /**
             * The UUID of the parent folder in Heretto.
             */
            parentFolderId?: string;
            [k: string]: unknown;
        };
    };
}
/**
 * Options around sending telemetry for Doc Detective usage.
 */
export interface TelemetryOptions {
    /**
     * If `true`, sends Doc Detective telemetry.
     */
    send: boolean;
    /**
     * Identifier for the organization, group, or individual running Doc Detective.
     */
    userId?: string;
}
/**
 * Options for the post-run hints feature. After a test run, Doc Detective may print one short, contextual hint with code samples and links to encourage further engagement (for example, suggesting a CI workflow when none is detected). Hints are shown only on a TTY and only at the default `info` log level.
 */
export interface HintsOptions {
    /**
     * If `true` (the default), Doc Detective may print one applicable hint after a test run. Disable from the CLI with `--no-hints`.
     */
    enabled: boolean;
}
/**
 * Environment information for the system running Doc Detective.
 */
export interface EnvironmentDetails {
    /**
     * The current working directory of the process running Doc Detective.
     */
    workingDirectory?: string;
    /**
     * The operating system type running Doc Detective.
     */
    platform: "linux" | "mac" | "windows";
    /**
     * The processor architecture of the system running Doc Detective.
     */
    arch?: "arm32" | "arm64" | "x32" | "x64";
}
export interface Specification {
    /**
     * JSON Schema for this object.
     */
    $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/spec_v3.schema.json";
    /**
     * Unique identifier for the test specification.
     */
    specId?: string;
    /**
     * Description of the test specification.
     */
    description?: string;
    /**
     * Path to the test specification.
     */
    specPath?: string;
    /**
     * Path to the content that the specification is associated with.
     */
    contentPath?: string;
    /**
     * Contexts to run the test in. Overrides contexts defined at the config and spec levels.
     */
    runOn?: Context1[];
    openApi?: (OpenApi1 & OpenAPIDescriptionTest1)[];
    /**
     * If `true`, captures a screenshot after every step in this spec's tests that runs in a browser. Overrides the config-level `autoScreenshot`; individual tests can override this value with their own `autoScreenshot`. When unset, defers to the config level.
     */
    autoScreenshot?: boolean;
    /**
     * If `true`, records a video of every browser context in this spec's tests. Overrides the config-level `autoRecord`; individual tests can override this value with their own `autoRecord`. When unset, defers to the config level.
     */
    autoRecord?: boolean;
    /**
     * [Tests](test) to perform.
     *
     * @minItems 1
     */
    tests: [Test, ...Test[]];
    [k: string]: unknown;
}
/**
 * A context in which to perform tests. If no contexts are specified but a context is required by one or more tests, Doc Detective attempts to identify a supported context in the current environment and run tests against it. For example, if a browser isn't specified but is required by steps in the test, Doc Detective will search for and use a supported browser available in the current environment.
 */
export interface Context1 {
    /**
     * JSON Schema for this object.
     */
    $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/context_v3.schema.json";
    /**
     * Unique identifier for the context.
     */
    contextId?: string;
    /**
     * Platforms to run tests on.
     */
    platforms?: ("linux" | "mac" | "windows") | ("linux" | "mac" | "windows")[];
    /**
     * Browsers to run tests on.
     */
    browsers?: ("chrome" | "firefox" | "safari" | "webkit") | Browser2 | (("chrome" | "firefox" | "safari" | "webkit") | Browser3)[];
}
/**
 * Browser configuration.
 */
export interface Browser2 {
    /**
     * Name of the browser.
     */
    name: "chrome" | "firefox" | "safari" | "webkit";
    /**
     * If `true`, runs the browser in headless mode.
     */
    headless?: boolean;
    window?: BrowserWindow2;
    viewport?: BrowserViewport2;
}
/**
 * Browser dimensions.
 */
export interface BrowserWindow2 {
    /**
     * Width of the browser window in pixels.
     */
    width?: number;
    /**
     * Height of the browser window in pixels.
     */
    height?: number;
}
/**
 * Viewport dimensions.
 */
export interface BrowserViewport2 {
    /**
     * Width of the viewport in pixels.
     */
    width?: number;
    /**
     * Height of the viewport in pixels.
     */
    height?: number;
}
/**
 * Browser configuration.
 */
export interface Browser3 {
    /**
     * Name of the browser.
     */
    name: "chrome" | "firefox" | "safari" | "webkit";
    /**
     * If `true`, runs the browser in headless mode.
     */
    headless?: boolean;
    window?: BrowserWindow3;
    viewport?: BrowserViewport3;
}
/**
 * Browser dimensions.
 */
export interface BrowserWindow3 {
    /**
     * Width of the browser window in pixels.
     */
    width?: number;
    /**
     * Height of the browser window in pixels.
     */
    height?: number;
}
/**
 * Viewport dimensions.
 */
export interface BrowserViewport3 {
    /**
     * Width of the viewport in pixels.
     */
    width?: number;
    /**
     * Height of the viewport in pixels.
     */
    height?: number;
}
export interface OpenAPIDescriptionTest1 {
    [k: string]: unknown;
}
//# sourceMappingURL=resolvedTests_v3.d.ts.map