/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { InvalidationToken } from "./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 InvalidationToken {
}
/**
 * InvalidationToken type to use for cleanable.
 * Using a subclass of InvalidationToken results in cleanable showing up better in the debugger.
 */
class CleaningFailedToken extends InvalidationToken {
}
/**
 * `Dependee` might have changed and implements Cleanable.
 * See Cleanable for contract.
 *
 * @internal
 */
export const 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
 */
export const cleaningFailed = new CleaningFailedToken("cleaningFailed", true);
//# sourceMappingURL=cleanable.js.map