60 lines
1.6 KiB
TypeScript

import {
constructContinueTx,
constructContractIssuer,
constructContractRef,
constructRangeRead,
constructTake,
Context,
extractContractArgs,
extractContractInfo,
extractRead,
getContractId,
} from '@coinweb/contract-kit';
export const mutexUnlock = (context: Context) => {
const { providedCweb } = extractContractInfo(context.tx);
const issuer = constructContractIssuer(getContractId(context.tx));
return [
constructContinueTx(
context,
[],
[
{
callInfo: {
ref: constructContractRef(issuer, []),
methodInfo: {
methodName: '_unlock_exec',
methodArgs: [],
},
contractInfo: {
providedCweb: (providedCweb ? providedCweb - 1000n : 1000n) / 2n,
authenticated: null,
},
contractArgs: [constructRangeRead(issuer, 'mutex', {}, 10000)],
},
},
{
callInfo: {
ref: constructContractRef(issuer, []),
methodInfo: {
methodName: '_unlock',
methodArgs: [],
},
contractInfo: {
providedCweb: (providedCweb ? providedCweb - 1000n : 1000n) / 2n,
authenticated: null,
},
contractArgs: [],
},
},
]
),
];
};
export const mutexUnlockExec = (context: Context) => {
const claim = extractContractArgs(context.tx)[0]!;
const take = extractRead(claim)![0];
return [constructContinueTx(context, [constructTake(take.content.key)])];
};