import Collector, { Settings as CollectorSettings } from "@gauf/tracker/collector";
import { Packed, Packer } from "@gauf/tracker/packer";
import { Transport } from "@gauf/tracker/transport";
export { default as MetricEmitter } from "@gauf/tracker/emitter";
export declare type Metric = {
    name: string;
    emitter: string;
    timestamp: number;
    payload?: any;
};
export declare type Metrics = Metric[];
export declare type Payload = any;
export declare type Settings = {
    heartbeat?: number;
    collector?: CollectorSettings;
    transport?: object;
    packer?: Packer<any>;
};
export default class Tracker {
    protected interval?: number;
    protected heartbeat: number;
    protected metrics: Metric[];
    protected collector: Collector;
    protected transport: Transport;
    protected packer: Packer<any>;
    protected payload?: Payload;
    constructor(url: string, trackerSettings?: Settings);
    activate(payload?: Payload): void;
    deactivate(): void;
    protected packData(): Packed<any>;
    protected createSendInterval(): void;
    protected createCollector(settings?: CollectorSettings): Collector;
    protected createTransport(url: string, settings?: object): Transport;
    protected createPacker(transport: Transport, settings?: Packer<any>): Packer<any>;
    protected collect(metric: Metric): void;
}
//# sourceMappingURL=tracker.d.ts.map