/**
 * @module Lock
 */
import type { TimeSpan } from "../../utilities/_module-exports.js";
/**
 * The event is dispatched when a lock is aquired.
 *
 * IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
 * @group Events
 */
export type AcquiredLockEvent = {
    key: string;
    owner: string;
    ttl: TimeSpan | null;
};
/**
 * The event is dispatched when a lock is released.
 *
 * IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
 * @group Events
 */
export type ReleasedLockEvent = {
    key: string;
    owner: string;
};
/**
 * The event is dispatched when a lock is forcefully released.
 *
 * IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
 * @group Events
 */
export type ForceReleasedLockEvent = {
    key: string;
};
/**
 * The event is dispatched when trying to release a lock that is owned by a different owner.
 *
 * IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
 * @group Events
 */
export type UnownedReleaseTryLockEvent = {
    key: string;
    owner: string;
};
/**
 * The event is dispatched when trying to refefresh a lock that is owned by a different owner.
 *
 * IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
 * @group Events
 */
export type UnownedRefreshTryLockEvent = {
    key: string;
    owner: string;
};
/**
 * The event is dispatched when trying to acquire a lock that is owned by a different owner.
 *
 * IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
 * @group Events
 */
export type NotAvailableLockEvent = {
    key: string;
    owner: string;
};
/**
 * The event is dispatched when a lock is refreshed.
 *
 * IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
 * @group Events
 */
export type RefreshedLockEvent = {
    key: string;
    owner: string;
    ttl: TimeSpan;
};
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
 * @group Events
 */
export type UnexpectedErrorLockEvent = {
    key: string;
    owner: string;
    ttl: TimeSpan | null;
    error: unknown;
};
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
 * @group Events
 */
export declare const LOCK_EVENTS: {
    readonly ACQUIRED: "ACQUIRED";
    readonly RELEASED: "RELEASED";
    readonly UNOWNED_RELEASE_TRY: "UNOWNED_RELEASE_TRY";
    readonly UNOWNED_REFRESH_TRY: "UNOWNED_REFRESH_TRY";
    readonly NOT_AVAILABLE: "NOT_AVAILABLE";
    readonly FORCE_RELEASED: "FORCE_RELEASED";
    readonly REFRESHED: "REFRESHED";
    readonly UNEXPECTED_ERROR: "UNEXPECTED_ERROR";
};
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
 * @group Events
 */
export type LockEventMap = {
    [LOCK_EVENTS.ACQUIRED]: AcquiredLockEvent;
    [LOCK_EVENTS.RELEASED]: ReleasedLockEvent;
    [LOCK_EVENTS.UNOWNED_RELEASE_TRY]: UnownedReleaseTryLockEvent;
    [LOCK_EVENTS.UNOWNED_REFRESH_TRY]: UnownedRefreshTryLockEvent;
    [LOCK_EVENTS.NOT_AVAILABLE]: NotAvailableLockEvent;
    [LOCK_EVENTS.FORCE_RELEASED]: ForceReleasedLockEvent;
    [LOCK_EVENTS.REFRESHED]: RefreshedLockEvent;
    [LOCK_EVENTS.UNEXPECTED_ERROR]: UnexpectedErrorLockEvent;
};
