import { type PepperOptions } from './pepper.js';
export type EnvSitterFingerprint = {
    key: string;
    algorithm: 'hmac-sha256';
    fingerprint: string;
    length: number;
    pepperSource: 'env' | 'file';
    pepperFilePath?: string;
};
export type EnvSitterKeyMatch = {
    key: string;
    match: boolean;
};
export type EnvSitterMatcher = {
    op: 'exists';
} | {
    op: 'is_empty';
} | {
    op: 'is_equal';
    candidate: string;
} | {
    op: 'partial_match_regex';
    regex: RegExp;
} | {
    op: 'partial_match_prefix';
    prefix: string;
} | {
    op: 'partial_match_suffix';
    suffix: string;
} | {
    op: 'is_number';
} | {
    op: 'is_string';
} | {
    op: 'is_boolean';
};
export type Detection = 'jwt' | 'url' | 'base64';
export type ScanFinding = {
    key: string;
    detections: Detection[];
};
export type ScanOptions = {
    keysFilter?: RegExp;
    detect?: readonly Detection[];
};
export type ListKeysOptions = {
    filter?: RegExp;
};
export type MatchOptions = {
    pepper?: PepperOptions;
};
export declare class EnvSitter {
    private readonly source;
    private constructor();
    static fromDotenvFile(filePath: string): EnvSitter;
    static fromExternalCommand(command: string, args?: readonly string[]): EnvSitter;
    listKeys(options?: ListKeysOptions): Promise<string[]>;
    fingerprintKey(key: string, options?: MatchOptions): Promise<EnvSitterFingerprint>;
    matchKey(key: string, matcher: EnvSitterMatcher, options?: MatchOptions): Promise<boolean>;
    matchKeyBulk(keys: readonly string[], matcher: EnvSitterMatcher, options?: MatchOptions): Promise<EnvSitterKeyMatch[]>;
    matchKeyAll(matcher: EnvSitterMatcher, options?: MatchOptions): Promise<EnvSitterKeyMatch[]>;
    matchCandidate(key: string, candidate: string, options?: MatchOptions): Promise<boolean>;
    matchCandidateBulk(keys: readonly string[], candidate: string, options?: MatchOptions): Promise<EnvSitterKeyMatch[]>;
    matchCandidateAll(candidate: string, options?: MatchOptions): Promise<EnvSitterKeyMatch[]>;
    matchCandidatesByKey(candidatesByKey: Record<string, string>, options?: MatchOptions): Promise<EnvSitterKeyMatch[]>;
    scan(options?: ScanOptions): Promise<ScanFinding[]>;
}
//# sourceMappingURL=envsitter.d.ts.map