import { OnDestroy } from '@angular/core';
import { Subscription } from 'rxjs';
import * as i0 from "@angular/core";
/**
 * ** Base Class for all Angular related Objects.
 *
 *      - Cleans all rxjs subscriptions on object destroy.
 */
export declare class TaurusObject implements OnDestroy {
    /**
     * ** Class name, identifier for Object class.
     *
     *      - Format should be PascalCase.
     */
    static readonly CLASS_NAME: string;
    /**
     * ** Class PUBLIC_NAME, human-readable.
     *
     *      - Format should be Kebab-Case.
     */
    static readonly PUBLIC_NAME: string;
    /**
     * ** Object UUID that meats RFC4122 compliance and also has Class name identifier inside.
     *
     * <br/>
     * <i>pattern</i>:
     * <p>
     *     <Class Name><strong>_</strong><UUID RFC4122>
     * </p>
     */
    readonly objectUUID: string;
    /**
     * ** Store for Subscriptions references.
     */
    protected subscriptions: Subscription[];
    /**
     * ** Constructor.
     */
    constructor(className?: string);
    /**
     * ** Methods that will dispose Object.
     *      - Clean all Subscriptions.
     */
    dispose(): void;
    /**
     * @inheritDoc
     */
    ngOnDestroy(): void;
    /**
     * ** Clean all Subscriptions.
     */
    protected cleanSubscriptions(): void;
    /**
     * ** Remove subscription reference from subscriptions queue providing reference itself.
     *
     *      - Before remove it would be auto-unsubscribed from stream.
     * @protected
     */
    protected removeSubscriptionRef(subscriptionRef: Subscription): boolean;
    /**
     * ** Unsubscribe subscription from stream.
     * @private
     */
    private static _unsubscribeFromStream;
    static ɵfac: i0.ɵɵFactoryDeclaration<TaurusObject, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TaurusObject, never, never, {}, {}, never>;
}
