import { MessageDefinition } from "./definition";
import { Filelike } from "./file";
import { MessageFlagBits, MessageAddLogged, DataSectionMessage, FieldPrimitive } from "./messages";
export type ParameterEntry = {
    value: number;
    defaultTypes: number;
};
export type ULogHeader = {
    version: number;
    timestamp: bigint;
    flagBits?: MessageFlagBits;
    information: Map<string, FieldPrimitive | FieldPrimitive[]>;
    parameters: Map<string, ParameterEntry>;
    definitions: Map<string, MessageDefinition>;
};
export type Subscription = MessageDefinition & Pick<MessageAddLogged, "multiId">;
export declare class ULog {
    #private;
    constructor(filelike: Filelike, opts?: {
        chunkSize?: number;
    });
    get header(): ULogHeader | undefined;
    /**
     * Return a map of message ids to their corresponding subscription
     */
    get subscriptions(): Map<number, Subscription>;
    open(): Promise<void>;
    readMessages(opts?: {
        startTime?: bigint;
        endTime?: bigint;
        /** If true (default) logs messages are yielded from the time range. */
        includeLogs?: boolean;
        /** If specified, only messages with the given message ids are yielded. */
        msgIds?: Set<number>;
        /** If true, the messages are yielded in reverse order (default false). */
        reverse?: boolean;
    }): AsyncIterableIterator<DataSectionMessage>;
    messageCount(): number | undefined;
    dataMessageCounts(): ReadonlyMap<number, number> | undefined;
    logCount(): number | undefined;
    timeRange(): Readonly<[bigint, bigint]> | undefined;
}
export declare function computeTimetampOffset(definition: MessageDefinition, definitions: Map<string, MessageDefinition>): number;
//# sourceMappingURL=ULog.d.ts.map