@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
85 lines (83 loc) • 15.8 kB
JavaScript
;
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