import { ASTNode, DefinitionNode, SchemaExtensionNode } from 'graphql';
import { Linker, type Link } from './linker';
import { De, Defs, Locatable, Located, Redirect } from './de';
import GRef from './gref';
import LinkUrl from './link-url';
export declare const ErrExtraImport: (gref: GRef, node: ASTNode) => import("./error").GraphQLErrorExt<"ExtraImport"> & {
message: string;
gref: GRef;
node: ASTNode;
};
export interface IScope extends Iterable {
readonly url?: LinkUrl;
readonly self?: Link;
readonly parent?: IScope;
readonly linker: Linker;
readonly flat: IScope;
own(name: string): Link | undefined;
has(name: string): boolean;
lookup(name: string): Link | undefined;
visible(): Iterable<[string, Link]>;
entries(): Iterable<[string, Link]>;
header(): [De] | [];
locate(node: Locatable): GRef;
name(node: GRef): [string | null, string] | undefined;
denormalize(node: T): De;
renormalizeDefs(defs: Defs, redirects?: Iterable): Iterable;
child(fn: (scope: IScopeMut) => void): Readonly;
}
export interface IScopeMut extends IScope {
add(link: Link): void;
}
export declare class Scope implements IScope {
readonly parent?: Scope | undefined;
static readonly EMPTY: IScope;
static create(fn?: (scope: IScopeMut) => void, parent?: Scope): IScope;
get self(): Link | undefined;
get url(): LinkUrl | undefined;
locate(node: Locatable): GRef;
header(): [De] | [];
name(gref: GRef): [string | null, string] | undefined;
denormalize(node: T): De;
renormalize(node: De, redirects?: Readonly