/// <reference types="node" />
import fs = require('fs');
import { FileMetaData, PageHeader, RowGroup } from './thrift';
import { Writable } from 'stream';
export interface WriteStreamOptions {
    flags?: string;
    encoding?: string;
    fd?: number;
    mode?: number;
    autoClose?: boolean;
    start?: number;
}
/**
 * Helper function that serializes a thrift object into a buffer
 */
export declare function serializeThrift(obj: any): Buffer;
export declare function decodeThrift(obj: any, buf: Buffer, offset?: number): number;
export declare function decodeFileMetadata(buf: Buffer, offset?: number): {
    length: number;
    metadata: FileMetaData;
};
export declare function decodePageHeader(buf: Buffer, offset?: number): {
    length: number;
    pageHeader: PageHeader;
};
/**
 * Get the number of bits required to store a given value
 */
export declare function getBitWidth(val: number): number;
/**
 * FIXME not ideal that this is linear
 */
export declare function getThriftEnum(klass: any, value: number | string): string;
export declare function fopen(filePath: string): Promise<number>;
export declare function fstat(filePath: string): Promise<fs.Stats>;
export declare function fread(fd: number, position: number, length: number): Promise<Buffer>;
export declare function fclose(fd: number): Promise<void>;
export declare function oswrite(os: Writable, buf: Buffer): Promise<void>;
export declare function osclose(os: Writable): Promise<void>;
export declare function osopen(path: string, opts: WriteStreamOptions): Promise<fs.WriteStream>;
export declare function fieldIndexOf(arr: string[][], elem: string[]): number;
/**
 * Compare two arrays of strings.  Used to compare field paths.
 */
export declare function stringArraysEqual(a: string[], b: string[]): boolean;
/**
 * Find a column chunk in a row group matching the given field path
 * @param name
 */
export declare function findColumnChunk(rowGroup: RowGroup, name: string[]): import("./thrift").ColumnChunk;
export declare function load(name: string): any;
