import { DirectiveNode } from 'graphql';
import FeatureUrl from './feature-url';
export declare class Feature {
    readonly url: FeatureUrl;
    readonly name: string;
    readonly directive: DirectiveNode;
    readonly purpose?: "SECURITY" | "EXECUTION" | undefined;
    constructor(url: FeatureUrl, name: string, directive: DirectiveNode, purpose?: "SECURITY" | "EXECUTION" | undefined);
    canonicalName(docName: string): string | null;
}
export interface ReadonlyFeatures {
    find(feature: FeatureUrl | string, exact?: boolean): Feature | null;
    [Symbol.iterator](): Iterator<Feature>;
}
export declare class Features implements ReadonlyFeatures {
    add(feature: Feature): void;
    find(feature: FeatureUrl | string, exact?: boolean): Feature | null;
    documentName(feature: FeatureUrl | string, exact?: boolean): string | null;
    [Symbol.iterator](): Generator<Feature, void, undefined>;
    validate(): Error[];
    readonly features: Map<string, Map<string, Feature[]>>;
    private findOrCreateIdentity;
}
export default Features;
//# sourceMappingURL=features.d.ts.map