/// <reference types="node" />
import { Crazyflie } from '.';
import { TOC, TOCItem } from './toc';
import { TOCFetcher } from './toc-fetcher';
import { EventEmitter } from 'events';
export declare class Logging extends EventEmitter {
    private crazyflie;
    tocFetcher: TOCFetcher;
    blocks: Block[];
    private nextBlockId;
    data: EventEmitter;
    /**
     * Class for dealing with the 'logging' port (telemetry)
     * (https://wiki.bitcraze.io/doc:crazyflie:crtp:log)
     */
    constructor(crazyflie: Crazyflie);
    /**
     * Retrieve logging TOC from the Crazyflie.
     * Required before getting any logging data!
     */
    getTOC(): Promise<TOC>;
    /**
     * Start receiving data of TOC items. Creates a block of variables and activates it.
     * You can access these variables using various events; check the documentation.
     * You can optionally specify the interval in milliseconds for the Crazyflie to ping data back to the computer.
     * (Floors to the nearest 10ms interval)
     */
    start(variables: TOCItem[], millisecondInterval?: number): Promise<void>;
    /**
     * Gets a block with a specified id from the `block` array. Not Crazyflie.
     */
    getBlock(id: number): Block;
    /**
     * Create a log block
     * (https://wiki.bitcraze.io/projects:crazyflie:firmware:comm_protocol#log_settings_access_port_5_channel_1)
     */
    createBlock(block: Block): Promise<void>;
    /**
     * Appends variables to a block
     * (https://wiki.bitcraze.io/projects:crazyflie:firmware:comm_protocol#log_settings_access_port_5_channel_1)
     */
    appendToBlock(blockId: number, variables: TOCItem[]): Promise<void>;
    /**
     * Deletes a block
     * (https://wiki.bitcraze.io/projects:crazyflie:firmware:comm_protocol#log_settings_access_port_5_channel_1)
     */
    deleteBlock(blockId: number): Promise<void>;
    /**
     * Activate a block so logging data is sent back to computer at a certain interval.
     * Interval is specified in increments of 10ms (1 = 10ms, 2 = 20ms, etc...)
     * (https://wiki.bitcraze.io/projects:crazyflie:firmware:comm_protocol#log_settings_access_port_5_channel_1)
     */
    startBlock(blockId: number, interval: number): Promise<void>;
    /**
     * Deactivates a block so no more logging data is sent from that block
     * (https://wiki.bitcraze.io/projects:crazyflie:firmware:comm_protocol#log_settings_access_port_5_channel_1)
     */
    stopBlock(blockId: number): Promise<void>;
    /**
     * Stop and delete all blocks
     * (https://wiki.bitcraze.io/projects:crazyflie:firmware:comm_protocol#log_settings_access_port_5_channel_1)
     */
    reset(): Promise<void>;
    /**
     * Handle block response
     * (https://wiki.bitcraze.io/projects:crazyflie:firmware:comm_protocol#log_settings_access_port_5_channel_1)
     */
    private handleBlock(data);
    /**
     * Handle incoming log data
     * (https://wiki.bitcraze.io/projects:crazyflie:firmware:comm_protocol#log_data_access_port_5_channel_2)
     */
    private handleLogData(data);
}
export interface Block {
    id: number;
    variables: TOCItem[];
}
