type Ownable<T extends Disposable> = Owned<T> | Unowned<T>;
declare class Owned<T extends Disposable> {
    readonly value: T;
    constructor(value: T);
    [Symbol.dispose](): void;
    get(): T;
}
declare class Unowned<T extends Disposable> {
    readonly value: T;
    constructor(value: T);
    [Symbol.dispose](): void;
    get(): T;
}

export { Owned, Unowned };
export type { Ownable };
