import { Position, Range } from 'vscode-languageserver';
import { BlockType } from '../types';
import { PrismaSchema, SchemaDocument } from '../Schema';
export interface Block {
    type: BlockType;
    range: Range;
    nameRange: Range;
    name: string;
    definingDocument: SchemaDocument;
}
export declare function getBlocks(schema: PrismaSchema): Generator<Block, void, void>;
export declare function getDatamodelBlock(blockName: string, schema: PrismaSchema): Block | void;
export declare function getFieldsFromCurrentBlock(schema: PrismaSchema, block: Block, position?: Position): string[];
export type FoundLocation = {
    document: SchemaDocument;
    lineIndex: number;
};
export type RenameFieldLocation = {
    fieldName: string;
    locations: FoundLocation[];
};
export declare function getFieldTypesFromCurrentBlock(schema: PrismaSchema, block: Block, position?: Position): {
    fieldTypes: Map<string, RenameFieldLocation>;
    fieldTypeNames: Record<string, string>;
};
export declare function getCompositeTypeFieldsRecursively(schema: PrismaSchema, compositeTypeFieldNames: string[], fieldTypesFromBlock: {
    fieldTypes: Map<string, RenameFieldLocation>;
    fieldTypeNames: Record<string, string>;
}): string[];
export declare const getDocumentationForBlock: (block: Block) => string[];
