import { Action, BlocklistType, LinkType, MatchMode } from "@cross-seed/shared/constants";
export { Action, BlocklistType, LinkType, MatchMode };
export declare const PROGRAM_NAME: any;
export declare const PROGRAM_VERSION: any;
export declare const USER_AGENT: string;
export declare const TORRENT_TAG = "cross-seed";
export declare const TORRENT_CATEGORY_SUFFIX = ".cross-seed";
export declare const NEWLINE_INDENT = "\n\t\t\t\t";
export declare const EP_REGEX: RegExp;
export declare const BAD_EP_REGEX: RegExp;
export declare const IS_MULTI_EP_REGEX: RegExp;
export declare const SEASON_REGEX: RegExp;
export declare const BAD_SEASON_REGEX: RegExp;
export declare const MOVIE_REGEX: RegExp;
export declare const ANIME_REGEX: RegExp;
export declare const RELEASE_GROUP_REGEX: RegExp;
export declare const ANIME_GROUP_REGEX: RegExp;
export declare const EBOOK_AND_MUSIC_RELEASE_REGEX: RegExp;
export declare const RESOLUTION_REGEX: RegExp;
export declare const RES_STRICT_REGEX: RegExp;
export declare const YEARS_REGEX: RegExp;
export declare const REPACK_PROPER_REGEX: RegExp;
export declare const ARR_PROPER_REGEX: RegExp;
export declare const SCENE_TITLE_REGEX: RegExp;
export declare const ARR_DIR_REGEX: RegExp;
export declare const SONARR_SUBFOLDERS_REGEX: RegExp;
export declare const NON_UNICODE_ALPHANUM_REGEX: RegExp;
export declare const CALIBRE_INDEXNUM_REGEX: RegExp;
export declare const INFO_HASH_REGEX: RegExp;
export declare const SAVED_TORRENTS_INFO_REGEX: RegExp;
export declare const BAD_GROUP_PARSE_REGEX: RegExp;
export declare const JSON_VALUES_REGEX: RegExp;
export declare const ABS_WIN_PATH_REGEX: RegExp;
export declare const AKA_REGEX: RegExp;
export declare const ALL_SPACES_REGEX: RegExp;
export declare const ALL_SQUARE_BRACKETS_REGEX: RegExp;
export declare const ALL_PARENTHESES_REGEX: RegExp;
export declare function parseSource(title: string): string | null;
export declare function sourceRegexRemove(title: string): string;
export declare const VIDEO_EXTENSIONS: string[];
export declare const VIDEO_DISC_EXTENSIONS: string[];
export declare const AUDIO_EXTENSIONS: string[];
export declare const BOOK_EXTENSIONS: string[];
export declare const ALL_EXTENSIONS: string[];
export declare const TORRENT_CACHE_FOLDER = "torrent_cache";
export declare const LOGS_FOLDER = "logs";
export declare const UNKNOWN_TRACKER = "UnknownTracker";
export declare const MAX_PATH_BYTES = 255;
export declare const LEVENSHTEIN_DIVISOR = 3;
export declare const MIN_VIDEO_QUERY_LENGTH = 3;
export declare enum MediaType {
    EPISODE = "episode",
    SEASON = "pack",
    MOVIE = "movie",
    ANIME = "anime",
    VIDEO = "video",
    AUDIO = "audio",
    BOOK = "book",
    OTHER = "unknown"
}
export declare enum InjectionResult {
    SUCCESS = "INJECTED",
    FAILURE = "FAILURE",
    ALREADY_EXISTS = "ALREADY_EXISTS",
    TORRENT_NOT_COMPLETE = "TORRENT_NOT_COMPLETE"
}
export declare enum SaveResult {
    SAVED = "SAVED"
}
export type ActionResult = InjectionResult | SaveResult;
export declare enum Decision {
    MATCH = "MATCH",
    MATCH_SIZE_ONLY = "MATCH_SIZE_ONLY",
    MATCH_PARTIAL = "MATCH_PARTIAL",
    FUZZY_SIZE_MISMATCH = "FUZZY_SIZE_MISMATCH",
    SIZE_MISMATCH = "SIZE_MISMATCH",
    PARTIAL_SIZE_MISMATCH = "PARTIAL_SIZE_MISMATCH",
    NO_DOWNLOAD_LINK = "NO_DOWNLOAD_LINK",
    DOWNLOAD_FAILED = "DOWNLOAD_FAILED",
    MAGNET_LINK = "MAGNET_LINK",
    RATE_LIMITED = "RATE_LIMITED",
    /**
     * Searchee and Candidate infoHash matches. Usually happens with public
     * torrents and torrents added by radarr/sonarr before cross-seed on announces.
     * Useful for the inject job as we ignore INFO_HASH_ALREADY_EXISTS and
     * for reporting a 204 announce status code instead of 200 from exists.
     */
    SAME_INFO_HASH = "SAME_INFO_HASH",
    /**
     * Checked after SAME_INFO_HASH.
     */
    INFO_HASH_ALREADY_EXISTS = "INFO_HASH_ALREADY_EXISTS",
    FILE_TREE_MISMATCH = "FILE_TREE_MISMATCH",
    RELEASE_GROUP_MISMATCH = "RELEASE_GROUP_MISMATCH",
    BLOCKED_RELEASE = "BLOCKED_RELEASE",
    PROPER_REPACK_MISMATCH = "PROPER_REPACK_MISMATCH",
    RESOLUTION_MISMATCH = "RESOLUTION_MISMATCH",
    SOURCE_MISMATCH = "SOURCE_MISMATCH"
}
export type DecisionAnyMatch = Decision.MATCH | Decision.MATCH_SIZE_ONLY | Decision.MATCH_PARTIAL;
export declare function isAnyMatchedDecision(decision: Decision): decision is DecisionAnyMatch;
export declare function isStaticDecision(decision: Decision): boolean;
export declare function parseBlocklistEntry(blocklistEntry: string): {
    blocklistType: BlocklistType;
    blocklistValue: string;
};
export declare const IGNORED_FOLDERS_SUBSTRINGS: string[];
export declare const RESUME_EXCLUDED_KEYWORDS: string[];
export declare const RESUME_EXCLUDED_EXTS: string[];
