UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

85 lines (83 loc) 15.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const constants_1 = require("../../../constants"); const constants_2 = require("../../constants"); const Helper_1 = require("../Helper"); class CompleteSendHelper extends Helper_1.Helper { emit(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); sb.emitSysCall(node, 'System.ExecutionEngine.GetScriptContainer'); sb.emitSysCall(node, 'Neo.Transaction.GetInputs'); sb.emitHelper(node, options, sb.helpers.if({ condition: () => { sb.emitOp(node, 'DUP'); sb.emitOp(node, 'ARRAYSIZE'); sb.emitPushInt(node, 0); sb.emitOp(node, 'NUMEQUAL'); }, whenTrue: () => { sb.emitOp(node, 'DROP'); sb.emitPushBoolean(node, false); }, whenFalse: () => { sb.emitPushInt(node, 0); sb.emitOp(node, 'PICKITEM'); sb.emitOp(node, 'DUP'); sb.emitSysCall(node, 'Neo.Input.GetIndex'); sb.emitHelper(node, options, sb.helpers.if({ condition: () => { sb.emitPushInt(node, 0); sb.emitOp(node, 'NUMEQUAL'); }, whenTrue: () => { sb.emitSysCall(node, 'Neo.Input.GetHash'); sb.emitHelper(node, options, sb.helpers.createStructuredStorage({ prefix: constants_1.ContractPropertyName.claimedTransactions, type: constants_2.Types.MapStorage, })); sb.emitOp(node, 'SWAP'); sb.emitHelper(node, options, sb.helpers.wrapBuffer); sb.emitHelper(node, options, sb.helpers.getStructuredStorage({ type: constants_2.Types.MapStorage, keyType: undefined, knownKeyType: constants_2.Types.Buffer, })); sb.emitHelper(node, options, sb.helpers.if({ condition: () => { sb.emitOp(node, 'DUP'); sb.emitHelper(node, options, sb.helpers.isUndefined); }, whenTrue: () => { sb.emitOp(node, 'DROP'); sb.emitPushBoolean(node, false); }, whenFalse: () => { sb.emitHelper(node, options, sb.helpers.unwrapBuffer); sb.emitHelper(node, options, sb.helpers.isCaller); sb.emitSysCall(node, 'System.ExecutionEngine.GetScriptContainer'); sb.emitSysCall(node, 'Neo.Transaction.GetReferences'); sb.emitHelper(node, options, sb.helpers.arrFilter({ map: () => { sb.emitSysCall(node, 'Neo.Output.GetScriptHash'); sb.emitSysCall(node, 'System.ExecutionEngine.GetExecutingScriptHash'); sb.emitOp(node, 'EQUAL'); }, })); sb.emitOp(node, 'ARRAYSIZE'); sb.emitPushInt(node, 1); sb.emitOp(node, 'NUMEQUAL'); sb.emitOp(node, 'BOOLAND'); }, })); }, whenFalse: () => { sb.emitOp(node, 'DROP'); sb.emitPushBoolean(node, false); }, })); }, })); } } exports.CompleteSendHelper = CompleteSendHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,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SSxFQUFFLCtDQUErQyxDQUFDLENBQUM7d0NBRXRFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO29DQUMzQixDQUFDO2lDQUNGLENBQUMsQ0FDSCxDQUFDO2dDQUVGLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dDQUU3QixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0NBRTVCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDOzRCQUM3QixDQUFDO3lCQUNGLENBQUMsQ0FDSCxDQUFDO29CQUNKLENBQUM7b0JBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRTt3QkFFZCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFFeEIsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ2xDLENBQUM7aUJBQ0YsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDO1NBQ0YsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF6SUQsZ0RBeUlDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL2NvbnRyYWN0L0NvbXBsZXRlU2VuZEhlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IENvbnRyYWN0UHJvcGVydHlOYW1lIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFR5cGVzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuLi9IZWxwZXInO1xuXG4vLyBJbnB1dDogW11cbi8vIE91dHB1dDogW2Jvb2xlYW5dXG5leHBvcnQgY2xhc3MgQ29tcGxldGVTZW5kSGVscGVyIGV4dGVuZHMgSGVscGVyIHtcbiAgcHVibGljIGVtaXQoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLk5vZGUsIG9wdGlvbnNJbjogVmlzaXRPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHNiLnB1c2hWYWx1ZU9wdGlvbnMob3B0aW9uc0luKTtcblxuICAgIC8vIFt0cmFuc2FjdGlvbl1cbiAgICBzYi5lbWl0U3lzQ2FsbChub2RlLCAnU3lzdGVtLkV4ZWN1dGlvbkVuZ2luZS5HZXRTY3JpcHRDb250YWluZXInKTtcbiAgICAvLyBbaW5wdXRzXVxuICAgIHNiLmVtaXRTeXNDYWxsKG5vZGUsICdOZW8uVHJhbnNhY3Rpb24uR2V0SW5wdXRzJyk7XG4gICAgc2IuZW1pdEhlbHBlcihcbiAgICAgIG5vZGUsXG4gICAgICBvcHRpb25zLFxuICAgICAgc2IuaGVscGVycy5pZih7XG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4ge1xuICAgICAgICAgIC8vIFtpbnB1dHMsIGlucHV0c11cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RVUCcpO1xuICAgICAgICAgIC8vIFtzaXplLCBpbnB1dHNdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdBUlJBWVNJWkUnKTtcbiAgICAgICAgICAvLyBbMCwgc2l6ZSwgaW5wdXRzXVxuICAgICAgICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDApO1xuICAgICAgICAgIC8vIFtzaXplID09IDAsIGlucHV0c11cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ05VTUVRVUFMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdoZW5UcnVlOiAoKSA9PiB7XG4gICAgICAgICAgLy8gW11cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICAgICAgICAvLyBbYm9vbGVhbl1cbiAgICAgICAgICBzYi5lbWl0UHVzaEJvb2xlYW4obm9kZSwgZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgICB3aGVuRmFsc2U6ICgpID0+IHtcbiAgICAgICAgICAvLyBbMCwgaW5wdXRzXVxuICAgICAgICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDApO1xuICAgICAgICAgIC8vIFtpbnB1dF1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1BJQ0tJVEVNJyk7XG4gICAgICAgICAgLy8gW2lucHV0LCBpbnB1dF1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RVUCcpO1xuICAgICAgICAgIC8vIFtudW1iZXIsIGlucHV0XVxuICAgICAgICAgIHNiLmVtaXRTeXNDYWxsKG5vZGUsICdOZW8uSW5wdXQuR2V0SW5kZXgnKTtcbiAgICAgICAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzYi5oZWxwZXJzLmlmKHtcbiAgICAgICAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gWzAsIG51bWJlciwgaW5wdXRdXG4gICAgICAgICAgICAgICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMCk7XG4gICAgICAgICAgICAgICAgLy8gW251bWJlciA9PSAwLCBpbnB1dF1cbiAgICAgICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ05VTUVRVUFMJyk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHdoZW5UcnVlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gW2hhc2hdXG4gICAgICAgICAgICAgICAgc2IuZW1pdFN5c0NhbGwobm9kZSwgJ05lby5JbnB1dC5HZXRIYXNoJyk7XG4gICAgICAgICAgICAgICAgLy8gW3ZhbCwgaGFzaF1cbiAgICAgICAgICAgICAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICBzYi5oZWxwZXJzLmNyZWF0ZVN0cnVjdHVyZWRTdG9yYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4OiBDb250cmFjdFByb3BlcnR5TmFtZS5jbGFpbWVkVHJhbnNhY3Rpb25zLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBUeXBlcy5NYXBTdG9yYWdlLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAvLyBbaGFzaCwgdmFsXVxuICAgICAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgICAgICAgICAgICAgIC8vIFtoYXNoVmFsLCB2YWxdXG4gICAgICAgICAgICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLndyYXBCdWZmZXIpO1xuICAgICAgICAgICAgICAgIC8vIFt2YWxdXG4gICAgICAgICAgICAgICAgc2IuZW1pdEhlbHBlcihcbiAgICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgICAgICAgc2IuaGVscGVycy5nZXRTdHJ1Y3R1cmVkU3RvcmFnZSh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFR5cGVzLk1hcFN0b3JhZ2UsXG4gICAgICAgICAgICAgICAgICAgIGtleVR5cGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAga25vd25LZXlUeXBlOiBUeXBlcy5CdWZmZXIsXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgIHNiLmhlbHBlcnMuaWYoe1xuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBbdmFsLCB2YWxdXG4gICAgICAgICAgICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdEVVAnKTtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBbYm9vbGVhbiwgdmFsXVxuICAgICAgICAgICAgICAgICAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy5pc1VuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHdoZW5UcnVlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gW11cbiAgICAgICAgICAgICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBbYm9vbGVhbl1cbiAgICAgICAgICAgICAgICAgICAgICBzYi5lbWl0UHVzaEJvb2xlYW4obm9kZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB3aGVuRmFsc2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBbYnVmZmVyXVxuICAgICAgICAgICAgICAgICAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy51bndyYXBCdWZmZXIpO1xuICAgICAgICAgICAgICAgICAgICAgIC8vIFtib29sZWFuXVxuICAgICAgICAgICAgICAgICAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy5pc0NhbGxlcik7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gW3RyYW5zYWN0aW9uLCBib29sZWFuXVxuICAgICAgICAgICAgICAgICAgICAgIHNiLmVtaXRTeXNDYWxsKG5vZGUsICdTeXN0ZW0uRXhlY3V0aW9uRW5naW5lLkdldFNjcmlwdENvbnRhaW5lcicpO1xuICAgICAgICAgICAgICAgICAgICAgIC8vIFtyZWZlcmVuY2VzLCBib29sZWFuXVxuICAgICAgICAgICAgICAgICAgICAgIHNiLmVtaXRTeXNDYWxsKG5vZGUsICdOZW8uVHJhbnNhY3Rpb24uR2V0UmVmZXJlbmNlcycpO1xuICAgICAgICAgICAgICAgICAgICAgIC8vIFtyZWZlcmVuY2VzLCBib29sZWFuXVxuICAgICAgICAgICAgICAgICAgICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNiLmhlbHBlcnMuYXJyRmlsdGVyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gW2J1ZmZlcl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYi5lbWl0U3lzQ2FsbChub2RlLCAnTmVvLk91dHB1dC5HZXRTY3JpcHRIYXNoJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gW2J1ZmZlciwgYnVmZmVyXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNiLmVtaXRTeXNDYWxsKG5vZGUsICdTeXN0ZW0uRXhlY3V0aW9uRW5naW5lLkdldEV4ZWN1dGluZ1NjcmlwdEhhc2gnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbYm9vbGVhbl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0VRVUFMJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIC8vIFtzaXplLCBib29sZWFuXVxuICAgICAgICAgICAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnQVJSQVlTSVpFJyk7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gWzEsIHNpemUsIGJvb2xlYW5dXG4gICAgICAgICAgICAgICAgICAgICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gW3NpemUgPT0gMSwgYm9vbGVhbl1cbiAgICAgICAgICAgICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ05VTUVRVUFMJyk7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gW2Jvb2xlYW5dXG4gICAgICAgICAgICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdCT09MQU5EJyk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB3aGVuRmFsc2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBbXVxuICAgICAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgICAgICAgICAgICAgIC8vIFtib29sZWFuXVxuICAgICAgICAgICAgICAgIHNiLmVtaXRQdXNoQm9vbGVhbihub2RlLCBmYWxzZSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuIl19