import type { ProjectSchemaJSON, PropertySchema } from '../project-schema/index.ts';
import type { ServiceLayers } from '../types/types.ts';
import type { Agent, GetShapeOptions, ProjectSchema, Query, Shape, Tool } from './types.ts';
export declare class ProjectSchemaImpl implements ProjectSchema {
    #private;
    constructor(projectSchemaJson: ProjectSchemaJSON, layers: ServiceLayers);
    getShape(rawShapeRef: string, options?: GetShapeOptions): Shape | undefined;
    ensureShape(rawShapeRef: string, options?: GetShapeOptions): Shape;
    getQuery(rawQueryRef: string): Query | undefined;
    getTool(rawToolRef: string): Tool | undefined;
    ensureTool(ref: string): Tool;
    getTools(): Tool[];
    ensureQuery(ref: string): Query;
    getLocalQueries(): Query[];
    getLocalMutations(): Query[];
    getAgents(): Agent[];
    ensureAgent(name: string): Agent;
    getAgent(name: string): Agent | undefined;
    dereferenceSchema(propertySchema: PropertySchema): PropertySchema;
    dereferenceObjectSchema(propertySchema: PropertySchema): import("../project-schema/latest.ts").ObjectSchema;
    /**
     * Get context variables configuration for a shape by name.
     * Returns undefined if the shape has no context variables configured.
     * Results are cached for efficient repeated lookups.
     */
    getShapeContextVariables(shapeName: string): Record<string, string> | undefined;
    get json(): ProjectSchemaJSON;
}
