import type { AgentJSON, ObjectSchema, ProjectSchemaJSON, PropertySchema, QueryJSON, ShapeJSON } from '../project-schema/index.ts';
import type { RefItem } from '../refs.ts';
export interface GetShapeOptions {
    includeAllBuiltIns?: boolean;
}
export interface ProjectSchema {
    getShape(shapeRef: string, options?: GetShapeOptions): Shape | undefined;
    getQuery(queryRef: string): Query | undefined;
    getLocalQueries(): Query[];
    getLocalMutations(): Query[];
    dereferenceSchema(propertySchema: PropertySchema): PropertySchema;
    dereferenceObjectSchema(propertySchema: PropertySchema): ObjectSchema;
    getAgent(name: string): Agent | undefined;
    getAgents(): Agent[];
    json: ProjectSchemaJSON;
}
export interface Shape {
    name: string;
    ref: string;
    refItem: RefItem;
    json: ShapeJSON;
    getObjectSchema(): ObjectSchema | undefined;
}
export interface Query {
    name: string;
    type: 'query' | 'mutation';
    ref: string;
    argsSchema: ObjectSchema | undefined;
    json: QueryJSON;
}
export interface Agent {
    name: string;
    json: AgentJSON;
    getQueries(): Query[];
    getMutations(): Query[];
}
