import { DirectiveNode } from 'graphql';
import { Deprecated, Description, InterfaceType } from '../../subgraph/state.cjs';
import type { Key, MapByGraph, TypeBuilder } from './common.cjs';
export declare function interfaceTypeBuilder(): TypeBuilder<InterfaceType, InterfaceTypeState>;
export type InterfaceTypeState = {
    name: string;
    tags: Set<string>;
    inaccessible: boolean;
    hasDefinition: boolean;
    description?: Description;
    byGraph: MapByGraph<InterfaceTypeInGraph>;
    interfaces: Set<string>;
    implementedBy: Set<string>;
    fields: Map<string, InterfaceTypeFieldState>;
    ast: {
        directives: DirectiveNode[];
    };
};
type InterfaceTypeFieldState = {
    name: string;
    type: string;
    tags: Set<string>;
    inaccessible: boolean;
    deprecated?: Deprecated;
    description?: Description;
    byGraph: MapByGraph<FieldStateInGraph>;
    args: Map<string, InterfaceTypeFieldArgState>;
    ast: {
        directives: DirectiveNode[];
    };
};
export type InterfaceTypeFieldArgState = {
    name: string;
    type: string;
    tags: Set<string>;
    defaultValue?: string;
    description?: Description;
    deprecated?: Deprecated;
    byGraph: MapByGraph<ArgStateInGraph>;
    ast: {
        directives: DirectiveNode[];
    };
};
type InterfaceTypeInGraph = {
    extension: boolean;
    keys: Key[];
    interfaces: Set<string>;
    implementedBy: Set<string>;
};
type FieldStateInGraph = {
    type: string;
    override: string | null;
    provides: string | null;
    requires: string | null;
};
type ArgStateInGraph = {
    type: string;
    defaultValue?: string;
};
export {};
//# sourceMappingURL=interface-type.d.ts.map