import {
  execLockMethodName,
  execOps,
  execOpsMethodName,
  lockMethodName,
  mutexExecLock,
  mutexLock,
  mutexUnlock,
  notifyLock,
  notifyLockMethodName,
  preReadExecTakeOpsMethodName,
  saveExecOpResult,
  saveExecOpResultMethodName,
  unlockMethodName,
  waitMethodName,
} from './methods';
import { preReadExecTakeOps } from './methods/preReadExecTakeOps';
import { wait } from './methods/wait';

export * from './claims';
export * from './types';
export * from './calls';

export const mutexMethods = {
  [execLockMethodName]: mutexExecLock,
  [lockMethodName]: mutexLock,
  [unlockMethodName]: mutexUnlock,
  [execOpsMethodName]: execOps,
  [preReadExecTakeOpsMethodName]: preReadExecTakeOps,
  [saveExecOpResultMethodName]: saveExecOpResult,
  [waitMethodName]: wait,
  [notifyLockMethodName]: notifyLock,
};
