export declare type Tagged<BaseType, TagName> = BaseType & {
    __tag: TagName;
};
export declare type Oid = string;
export declare type Path = string;
export declare type BufferId = Tagged<number, "BufferId">;
export declare type Point = {
    row: number;
    column: number;
};
export declare type Range = {
    start: Point;
    end: Point;
};
export declare type Change = Range & {
    text: string;
};
export interface BaseEntry {
    readonly depth: number;
    readonly name: string;
    readonly type: FileType;
}
export declare enum FileType {
    Directory = "Directory",
    Text = "Text"
}
export interface GitProvider {
    baseEntries(oid: Oid): AsyncIterable<BaseEntry>;
    baseText(oid: Oid, path: Path): Promise<string>;
}
export declare class GitProviderWrapper {
    private git;
    constructor(git: GitProvider);
    baseEntries(oid: Oid): AsyncIteratorWrapper<BaseEntry>;
    baseText(oid: Oid, path: Path): Promise<string>;
}
export declare class AsyncIteratorWrapper<T> {
    private iterator;
    constructor(iterator: AsyncIterator<T>);
    next(): Promise<IteratorResult<T>>;
}
export declare type ChangeObserverCallback = (changes: ReadonlyArray<Change>) => void;
export declare class ChangeObserver {
    private callbacks;
    constructor();
    onChange(bufferId: BufferId, callback: ChangeObserverCallback): void;
    textChanged(bufferId: BufferId, changes: Change[]): void;
}
//# sourceMappingURL=support.d.ts.map