/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { LogLevel } from "#log/LogLevel.js";
import type { Transaction } from "./Transaction.js";
/**
 * The lifecycle of a transaction adheres to the following discrete stages.
 */
export declare enum Status {
    /**
     * Transaction may be used only for read operations.
     */
    ReadOnly = "read only",
    /**
     * Transaction is registered but there are no ACID guarantees.
     */
    Shared = "shared",
    /**
     * Transaction is waiting to obtain exclusive access to resources.
     */
    Waiting = "waiting",
    /**
     * Transaction has exclusive access.  Reads will maintain consistency
     * and writes are allowed.
     */
    Exclusive = "exclusive",
    /**
     * Transaction is in the process of committing, phase one.
     */
    CommittingPhaseOne = "committing phase one",
    /**
     * Transaction is in the process of committing, phase two.
     */
    CommittingPhaseTwo = "committing phase two",
    /**
     * Transaction is in the process of rolling back.
     */
    RollingBack = "rolling back",
    /**
     * Transaction is destroyed, no further operations permitted.
     */
    Destroyed = "destroyed"
}
export declare namespace Status {
    function assert(transaction: Transaction, acceptable: Status[], target: Status): void;
    function formatStatus(status: Status): string;
    /**
     * If an asynchronous transaction holds an exclusive (write) lock for an extended period it will write details of
     * the lock to the log.  Set this value to configure the length of the reporting window.
     *
     * A value of 0 forces lock reports for all async transactions; a negative value disables reporting.
     */
    let slowTransactionTime: import("../index.js").Duration;
    /**
     * The log level for slow transaction reporting.
     */
    let slowLogLevel: LogLevel;
}
//# sourceMappingURL=Status.d.ts.map