import * as semver from "semver"; export declare const allFeatures: { readonly "receive-keyword": { readonly ">=0.6.0": true; readonly "<0.6.0": false; }; readonly "fallback-keyword": { readonly ">=0.6.0": true; readonly "<0.6.0": false; }; readonly "array-parameter-location": { readonly ">=0.7.0": "memory"; readonly "^0.5.0 || ^0.6.0": "calldata"; readonly "<0.5.0": undefined; }; readonly "abiencoder-v2": { readonly ">=0.8.0": "default"; readonly "<0.8.0": "experimental"; }; readonly "global-structs": { readonly ">=0.6.0": true; readonly "<0.6.0": false; }; readonly "structs-in-interfaces": { readonly ">=0.5.0": true; readonly "<0.5.0": false; }; readonly "custom-errors": { readonly ">=0.8.4": true; readonly "<0.8.4": false; }; readonly "user-defined-value-types": { readonly ">=0.8.8": true; readonly "<0.8.8": false; }; }; export type AllFeatures = typeof allFeatures; export type Category = keyof AllFeatures; export type CategorySpecification = AllFeatures[C]; export type CategoryOptionRange = string & { [K in C]: keyof CategorySpecification; }[C]; export type CategoryOption = { [K in C]: CategorySpecification[CategoryOptionRange]; }[C]; export type BooleanCategory = { [C in Category]: CategoryOption extends boolean ? C : never; }[Category]; export declare const isBooleanCategory: (category: Category) => category is BooleanCategory; export type VersionsFeatures = { [C in Category]: VersionsFeature; }; export type VersionsFeature = C extends BooleanCategory ? { supported(): boolean; missing(): boolean; varies(): boolean; } : { consistently(option: CategoryOption): boolean; }; export declare const forRange: (range: string | semver.Range) => VersionsFeatures; //# sourceMappingURL=features.d.ts.map