UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

38 lines (36 loc) 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.add = void 0; const constants_1 = require("../../constants"); const BuiltinInterface_1 = require("../BuiltinInterface"); const SysCallInstanceMemberPrimitive_1 = require("./SysCallInstanceMemberPrimitive"); const ValueFor_1 = require("./ValueFor"); const ValueInstanceOf_1 = require("./ValueInstanceOf"); class ContractInterface extends BuiltinInterface_1.BuiltinInterface { } class ContractConstructorInterface extends BuiltinInterface_1.BuiltinInterface { } exports.add = (builtins) => { builtins.addContractInterface('Contract', new ContractInterface()); builtins.addContractValue('Contract', new ValueInstanceOf_1.ValueInstanceOf('ContractConstructor', (sb) => sb.helpers.isContract)); builtins.addContractMember('Contract', 'script', new SysCallInstanceMemberPrimitive_1.SysCallInstanceMemberPrimitive('Neo.Contract.GetScript', constants_1.Types.Contract, constants_1.Types.Buffer)); builtins.addContractMember('Contract', 'payable', new SysCallInstanceMemberPrimitive_1.SysCallInstanceMemberPrimitive('Neo.Contract.IsPayable', constants_1.Types.Contract, constants_1.Types.Boolean)); builtins.addContractInterface('ContractConstructor', new ContractConstructorInterface()); builtins.addContractMember('ContractConstructor', 'for', new ValueFor_1.ValueFor('Neo.Blockchain.GetContract', (sb, node, options) => { sb.emitHelper(node, options, sb.helpers.if({ condition: () => { sb.emitOp(node, 'DUP'); sb.emitPushBuffer(node, Buffer.from([])); sb.emitOp(node, 'EQUAL'); }, whenTrue: () => { sb.emitOp(node, 'DROP'); sb.emitHelper(node, options, sb.helpers.wrapUndefined); }, whenFalse: () => { sb.emitHelper(node, options, sb.helpers.wrapContract); }, })); })); }; //# sourceMappingURL=contract.js.map