UNPKG

@backt/protocol

Version:
247 lines (197 loc) 8.5 kB
'use strict'; var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _bluebird = require('bluebird'); var _bluebird2 = _interopRequireDefault(_bluebird); var _truffleContract = require('truffle-contract'); var _truffleContract2 = _interopRequireDefault(_truffleContract); var _ContractForDifference = require('../abi/ContractForDifference.json'); var _ContractForDifference2 = _interopRequireDefault(_ContractForDifference); var _ContractForDifferenceFactory = require('../abi/ContractForDifferenceFactory.json'); var _ContractForDifferenceFactory2 = _interopRequireDefault(_ContractForDifferenceFactory); var _ContractForDifferenceRegistry = require('../abi/ContractForDifferenceRegistry.json'); var _ContractForDifferenceRegistry2 = _interopRequireDefault(_ContractForDifferenceRegistry); var _Feeds = require('../abi/Feeds.json'); var _Feeds2 = _interopRequireDefault(_Feeds); var _ForwardFactory = require('../abi/ForwardFactory.json'); var _ForwardFactory2 = _interopRequireDefault(_ForwardFactory); var _Registry = require('../abi/Registry.json'); var _Registry2 = _interopRequireDefault(_Registry); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Create a handle to the deployed ContractForDifferenceFactory. */ var cfdFactoryInstanceDeployed = function () { var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(config, web3) { return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: return _context.abrupt('return', deployedContractInstance('ContractForDifferenceFactory', config.cfdFactoryContractAddr, _ContractForDifferenceFactory2.default, config.ownerAccountAddr, config.gasPrice, config.gasLimit, web3)); case 1: case 'end': return _context.stop(); } } }, _callee, undefined); })); return function cfdFactoryInstanceDeployed(_x, _x2) { return _ref.apply(this, arguments); }; }(); /** * Create a handle to the deployed ContractForDifferenceRegistry. */ var cfdRegistryInstanceDeployed = function () { var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(config, web3) { return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: return _context2.abrupt('return', deployedContractInstance('ContractForDifferenceRegistry', config.cfdRegistryContractAddr, _ContractForDifferenceRegistry2.default, config.ownerAccountAddr, config.gasPrice, config.gasLimit, web3)); case 1: case 'end': return _context2.stop(); } } }, _callee2, undefined); })); return function cfdRegistryInstanceDeployed(_x3, _x4) { return _ref2.apply(this, arguments); }; }(); /** * Create a handle to the deployed Feeds contract. */ var feedsInstanceDeployed = function () { var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(config, web3) { return _regenerator2.default.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: return _context3.abrupt('return', deployedContractInstance('Feeds', config.feedContractAddr, _Feeds2.default, config.daemonAccountAddr, config.gasPrice, config.gasLimit, web3)); case 1: case 'end': return _context3.stop(); } } }, _callee3, undefined); })); return function feedsInstanceDeployed(_x5, _x6) { return _ref3.apply(this, arguments); }; }(); /** * Create a handle to the deployed Feeds contract. */ var registryInstanceDeployed = function () { var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(config, web3) { return _regenerator2.default.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: return _context4.abrupt('return', deployedContractInstance('Registry', config.registryAddr, _Registry2.default, config.daemonAccountAddr, config.gasPrice, config.gasLimit, web3)); case 1: case 'end': return _context4.stop(); } } }, _callee4, undefined); })); return function registryInstanceDeployed(_x7, _x8) { return _ref4.apply(this, arguments); }; }(); /** * Basic contract handles not connected to a specific deployment address. */ var feedsInstance = function feedsInstance(web3Provider, config) { return contractInstance(_Feeds2.default, web3Provider, config); }; var registryInstance = function registryInstance(web3Provider, config) { return contractInstance(_Registry2.default, web3Provider, config); }; var forwardFactoryInstance = function forwardFactoryInstance(web3Provider, config) { return contractInstance(_ForwardFactory2.default, web3Provider, config); }; var cfdInstance = function cfdInstance(web3Provider, config) { return contractInstance(_ContractForDifference2.default, web3Provider, config); }; var cfdFactoryInstance = function cfdFactoryInstance(web3Provider, config) { return contractInstance(_ContractForDifferenceFactory2.default, web3Provider, config); }; var cfdRegistryInstance = function cfdRegistryInstance(web3Provider, config) { return contractInstance(_ContractForDifferenceRegistry2.default, web3Provider, config); }; /** * Create a handle to an instance of a contract already deployed on the * blockchain. * Uses truffle-contract to generate the instance and given ABI and address. */ var deployedContractInstance = function () { var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(name, addr, contractJSON, defaultFrom, defaultGasPrice, defaultGasLimit, web3) { var Contract; return _regenerator2.default.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: if (!web3.eth.getCodeAsync) { web3.eth.getCodeAsync = _bluebird2.default.promisify(web3.eth.getCode); } _context5.next = 3; return web3.eth.getCodeAsync(addr); case 3: _context5.t0 = _context5.sent; if (!(_context5.t0 === '0x0')) { _context5.next = 6; break; } throw new Error(name + ' contract NOT deployed at ' + addr + '.' + ' Check the address and network settings.'); case 6: Contract = (0, _truffleContract2.default)(contractJSON); Contract.setProvider(web3.currentProvider); Contract.defaults({ from: defaultFrom, gasPrice: defaultGasPrice, gas: defaultGasLimit }); return _context5.abrupt('return', Contract.at(addr)); case 10: case 'end': return _context5.stop(); } } }, _callee5, undefined); })); return function deployedContractInstance(_x9, _x10, _x11, _x12, _x13, _x14, _x15) { return _ref5.apply(this, arguments); }; }(); /** * Create a handle to a contract given the JSON and a web3 provider instance. */ var contractInstance = function contractInstance(contractJSON, web3Provider, config) { var Contract = (0, _truffleContract2.default)(contractJSON); Contract.setProvider(web3Provider); if (config.ownerAccountAddr && config.gasDefault) { Contract.defaults({ from: config.ownerAccountAddr, gas: config.gasDefault }); } return Contract; }; module.exports = { cfdInstance: cfdInstance, cfdFactoryInstance: cfdFactoryInstance, cfdFactoryInstanceDeployed: cfdFactoryInstanceDeployed, cfdRegistryInstance: cfdRegistryInstance, cfdRegistryInstanceDeployed: cfdRegistryInstanceDeployed, feedsInstance: feedsInstance, feedsInstanceDeployed: feedsInstanceDeployed, forwardFactoryInstance: forwardFactoryInstance, registryInstance: registryInstance, registryInstanceDeployed: registryInstanceDeployed };