import { type LintingResult, LintingRuleCertainty } from '../linter-format';
import type { MergeableRecord } from '../../util/objects';
import { LintingRuleTag } from '../linter-tags';
import type { FunctionInfo } from '../../queries/catalog/dependencies-query/function-info/function-info';
export interface SoftwareHasTestsResult extends LintingResult {
    readonly message: string;
}
export interface SoftwareHasTestsConfig extends MergeableRecord {
    /** Additional test function patterns beyond the defaults */
    readonly additionalTestFunctions: FunctionInfo[];
}
export interface SoftwareHasTestsMetadata extends MergeableRecord {
    readonly testFilesFound: number;
    readonly testCallsFound: number;
}
export declare const SOFTWARE_HAS_TESTS: {
    readonly createSearch: (config: SoftwareHasTestsConfig) => import("../../search/flowr-search-builder").FlowrSearchBuilder<"from-query", [], import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../search/flowr-search").FlowrSearchElements<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../search/flowr-search").FlowrSearchElement<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>>;
    readonly processSearchResult: (elements: import("../../search/flowr-search").FlowrSearchElements<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../search/flowr-search").FlowrSearchElement<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>, _config: SoftwareHasTestsConfig, data: import("../../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider<import("../../r-bridge/parser").KnownParser>) => {
        results: SoftwareHasTestsResult[];
        '.meta': {
            testFilesFound: number;
            testCallsFound: number;
        };
    };
    readonly prettyPrint: {
        readonly query: (result: SoftwareHasTestsResult) => string;
        readonly full: (result: SoftwareHasTestsResult) => string;
    };
    readonly info: {
        readonly name: "Software Has Tests";
        readonly description: "Checks whether the software project has tests (test files in a test directory or test function calls in R code).";
        readonly tags: readonly [LintingRuleTag.Usability, LintingRuleTag.Reproducibility];
        readonly certainty: LintingRuleCertainty.BestEffort;
        readonly defaultConfig: {
            readonly additionalTestFunctions: readonly [];
        };
    };
};
