import { ILogWriter } from "../types";
import { BaseContainer } from "./base";
/**
 * Configuration object for error.
 */
export type ErrorConfig = {
    id: string;
    message: string;
    code?: string;
    name?: string;
    type?: string;
    tags?: Record<string, string>;
    metadata?: Record<string, any>;
};
/**
 * Represents an error or exception that occurred within the trace.
 *
 * The Error class captures detailed information about failures, exceptions,
 * and error conditions, providing context for debugging and monitoring.
 *
 * @class Error
 * @extends BaseContainer
 * @example
 * const error = container.error({
 *   id: 'err-001',
 *   message: 'Failed to connect to external API',
 *   code: 'CONNECTION_TIMEOUT',
 *   type: 'NetworkError',
 * });
 *
 * @example
 * // Capturing JavaScript errors
 * try {
 *   await riskyOperation();
 * } catch (err) {
 *   const error = container.error({
 *     id: 'operation-failure',
 *     message: err.message,
 *     name: err.name,
 *     type: 'JavaScriptError',
 *   });
 * }
 */
export declare class Error extends BaseContainer {
    protected message: string;
    protected code?: string;
    protected errorType?: string;
    protected name?: string;
    /**
     * Creates a new error log entry.
     *
     * @param config - Configuration object defining the error details
     * @param writer - Log writer instance for persisting the error
     * @example
     * const error = container.error({
     *   id: 'validation-error',
     *   message: 'Invalid input parameters',
     *   code: 'VALIDATION_FAILED',
     *   type: 'ValidationError',
     * });
     */
    constructor(config: ErrorConfig, writer: ILogWriter);
    /**
     * Returns the complete data representation of this error.
     *
     * @returns Error data
     * @example
     * const errorData = error.data();
     */
    data(): any;
}
