import type { ComputedLikeC4Model, ComputedView, DiagramView, Fqn, ParsedLikeC4Model, RelationId, ViewChange, ViewId } from '@likec4/core';
import { NotificationType, RequestType, RequestType0 } from 'vscode-jsonrpc';
import type { DocumentUri, Location } from 'vscode-languageserver-types';
export declare const onDidChangeModel: NotificationType<string>;
export type OnDidChangeModelNotification = typeof onDidChangeModel;
export declare const fetchModel: RequestType0<{
    model: ParsedLikeC4Model | null;
}, void>;
export type FetchModelRequest = typeof fetchModel;
export declare const fetchComputedModel: RequestType<{
    cleanCaches?: boolean | undefined;
}, {
    model: ComputedLikeC4Model | null;
}, void>;
export type FetchComputedModelRequest = typeof fetchComputedModel;
export declare const computeView: RequestType<{
    viewId: ViewId;
}, {
    view: ComputedView | null;
}, void>;
export type ComputeViewRequest = typeof computeView;
/**
 * Request to layout a view.
 */
export declare const layoutView: RequestType<{
    viewId: ViewId;
}, {
    result: {
        dot: string;
        diagram: DiagramView;
    } | null;
}, void>;
export type LayoutViewRequest = typeof layoutView;
/**
 * Request to build documents.
 */
export interface BuildDocumentsParams {
    docs: DocumentUri[];
}
export declare const buildDocuments: RequestType<BuildDocumentsParams, void, void>;
export type BuildDocumentsRequest = typeof buildDocuments;
/**
 * Request to locate an element, relation, deployment or view.
 */
export type LocateParams = {
    element: Fqn;
    property?: string;
} | {
    relation: RelationId;
} | {
    deployment: Fqn;
    property?: string;
} | {
    view: ViewId;
};
export declare const locate: RequestType<LocateParams, Location | null, void>;
export type LocateRequest = typeof locate;
export interface ChangeViewRequestParams {
    viewId: ViewId;
    change: ViewChange;
}
export declare const changeView: RequestType<ChangeViewRequestParams, Location | null, void>;
export type ChangeViewRequest = typeof changeView;
