import { Chunk } from './formattingHelpers';
export interface Split {
    splitType: ' ' | '' | '\n' | '\n\n';
    cost: number;
}
export interface Choice {
    left: Chunk;
    right: Chunk;
    possibleSplitChoices: Split[];
}
interface Group {
    align: number;
    breakCost: number;
}
export interface Decision {
    indentation: number;
    left: Chunk;
    right: Chunk;
    chosenSplit: Split;
}
export interface State {
    activeGroups: Group[];
    column: number;
    choiceIndex: number;
    indentationState: IndentationState;
    cost: number;
    overflowingCount: number;
    edge: StateEdge;
}
interface StateEdge {
    prevState: State;
    decision: Decision;
}
export interface Result {
    cost: number;
    decisions: Decision[];
    indentation: IndentationState;
}
interface FinalResultWithPos {
    formattedString: string;
    cursorPos: number;
}
interface IndentationState {
    base: number;
    special: number;
    align: number[];
}
export declare function doesNotWantSpace(chunk: Chunk, nextChunk: Chunk): boolean;
export declare function buffersToFormattedString(buffers: Chunk[][]): FinalResultWithPos;
export {};
