"use strict";
/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.cleaningFailed = exports.cleanable = void 0;
const dependencies_1 = require("./dependencies");
/**
 * A custom invalidation protocol to enable 2 phase cleaning, enabling features like output-diff.
 */
/**
 * InvalidationToken type to use for cleanable.
 * Using a subclass of InvalidationToken results in cleanable showing up better in the debugger.
 */
class CleanableToken extends dependencies_1.InvalidationToken {
}
/**
 * InvalidationToken type to use for cleanable.
 * Using a subclass of InvalidationToken results in cleanable showing up better in the debugger.
 */
class CleaningFailedToken extends dependencies_1.InvalidationToken {
}
/**
 * `Dependee` might have changed and implements Cleanable.
 * See Cleanable for contract.
 *
 * @internal
 */
exports.cleanable = new CleanableToken("cleanable", false);
/**
 * `Dependee` previously sent cleanable invalidation, and that cleaning has failed.
 * Unlike normal invalidation, cleaningFailed invalidation can be sent when updating/recomputing a cell.
 *
 * See {@link Cleanable} for contract.
 *
 * @internal
 */
exports.cleaningFailed = new CleaningFailedToken("cleaningFailed", true);
//# sourceMappingURL=cleanable.js.map