/**
 * @copyright Sister Software
 * @license AGPL-3.0
 * @author Teffen Ellis, et al.
 */
import { ClassificationMatch, ClassificationsMatchInput } from "mailwoman/core/classification";
import { Span } from "mailwoman/core/tokenization";
export interface SerializedSolutionMatch extends ClassificationMatch {
    /**
     * The span of text that was matched.
     */
    readonly value: string;
    /**
     * The start index of the span.
     */
    readonly start: number;
    /**
     * The end index of the span.
     */
    readonly end: number;
}
/**
 * Comparator for sorting solution matches by their start index.
 */
export declare function compareMatchesByStart(a: SolutionMatch, b: SolutionMatch): number;
export declare class SolutionMatch implements SerializedSolutionMatch {
    #private;
    /**
     * The span of text that was matched.
     */
    readonly span: Span;
    /**
     * The classification of the match.
     */
    get classification(): "unknown" | "adjacent" | "alpha" | "alphanumeric" | "area" | "chain" | "country" | "dependency" | "directional" | "end_token_single_character" | "end_token" | "given_name" | "house_number" | "intersection" | "level_designator" | "level" | "locality" | "middle_initial" | "multistreet" | "numeric" | "ordinal" | "person" | "personal_suffix" | "personal_title" | "place" | "postcode" | "punctuation" | "region" | "road_type" | "start_token" | "stop_word" | "street_name" | "street_prefix" | "street_proper_name" | "street_suffix" | "street" | "surname" | "toponym" | "unit_designator" | "unit" | "venue";
    /**
     * The confidence of the match, from 0 to 1.
     *
     * This indicates how certain the classifier is that the match is correct.
     */
    get confidence(): number;
    /**
     * The body of the matched span.
     */
    get value(): string;
    /**
     * The start index of the span.
     */
    get start(): number;
    /**
     * The end index of the span.
     */
    get end(): number;
    /**
     * The languages that the match was classified as.
     */
    get languages(): import("../index.js").Displayable<ReadonlySet<import("../index.js").LibPostalLanguageCode | import("../index.js").Alpha3bLanguageCode>> | undefined;
    /**
     * The range of the span, i.e. the number of characters covered.
     */
    get coverage(): number;
    constructor(span: Span, classification: ClassificationsMatchInput);
    toJSON(): SerializedSolutionMatch;
}
export declare function calculateRangeScore(match: SolutionMatch): {
    range: number;
    confidence: number;
};
//# sourceMappingURL=SolutionMatch.d.ts.map