/** @module refer */

/**
 * Interface for components that require explicit clearing of references to dependent components.
 * 
 * @see [[IReferences]]
 * @see [[IReferenceable]]
 * 
 * ### Example ###
 * 
 *     export class MyController implements IReferenceable, IUnreferenceable {
 *        public _persistence: IMyPersistence;
 *        ...    
 *        public setReferences(references: IReferences): void {
 *            this._persistence = references.getOneRequired<IMyPersistence>(
 *                new Descriptor("mygroup", "persistence", "*", "*", "1.0")
 *            );
 *        }
 *     
 *        public unsetReferences(): void {
 *            this._persistence = null;
 *        }
 *        ...
 *     }
 */
export interface IUnreferenceable {
    /**
     * Unsets (clears) previously set references to dependent components. 
     */
    unsetReferences(): void;
}
