@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
30 lines (28 loc) • 1.27 kB
JavaScript
import { common } from '@neo-one/client-common';
import { Helper } from '../Helper';
export class DidReceiveNonClaimAssetsHelper extends Helper {
emit(sb, node, optionsIn) {
const options = sb.pushValueOptions(optionsIn);
sb.emitSysCall(node, 'System.ExecutionEngine.GetScriptContainer');
sb.emitSysCall(node, 'Neo.Transaction.GetOutputs');
sb.emitHelper(node, options, sb.helpers.getOutputAssetValueMap);
sb.emitSysCall(node, 'System.ExecutionEngine.GetScriptContainer');
sb.emitSysCall(node, 'Neo.Transaction.GetReferences');
sb.emitHelper(node, options, sb.helpers.mergeAssetValueMaps({ add: false }));
sb.emitHelper(node, optionsIn, sb.helpers.mapSome({
each: () => {
sb.emitPushBuffer(node, common.stringToUInt256(common.GAS_ASSET_HASH));
sb.emitOp(node, 'EQUAL');
sb.emitOp(node, 'NOT');
sb.emitOp(node, 'SWAP');
sb.emitPushInt(node, 0);
sb.emitOp(node, 'GT');
sb.emitOp(node, 'BOOLAND');
},
}));
if (!optionsIn.pushValue) {
sb.emitOp(node, 'DROP');
}
}
}
//# sourceMappingURL=DidReceiveNonClaimAssetsHelper.js.map