UNPKG

autostrom-client

Version:

STROMDAO Autostrom ist ein Stromprodukt, welches netzdienlichen Aufladen mit einer Prämie belohnt.

1,470 lines (1,305 loc) 2.8 MB
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ /* * StromDAO Business Object: Stromkonto * ========================================= * Stable Balance handling for StromDAO Energy Blockchain. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.assetsliabilities = function(obj_or_address) { var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol:StromkontoProxy'); instance.addTx=function(address_from,address_to,uint256_value,uint256_base) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.addTx(address_from,address_to,uint256_value,uint256_base).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; instance.modifySender=function(address_account,bool_allow) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.modifySender(address_account,bool_allow).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; instance.balancesSoll=function(address_acount) { var p2 = new Promise(function(resolve2, reject2) { //console.log(instance.obj); instance.obj.balanceSoll(address_acount).then(function(o) { resolve2(o[0].toString()*1); }); }); return p2; }; instance.allowedSenders=function(address_acount) { var p2 = new Promise(function(resolve2, reject2) { //console.log(instance.obj); instance.obj.allowedSenders(address_acount).then(function(o) { resolve2(o); }); }); return p2; }; instance.setReceiptAsset=function(address_receipt) { var p2 = new Promise(function(resolve2, reject2) { //console.log(instance.obj); instance.obj.setReceiptAsset(address_receipt).then(function(o) { resolve2(o); }); }); return p2; }; instance.setReceiptLiablity=function(address_receipt) { var p2 = new Promise(function(resolve2, reject2) { //console.log(instance.obj); instance.obj.setReceiptLiablity(address_receipt).then(function(o) { resolve2(o); }); }); return p2; }; instance.owner=function() { var p2 = new Promise(function(resolve2, reject2) { //console.log(instance.obj); instance.obj.owner().then(function(o) { resolve2(o); }); }); return p2; }; instance.balancesHaben=function(address_acount) { var p2 = new Promise(function(resolve2, reject2) { //console.log(instance.obj); instance.obj.balanceHaben(address_acount).then(function(o) { resolve2(o[0].toString()*1); }); }); return p2; }; instance.balancesCachedSoll=function(address_acount) { var p2 = new Promise(function(resolve2, reject2) { //console.log(instance.obj); var stored = parent.storage.getItemSync(obj_or_address+"_"+address_acount+"_soll"); if((typeof stored == "undefined")||(stored==null)) { instance.obj.balanceSoll(address_acount).then(function(o) { parent.storage.setItemSync(obj_or_address+"_"+address_acount+"_soll",o[0].toString()*1); resolve2(o[0].toString()*1); }); } else { resolve2(stored); } }); return p2; }; instance.balancesCachedHaben=function(address_acount) { var p2 = new Promise(function(resolve2, reject2) { //console.log(instance.obj); var stored = parent.storage.getItemSync(obj_or_address+"_"+address_acount+"_haben"); if((typeof stored == "undefined")||(stored==null)) { instance.obj.balanceHaben(address_acount).then(function(o) { parent.storage.setItemSync(obj_or_address+"_"+address_acount+"_haben",o[0].toString()*1); resolve2(o[0].toString()*1); }); } else { resolve2(stored); } }); return p2; }; instance.sumBase=function() { var p2 = new Promise(function(resolve2, reject2) { //console.log(instance.obj); instance.obj.sumBase().then(function(o) { resolve2(o[0].toString()*1); }); }); return p2; }; instance.sumTx=function() { var p2 = new Promise(function(resolve2, reject2) { //console.log(instance.obj); instance.obj.sumTx().then(function(o) { resolve2(o[0].toString()*1); }); }); return p2; }; resolve(instance); }); return p1; }; },{}],2:[function(require,module,exports){ /** * StromDAO Business Object: DirectConnectionFactory * ========================================= * Factory Contract to build direct connections handling for StromDAO Energy Blockchain. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.factory = function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_AssetsLiabilitiesFactory"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_AssetsLiabilitiesFactory'); instance.test = {}; /** * Stores a reading to this contract instance. Requires sender to be approved Meter-Point * @see approveMP() */ instance.build= function(address_account) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.onbuilt=function(cb) { resolve2(cb); }; instance.obj.build(address_account,{value:"0x0",gasPrice:"0x0"}).then(function(o) { }); }); return p2; }; resolve(instance); }); return p1; }; },{}],3:[function(require,module,exports){ /** * StromDAO Business Object: DirectBLG * ========================================= * Directly charge for Energy delivery to an account within StromDAO Energy Blockchain. * * DirectCharging gets used together with DirectConnections. * * In theory account A and account B are exchanging energy metered by meter_point C * * DirectCharging takes several DirectConnections and runs charging as soon as method chargeAll is called. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ var request = require('request'); this.blg=function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DirectBalancingGroup"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DirectBalancingGroup'); parent._saveLabel('BLG',obj_or_address); instance.addFeedIn=function(account,meter_point,cost_per_energy,cost_per_day) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.addFeedIn(account,meter_point,cost_per_energy,cost_per_day).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; instance.addFeedOut=function(account,meter_point,cost_per_energy,cost_per_day) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.addFeedOut(account,meter_point,cost_per_energy,cost_per_day).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; instance.setFixedEnergyCost=function(cost_per_energy) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.setFixedEnergyCost(cost_per_energy).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; instance.charge=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.charge({gasLimit:5120000,gasPrice:0}).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; instance.emptyConnections=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.emptyConnections().then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; instance.stromkontoDelta=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.stromkontoDelta().then(function(o) { parent._saveLabel('BAL',o[0]); resolve2(o[0]); }); }); return p2; } instance.feedIn=function(idx) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.feedIn(idx).then(function(o) { parent._saveLabel('CON',o[0]); resolve2(o[0]); }); }); return p2; } instance.feedOut=function(idx) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.feedOut(idx).then(function(o) { parent._saveLabel('CON',o[0]); resolve2(o[0]); }); }); return p2; } instance.stromkontoIn=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.stromkontoIn().then(function(o) { parent._saveLabel('BAL',o[0]); resolve2(o[0]); }); }); return p2; } instance.stromkontoOut=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.stromkontoOut().then(function(o) { parent._saveLabel('BAL',o[0]); resolve2(o[0]); }); }); return p2; } //cnt_feedin instance.cnt_feedin=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.cnt_feedin().then(function(o) { resolve2(o[0]*1); }); }); return p2; } instance.cnt_feedout=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.cnt_feedout().then(function(o) { resolve2(o[0]*1); }); }); return p2; } instance.balancesheets=function(idx) { var p2 = new Promise(function(resolve2, reject2) { // Save as it is unmutbale var stored = parent.storage.getItemSync(obj_or_address+"_"+idx); if((typeof stored == "undefined")||(stored==null)) { instance.obj.balancesheets(idx).then(function(o) { o.idx=idx; parent._saveLabel('BAL',o.balanceIn); parent._saveLabel('BAL',o.balanceOut); parent.storage.setItemSync(obj_or_address+"_"+idx,JSON.stringify(o)); resolve2(o); }); } else { var o = JSON.parse(stored); o.blockNumber=parent._utils.bigNumberify("0x"+o.blockNumber._bn); resolve2(o); } }); return p2; } instance.setCostPerEnergy=function(connection,cost_per_energy) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.setCostPerEnergy(connection,cost_per_energy).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; } instance.setAccountInfo=function(account,data_obj) { var p2 = new Promise(function(resolve2, reject2) { request.post("http://l2.stromdao.de:8001/put", {form:data_obj}).on('data', function(data) { var multihash=data.toString(); parent.stringstoragefactory().then( function(ssf) { ssf.build(multihash).then(function(adr) { console.log("Adr",adr,"Multihash",multihash,"Account",account); instance.obj.setAccountInfo(account,adr).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); }); }); }); return p2; } instance.accountInfo=function(account) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.accountInfo(account).then(function(o) { parent.stringstorage(o[0]).then(function(ss) { ss.str().then(function(multihash) { request.post("http://l2.stromdao.de:8001/get",{form:{key:multihash}}).on('data', function(d) { string = d.toString(); resolve2(string); });; }); }); }); }); return p2; } instance.setCostPerDay=function(connection,cost_per_day) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.setCostPerDay(connection,cost_per_day).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; } instance.balancesheets_cnt=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.balancesheets_cnt().then(function(o) { resolve2(o[0]); }); }); return p2; } resolve(instance); }); return p1; }; },{"request":265}],4:[function(require,module,exports){ /* * StromDAO Business Object: Billing * ========================================= * Consensus handling of power/electricity billing in StromDAO Energy Blockchain. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.billing=function(obj_or_address) { var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol:Billing'); instance.becomeTo=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.becomeTo().then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; resolve(instance); }); return p1; }; },{}],5:[function(require,module,exports){ /** * StromDAO Business Object: DirectConnectionFactory * ========================================= * Factory Contract to build direct connections handling for StromDAO Energy Blockchain. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.cutoken = function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_CUToken"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_CUToken'); instance.test = {}; instance.totalSupply=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.totalSupply().then(function(o) { resolve2(o[0].toString()*1); }); }); return p2; }; instance.owner=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.owner().then(function(o) { resolve2(o[0].toString()); }); }); return p2; }; instance.balanceOf=function(address_account) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.balanceOf( parent._resolveName(address_account)).then(function(o) { resolve2(o[0].toString()*1); }); }); return p2; }; /** * Stores a reading to this contract instance. Requires sender to be approved Meter-Point * @see approveMP() */ instance.issue= function() { var p2 = new Promise(function(resolve2, reject2) { var bdx=""; instance.obj.issue({value:"0x0",gasPrice:"0x0",gasLimit:3903918}).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; instance.addMeterpoint= function(address_meterpoint) { var p2 = new Promise(function(resolve2, reject2) { var bdx=""; instance.obj.addMeterpoint( parent._resolveName(address_meterpoint),{value:"0x0",gasPrice:"0x0",gasLimit:3903918}).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; resolve(instance); }); return p1; }; },{}],6:[function(require,module,exports){ /** * StromDAO Business Object: MPTokenFactory * ========================================= * Create a Time/Power Token Contract using factory class for a Meter Point Token. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.factory = function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_CUTokenFactory"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_CUTokenFactory'); instance.test = {}; /** * Stores a reading to this contract instance. Requires sender to be approved Meter-Point * @see approveMP() */ instance.build= function(address_reading,address_meterpoint) { var p2 = new Promise(function(resolve2, reject2) { var bdx=""; instance.obj.onbuilt=function(cb) { var p3=new Promise(function(resolve3, reject3) { parent._waitForTransaction(bdx.hash).then(resolve3(cb)); }); p3.then(function() { resolve2(cb); }); }; instance.obj.build(address_reading,address_meterpoint,{value:"0x0",gasPrice:"0x0",gasLimit:3795290}).then(function(o) { bdx=0; }); }); return p2; }; resolve(instance); }); return p1; }; },{}],7:[function(require,module,exports){ /** * StromDAO Business Object: Settlement * ========================================= * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.clearing = function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_Clearing"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_Clearing'); instance.test = {}; instance.clear= function(cache) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.clear(cache,{value:"0x0",gasPrice:"0x0",gasLimit:4595290}).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; resolve(instance); }); return p1; }; },{}],8:[function(require,module,exports){ /** * StromDAO Business Object: DirectConnectionFactory * ========================================= * Factory Contract to build direct connections handling for StromDAO Energy Blockchain. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.factory = function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_ClearingFactory"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_ClearingFactory'); instance.test = {}; /** * Stores a reading to this contract instance. Requires sender to be approved Meter-Point * @see approveMP() */ instance.build= function(_stromkonto) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.onbuilt=function(cb) { resolve2(cb); }; instance.obj.build(_stromkonto,{value:"0x0",gasPrice:"0x0",gasLimit:3795290}).then(function(o) { }); }); return p2; }; resolve(instance); }); return p1; }; },{}],9:[function(require,module,exports){ /** * StromDAO Business Object: StringStorage * ========================================= * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.coldstorage = function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol:StringStorage"]; var p1 = new Promise(function(resolve, reject) { var instance={}; instance.setObj=function(bucket,str) { var p2 = new Promise(function(resolve2, reject2) { parent.storage.setItemSync("cold_"+bucket,str); resolve2(); }); return p2; }; instance.getObj=function(bucket) { var p2 = new Promise(function(resolve2, reject2) { var str=parent.storage.getItemSync("cold_"+bucket); resolve2(str); }); return p2; }; resolve(instance); }); return p1; }; },{}],10:[function(require,module,exports){ /* * StromDAO Business Object: DSO * ========================================= * Distribution Service Operator / logistical handling for StromDAO Energy Blockchain. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.dso=function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DSO"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DSO'); instance.approveConnection=function(address_meterpoint,uint256_powerlimit) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.approveConnection(address_meterpoint,uint256_powerlimit).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; instance.approvedConnections=function(address_meterpoint) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.approvedConnections(address_meterpoint).then(function(o) { resolve2(o); }); }); return p2; } resolve(instance); }); return p1; }; },{}],11:[function(require,module,exports){ this.deployment=function(options) { if(typeof options.rpc == "undefined") { if(typeof window != "undefined") { // options.rpc=location.origin+"/rpc"; options.rpc='https://demo.stromdao.de/rpc'; } else { options.rpc='https://demo.stromdao.de/rpc'; } } return options; }; this.loadDefaults=function(options) { if(typeof parent.waitForDefaults == "undefined") { parent.waitForDefaults = true; options.rolelookup="0x0000000000000000000000000000000000000006"; options.defaultReading="0x0000000000000000000000000000000000000008"; var contract_type=[]; parent.storage.setItemSync(options.rolelookup+"_1","0x08f5409fdEC245ec8d52042982fb7a05fa8114A2"); parent.storage.setItemSync(options.rolelookup+"_2","0x5FB27050934DAd2Fba68ee22841Eca55dD131f57"); parent.storage.setItemSync(options.rolelookup+"_3","0xe9E343883297f3ED5Dd25Dc31387387cba2a8F1c"); contract_type["StromDAO-BO.sol_MPO"]=parent.storage.getItemSync(options.rolelookup+"_1"); contract_type["StromDAO-BO.sol_DSO"]=parent.storage.getItemSync(options.rolelookup+"_2"); contract_type["StromDAO-BO.sol_Provider"]=parent.storage.getItemSync(options.rolelookup+"_3"); contract_type["StromDAO-BO.sol:MPReading"]="0x0000000000000000000000000000000000000008"; contract_type["StromDAO-BO.sol_DirectChargingFactory"]="0x6B24c0ea21f4002d35E850bf0f132EeBEb191b7d"; contract_type["StromDAO-BO.sol_DirectConnectionFactory"]="0x2bb4Aa9b328633C28B5ad797995E2bA91177D2b7"; contract_type["StromDAO-BO.sol_DirectBalancingGroupFactory"]="0x853c478C2ecc83D1BCa274D00a8D2dff0fAf1304"; contract_type["StromDAO-BO.sol_StringStorageFactory"]="0xdbD614e0567f37C64e815DEBa321A919CE228d1D"; contract_type["StromDAO-BO.sol_MPSetFactory"]="0xf3FC07380a41119E0acAF5D88dB9E86addeDAA5B"; contract_type["StromDAO-BO.sol_MPRSetFactory"]="0x8Ca4E5A443a09425af1F9e1792619A39e28abEF4"; contract_type["StromDAO-BO.sol_MPRDecorateFactory"]="0x599A82fF93533220b2e6E529477342b484DB2d73"; contract_type["StromDAO-BO.sol_SettlementFactory"]="0x6dE580411a5432D0A5Bd304b42C3a2b8A3710E50"; contract_type["StromDAO-BO.sol_ClearingFactory"]="0x2E3F061534A3A1D57F51f57f32bf7c8fe80e6621"; contract_type["StromDAO-BO.sol_SingleClearingFactory"]="0x3Df3fF97B8F93BbdAeB7C945bAdf32016C369212"; contract_type["StromDAO-BO.sol_DirectClearingFactory"]="0xA88C076bbf5C50d2e35f89f285D373bEd636FD87"; contract_type["StromDAO-BO.sol_StromkontoProxyFactory"]="0xDD106606C4100BA9DAA092690AE6AF849c81bC7F"; contract_type["StromDAO-BO.sol_Transferable"]="0x5856b2AE31ed0FCf82F02a4090502DC5CCEec93E"; contract_type["StromDAO-BO.sol_AssetsLiabilitiesFactory"]="0x98C1E2Eb8C921197066A75AD0ceE6c9852113Df3"; contract_type["StromDAO-BO.sol_MPTokenFactory"]="0x604Caaa72ea8cfCf64179079c30D4168D5bd87bc"; contract_type["StromDAO-BO.sol_XTokenFactory"]="0x814e1eEE776b00D3285913dADceb2ff6DeEFea51"; contract_type["StromDAO-BO.sol_CUTokenFactory"]="0x392c6a3482ffd600fF8C2b816b09d6613ad61BC4"; var roles=[]; roles[0]=0; roles[1]=1; roles[2]=2; roles[3]=3; options.contracts=contract_type; options.roles=roles; parent.waitForDefaults=false; return options; } else { return options; } } },{}],12:[function(require,module,exports){ /* * StromDAO Business Object: Delivery * ========================================= * Consensus handling of power/electricity delivery StromDAO Energy Blockchain. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.delivery=function(obj_or_address) { var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol:Delivery'); instance.owner=function() {return parent._owner_promise(instance);}; instance.power=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.deliverable_power().then(function(o) { resolve2(o); }); }); return p2; }; instance.resolution=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.resolution().then(function(o) { resolve2(o); }); }); return p2; }; instance.endTime=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.deliverable_endTime().then(function(o) { resolve2(o); }); }); return p2; }; instance.startTime=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.deliverable_startTime().then(function(o) { resolve2(o); }); }); return p2; }; instance.account=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.account().then(function(o) { resolve2(o); }); }); return p2; }; instance.transferOwnership=function(owner) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.transferOwnership(owner).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; instance.includeDelivery=function(delivery) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.includeDelivery(delivery).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; resolve(instance); }); return p1; }; },{}],13:[function(require,module,exports){ /* * StromDAO Business Object: Delivery MUX * ========================================= * MUX for Deliveries (=settlement and clearing) handling for StromDAO Energy Blockchain. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.provider = function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DeliveryMux"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DeliveryMux'); instance.settleBaseDeliveries=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.settleBaseDeliveries().then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; resolve(instance); }); return p1; }; },{}],14:[function(require,module,exports){ /** * StromDAO Business Object: DirectBalancingGroupFactory * ========================================= * Factory Contract to build balancing groupd for StromDAO Energy Blockchain. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.blgfactory = function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DirectBalancingGroupFactory"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DirectBalancingGroupFactory'); instance.test = {}; /** * Stores a reading to this contract instance. Requires sender to be approved Meter-Point * @see approveMP() */ instance.build= function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.onbuilt=function(cb) { resolve2(cb); }; instance.obj.build({value:"0x0",gasPrice:"0x0"}).then(function(o) { console.log(o); //{value:"0x0",gasPrice:"0x0",gas:"2974441329"} //parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; resolve(instance); }); return p1; }; },{}],15:[function(require,module,exports){ /** * StromDAO Business Object: DirectCharging * ========================================= * Directly charge for Energy delivery to an account within StromDAO Energy Blockchain. * * DirectCharging gets used together with DirectConnections. * * In theory account A and account B are exchanging energy metered by meter_point C * * DirectCharging takes several DirectConnections and runs charging as soon as method chargeAll is called. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.directcharging=function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DirectCharging"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DirectCharging'); instance.addConnection=function(address_meterpoint) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.addConnection(address_meterpoint).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; instance.chargeAll=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.chargeAll().then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; } instance.stromkonto=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.stromkonto().then(function(o) { resolve2(o[0]); }); }); return p2; } instance.reader=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.reader().then(function(o) { resolve2(o[0]); }); }); return p2; } resolve(instance); }); return p1; }; },{}],16:[function(require,module,exports){ /** * StromDAO Business Object: DirectConnectionFactory * ========================================= * Factory Contract to build direct connections handling for StromDAO Energy Blockchain. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.directchargingfactory = function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DirectChargingFactory"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DirectChargingFactory'); instance.test = {}; /** * Stores a reading to this contract instance. Requires sender to be approved Meter-Point * @see approveMP() */ instance.buildCharging= function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.onbuilt=function(cb) { resolve2(cb); }; instance.obj.buildCharging().then(function(o) { //parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; resolve(instance); }); return p1; }; },{}],17:[function(require,module,exports){ /** * StromDAO Business Object: DirectClearing * ========================================= * Directly charge for Energy delivery to an account within StromDAO Energy Blockchain. * * DirectCharging gets used together with DirectConnections. * * In theory account A and account B are exchanging energy metered by meter_point C * * DirectCharging takes several DirectConnections and runs charging as soon as method chargeAll is called. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.directclearing=function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DirectClearing"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DirectClearing'); instance.preSettle=function(address_meterpointset) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.preSettle(address_meterpointset).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; instance.clear=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.clear().then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; instance.settle=function(address_mprset) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.settle(address_mprset).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; instance.setSettlement=function(address_settlement) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.setSettlement(address_settlement).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; resolve(instance); }); return p1; }; },{}],18:[function(require,module,exports){ /** * StromDAO Business Object: DirectConnectionFactory * ========================================= * Factory Contract to build direct connections handling for StromDAO Energy Blockchain. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.factory = function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DirectClearingFactory"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DirectClearingFactory'); instance.test = {}; /** * Stores a reading to this contract instance. Requires sender to be approved Meter-Point * @see approveMP() */ instance.build= function(address_stromkonto,address_settlementfactory) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.onbuilt=function(cb) { resolve2(cb); }; instance.obj.build(address_stromkonto,address_settlementfactory).then(function(o) { }); }); return p2; }; resolve(instance); }); return p1; }; },{}],19:[function(require,module,exports){ /** * StromDAO Business Object: DirectConnection * ========================================= * Directly connect for Energy delivery to an account within StromDAO Energy Blockchain. * * DirectCharging gets used together with DirectConnections. * * In theory account A and account B are exchanging energy metered by meter_point C * * DirectCharging takes several DirectConnections and runs charging as soon as method chargeAll is called. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.directconnection=function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DirectConnection"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DirectConnection'); instance.from=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.from().then(function(o) { resolve2(o[0]); }); }); return p2; } instance.to=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.to().then(function(o) { resolve2(o[0]); }); }); return p2; } instance.cost_per_day=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.cost_per_day().then(function(o) { resolve2(o[0].toString()*1); }); }); return p2; } instance.cost_per_energy=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.cost_per_energy().then(function(o) { resolve2(o[0].toString()*1); }); }); return p2; } instance.owner=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.owner().then(function(o) { resolve2(o[0]); }); }); return p2; } resolve(instance); }); return p1; }; },{}],20:[function(require,module,exports){ /** * StromDAO Business Object: DirectConnectionFactory * ========================================= * Factory Contract to build direct connections handling for StromDAO Energy Blockchain. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.directconnectionfactory = function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_DirectConnectionFactory"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_DirectConnectionFactory'); instance.test = {}; /** * Stores a reading to this contract instance. Requires sender to be approved Meter-Point * @see approveMP() */ instance.buildConnection= function(address_from,address_to,address_meterpoint,uint256_costperenergy,uint256_costperday) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.onbuilt=function(cb) { resolve2(cb); }; instance.obj.buildConnection(address_from,address_to,address_meterpoint,uint256_costperenergy,uint256_costperday).then(function(o) { }); }); return p2; }; resolve(instance); }); return p1; }; },{}],21:[function(require,module,exports){ /** * StromDAO Business Object: MPToken * ========================================= * Meter Point Token handling for StromDAO Energy Blockchain. * * In General a MPToken consists of two ERC-20 Tokens: Time and Power * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.erc20token = function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol:ERC20Token"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol:ERC20Token'); instance.test = {}; instance.transfer=function(address_to,uint256_value) { //_reading=Math.round(_reading); var p2 = new Promise(function(resolve2, reject2) { instance.obj.transfer( parent._resolveName(address_to),uint256_value).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; instance.totalSupply=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.totalSupply().then(function(o) { resolve2(o[0].toString()*1); }); }); return p2; }; instance.owner=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.owner().then(function(o) { resolve2(o[0].toString()); }); }); return p2; }; instance.balanceOf=function(address_account) { var p2 = new Promise(function(resolve2, reject2) { //console.log(instance.obj); instance.obj.balanceOf( parent._resolveName(address_account)).then(function(o) { resolve2(o[0].toString()*1); }); }); return p2; }; resolve(instance); }); return p1; }; },{}],22:[function(require,module,exports){ /** * StromDAO Business Object: MPR * ========================================= * Meter Point Operator handling for StromDAO Energy Blockchain. * * In general a Meter Point Operating (Contract) handles meter readings and issues Deliverables as soon as a new reading is received. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.furyuser = function(obj_or_address) { var p1 = new Promise(function(resolve, reject) { var instance={}; instance.test = {}; /** * Stores a reading to this contract instance. Requires sender to be approved Meter-Point * @see approveMP() */ instance.setRole= function(role,address) { var p2 = new Promise(function(resolve2, reject2) { parent.roleLookup().then(function(rl) { rl.setRelation(role,address).then(function(tx) { resolve2(tx); }); }); }); return p2; }; instance.setRoleValue=function(role,value) { var p2 = new Promise(function(resolve2, reject2) { parent.stringstoragefactory().then(function(ssf) { ssf.build(value).then(function(address) { parent.furyuser().then(function(furyuser) { furyuser.setRole(role,address).then(function(tx) { resolve2(tx); }); }); }); }); }); return p2; }; instance.getRole=function(role) { var p2 = new Promise(function(resolve2, reject2) { parent.roleLookup().then(function(rl) { rl.relations(parent.wallet.address,role).then(function(tx) { resolve2(tx); }); }); }); return p2; }; instance.getRoleValue= function(role) { var p2 = new Promise(function(resolve2, reject2) { parent.furyuser().then(function(furyuser) { furyuser.getRole(role).then(function(tx) { if(tx=="0x0000000000000000000000000000000000000000") { console.log("Nothing linked to role",role); resolve2(); } else { parent.stringstorage(tx).then(function(ss) { ss.str().then(function(str) { resolve2(str); }); }); } }); }); }); return p2; }; instance.setUserKeys = function(account_obj) { var p2 = new Promise(function(resolve2, reject2) { account_obj.encrypt(parent.wallet.privateKey).then(function(enc) { account_obj.encrypt(parent.RSAPrivateKey).then(function(enc_rsa) { parent.stringstoragefactory().then(function(ssf) { ssf.build(enc).then(function(ss) { ssf.build(enc_rsa).then(function(ss_rsa) { ssf.build(parent.RSAPublicKey).then(function(ss_pub) { parent.roleLookup().then(function(rl) { rl.setRelation(224,ss_pub).then(function() { rl.setRelation(223,ss_rsa).then(function() { rl.setRelation(222,ss).then(function(tx) { resolve2(tx); }); }); }); }); }); }); }); }); }); }); }); return p2; } instance.getRSAKeys = function(account_obj) { var p2 = new Promise(function(resolve2, reject2) { parent.furyuser().then(function(furyuser) { furyuser.getRoleValue(224).then(function(rsa_pub) { account_obj.RSAPublicKey=rsa_pub; furyuser.getRoleValue(223).then(function(rsa_priv_enc) { account_obj.decrypt(rsa_priv_enc).then(function(rsa_priv) { account_obj.RSAPrivateKey=rsa_priv; resolve2(); }); }); }); }); }); return p2; }; resolve(instance); }); return p1; }; },{}],23:[function(require,module,exports){ /** * StromDAO Business Object: MPSet * ========================================= * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.mpdelta=function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_MPDelta"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_MPDelta'); instance.lastReadingTime=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.lastReadingTime().then(function(o) { resolve2(o); }); }); return p2; } instance.lastReadingPower=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.lastReadingPower().then(function(o) { resolve2(o); }); }); return p2; } instance.meterpoint=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.meterpoint().then(function(o) { resolve2(o); }); }); return p2; } instance.lastDeltaTime=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.lastDeltaTime().then(function(o) { resolve2(o); }); }); return p2; } instance.lastDeltaPower=function() { var p2 = new Promise(function(resolve2, reject2) { instance.obj.lastDeltaPower().then(function(o) { resolve2(o); }); }); return p2; } resolve(instance); }); return p1; }; },{}],24:[function(require,module,exports){ /** * StromDAO Business Object: MPO * ========================================= * Meter Point Operator handling for StromDAO Energy Blockchain. * * In general a Meter Point Operating (Contract) handles meter readings and issues Deliverables as soon as a new reading is received. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.mpo = function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_MPO"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_MPO'); instance.test = {}; /** * Approve a new Blockchain Address to this contract instance. Limit: Only-Owner * @param _meter address * @param _role Eq. to 4=