/** @noSelfInFile */ declare const noOverrideSymbol: unique symbol; type NoOverride = { [noOverrideSymbol]: typeof noOverrideSymbol; }; export type Destructor = { readonly __destructor: unique symbol; }; export interface Destroyable { destroy(): void; } export declare abstract class AbstractDestroyable implements Destroyable { /** * An overriding function should always call the super one at the end of it, * in the following manner: `return super.onDestroy()`. */ protected onDestroy(): Destructor; destroy(): boolean & NoOverride; } export {};