import { type ApiCompatibilityIndex } from './api-compatibility/index.js';
import { type ApiGuidanceApi } from './agent-guidance/index.js';
import type { ApiCompatibilityReference } from './api-compatibility/types.js';
export interface ApiSpecFunctionEntry {
    signature: string;
    docstring: string;
    usedTypes: string[];
    compatibility?: ApiCompatibilityReference[];
    targetInterface?: string;
}
export interface ApiSpecInterfaceEntry {
    docstring: string;
    functions: Record<string, ApiSpecFunctionEntry>;
}
export interface ApiSpecTypeEntry {
    name: string;
    definition?: string;
    isEnum?: boolean;
    values?: Record<string, string>;
    docstring?: string;
}
export interface ApiSpec {
    compatibility?: ApiCompatibilityIndex;
    subApis: {
        workbook: Record<string, ApiSpecFunctionEntry>;
        worksheet: Record<string, ApiSpecFunctionEntry>;
    };
    interfaces: Record<string, ApiSpecInterfaceEntry>;
    types: Record<string, ApiSpecTypeEntry>;
    formatPresets?: Record<string, Record<string, {
        code: string;
        example: string;
        description?: string;
    }>>;
    defaultFormats?: Record<string, string>;
    generated?: string;
}
export declare const apiSpec: ApiSpec;
export interface OverviewResult {
    workbook: {
        methods: string[];
        subApis: string[];
    };
    worksheet: {
        methods: string[];
        subApis: string[];
    };
}
export interface MethodSummary {
    name: string;
    signature: string;
    docstring: string;
    compatibility: ApiCompatibilityReference[];
}
export interface InterfaceResult {
    name: string;
    path: string;
    docstring: string;
    methods: MethodSummary[];
}
export interface MethodResult {
    name: string;
    path: string;
    signature: string;
    docstring: string;
    compatibility: ApiCompatibilityReference[];
    types: Record<string, TypeResult>;
}
export interface TypeResult {
    name: string;
    definition?: string;
    isEnum?: boolean;
    values?: Record<string, string>;
    docstring?: string;
}
export type DescribeResult = OverviewResult | InterfaceResult | MethodResult | TypeResult | null;
export interface MethodNode {
    readonly name: string;
    readonly path: string;
    readonly signature: string;
    readonly docstring: string;
    readonly compatibility: ApiCompatibilityReference[];
    readonly types: Record<string, TypeResult>;
}
export interface SubApiNode {
    readonly name: string;
    readonly path: string;
    readonly docstring: string;
    readonly methods: MethodSummary[];
    readonly [methodName: string]: MethodNode | unknown;
}
export interface RootNode {
    readonly name: string;
    readonly methods: MethodSummary[];
    readonly subApis: string[];
    readonly [key: string]: SubApiNode | MethodNode | unknown;
}
export interface TypesNode {
    readonly [typeName: string]: TypeResult;
}
export declare const api: {
    describe: {
        (): OverviewResult;
        (path: string): DescribeResult;
    };
    guidance: ApiGuidanceApi;
    compatibility: ApiCompatibilityIndex;
    wb: RootNode;
    ws: RootNode;
    types: TypesNode;
};
