60 lines
1.6 KiB
TypeScript
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)])];
|
|
};
|