/**
 * Thrown when a circular dependency is detected.
 *
 * This typically occurs when two services depend on each other inside their constructors.
 *
 * You can resolve this by deferring any de-reference of your dependencies until after the constructor has completed.
 *
 * @example
 * ```ts
 * // This would cause a circular dependency
 * class DependencyA {
 *   test = 1;
 *   constructor({ dependencyB }) {
 *     dependencyB.test;
 *   }
 * }
 *
 * class DependencyB {
 *   test = 2;
 *   constructor({ dependencyA }) {
 *     dependencyA.test;
 *   }
 * }
 *
 * // but this would be ok
 * class DependencyC {
 *   test = 1;
 *   #dependencyD;
 *   constructor({ dependencyD }) {
 *     this.#dependencyD = dependencyD;
 *   }
 * }
 *
 * // You can still de-reference from one of the dependencies, though:
 * class DependencyD {
 *   test = 2;
 *   constructor({ dependencyC }) {
 *     dependencyC.test;
 *   }
 * }
 * ```
 */
export class CircularDependencyError extends RangeError {
    /**
     * @param {string} serviceName
     * @param {any} stackTrace
     */
    constructor(serviceName: string, stackTrace: any);
}
export class FluxjectError extends Error {
    /**
     * @param {string} message
     */
    constructor(message: string);
}
