/// <reference types="node" />
/**
 * Crazyradio constants
 * These values were taken from (https://wiki.bitcraze.io/doc:crazyradio:usb:index)
 */
export declare const CRAZYRADIO: {
    VID: number;
    PID: number;
};
export declare enum DATA_RATES {
    '250K' = 0,
    '1M' = 1,
    '2M' = 2,
}
export declare function GET_DATA_RATE(targetRate: number): "250K" | "1M" | "2M";
export declare enum RADIO_POWERS {
    '-18dBm' = 0,
    '-12dBm' = 1,
    '-6dBm' = 2,
    '0dBm' = 3,
}
export declare function GET_RADIO_POWER(targetPower: number): "-18dBm" | "-12dBm" | "-6dBm" | "0dBm";
export declare const BM_REQUEST_TYPE = 64;
export declare const VENDOR_REQUESTS: {
    SET_RADIO_CHANNEL: number;
    SET_RADIO_ADDRESS: number;
    SET_DATA_RATE: number;
    SET_RADIO_POWER: number;
    SET_RADIO_ARD: number;
    SET_RADIO_ARC: number;
    ACK_ENABLE: number;
    SET_CONT_CARRIER: number;
    SCAN_CHANNELS: number;
    LAUNCH_BOOTLOADER: number;
};
/**
 * Crazyflie Real-Time Protocol (CRTP)
 * These values were taken from (https://wiki.bitcraze.io/projects:crazyflie:crtp)
 */
export declare const PORTS: {
    CONSOLE: number;
    PARAMETERS: number;
    COMMANDER: number;
    LOGGING: number;
    COMMANDER_GENERIC: number;
    LINK_LAYER: number;
};
export declare const MAX_PAYLOAD_SIZE = 31;
export declare const CHANNELS: {
    TOC: number;
    PARAM: {
        READ: number;
        WRITE: number;
        MISC: number;
    };
    LOG: {
        CTRL: number;
        DATA: number;
    };
};
export declare const COMMANDS: {
    TOC: {
        GET_ITEM: number;
        GET_INFO: number;
    };
    PARAM_MISC: {
        SET_BY_NAME: number;
    };
    LOG_CTRL: {
        CREATE_BLOCK: number;
        APPEND_BLOCK: number;
        DELETE_BLOCK: number;
        START_BLOCK: number;
        STOP_BLOCK: number;
        RESET_LOG: number;
    };
    COMMANDER_GENERIC: {
        STOP: number;
        VELOCITY_WORLD: number;
        Z_DISTANCE: number;
        HOVER: number;
    };
};
/**
 * Parameter types
 * (https://wiki.bitcraze.io/doc:crazyflie:crtp:param#toc_access)
 */
export declare enum PARAM_TYPES {
    int8 = 0,
    int16 = 1,
    int32 = 2,
    int64 = 3,
    fp16 = 5,
    float = 6,
    double = 7,
    uInt8 = 8,
    uInt16 = 9,
    uInt32 = 10,
    uInt64 = 11,
}
export declare type Type = keyof typeof PARAM_TYPES;
export declare function GET_PARAM_TYPE(typeValue: number): "int8" | "int16" | "int32" | "int64" | "fp16" | "float" | "double" | "uInt8" | "uInt16" | "uInt32" | "uInt64";
/**
 * Logging types
 * (https://wiki.bitcraze.io/projects:crazyflie:firmware:log#firmware_usage)
 */
export declare enum LOGGING_TYPES {
    uInt8 = 1,
    uInt16 = 2,
    uInt32 = 3,
    int8 = 4,
    int16 = 5,
    int32 = 6,
    float = 7,
    fp16 = 8,
}
export declare function GET_LOGGING_TYPE(typeValue: number): "int8" | "int16" | "int32" | "fp16" | "float" | "uInt8" | "uInt16" | "uInt32";
/**
 * Possible logging errors
 * (https://wiki.bitcraze.io/projects:crazyflie:firmware:comm_protocol#variable_format)
 */
export declare const BLOCK_ERRORS: {
    [status: number]: {
        name: string;
        message: string;
    };
};
/**
 * Buffers used for things
 */
export declare const BUFFERS: {
    NOTHING: Buffer;
    SOMETHING: Buffer;
};
/**
 * Factory to return read and write functions for a buffer
 * We need to bind the `this` context to the functions otherwise it won't work
 * @TODO Implement i64/u64/fp16 functions and get rid of Partial<T>
 */
export declare function BUFFER_TYPES(buffer: Buffer): Partial<Record<Type, TypeData>>;
export interface TypeData {
    size: number;
    read: (offset: number, noAssert?: boolean) => number;
    write: (value: number, offset: number, noAssert?: boolean) => number;
}
