import { type EmailClient, type SupportTypeResult } from './clients.js';
import { type RawFeatureData, caniEmailJson } from './json.js';
export { caniEmailJson as rawData };
interface PositionPoint {
    line: number;
    column: number;
}
export interface Position {
    start: PositionPoint;
    end: PositionPoint;
    source?: string;
}
export interface FeatureIssue {
    notes: string[];
    title: string;
    position?: Position;
    support: SupportTypeResult['type'];
}
export interface FeatureInfo extends FeatureIssue {
    url: string;
}
export interface FeatureIssues {
    errors: FeatureMap<FeatureIssue>;
    warnings: FeatureMap<FeatureIssue>;
}
type FeatureSet = Map<string, RawFeatureData>;
interface GetFeaturesResult {
    all: FeatureSet;
    css: FeatureSet;
    html: FeatureSet;
    image: FeatureSet;
    others: FeatureSet;
}
export declare class FeatureMap<TValue> extends Map<EmailClient, TValue[]> {
    set(key: EmailClient, value: TValue): this;
}
export declare const getFeatures: () => GetFeaturesResult;
export declare const getAllFeatures: (clients: EmailClient[]) => {
    supported: FeatureMap<FeatureInfo>;
    unsupported: FeatureMap<FeatureInfo>;
};
//# sourceMappingURL=features.d.ts.map