import Signal from "../../../core/events/signal/Signal";

export class Reference<T> {
    readonly onReleased: Signal<this, T>

    readonly bound: boolean

    getValue(): T | null

    release(): void

    bind(v: T): void

    static from<X>(x: X): Reference<X>

    static readonly NULL: Readonly<Reference<any>>
}
