/// <reference types="node" />
export interface PackedIndex {
    readonly offset: number;
    readonly fileIndex: number;
}
export declare type PackedIndexMap = Map<string, PackedIndex>;
export declare class Packs {
    readonly packDir: string;
    readonly packFileNames: string[];
    readonly packedIndexMap: PackedIndexMap;
    readonly hasPackFiles: boolean;
    private _packedObjectCache;
    constructor(packDir: string, packFileNames?: string[], packedIndexMap?: PackedIndexMap);
    static initialize(gitDir: string): Promise<Packs>;
    static _initialize(gitDir: string): Promise<Packs>;
    static initializeSync(gitDir: string): Packs;
    private _getPackedIndexFromCache(hash);
    private _getPackedObjectBufferFromCach(idx);
    private _setPackedObjectBuffrToCache(idx, buff);
    private _getPackFilePath(idx);
    unpackGitObject(hash: string): Promise<Buffer>;
    unpackGitObjectSync(hash: string): Buffer;
    private _unpackGitObject(fd, idx);
    private _unpackGitObjectSync(fd, idx);
    private _unpackDeltaObject(fd, idx, po, head);
    private _unpackDeltaObjectSync(fd, idx, po, head);
}
