import { ActionResult, Decision, DecisionAnyMatch } from "./constants.js";
import { ResultAssessment } from "./decide.js";
import { RuntimeConfig } from "./runtimeConfig.js";
import { SearcheeLabel, SearcheeWithLabel } from "./searchee.js";
import { TorrentLocator } from "./torrent.js";
import { WithRequired } from "./utils.js";
export interface Candidate {
    name: string;
    guid: string;
    link: string;
    tracker: string;
    size?: number;
    pubDate?: number;
    indexerId?: number;
    cookie?: string;
}
export type CandidateWithIndexerId = WithRequired<Candidate, "indexerId">;
export interface AssessmentWithTracker {
    assessment: ResultAssessment;
    tracker: string;
}
export declare function searchForLocalTorrentByCriteria(criteria: TorrentLocator, options: {
    configOverride: Partial<RuntimeConfig>;
    ignoreCrossSeeds: boolean;
}): Promise<number | null>;
export declare function checkNewCandidateMatch(candidate: Candidate, searcheeLabel: SearcheeLabel): Promise<{
    decision: DecisionAnyMatch | Decision.INFO_HASH_ALREADY_EXISTS | null;
    actionResult: ActionResult | null;
}>;
export declare function findAllSearchees(searcheeLabel: SearcheeLabel): Promise<SearcheeWithLabel[]>;
export declare function bulkSearch(options?: {
    configOverride: Partial<RuntimeConfig>;
}): Promise<void>;
export declare function bulkSearchByNames(names: string[], options?: {
    configOverride?: Partial<RuntimeConfig>;
}): Promise<{
    attempted: number;
    totalFound: number;
    requested: number;
}>;
export declare function scanRssFeeds(): Promise<void>;
