import { ExtFitField, FitMessageInputs, FitMessageMap, fit_messages } from "./fit-tables";
type keysOf<o> = {
    [K in keyof o]: K extends string ? K : K extends number ? `${K}` : never;
}[keyof o];
export declare function keysOf<o extends object>(o: o): keysOf<o>[];
type FitMessages = typeof fit_messages;
type MessageKeys = keyof FitMessages;
export type FitDevInfo = {
    field_num: number;
    value: number | string;
};
export type FitWriterOptions = {
    noCompressedTimestamps?: boolean;
    usePreferredRecords?: boolean;
};
export declare class FitWriter {
    private buffer;
    private offset;
    private crc;
    private definitionMap;
    private nextLocalDef;
    private localDefs;
    private scratch;
    private devFieldTypes;
    private lastTimeStamp;
    private options;
    private ensureSpace;
    constructor(options?: FitWriterOptions | boolean);
    private write_crc;
    private update_crc;
    private byte;
    private word;
    private long;
    private float;
    private double;
    private str;
    private field;
    private definition;
    private file_header;
    private dev_field_key;
    time(t: number | Date): number;
    latlng<T extends number | undefined>(l: T): T;
    finish(): DataView;
    private writeFieldValue;
    getPreferredField(message: FitMessageMap[string], key: string): ExtFitField;
    writeMessage<T extends MessageKeys>(messageType: T, messageInfo: Partial<FitMessageInputs[T]>, devInfo?: FitDevInfo[] | null, lastUse?: boolean): void;
}
export {};
