import type { TSESTree } from '@typescript-eslint/types';
import type * as ts from 'typescript';
/**
 * Describes specific types or values declared in local files.
 * See [TypeOrValueSpecifier > FileSpecifier](/packages/type-utils/type-or-value-specifier#filespecifier).
 */
export interface FileSpecifier {
    from: 'file';
    /**
     * Type or value name(s) to match on.
     */
    name: string | string[];
    /**
     * A specific file the types or values must be declared in.
     */
    path?: string;
}
/**
 * Describes specific types or values declared in TypeScript's built-in lib definitions.
 * See [TypeOrValueSpecifier > LibSpecifier](/packages/type-utils/type-or-value-specifier#libspecifier).
 */
export interface LibSpecifier {
    from: 'lib';
    /**
     * Type or value name(s) to match on.
     */
    name: string | string[];
}
/**
 * Describes specific types or values imported from packages.
 * See [TypeOrValueSpecifier > PackageSpecifier](/packages/type-utils/type-or-value-specifier#packagespecifier).
 */
export interface PackageSpecifier {
    from: 'package';
    /**
     * Type or value name(s) to match on.
     */
    name: string | string[];
    /**
     * Package name the type or value must be declared in.
     */
    package: string;
}
/**
 * A centralized format for rule options to describe specific _types_ and/or _values_.
 * See [TypeOrValueSpecifier](/packages/type-utils/type-or-value-specifier).
 */
export type TypeOrValueSpecifier = string | FileSpecifier | LibSpecifier | PackageSpecifier;
export declare const typeOrValueSpecifiersSchema: {
    readonly items: {
        readonly oneOf: [{
            readonly type: "string";
        }, {
            readonly additionalProperties: false;
            readonly properties: {
                readonly from: {
                    readonly enum: ["file"];
                    readonly type: "string";
                };
                readonly name: {
                    readonly oneOf: [{
                        readonly type: "string";
                    }, {
                        readonly items: {
                            readonly type: "string";
                        };
                        readonly minItems: 1;
                        readonly type: "array";
                        readonly uniqueItems: true;
                    }];
                };
                readonly path: {
                    readonly type: "string";
                };
            };
            readonly required: ["from", "name"];
            readonly type: "object";
        }, {
            readonly additionalProperties: false;
            readonly properties: {
                readonly from: {
                    readonly enum: ["lib"];
                    readonly type: "string";
                };
                readonly name: {
                    readonly oneOf: [{
                        readonly type: "string";
                    }, {
                        readonly items: {
                            readonly type: "string";
                        };
                        readonly minItems: 1;
                        readonly type: "array";
                        readonly uniqueItems: true;
                    }];
                };
            };
            readonly required: ["from", "name"];
            readonly type: "object";
        }, {
            readonly additionalProperties: false;
            readonly properties: {
                readonly from: {
                    readonly enum: ["package"];
                    readonly type: "string";
                };
                readonly name: {
                    readonly oneOf: [{
                        readonly type: "string";
                    }, {
                        readonly items: {
                            readonly type: "string";
                        };
                        readonly minItems: 1;
                        readonly type: "array";
                        readonly uniqueItems: true;
                    }];
                };
                readonly package: {
                    readonly type: "string";
                };
            };
            readonly required: ["from", "name", "package"];
            readonly type: "object";
        }];
    };
    readonly type: "array";
};
export declare function typeMatchesSpecifier(type: ts.Type, specifier: TypeOrValueSpecifier, program: ts.Program): boolean;
export declare const typeMatchesSomeSpecifier: (type: ts.Type, specifiers: TypeOrValueSpecifier[] | undefined, program: ts.Program) => boolean;
export declare function valueMatchesSpecifier(node: TSESTree.Node, specifier: TypeOrValueSpecifier, program: ts.Program, type: ts.Type): boolean;
export declare const valueMatchesSomeSpecifier: (node: TSESTree.Node, specifiers: TypeOrValueSpecifier[] | undefined, program: ts.Program, type: ts.Type) => boolean;
