IReaderSemaphore: {
    acquireReader(): Task<boolean>;
    acquireReaderBlocking(
        settings?: SharedLockAquireBlockingSettings,
    ): Task<boolean>;
    acquireReaderBlockingOrFail(
        settings?: SharedLockAquireBlockingSettings,
    ): Task<void>;
    acquireReaderOrFail(): Task<void>;
    forceReleaseAllReaders(): Task<boolean>;
    refreshReader(ttl?: ITimeSpan): Task<boolean>;
    refreshReaderOrFail(ttl?: ITimeSpan): Task<void>;
    releaseReader(): Task<boolean>;
    releaseReaderOrFail(): Task<void>;
    runReader<TValue = void>(
        asyncFn: AsyncLazy<TValue>,
    ): Task<Result<TValue, LimitReachedReaderSemaphoreError>>;
    runReaderBlocking<TValue = void>(
        asyncFn: AsyncLazy<TValue>,
        settings?: SharedLockAquireBlockingSettings,
    ): Task<Result<TValue, LimitReachedReaderSemaphoreError>>;
    runReaderBlockingOrFail<TValue = void>(
        asyncFn: AsyncLazy<TValue>,
        settings?: SharedLockAquireBlockingSettings,
    ): Task<TValue>;
    runReaderOrFail<TValue = void>(asyncFn: AsyncLazy<TValue>): Task<TValue>;
}

IMPORT_PATH: "@daiso-tech/core/shared-lock/contracts"

Type declaration