import type { TransactionObservabilityManager } from '@lokalise/node-core';
import type { FastifyPluginCallback } from 'fastify';
declare module 'fastify' {
    interface FastifyInstance {
        datadogTransactionManager: DatadogTransactionManager;
    }
}
export interface DatadogTransactionManagerOptions {
    isEnabled: boolean;
}
export declare class DatadogTransactionManager implements TransactionObservabilityManager {
    private readonly isEnabled;
    private readonly spanMap;
    constructor(isEnabled: boolean);
    static createDisabled(): DatadogTransactionManager;
    /**
     * @param transactionName - used for grouping similar transactions together
     * @param uniqueTransactionKey - used for identifying specific ongoing transaction. Must be reasonably unique to reduce possibility of collisions
     */
    start(transactionName: string, uniqueTransactionKey: string): void;
    /**
     * @param transactionName - used for grouping similar transactions together
     * @param uniqueTransactionKey - used for identifying specific ongoing transaction. Must be reasonably unique to reduce possibility of collisions
     * @param transactionGroup - group is used for grouping related transactions with different names
     */
    startWithGroup(transactionName: string, uniqueTransactionKey: string, transactionGroup: string): void;
    stop(uniqueTransactionKey: string): void;
    addCustomAttribute(attrName: string, attrValue: string | number | boolean): void;
    addCustomAttributes(uniqueTransactionKey: string, atts: {
        [p: string]: string | number | boolean;
    }): void;
    setUserID(userId: string): void;
    setControllerName(name: string, action: string): void;
}
export declare const datadogTransactionManagerPlugin: FastifyPluginCallback<DatadogTransactionManagerOptions>;
