Socket
Socket
Sign inDemoInstall

@solana/web3.js

Package Overview
Dependencies
Maintainers
1
Versions
1815
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@solana/web3.js - npm Package Compare versions

Comparing version 0.14.1 to 0.14.2

2

bpf-sdk/version.txt
0.11.0
39d821ead82ce15aa6df3fc4f101a30a3852b4b2
80e0da132a1417a7bbd5e71b7202d86f0ad4b9bb

@@ -567,5 +567,5 @@ window.esdocSearchIndex = [

[
"src/connection.js~connection#getfinality",
"class/src/connection.js~Connection.html#instance-method-getFinality",
"src/connection.js~Connection#getFinality",
"src/connection.js~connection#getconfirmationtime",
"class/src/connection.js~Connection.html#instance-method-getConfirmationTime",
"src/connection.js~Connection#getConfirmationTime",
"method"

@@ -572,0 +572,0 @@ ],

@@ -1,2 +0,2 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _interopDefault(ex){return ex&&typeof ex==="object"&&"default"in ex?ex["default"]:ex}var _classCallCheck=_interopDefault(require("babel-runtime/helpers/classCallCheck"));var _createClass=_interopDefault(require("babel-runtime/helpers/createClass"));var nacl=_interopDefault(require("tweetnacl"));var BN=_interopDefault(require("bn.js"));var bs58=_interopDefault(require("bs58"));var _regeneratorRuntime=_interopDefault(require("babel-runtime/regenerator"));var _asyncToGenerator=_interopDefault(require("babel-runtime/helpers/asyncToGenerator"));var _Promise=_interopDefault(require("babel-runtime/core-js/promise"));var _Object$assign=_interopDefault(require("babel-runtime/core-js/object/assign"));var BufferLayout=require("buffer-layout");var assert=_interopDefault(require("assert"));var _getIterator=_interopDefault(require("babel-runtime/core-js/get-iterator"));var _Object$keys=_interopDefault(require("babel-runtime/core-js/object/keys"));var _toConsumableArray=_interopDefault(require("babel-runtime/helpers/toConsumableArray"));var url=require("url");var fetch=_interopDefault(require("node-fetch"));var jayson=_interopDefault(require("jayson/lib/client/browser"));var superstruct=require("superstruct");var rpcWebsockets=require("rpc-websockets");var _JSON$stringify=_interopDefault(require("babel-runtime/core-js/json/stringify"));var _Object$getPrototypeOf=_interopDefault(require("babel-runtime/core-js/object/get-prototype-of"));var _possibleConstructorReturn=_interopDefault(require("babel-runtime/helpers/possibleConstructorReturn"));var _get=_interopDefault(require("babel-runtime/helpers/get"));var _inherits=_interopDefault(require("babel-runtime/helpers/inherits"));var PublicKey=function(){function PublicKey(value){_classCallCheck(this,PublicKey);if(typeof value==="string"){if(value.startsWith("0x")){this._bn=new BN(value.substring(2),16)}else{this._bn=new BN(bs58.decode(value))}}else{this._bn=new BN(value)}if(this._bn.byteLength()>32){throw new Error("Invalid public key input")}}_createClass(PublicKey,[{key:"equals",value:function equals(publicKey){return this._bn.eq(publicKey._bn)}},{key:"toBase58",value:function toBase58(){return bs58.encode(this.toBuffer())}},{key:"toBuffer",value:function toBuffer(){var b=this._bn.toArrayLike(Buffer);if(b.length===32){return b}var zeroPad=Buffer.alloc(32);b.copy(zeroPad,32-b.length);return zeroPad}},{key:"toString",value:function toString(){return this.toBase58()}}],[{key:"isPublicKey",value:function isPublicKey(o){return o instanceof PublicKey}}]);return PublicKey}();var Account=function(){function Account(){var secretKey=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;_classCallCheck(this,Account);if(secretKey){this._keypair=nacl.sign.keyPair.fromSecretKey(secretKey)}else{this._keypair=nacl.sign.keyPair()}}_createClass(Account,[{key:"publicKey",get:function get(){return new PublicKey(this._keypair.publicKey)}},{key:"secretKey",get:function get(){return this._keypair.secretKey}}]);return Account}();var publicKey=function publicKey(){var property=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"publicKey";return BufferLayout.blob(32,property)};var uint64=function uint64(){var property=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"uint64";return BufferLayout.blob(8,property)};var rustString=function rustString(){var property=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"string";var rsl=BufferLayout.struct([BufferLayout.u32("length"),BufferLayout.u32("lengthPadding"),BufferLayout.blob(BufferLayout.offset(BufferLayout.u32(),-8),"chars")],property);var _decode=rsl.decode.bind(rsl);var _encode=rsl.encode.bind(rsl);rsl.decode=function(buffer,offset){var data=_decode(buffer,offset);return data.chars.toString("utf8")};rsl.encode=function(str,buffer,offset){var data={chars:Buffer.from(str,"utf8")};return _encode(data,buffer,offset)};return rsl};var PACKET_DATA_SIZE=512;var TransactionInstruction=function TransactionInstruction(opts){_classCallCheck(this,TransactionInstruction);this.keys=[];this.userdata=Buffer.alloc(0);opts&&_Object$assign(this,opts)};var Transaction=function(){_createClass(Transaction,[{key:"signature",get:function get(){if(this.signatures.length>0){return this.signatures[0].signature}return null}}]);function Transaction(opts){_classCallCheck(this,Transaction);this.signatures=[];this.instructions=[];this.fee=1;opts&&_Object$assign(this,opts)}_createClass(Transaction,[{key:"add",value:function add(){var _this=this;for(var _len=arguments.length,items=Array(_len),_key=0;_key<_len;_key++){items[_key]=arguments[_key]}if(items.length===0){throw new Error("No instructions")}items.forEach(function(item){if(item instanceof Transaction){_this.instructions=_this.instructions.concat(item.instructions)}else{_this.instructions.push(new TransactionInstruction(item))}});return this}},{key:"_getSignData",value:function _getSignData(){var lastId=this.lastId;if(!lastId){throw new Error("Transaction lastId required")}if(this.instructions.length<1){throw new Error("No instructions provided")}var keys=this.signatures.map(function(_ref){var publicKey$$1=_ref.publicKey;return publicKey$$1.toString()});var programIds=[];this.instructions.forEach(function(instruction){var programId=instruction.programId.toString();if(!programIds.includes(programId)){programIds.push(programId)}instruction.keys.map(function(key){return key.toString()}).forEach(function(key){if(!keys.includes(key)){keys.push(key)}})});var instructions=this.instructions.map(function(instruction){var userdata=instruction.userdata,programId=instruction.programId;return{programIdIndex:programIds.indexOf(programId.toString()),keyIndices:instruction.keys.map(function(key){return keys.indexOf(key.toString())}),userdata:userdata}});instructions.forEach(function(instruction){assert(instruction.programIdIndex>=0);instruction.keyIndices.forEach(function(keyIndex){return assert(keyIndex>=0)})});var instructionLayout=BufferLayout.struct([BufferLayout.u8("programIdIndex"),BufferLayout.u32("keyIndicesLength"),BufferLayout.u32("keyIndicesLengthPadding"),BufferLayout.seq(BufferLayout.u8("keyIndex"),BufferLayout.offset(BufferLayout.u32(),-8),"keyIndices"),BufferLayout.u32("userdataLength"),BufferLayout.u32("userdataLengthPadding"),BufferLayout.seq(BufferLayout.u8("userdatum"),BufferLayout.offset(BufferLayout.u32(),-8),"userdata")]);var signDataLayout=BufferLayout.struct([BufferLayout.u32("keysLength"),BufferLayout.u32("keysLengthPadding"),BufferLayout.seq(publicKey("key"),BufferLayout.offset(BufferLayout.u32(),-8),"keys"),publicKey("lastId"),BufferLayout.ns64("fee"),BufferLayout.u32("programIdsLength"),BufferLayout.u32("programIdsLengthPadding"),BufferLayout.seq(publicKey("programId"),BufferLayout.offset(BufferLayout.u32(),-8),"programIds"),BufferLayout.u32("instructionsLength"),BufferLayout.u32("instructionsLengthPadding"),BufferLayout.seq(instructionLayout,BufferLayout.offset(BufferLayout.u32(),-8),"instructions")]);var transaction={keys:keys.map(function(key){return new PublicKey(key).toBuffer()}),lastId:Buffer.from(bs58.decode(lastId)),fee:this.fee,programIds:programIds.map(function(programId){return new PublicKey(programId).toBuffer()}),instructions:instructions};var signData=Buffer.alloc(2048);var length=signDataLayout.encode(transaction,signData);signData=signData.slice(0,length);return signData}},{key:"sign",value:function sign(){this.signPartial.apply(this,arguments)}},{key:"signPartial",value:function signPartial(){for(var _len2=arguments.length,partialSigners=Array(_len2),_key2=0;_key2<_len2;_key2++){partialSigners[_key2]=arguments[_key2]}if(partialSigners.length===0){throw new Error("No signers")}var signatures=partialSigners.map(function(accountOrPublicKey){var publicKey$$1=accountOrPublicKey instanceof Account?accountOrPublicKey.publicKey:accountOrPublicKey;return{signature:null,publicKey:publicKey$$1}});this.signatures=signatures;var signData=this._getSignData();partialSigners.forEach(function(accountOrPublicKey,index){if(accountOrPublicKey instanceof PublicKey){return}var signature=nacl.sign.detached(signData,accountOrPublicKey.secretKey);assert(signature.length===64);signatures[index].signature=signature})}},{key:"addSigner",value:function addSigner(signer){var index=this.signatures.findIndex(function(sigpair){return signer.publicKey.equals(sigpair.publicKey)});if(index<0){throw new Error("Unknown signer: "+signer.publicKey.toString())}var signData=this._getSignData();var signature=nacl.sign.detached(signData,signer.secretKey);assert(signature.length===64);this.signatures[index].signature=signature}},{key:"serialize",value:function serialize(){var signatures=this.signatures;if(!signatures){throw new Error("Transaction has not been signed")}var signData=this._getSignData();var wireTransaction=Buffer.alloc(8+signatures.length*64+signData.length);assert(signatures.length<256);wireTransaction.writeUInt8(signatures.length,0);signatures.forEach(function(_ref2,index){var signature=_ref2.signature;assert(signature!==null,"null signature");assert(signature.length===64,"signature has invalid length");Buffer.from(signature).copy(wireTransaction,8+index*64)});signData.copy(wireTransaction,8+signatures.length*64);assert(wireTransaction.length<=PACKET_DATA_SIZE,"Transaction too large: "+wireTransaction.length+" > "+PACKET_DATA_SIZE);return wireTransaction}},{key:"keys",get:function get(){assert(this.instructions.length===1);return this.instructions[0].keys}},{key:"programId",get:function get(){assert(this.instructions.length===1);return this.instructions[0].programId}},{key:"userdata",get:function get(){assert(this.instructions.length===1);return this.instructions[0].userdata}}]);return Transaction}();var SystemProgram=function(){function SystemProgram(){_classCallCheck(this,SystemProgram)}_createClass(SystemProgram,null,[{key:"createAccount",value:function createAccount(from,newAccount,tokens,space,programId){var userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction"),BufferLayout.ns64("tokens"),BufferLayout.ns64("space"),publicKey("programId")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:0,tokens:tokens,space:space,programId:programId.toBuffer()},userdata);return(new Transaction).add({keys:[from,newAccount],programId:SystemProgram.programId,userdata:userdata})}},{key:"move",value:function move(from,to,amount){var userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction"),BufferLayout.ns64("amount")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:2,amount:amount},userdata);return(new Transaction).add({keys:[from,to],programId:SystemProgram.programId,userdata:userdata})}},{key:"assign",value:function assign(from,programId){var userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction"),publicKey("programId")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:1,programId:programId.toBuffer()},userdata);return(new Transaction).add({keys:[from],programId:SystemProgram.programId,userdata:userdata})}},{key:"spawn",value:function spawn(programId){var userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:3},userdata);return(new Transaction).add({keys:[programId],programId:SystemProgram.programId,userdata:userdata})}},{key:"programId",get:function get(){return new PublicKey("0x000000000000000000000000000000000000000000000000000000000000000")}}]);return SystemProgram}();function sleep(ms){return new _Promise(function(resolve){return setTimeout(resolve,ms)})}function createRpcRequest(url$$1){var _this=this;var server=jayson(function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(request,callback){var options,res,text;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:options={method:"POST",body:request,headers:{"Content-Type":"application/json"}};_context.prev=1;_context.next=4;return fetch(url$$1,options);case 4:res=_context.sent;_context.next=7;return res.text();case 7:text=_context.sent;callback(null,text);_context.next=14;break;case 11:_context.prev=11;_context.t0=_context["catch"](1);callback(_context.t0);case 14:case"end":return _context.stop()}}},_callee,_this,[[1,11]])}));return function(_x,_x2){return _ref.apply(this,arguments)}}());return function(method,args){return new _Promise(function(resolve,reject){server.request(method,args,function(err,response){if(err){reject(err);return}resolve(response)})})}}var GetBalanceRpcResult=superstruct.struct({jsonrpc:superstruct.struct.literal("2.0"),id:"string",error:"any?",result:"number?"});function jsonRpcResult(resultDescription){var jsonRpcVersion=superstruct.struct.literal("2.0");return superstruct.struct.union([superstruct.struct({jsonrpc:jsonRpcVersion,id:"string",error:"any"}),superstruct.struct({jsonrpc:jsonRpcVersion,id:"string",error:"null?",result:resultDescription})])}var AccountInfoResult=superstruct.struct({executable:"boolean",loader:"array",owner:"array",tokens:"number",userdata:"array"});var GetAccountInfoRpcResult=jsonRpcResult(AccountInfoResult);var AccountNotificationResult=superstruct.struct({subscription:"number",result:AccountInfoResult});var ConfirmTransactionRpcResult=jsonRpcResult("boolean");var GetSignatureStatusRpcResult=jsonRpcResult(superstruct.struct.enum(["AccountInUse","Confirmed","GenericFailure","ProgramRuntimeError","SignatureNotFound"]));var GetTransactionCountRpcResult=jsonRpcResult("number");var GetLastId=jsonRpcResult("string");var GetFinalityRpcResult=jsonRpcResult("number");var RequestAirdropRpcResult=jsonRpcResult("string");var SendTransactionRpcResult=jsonRpcResult("string");var Connection=function(){function Connection(endpoint){_classCallCheck(this,Connection);this._rpcWebSocketConnected=false;this._disableLastIdCaching=false;this._accountChangeSubscriptions={};this._accountChangeSubscriptionCounter=0;var url$$1=url.parse(endpoint);this._rpcRequest=createRpcRequest(url$$1.href);this._lastIdInfo={lastId:null,seconds:-1,transactionSignatures:[]};url$$1.protocol=url$$1.protocol==="https:"?"wss:":"ws:";url$$1.host="";url$$1.port=String(Number(url$$1.port)+1);if(url$$1.port==="1"){url$$1.port=url$$1.protocol==="wss:"?"8901":"8900"}this._rpcWebSocket=new rpcWebsockets.Client(url.format(url$$1),{autoconnect:false,max_reconnects:Infinity});this._rpcWebSocket.on("open",this._wsOnOpen.bind(this));this._rpcWebSocket.on("error",this._wsOnError.bind(this));this._rpcWebSocket.on("close",this._wsOnClose.bind(this));this._rpcWebSocket.on("accountNotification",this._wsOnAccountNotification.bind(this))}_createClass(Connection,[{key:"getBalance",value:function(){var _ref2=_asyncToGenerator(_regeneratorRuntime.mark(function _callee2(publicKey){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:_context2.next=2;return this._rpcRequest("getBalance",[publicKey.toBase58()]);case 2:unsafeRes=_context2.sent;res=GetBalanceRpcResult(unsafeRes);if(!res.error){_context2.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context2.abrupt("return",res.result);case 8:case"end":return _context2.stop()}}},_callee2,this)}));function getBalance(_x3){return _ref2.apply(this,arguments)}return getBalance}()},{key:"getAccountInfo",value:function(){var _ref3=_asyncToGenerator(_regeneratorRuntime.mark(function _callee3(publicKey){var unsafeRes,res,result;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:_context3.next=2;return this._rpcRequest("getAccountInfo",[publicKey.toBase58()]);case 2:unsafeRes=_context3.sent;res=GetAccountInfoRpcResult(unsafeRes);if(!res.error){_context3.next=6;break}throw new Error(res.error.message);case 6:result=res.result;assert(typeof result!=="undefined");return _context3.abrupt("return",{executable:result.executable,loader:new PublicKey(result.loader),owner:new PublicKey(result.owner),tokens:result.tokens,userdata:Buffer.from(result.userdata)});case 9:case"end":return _context3.stop()}}},_callee3,this)}));function getAccountInfo(_x4){return _ref3.apply(this,arguments)}return getAccountInfo}()},{key:"confirmTransaction",value:function(){var _ref4=_asyncToGenerator(_regeneratorRuntime.mark(function _callee4(signature){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:_context4.next=2;return this._rpcRequest("confirmTransaction",[signature]);case 2:unsafeRes=_context4.sent;res=ConfirmTransactionRpcResult(unsafeRes);if(!res.error){_context4.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context4.abrupt("return",res.result);case 8:case"end":return _context4.stop()}}},_callee4,this)}));function confirmTransaction(_x5){return _ref4.apply(this,arguments)}return confirmTransaction}()},{key:"getSignatureStatus",value:function(){var _ref5=_asyncToGenerator(_regeneratorRuntime.mark(function _callee5(signature){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee5$(_context5){while(1){switch(_context5.prev=_context5.next){case 0:_context5.next=2;return this._rpcRequest("getSignatureStatus",[signature]);case 2:unsafeRes=_context5.sent;res=GetSignatureStatusRpcResult(unsafeRes);if(!res.error){_context5.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context5.abrupt("return",res.result);case 8:case"end":return _context5.stop()}}},_callee5,this)}));function getSignatureStatus(_x6){return _ref5.apply(this,arguments)}return getSignatureStatus}()},{key:"getTransactionCount",value:function(){var _ref6=_asyncToGenerator(_regeneratorRuntime.mark(function _callee6(){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee6$(_context6){while(1){switch(_context6.prev=_context6.next){case 0:_context6.next=2;return this._rpcRequest("getTransactionCount",[]);case 2:unsafeRes=_context6.sent;res=GetTransactionCountRpcResult(unsafeRes);if(!res.error){_context6.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context6.abrupt("return",Number(res.result));case 8:case"end":return _context6.stop()}}},_callee6,this)}));function getTransactionCount(){return _ref6.apply(this,arguments)}return getTransactionCount}()},{key:"getLastId",value:function(){var _ref7=_asyncToGenerator(_regeneratorRuntime.mark(function _callee7(){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee7$(_context7){while(1){switch(_context7.prev=_context7.next){case 0:_context7.next=2;return this._rpcRequest("getLastId",[]);case 2:unsafeRes=_context7.sent;res=GetLastId(unsafeRes);if(!res.error){_context7.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context7.abrupt("return",res.result);case 8:case"end":return _context7.stop()}}},_callee7,this)}));function getLastId(){return _ref7.apply(this,arguments)}return getLastId}()},{key:"getFinality",value:function(){var _ref8=_asyncToGenerator(_regeneratorRuntime.mark(function _callee8(){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee8$(_context8){while(1){switch(_context8.prev=_context8.next){case 0:_context8.next=2;return this._rpcRequest("getFinality",[]);case 2:unsafeRes=_context8.sent;res=GetFinalityRpcResult(unsafeRes);if(!res.error){_context8.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context8.abrupt("return",Number(res.result));case 8:case"end":return _context8.stop()}}},_callee8,this)}));function getFinality(){return _ref8.apply(this,arguments)}return getFinality}()},{key:"requestAirdrop",value:function(){var _ref9=_asyncToGenerator(_regeneratorRuntime.mark(function _callee9(to,amount){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee9$(_context9){while(1){switch(_context9.prev=_context9.next){case 0:_context9.next=2;return this._rpcRequest("requestAirdrop",[to.toBase58(),amount]);case 2:unsafeRes=_context9.sent;res=RequestAirdropRpcResult(unsafeRes);if(!res.error){_context9.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context9.abrupt("return",res.result);case 8:case"end":return _context9.stop()}}},_callee9,this)}));function requestAirdrop(_x7,_x8){return _ref9.apply(this,arguments)}return requestAirdrop}()},{key:"sendTransaction",value:function(){var _ref10=_asyncToGenerator(_regeneratorRuntime.mark(function _callee10(transaction){for(var _len=arguments.length,signers=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){signers[_key-1]=arguments[_key]}var _seconds,signature,attempts,startTime,_lastId,wireTransaction;return _regeneratorRuntime.wrap(function _callee10$(_context10){while(1){switch(_context10.prev=_context10.next){case 0:_seconds=(new Date).getSeconds();if(!(this._lastIdInfo.lastId!=null&&this._lastIdInfo.seconds===_seconds)){_context10.next=11;break}transaction.lastId=this._lastIdInfo.lastId;transaction.sign.apply(transaction,signers);if(transaction.signature){_context10.next=6;break}throw new Error("!signature");case 6:signature=transaction.signature.toString();if(this._lastIdInfo.transactionSignatures.includes(signature)){_context10.next=11;break}this._lastIdInfo.transactionSignatures.push(signature);if(this._disableLastIdCaching){this._lastIdInfo.seconds=-1}return _context10.abrupt("break",28);case 11:attempts=0;startTime=Date.now();case 13:_context10.next=15;return this.getLastId();case 15:_lastId=_context10.sent;if(!(this._lastIdInfo.lastId!=_lastId)){_context10.next=19;break}this._lastIdInfo={lastId:_lastId,seconds:(new Date).getSeconds(),transactionSignatures:[]};return _context10.abrupt("break",26);case 19:if(!(attempts===8)){_context10.next=21;break}throw new Error("Unable to obtain a new last id after "+(Date.now()-startTime)+"ms");case 21:_context10.next=23;return sleep(250);case 23:++attempts;case 24:_context10.next=13;break;case 26:_context10.next=0;break;case 28:wireTransaction=transaction.serialize();_context10.next=31;return this.sendRawTransaction(wireTransaction);case 31:return _context10.abrupt("return",_context10.sent);case 32:case"end":return _context10.stop()}}},_callee10,this)}));function sendTransaction(_x9){return _ref10.apply(this,arguments)}return sendTransaction}()},{key:"sendRawTransaction",value:function(){var _ref11=_asyncToGenerator(_regeneratorRuntime.mark(function _callee11(rawTransaction){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee11$(_context11){while(1){switch(_context11.prev=_context11.next){case 0:_context11.next=2;return this._rpcRequest("sendTransaction",[[].concat(_toConsumableArray(rawTransaction))]);case 2:unsafeRes=_context11.sent;res=SendTransactionRpcResult(unsafeRes);if(!res.error){_context11.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");assert(res.result);return _context11.abrupt("return",res.result);case 9:case"end":return _context11.stop()}}},_callee11,this)}));function sendRawTransaction(_x10){return _ref11.apply(this,arguments)}return sendRawTransaction}()},{key:"_wsOnOpen",value:function _wsOnOpen(){this._rpcWebSocketConnected=true;this._updateSubscriptions()}},{key:"_wsOnError",value:function _wsOnError(err){console.log("ws error:",err.message)}},{key:"_wsOnClose",value:function _wsOnClose(code,message){if(code!==1e3){console.log("ws close:",code,message)}this._rpcWebSocketConnected=false}},{key:"_wsOnAccountNotification",value:function _wsOnAccountNotification(notification){var res=AccountNotificationResult(notification);if(res.error){throw new Error(res.error.message)}var keys=_Object$keys(this._accountChangeSubscriptions).map(Number);var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=_getIterator(keys),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var id=_step.value;var sub=this._accountChangeSubscriptions[id];if(sub.subscriptionId===res.subscription){var result=res.result;assert(typeof result!=="undefined");sub.callback({executable:result.executable,loader:new PublicKey(result.loader),owner:new PublicKey(result.owner),tokens:result.tokens,userdata:Buffer.from(result.userdata)});return true}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}}},{key:"_updateSubscriptions",value:function(){var _ref12=_asyncToGenerator(_regeneratorRuntime.mark(function _callee12(){var keys,_iteratorNormalCompletion2,_didIteratorError2,_iteratorError2,_iterator2,_step2,id,_iteratorNormalCompletion3,_didIteratorError3,_iteratorError3,_iterator3,_step3,_id,_accountChangeSubscri,_subscriptionId,_publicKey;return _regeneratorRuntime.wrap(function _callee12$(_context12){while(1){switch(_context12.prev=_context12.next){case 0:keys=_Object$keys(this._accountChangeSubscriptions).map(Number);if(!(keys.length===0)){_context12.next=4;break}this._rpcWebSocket.close();return _context12.abrupt("return");case 4:if(this._rpcWebSocketConnected){_context12.next=26;break}_iteratorNormalCompletion2=true;_didIteratorError2=false;_iteratorError2=undefined;_context12.prev=8;for(_iterator2=_getIterator(keys);!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=true){id=_step2.value;this._accountChangeSubscriptions[id].subscriptionId=null}_context12.next=16;break;case 12:_context12.prev=12;_context12.t0=_context12["catch"](8);_didIteratorError2=true;_iteratorError2=_context12.t0;case 16:_context12.prev=16;_context12.prev=17;if(!_iteratorNormalCompletion2&&_iterator2.return){_iterator2.return()}case 19:_context12.prev=19;if(!_didIteratorError2){_context12.next=22;break}throw _iteratorError2;case 22:return _context12.finish(19);case 23:return _context12.finish(16);case 24:this._rpcWebSocket.connect();return _context12.abrupt("return");case 26:_iteratorNormalCompletion3=true;_didIteratorError3=false;_iteratorError3=undefined;_context12.prev=29;_iterator3=_getIterator(keys);case 31:if(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done){_context12.next=47;break}_id=_step3.value;_accountChangeSubscri=this._accountChangeSubscriptions[_id],_subscriptionId=_accountChangeSubscri.subscriptionId,_publicKey=_accountChangeSubscri.publicKey;if(!(_subscriptionId===null)){_context12.next=44;break}_context12.prev=35;_context12.next=38;return this._rpcWebSocket.call("accountSubscribe",[_publicKey]);case 38:this._accountChangeSubscriptions[_id].subscriptionId=_context12.sent;_context12.next=44;break;case 41:_context12.prev=41;_context12.t1=_context12["catch"](35);console.log("accountSubscribe error for "+_publicKey+": "+_context12.t1.message);case 44:_iteratorNormalCompletion3=true;_context12.next=31;break;case 47:_context12.next=53;break;case 49:_context12.prev=49;_context12.t2=_context12["catch"](29);_didIteratorError3=true;_iteratorError3=_context12.t2;case 53:_context12.prev=53;_context12.prev=54;if(!_iteratorNormalCompletion3&&_iterator3.return){_iterator3.return()}case 56:_context12.prev=56;if(!_didIteratorError3){_context12.next=59;break}throw _iteratorError3;case 59:return _context12.finish(56);case 60:return _context12.finish(53);case 61:case"end":return _context12.stop()}}},_callee12,this,[[8,12,16,24],[17,,19,23],[29,49,53,61],[35,41],[54,,56,60]])}));function _updateSubscriptions(){return _ref12.apply(this,arguments)}return _updateSubscriptions}()},{key:"onAccountChange",value:function onAccountChange(publicKey,callback){var id=++this._accountChangeSubscriptionCounter;this._accountChangeSubscriptions[id]={publicKey:publicKey.toBase58(),callback:callback,subscriptionId:null};this._updateSubscriptions();return id}},{key:"removeAccountChangeListener",value:function(){var _ref13=_asyncToGenerator(_regeneratorRuntime.mark(function _callee13(id){var _subscriptionId2;return _regeneratorRuntime.wrap(function _callee13$(_context13){while(1){switch(_context13.prev=_context13.next){case 0:if(!this._accountChangeSubscriptions[id]){_context13.next=15;break}_subscriptionId2=this._accountChangeSubscriptions[id].subscriptionId;delete this._accountChangeSubscriptions[id];if(!(_subscriptionId2!==null)){_context13.next=12;break}_context13.prev=4;_context13.next=7;return this._rpcWebSocket.call("accountUnsubscribe",[_subscriptionId2]);case 7:_context13.next=12;break;case 9:_context13.prev=9;_context13.t0=_context13["catch"](4);console.log("accountUnsubscribe error:",_context13.t0.message);case 12:this._updateSubscriptions();_context13.next=16;break;case 15:throw new Error("Unknown account change id: "+id);case 16:case"end":return _context13.stop()}}},_callee13,this,[[4,9]])}));function removeAccountChangeListener(_x11){return _ref13.apply(this,arguments)}return removeAccountChangeListener}()}]);return Connection}();var sendAndConfirmTransaction=function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(connection,transaction){for(var _len=arguments.length,signers=Array(_len>2?_len-2:0),_key=2;_key<_len;_key++){signers[_key-2]=arguments[_key]}var sendRetries,signature,start,status,statusRetries,duration;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:sendRetries=10;signature=void 0;case 2:start=Date.now();_context.next=5;return connection.sendTransaction.apply(connection,[transaction].concat(signers));case 5:signature=_context.sent;status="SignatureNotFound";statusRetries=4;case 8:_context.next=10;return connection.getSignatureStatus(signature);case 10:status=_context.sent;if(!(status!=="SignatureNotFound")){_context.next=13;break}return _context.abrupt("break",20);case 13:_context.next=15;return sleep(500);case 15:if(!(--statusRetries<=0)){_context.next=18;break}duration=(Date.now()-start)/1e3;throw new Error("Transaction '"+signature+"' was not confirmed in "+duration.toFixed(2)+" seconds ("+status+")");case 18:_context.next=8;break;case 20:if(!(status==="Confirmed")){_context.next=22;break}return _context.abrupt("break",28);case 22:if(!(status!=="AccountInUse"||--sendRetries<=0)){_context.next=24;break}throw new Error("Transaction "+signature+" failed ("+status+")");case 24:_context.next=26;return sleep(Math.random()*100);case 26:_context.next=2;break;case 28:assert(signature!==undefined);return _context.abrupt("return",signature);case 30:case"end":return _context.stop()}}},_callee,this)}));return function sendAndConfirmTransaction(_x,_x2){return _ref.apply(this,arguments)}}();var Loader=function(){_createClass(Loader,null,[{key:"chunkSize",get:function get(){return 256}}]);function Loader(connection,programId){_classCallCheck(this,Loader);_Object$assign(this,{connection:connection,programId:programId})}_createClass(Loader,[{key:"load",value:function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(program,data){var userdataLayout,chunkSize,offset,array,transactions,bytes,userdata,transaction;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction"),BufferLayout.u32("offset"),BufferLayout.u32("bytesLength"),BufferLayout.u32("bytesLengthPadding"),BufferLayout.seq(BufferLayout.u8("byte"),BufferLayout.offset(BufferLayout.u32(),-8),"bytes")]);chunkSize=Loader.chunkSize;offset=0;array=data;transactions=[];case 5:if(!(array.length>0)){_context.next=19;break}bytes=array.slice(0,chunkSize);userdata=Buffer.alloc(chunkSize+16);userdataLayout.encode({instruction:0,offset:offset,bytes:bytes},userdata);transaction=(new Transaction).add({keys:[program.publicKey],programId:this.programId,userdata:userdata});transactions.push(sendAndConfirmTransaction(this.connection,transaction,program));if(!(transactions.length===8)){_context.next=15;break}_context.next=14;return _Promise.all(transactions);case 14:transactions=[];case 15:offset+=chunkSize;array=array.slice(chunkSize);_context.next=5;break;case 19:_context.next=21;return _Promise.all(transactions);case 21:case"end":return _context.stop()}}},_callee,this)}));function load(_x,_x2){return _ref.apply(this,arguments)}return load}()},{key:"finalize",value:function(){var _ref2=_asyncToGenerator(_regeneratorRuntime.mark(function _callee2(program){var userdataLayout,userdata,transaction;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction")]);userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:1},userdata);transaction=new Transaction;transaction.add({keys:[program.publicKey],programId:this.programId,userdata:userdata});transaction.add(SystemProgram.spawn(program.publicKey));_context2.next=8;return sendAndConfirmTransaction(this.connection,transaction,program);case 8:case"end":return _context2.stop()}}},_callee2,this)}));function finalize(_x3){return _ref2.apply(this,arguments)}return finalize}()}]);return Loader}();var BpfLoader=function(){function BpfLoader(){_classCallCheck(this,BpfLoader)}_createClass(BpfLoader,null,[{key:"load",value:function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(connection,owner,elf){var programAccount,transaction,loader;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:programAccount=new Account;transaction=SystemProgram.createAccount(owner.publicKey,programAccount.publicKey,1+Math.ceil(elf.length/Loader.chunkSize)+1,elf.length,BpfLoader.programId);_context.next=4;return sendAndConfirmTransaction(connection,transaction,owner);case 4:loader=new Loader(connection,BpfLoader.programId);_context.next=7;return loader.load(programAccount,elf);case 7:_context.next=9;return loader.finalize(programAccount);case 9:return _context.abrupt("return",programAccount.publicKey);case 10:case"end":return _context.stop()}}},_callee,this)}));function load(_x,_x2,_x3){return _ref.apply(this,arguments)}return load}()},{key:"programId",get:function get(){return new PublicKey("0x8000000000000000000000000000000000000000000000000000000000000000")}}]);return BpfLoader}();function serializePayment(payment){var toData=payment.to.toBuffer();var userdata=Buffer.alloc(8+toData.length);userdata.writeUInt32LE(payment.amount,0);toData.copy(userdata,8);return userdata}function serializeDate(when){var userdata=Buffer.alloc(8+20);userdata.writeUInt32LE(20,0);function iso(date){function pad(number){if(number<10){return"0"+number}return number}return date.getUTCFullYear()+"-"+pad(date.getUTCMonth()+1)+"-"+pad(date.getUTCDate())+"T"+pad(date.getUTCHours())+":"+pad(date.getUTCMinutes())+":"+pad(date.getUTCSeconds())+"Z"}userdata.write(iso(when),8);return userdata}function serializeCondition(condition){switch(condition.type){case"timestamp":{var date=serializeDate(condition.when);var _from=condition.from.toBuffer();var userdata=Buffer.alloc(4+date.length+_from.length);userdata.writeUInt32LE(0,0);date.copy(userdata,4);_from.copy(userdata,4+date.length);return userdata}case"signature":{var userdataLayout=BufferLayout.struct([BufferLayout.u32("condition"),publicKey("from")]);var _from2=condition.from.toBuffer();var _userdata=Buffer.alloc(4+_from2.length);userdataLayout.encode({instruction:1,from:_from2},_userdata);return _userdata}default:throw new Error("Unknown condition type: "+condition.type)}}var BudgetProgram=function(){function BudgetProgram(){_classCallCheck(this,BudgetProgram)}_createClass(BudgetProgram,null,[{key:"timestampCondition",value:function timestampCondition(from,when){return{type:"timestamp",from:from,when:when}}},{key:"signatureCondition",value:function signatureCondition(from){return{type:"signature",from:from}}},{key:"pay",value:function pay(from,program,to,amount){var userdata=Buffer.alloc(1024);var pos=0;userdata.writeUInt32LE(0,pos);pos+=4;for(var _len=arguments.length,conditions=Array(_len>4?_len-4:0),_key=4;_key<_len;_key++){conditions[_key-4]=arguments[_key]}switch(conditions.length){case 0:userdata.writeUInt32LE(0,pos);pos+=4;{var payment=serializePayment({amount:amount,to:to});payment.copy(userdata,pos);pos+=payment.length}return(new Transaction).add({keys:[from,to],programId:this.programId,userdata:userdata.slice(0,pos)});case 1:userdata.writeUInt32LE(1,pos);pos+=4;{var condition=conditions[0];var conditionData=serializeCondition(condition);conditionData.copy(userdata,pos);pos+=conditionData.length;var paymentData=serializePayment({amount:amount,to:to});paymentData.copy(userdata,pos);pos+=paymentData.length}return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata.slice(0,pos)});case 2:userdata.writeUInt32LE(2,pos);pos+=4;var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=_getIterator(conditions),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var _condition=_step.value;var _conditionData=serializeCondition(_condition);_conditionData.copy(userdata,pos);pos+=_conditionData.length;var _paymentData=serializePayment({amount:amount,to:to});_paymentData.copy(userdata,pos);pos+=_paymentData.length}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata.slice(0,pos)});default:throw new Error("A maximum of two conditions are support: "+conditions.length+" provided")}}},{key:"payOnBoth",value:function payOnBoth(from,program,to,amount,condition1,condition2){var userdata=Buffer.alloc(1024);var pos=0;userdata.writeUInt32LE(0,pos);pos+=4;userdata.writeUInt32LE(3,pos);pos+=4;var _arr=[condition1,condition2];for(var _i=0;_i<_arr.length;_i++){var condition=_arr[_i];var conditionData=serializeCondition(condition);conditionData.copy(userdata,pos);pos+=conditionData.length}var paymentData=serializePayment({amount:amount,to:to});paymentData.copy(userdata,pos);pos+=paymentData.length;return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata.slice(0,pos)})}},{key:"applyTimestamp",value:function applyTimestamp(from,program,to,when){var whenData=serializeDate(when);var userdata=Buffer.alloc(4+whenData.length);userdata.writeUInt32LE(1,0);whenData.copy(userdata,4);return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata})}},{key:"applySignature",value:function applySignature(from,program,to){var userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:2},userdata);return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata})}},{key:"programId",get:function get(){return new PublicKey("0x8100000000000000000000000000000000000000000000000000000000000000")}},{key:"space",get:function get(){return 128}}]);return BudgetProgram}();var NativeLoader=function(){function NativeLoader(){_classCallCheck(this,NativeLoader)}_createClass(NativeLoader,null,[{key:"load",value:function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(connection,owner,programName){var bytes,programAccount,transaction,loader;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:bytes=[].concat(_toConsumableArray(Buffer.from(programName)));programAccount=new Account;transaction=SystemProgram.createAccount(owner.publicKey,programAccount.publicKey,1+1+1,bytes.length+1,NativeLoader.programId);_context.next=5;return sendAndConfirmTransaction(connection,transaction,owner);case 5:loader=new Loader(connection,NativeLoader.programId);_context.next=8;return loader.load(programAccount,bytes);case 8:_context.next=10;return loader.finalize(programAccount);case 10:return _context.abrupt("return",programAccount.publicKey);case 11:case"end":return _context.stop()}}},_callee,this)}));function load(_x,_x2,_x3){return _ref.apply(this,arguments)}return load}()},{key:"programId",get:function get(){return new PublicKey("0x100000000000000000000000000000000000000000000000000000000000000")}}]);return NativeLoader}();var TokenAmount=function(_BN){_inherits(TokenAmount,_BN);function TokenAmount(){_classCallCheck(this,TokenAmount);return _possibleConstructorReturn(this,(TokenAmount.__proto__||_Object$getPrototypeOf(TokenAmount)).apply(this,arguments))}_createClass(TokenAmount,[{key:"toBuffer",value:function toBuffer(){var a=_get(TokenAmount.prototype.__proto__||_Object$getPrototypeOf(TokenAmount.prototype),"toArray",this).call(this).reverse();var b=Buffer.from(a);if(b.length===8){return b}assert(b.length<8,"TokenAmount too large");var zeroPad=Buffer.alloc(8);b.copy(zeroPad);return zeroPad}}],[{key:"fromBuffer",value:function fromBuffer(buffer){assert(buffer.length===8,"Invalid buffer length: "+buffer.length);return new BN([].concat(_toConsumableArray(buffer)).reverse().map(function(i){return("00"+i.toString(16)).slice(-2)}).join(""),16)}}]);return TokenAmount}(BN);var TokenInfoLayout=BufferLayout.struct([uint64("supply"),BufferLayout.u8("decimals"),rustString("name"),rustString("symbol")]);var TokenAccountInfoLayout=BufferLayout.struct([publicKey("token"),publicKey("owner"),uint64("amount"),BufferLayout.u8("sourceOption"),publicKey("source"),uint64("originalAmount")]);var SYSTEM_TOKEN_PROGRAM_ID=new PublicKey("0x8300000000000000000000000000000000000000000000000000000000000000");var Token=function(){function Token(connection,token){var programId=arguments.length>2&&arguments[2]!==undefined?arguments[2]:SYSTEM_TOKEN_PROGRAM_ID;_classCallCheck(this,Token);_Object$assign(this,{connection:connection,token:token,programId:programId})}_createClass(Token,[{key:"newAccount",value:function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(owner){var source=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var tokenAccount,transaction,userdataLayout,userdata,keys;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:tokenAccount=new Account;transaction=void 0;userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction")]);userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:1},userdata);transaction=SystemProgram.createAccount(owner.publicKey,tokenAccount.publicKey,1,1+TokenAccountInfoLayout.span,this.programId);_context.next=8;return sendAndConfirmTransaction(this.connection,transaction,owner);case 8:keys=[tokenAccount.publicKey,owner.publicKey,this.token];if(source){keys.push(source)}transaction=(new Transaction).add({keys:keys,programId:this.programId,userdata:userdata});transaction.fee=0;_context.next=14;return sendAndConfirmTransaction(this.connection,transaction,tokenAccount);case 14:return _context.abrupt("return",tokenAccount.publicKey);case 15:case"end":return _context.stop()}}},_callee,this)}));function newAccount(_x2){return _ref.apply(this,arguments)}return newAccount}()},{key:"tokenInfo",value:function(){var _ref2=_asyncToGenerator(_regeneratorRuntime.mark(function _callee2(){var accountInfo,userdata,tokenInfo;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:_context2.next=2;return this.connection.getAccountInfo(this.token);case 2:accountInfo=_context2.sent;if(accountInfo.owner.equals(this.programId)){_context2.next=5;break}throw new Error("Invalid token owner: "+_JSON$stringify(accountInfo.owner));case 5:userdata=Buffer.from(accountInfo.userdata);if(!(userdata.readUInt8(0)!==1)){_context2.next=8;break}throw new Error("Invalid token userdata");case 8:tokenInfo=TokenInfoLayout.decode(userdata,1);tokenInfo.supply=TokenAmount.fromBuffer(tokenInfo.supply);return _context2.abrupt("return",tokenInfo);case 11:case"end":return _context2.stop()}}},_callee2,this)}));function tokenInfo(){return _ref2.apply(this,arguments)}return tokenInfo}()},{key:"accountInfo",value:function(){var _ref3=_asyncToGenerator(_regeneratorRuntime.mark(function _callee3(account){var accountInfo,userdata,tokenAccountInfo;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:_context3.next=2;return this.connection.getAccountInfo(account);case 2:accountInfo=_context3.sent;if(accountInfo.owner.equals(this.programId)){_context3.next=5;break}throw new Error("Invalid token account owner");case 5:userdata=Buffer.from(accountInfo.userdata);if(!(userdata.readUInt8(0)!==2)){_context3.next=8;break}throw new Error("Invalid token account userdata");case 8:tokenAccountInfo=TokenAccountInfoLayout.decode(userdata,1);tokenAccountInfo.token=new PublicKey(tokenAccountInfo.token);tokenAccountInfo.owner=new PublicKey(tokenAccountInfo.owner);tokenAccountInfo.amount=TokenAmount.fromBuffer(tokenAccountInfo.amount);if(tokenAccountInfo.sourceOption===0){tokenAccountInfo.source=null;tokenAccountInfo.originalAmount=new TokenAmount}else{tokenAccountInfo.source=new PublicKey(tokenAccountInfo.source);tokenAccountInfo.originalAmount=TokenAmount.fromBuffer(tokenAccountInfo.originalAmount)}if(tokenAccountInfo.token.equals(this.token)){_context3.next=15;break}throw new Error("Invalid token account token: "+_JSON$stringify(tokenAccountInfo.token)+" !== "+_JSON$stringify(this.token));case 15:return _context3.abrupt("return",tokenAccountInfo);case 16:case"end":return _context3.stop()}}},_callee3,this)}));function accountInfo(_x4){return _ref3.apply(this,arguments)}return accountInfo}()},{key:"transfer",value:function(){var _ref4=_asyncToGenerator(_regeneratorRuntime.mark(function _callee4(owner,source,destination,amount){return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:_context4.t0=sendAndConfirmTransaction;_context4.t1=this.connection;_context4.t2=new Transaction;_context4.next=5;return this.transferInstruction(owner.publicKey,source,destination,amount);case 5:_context4.t3=_context4.sent;_context4.t4=_context4.t2.add.call(_context4.t2,_context4.t3);_context4.t5=owner;_context4.next=10;return(0,_context4.t0)(_context4.t1,_context4.t4,_context4.t5);case 10:return _context4.abrupt("return",_context4.sent);case 11:case"end":return _context4.stop()}}},_callee4,this)}));function transfer(_x5,_x6,_x7,_x8){return _ref4.apply(this,arguments)}return transfer}()},{key:"approve",value:function(){var _ref5=_asyncToGenerator(_regeneratorRuntime.mark(function _callee5(owner,account,delegate,amount){return _regeneratorRuntime.wrap(function _callee5$(_context5){while(1){switch(_context5.prev=_context5.next){case 0:_context5.next=2;return sendAndConfirmTransaction(this.connection,(new Transaction).add(this.approveInstruction(owner.publicKey,account,delegate,amount)),owner);case 2:case"end":return _context5.stop()}}},_callee5,this)}));function approve(_x9,_x10,_x11,_x12){return _ref5.apply(this,arguments)}return approve}()},{key:"revoke",value:function revoke(owner,account,delegate){return this.approve(owner,account,delegate,0)}},{key:"setOwner",value:function(){var _ref6=_asyncToGenerator(_regeneratorRuntime.mark(function _callee6(owner,account,newOwner){return _regeneratorRuntime.wrap(function _callee6$(_context6){while(1){switch(_context6.prev=_context6.next){case 0:_context6.next=2;return sendAndConfirmTransaction(this.connection,(new Transaction).add(this.setOwnerInstruction(owner.publicKey,account,newOwner)),owner);case 2:case"end":return _context6.stop()}}},_callee6,this)}));function setOwner(_x13,_x14,_x15){return _ref6.apply(this,arguments)}return setOwner}()},{key:"transferInstruction",value:function(){var _ref7=_asyncToGenerator(_regeneratorRuntime.mark(function _callee7(owner,source,destination,amount){var accountInfo,userdataLayout,userdata,keys;return _regeneratorRuntime.wrap(function _callee7$(_context7){while(1){switch(_context7.prev=_context7.next){case 0:_context7.next=2;return this.accountInfo(source);case 2:accountInfo=_context7.sent;if(owner.equals(accountInfo.owner)){_context7.next=5;break}throw new Error("Account owner mismatch");case 5:userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction"),uint64("amount")]);userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:2,amount:new TokenAmount(amount).toBuffer()},userdata);keys=[owner,source,destination];if(accountInfo.source){keys.push(accountInfo.source)}return _context7.abrupt("return",new TransactionInstruction({keys:keys,programId:this.programId,userdata:userdata}));case 11:case"end":return _context7.stop()}}},_callee7,this)}));function transferInstruction(_x16,_x17,_x18,_x19){return _ref7.apply(this,arguments)}return transferInstruction}()},{key:"approveInstruction",value:function approveInstruction(owner,account,delegate,amount){var userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction"),uint64("amount")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:3,amount:new TokenAmount(amount).toBuffer()},userdata);return new TransactionInstruction({keys:[owner,account,delegate],programId:this.programId,userdata:userdata})}},{key:"revokeInstruction",value:function revokeInstruction(owner,account,delegate){return this.approveInstruction(owner,account,delegate,0)}},{key:"setOwnerInstruction",value:function setOwnerInstruction(owner,account,newOwner){var userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:4},userdata);return new TransactionInstruction({keys:[owner,account,newOwner],programId:this.programId,userdata:userdata})}}],[{key:"createNewToken",value:function(){var _ref8=_asyncToGenerator(_regeneratorRuntime.mark(function _callee8(connection,owner,supply,name,symbol,decimals){var programId=arguments.length>6&&arguments[6]!==undefined?arguments[6]:SYSTEM_TOKEN_PROGRAM_ID;var tokenAccount,token,initialAccountPublicKey,transaction,userdataLayout,userdata,encodeLength;return _regeneratorRuntime.wrap(function _callee8$(_context8){while(1){switch(_context8.prev=_context8.next){case 0:tokenAccount=new Account;token=new Token(connection,tokenAccount.publicKey,programId);_context8.next=4;return token.newAccount(owner,null);case 4:initialAccountPublicKey=_context8.sent;transaction=void 0;userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction"),uint64("supply"),BufferLayout.u8("decimals"),rustString("name"),rustString("symbol")]);userdata=Buffer.alloc(1024);encodeLength=userdataLayout.encode({instruction:0,supply:supply.toBuffer(),decimals:decimals,name:name,symbol:symbol},userdata);userdata=userdata.slice(0,encodeLength);transaction=SystemProgram.createAccount(owner.publicKey,tokenAccount.publicKey,1,1+userdata.length,programId);_context8.next=13;return sendAndConfirmTransaction(connection,transaction,owner);case 13:transaction=(new Transaction).add({keys:[tokenAccount.publicKey,initialAccountPublicKey],programId:programId,userdata:userdata});transaction.fee=0;_context8.next=17;return sendAndConfirmTransaction(connection,transaction,tokenAccount);case 17:return _context8.abrupt("return",[token,initialAccountPublicKey]);case 18:case"end":return _context8.stop()}}},_callee8,this)}));function createNewToken(_x20,_x21,_x22,_x23,_x24,_x25){return _ref8.apply(this,arguments)}return createNewToken}()}]);return Token}();var sendAndConfirmRawTransaction=function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(connection,rawTransaction){var start,signature,status,statusRetries,duration;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:start=Date.now();_context.next=3;return connection.sendRawTransaction(rawTransaction);case 3:signature=_context.sent;status="";statusRetries=4;case 6:_context.next=8;return connection.getSignatureStatus(signature);case 8:status=_context.sent;if(!(status!=="SignatureNotFound")){_context.next=11;break}return _context.abrupt("break",18);case 11:_context.next=13;return sleep(500);case 13:if(!(--statusRetries<=0)){_context.next=16;break}duration=(Date.now()-start)/1e3;throw new Error("Raw Transaction '"+signature+"' was not confirmed in "+duration.toFixed(2)+" seconds ("+status+")");case 16:_context.next=6;break;case 18:if(!(status==="Confirmed")){_context.next=20;break}return _context.abrupt("return",signature);case 20:throw new Error("Raw transaction "+signature+" failed ("+status+")");case 21:case"end":return _context.stop()}}},_callee,this)}));return function sendAndConfirmRawTransaction(_x,_x2){return _ref.apply(this,arguments)}}();var testnetDefaultChannel="beta";var endpoint={edge:"https://api.edge.testnet.solana.com",beta:"https://api.beta.testnet.solana.com",stable:"https://api.testnet.solana.com"};function testnetChannelEndpoint(channel){if(!channel){return endpoint[testnetDefaultChannel]}if(endpoint[channel]){return endpoint[channel]}throw new Error("Unknown channel: "+channel)}exports.Account=Account;exports.BpfLoader=BpfLoader;exports.BudgetProgram=BudgetProgram;exports.Connection=Connection;exports.Loader=Loader;exports.NativeLoader=NativeLoader;exports.PublicKey=PublicKey;exports.SystemProgram=SystemProgram;exports.Token=Token;exports.TokenAmount=TokenAmount;exports.Transaction=Transaction;exports.TransactionInstruction=TransactionInstruction;exports.sendAndConfirmTransaction=sendAndConfirmTransaction;exports.sendAndConfirmRawTransaction=sendAndConfirmRawTransaction;exports.testnetChannelEndpoint=testnetChannelEndpoint;
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _interopDefault(ex){return ex&&typeof ex==="object"&&"default"in ex?ex["default"]:ex}var _classCallCheck=_interopDefault(require("babel-runtime/helpers/classCallCheck"));var _createClass=_interopDefault(require("babel-runtime/helpers/createClass"));var nacl=_interopDefault(require("tweetnacl"));var BN=_interopDefault(require("bn.js"));var bs58=_interopDefault(require("bs58"));var _regeneratorRuntime=_interopDefault(require("babel-runtime/regenerator"));var _asyncToGenerator=_interopDefault(require("babel-runtime/helpers/asyncToGenerator"));var _Promise=_interopDefault(require("babel-runtime/core-js/promise"));var _Object$assign=_interopDefault(require("babel-runtime/core-js/object/assign"));var BufferLayout=require("buffer-layout");var assert=_interopDefault(require("assert"));var _getIterator=_interopDefault(require("babel-runtime/core-js/get-iterator"));var _Object$keys=_interopDefault(require("babel-runtime/core-js/object/keys"));var _toConsumableArray=_interopDefault(require("babel-runtime/helpers/toConsumableArray"));var url=require("url");var fetch=_interopDefault(require("node-fetch"));var jayson=_interopDefault(require("jayson/lib/client/browser"));var superstruct=require("superstruct");var rpcWebsockets=require("rpc-websockets");var _JSON$stringify=_interopDefault(require("babel-runtime/core-js/json/stringify"));var _Object$getPrototypeOf=_interopDefault(require("babel-runtime/core-js/object/get-prototype-of"));var _possibleConstructorReturn=_interopDefault(require("babel-runtime/helpers/possibleConstructorReturn"));var _get=_interopDefault(require("babel-runtime/helpers/get"));var _inherits=_interopDefault(require("babel-runtime/helpers/inherits"));var PublicKey=function(){function PublicKey(value){_classCallCheck(this,PublicKey);if(typeof value==="string"){if(value.startsWith("0x")){this._bn=new BN(value.substring(2),16)}else{this._bn=new BN(bs58.decode(value))}}else{this._bn=new BN(value)}if(this._bn.byteLength()>32){throw new Error("Invalid public key input")}}_createClass(PublicKey,[{key:"equals",value:function equals(publicKey){return this._bn.eq(publicKey._bn)}},{key:"toBase58",value:function toBase58(){return bs58.encode(this.toBuffer())}},{key:"toBuffer",value:function toBuffer(){var b=this._bn.toArrayLike(Buffer);if(b.length===32){return b}var zeroPad=Buffer.alloc(32);b.copy(zeroPad,32-b.length);return zeroPad}},{key:"toString",value:function toString(){return this.toBase58()}}],[{key:"isPublicKey",value:function isPublicKey(o){return o instanceof PublicKey}}]);return PublicKey}();var Account=function(){function Account(){var secretKey=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;_classCallCheck(this,Account);if(secretKey){this._keypair=nacl.sign.keyPair.fromSecretKey(secretKey)}else{this._keypair=nacl.sign.keyPair()}}_createClass(Account,[{key:"publicKey",get:function get(){return new PublicKey(this._keypair.publicKey)}},{key:"secretKey",get:function get(){return this._keypair.secretKey}}]);return Account}();var publicKey=function publicKey(){var property=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"publicKey";return BufferLayout.blob(32,property)};var uint64=function uint64(){var property=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"uint64";return BufferLayout.blob(8,property)};var rustString=function rustString(){var property=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"string";var rsl=BufferLayout.struct([BufferLayout.u32("length"),BufferLayout.u32("lengthPadding"),BufferLayout.blob(BufferLayout.offset(BufferLayout.u32(),-8),"chars")],property);var _decode=rsl.decode.bind(rsl);var _encode=rsl.encode.bind(rsl);rsl.decode=function(buffer,offset){var data=_decode(buffer,offset);return data.chars.toString("utf8")};rsl.encode=function(str,buffer,offset){var data={chars:Buffer.from(str,"utf8")};return _encode(data,buffer,offset)};return rsl};var PACKET_DATA_SIZE=512;var TransactionInstruction=function TransactionInstruction(opts){_classCallCheck(this,TransactionInstruction);this.keys=[];this.userdata=Buffer.alloc(0);opts&&_Object$assign(this,opts)};var Transaction=function(){_createClass(Transaction,[{key:"signature",get:function get(){if(this.signatures.length>0){return this.signatures[0].signature}return null}}]);function Transaction(opts){_classCallCheck(this,Transaction);this.signatures=[];this.instructions=[];this.fee=1;opts&&_Object$assign(this,opts)}_createClass(Transaction,[{key:"add",value:function add(){var _this=this;for(var _len=arguments.length,items=Array(_len),_key=0;_key<_len;_key++){items[_key]=arguments[_key]}if(items.length===0){throw new Error("No instructions")}items.forEach(function(item){if(item instanceof Transaction){_this.instructions=_this.instructions.concat(item.instructions)}else{_this.instructions.push(new TransactionInstruction(item))}});return this}},{key:"_getSignData",value:function _getSignData(){var lastId=this.lastId;if(!lastId){throw new Error("Transaction lastId required")}if(this.instructions.length<1){throw new Error("No instructions provided")}var keys=this.signatures.map(function(_ref){var publicKey$$1=_ref.publicKey;return publicKey$$1.toString()});var programIds=[];this.instructions.forEach(function(instruction){var programId=instruction.programId.toString();if(!programIds.includes(programId)){programIds.push(programId)}instruction.keys.map(function(key){return key.toString()}).forEach(function(key){if(!keys.includes(key)){keys.push(key)}})});var instructions=this.instructions.map(function(instruction){var userdata=instruction.userdata,programId=instruction.programId;return{programIdIndex:programIds.indexOf(programId.toString()),keyIndices:instruction.keys.map(function(key){return keys.indexOf(key.toString())}),userdata:userdata}});instructions.forEach(function(instruction){assert(instruction.programIdIndex>=0);instruction.keyIndices.forEach(function(keyIndex){return assert(keyIndex>=0)})});var instructionLayout=BufferLayout.struct([BufferLayout.u8("programIdIndex"),BufferLayout.u32("keyIndicesLength"),BufferLayout.u32("keyIndicesLengthPadding"),BufferLayout.seq(BufferLayout.u8("keyIndex"),BufferLayout.offset(BufferLayout.u32(),-8),"keyIndices"),BufferLayout.u32("userdataLength"),BufferLayout.u32("userdataLengthPadding"),BufferLayout.seq(BufferLayout.u8("userdatum"),BufferLayout.offset(BufferLayout.u32(),-8),"userdata")]);var signDataLayout=BufferLayout.struct([BufferLayout.u32("keysLength"),BufferLayout.u32("keysLengthPadding"),BufferLayout.seq(publicKey("key"),BufferLayout.offset(BufferLayout.u32(),-8),"keys"),publicKey("lastId"),BufferLayout.ns64("fee"),BufferLayout.u32("programIdsLength"),BufferLayout.u32("programIdsLengthPadding"),BufferLayout.seq(publicKey("programId"),BufferLayout.offset(BufferLayout.u32(),-8),"programIds"),BufferLayout.u32("instructionsLength"),BufferLayout.u32("instructionsLengthPadding"),BufferLayout.seq(instructionLayout,BufferLayout.offset(BufferLayout.u32(),-8),"instructions")]);var transaction={keys:keys.map(function(key){return new PublicKey(key).toBuffer()}),lastId:Buffer.from(bs58.decode(lastId)),fee:this.fee,programIds:programIds.map(function(programId){return new PublicKey(programId).toBuffer()}),instructions:instructions};var signData=Buffer.alloc(2048);var length=signDataLayout.encode(transaction,signData);signData=signData.slice(0,length);return signData}},{key:"sign",value:function sign(){this.signPartial.apply(this,arguments)}},{key:"signPartial",value:function signPartial(){for(var _len2=arguments.length,partialSigners=Array(_len2),_key2=0;_key2<_len2;_key2++){partialSigners[_key2]=arguments[_key2]}if(partialSigners.length===0){throw new Error("No signers")}var signatures=partialSigners.map(function(accountOrPublicKey){var publicKey$$1=accountOrPublicKey instanceof Account?accountOrPublicKey.publicKey:accountOrPublicKey;return{signature:null,publicKey:publicKey$$1}});this.signatures=signatures;var signData=this._getSignData();partialSigners.forEach(function(accountOrPublicKey,index){if(accountOrPublicKey instanceof PublicKey){return}var signature=nacl.sign.detached(signData,accountOrPublicKey.secretKey);assert(signature.length===64);signatures[index].signature=signature})}},{key:"addSigner",value:function addSigner(signer){var index=this.signatures.findIndex(function(sigpair){return signer.publicKey.equals(sigpair.publicKey)});if(index<0){throw new Error("Unknown signer: "+signer.publicKey.toString())}var signData=this._getSignData();var signature=nacl.sign.detached(signData,signer.secretKey);assert(signature.length===64);this.signatures[index].signature=signature}},{key:"serialize",value:function serialize(){var signatures=this.signatures;if(!signatures){throw new Error("Transaction has not been signed")}var signData=this._getSignData();var wireTransaction=Buffer.alloc(8+signatures.length*64+signData.length);assert(signatures.length<256);wireTransaction.writeUInt8(signatures.length,0);signatures.forEach(function(_ref2,index){var signature=_ref2.signature;assert(signature!==null,"null signature");assert(signature.length===64,"signature has invalid length");Buffer.from(signature).copy(wireTransaction,8+index*64)});signData.copy(wireTransaction,8+signatures.length*64);assert(wireTransaction.length<=PACKET_DATA_SIZE,"Transaction too large: "+wireTransaction.length+" > "+PACKET_DATA_SIZE);return wireTransaction}},{key:"keys",get:function get(){assert(this.instructions.length===1);return this.instructions[0].keys}},{key:"programId",get:function get(){assert(this.instructions.length===1);return this.instructions[0].programId}},{key:"userdata",get:function get(){assert(this.instructions.length===1);return this.instructions[0].userdata}}]);return Transaction}();var SystemProgram=function(){function SystemProgram(){_classCallCheck(this,SystemProgram)}_createClass(SystemProgram,null,[{key:"createAccount",value:function createAccount(from,newAccount,tokens,space,programId){var userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction"),BufferLayout.ns64("tokens"),BufferLayout.ns64("space"),publicKey("programId")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:0,tokens:tokens,space:space,programId:programId.toBuffer()},userdata);return(new Transaction).add({keys:[from,newAccount],programId:SystemProgram.programId,userdata:userdata})}},{key:"move",value:function move(from,to,amount){var userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction"),BufferLayout.ns64("amount")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:2,amount:amount},userdata);return(new Transaction).add({keys:[from,to],programId:SystemProgram.programId,userdata:userdata})}},{key:"assign",value:function assign(from,programId){var userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction"),publicKey("programId")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:1,programId:programId.toBuffer()},userdata);return(new Transaction).add({keys:[from],programId:SystemProgram.programId,userdata:userdata})}},{key:"spawn",value:function spawn(programId){var userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:3},userdata);return(new Transaction).add({keys:[programId],programId:SystemProgram.programId,userdata:userdata})}},{key:"programId",get:function get(){return new PublicKey("0x000000000000000000000000000000000000000000000000000000000000000")}}]);return SystemProgram}();function sleep(ms){return new _Promise(function(resolve){return setTimeout(resolve,ms)})}function createRpcRequest(url$$1){var _this=this;var server=jayson(function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(request,callback){var options,res,text;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:options={method:"POST",body:request,headers:{"Content-Type":"application/json"}};_context.prev=1;_context.next=4;return fetch(url$$1,options);case 4:res=_context.sent;_context.next=7;return res.text();case 7:text=_context.sent;callback(null,text);_context.next=14;break;case 11:_context.prev=11;_context.t0=_context["catch"](1);callback(_context.t0);case 14:case"end":return _context.stop()}}},_callee,_this,[[1,11]])}));return function(_x,_x2){return _ref.apply(this,arguments)}}());return function(method,args){return new _Promise(function(resolve,reject){server.request(method,args,function(err,response){if(err){reject(err);return}resolve(response)})})}}var GetBalanceRpcResult=superstruct.struct({jsonrpc:superstruct.struct.literal("2.0"),id:"string",error:"any?",result:"number?"});function jsonRpcResult(resultDescription){var jsonRpcVersion=superstruct.struct.literal("2.0");return superstruct.struct.union([superstruct.struct({jsonrpc:jsonRpcVersion,id:"string",error:"any"}),superstruct.struct({jsonrpc:jsonRpcVersion,id:"string",error:"null?",result:resultDescription})])}var AccountInfoResult=superstruct.struct({executable:"boolean",loader:"array",owner:"array",tokens:"number",userdata:"array"});var GetAccountInfoRpcResult=jsonRpcResult(AccountInfoResult);var AccountNotificationResult=superstruct.struct({subscription:"number",result:AccountInfoResult});var ConfirmTransactionRpcResult=jsonRpcResult("boolean");var GetSignatureStatusRpcResult=jsonRpcResult(superstruct.struct.enum(["AccountInUse","Confirmed","GenericFailure","ProgramRuntimeError","SignatureNotFound"]));var GetTransactionCountRpcResult=jsonRpcResult("number");var GetLastId=jsonRpcResult("string");var GetConfirmationTimeRpcResult=jsonRpcResult("number");var RequestAirdropRpcResult=jsonRpcResult("string");var SendTransactionRpcResult=jsonRpcResult("string");var Connection=function(){function Connection(endpoint){_classCallCheck(this,Connection);this._rpcWebSocketConnected=false;this._disableLastIdCaching=false;this._accountChangeSubscriptions={};this._accountChangeSubscriptionCounter=0;var url$$1=url.parse(endpoint);this._rpcRequest=createRpcRequest(url$$1.href);this._lastIdInfo={lastId:null,seconds:-1,transactionSignatures:[]};url$$1.protocol=url$$1.protocol==="https:"?"wss:":"ws:";url$$1.host="";url$$1.port=String(Number(url$$1.port)+1);if(url$$1.port==="1"){url$$1.port=url$$1.protocol==="wss:"?"8901":"8900"}this._rpcWebSocket=new rpcWebsockets.Client(url.format(url$$1),{autoconnect:false,max_reconnects:Infinity});this._rpcWebSocket.on("open",this._wsOnOpen.bind(this));this._rpcWebSocket.on("error",this._wsOnError.bind(this));this._rpcWebSocket.on("close",this._wsOnClose.bind(this));this._rpcWebSocket.on("accountNotification",this._wsOnAccountNotification.bind(this))}_createClass(Connection,[{key:"getBalance",value:function(){var _ref2=_asyncToGenerator(_regeneratorRuntime.mark(function _callee2(publicKey){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:_context2.next=2;return this._rpcRequest("getBalance",[publicKey.toBase58()]);case 2:unsafeRes=_context2.sent;res=GetBalanceRpcResult(unsafeRes);if(!res.error){_context2.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context2.abrupt("return",res.result);case 8:case"end":return _context2.stop()}}},_callee2,this)}));function getBalance(_x3){return _ref2.apply(this,arguments)}return getBalance}()},{key:"getAccountInfo",value:function(){var _ref3=_asyncToGenerator(_regeneratorRuntime.mark(function _callee3(publicKey){var unsafeRes,res,result;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:_context3.next=2;return this._rpcRequest("getAccountInfo",[publicKey.toBase58()]);case 2:unsafeRes=_context3.sent;res=GetAccountInfoRpcResult(unsafeRes);if(!res.error){_context3.next=6;break}throw new Error(res.error.message);case 6:result=res.result;assert(typeof result!=="undefined");return _context3.abrupt("return",{executable:result.executable,loader:new PublicKey(result.loader),owner:new PublicKey(result.owner),tokens:result.tokens,userdata:Buffer.from(result.userdata)});case 9:case"end":return _context3.stop()}}},_callee3,this)}));function getAccountInfo(_x4){return _ref3.apply(this,arguments)}return getAccountInfo}()},{key:"confirmTransaction",value:function(){var _ref4=_asyncToGenerator(_regeneratorRuntime.mark(function _callee4(signature){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:_context4.next=2;return this._rpcRequest("confirmTransaction",[signature]);case 2:unsafeRes=_context4.sent;res=ConfirmTransactionRpcResult(unsafeRes);if(!res.error){_context4.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context4.abrupt("return",res.result);case 8:case"end":return _context4.stop()}}},_callee4,this)}));function confirmTransaction(_x5){return _ref4.apply(this,arguments)}return confirmTransaction}()},{key:"getSignatureStatus",value:function(){var _ref5=_asyncToGenerator(_regeneratorRuntime.mark(function _callee5(signature){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee5$(_context5){while(1){switch(_context5.prev=_context5.next){case 0:_context5.next=2;return this._rpcRequest("getSignatureStatus",[signature]);case 2:unsafeRes=_context5.sent;res=GetSignatureStatusRpcResult(unsafeRes);if(!res.error){_context5.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context5.abrupt("return",res.result);case 8:case"end":return _context5.stop()}}},_callee5,this)}));function getSignatureStatus(_x6){return _ref5.apply(this,arguments)}return getSignatureStatus}()},{key:"getTransactionCount",value:function(){var _ref6=_asyncToGenerator(_regeneratorRuntime.mark(function _callee6(){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee6$(_context6){while(1){switch(_context6.prev=_context6.next){case 0:_context6.next=2;return this._rpcRequest("getTransactionCount",[]);case 2:unsafeRes=_context6.sent;res=GetTransactionCountRpcResult(unsafeRes);if(!res.error){_context6.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context6.abrupt("return",Number(res.result));case 8:case"end":return _context6.stop()}}},_callee6,this)}));function getTransactionCount(){return _ref6.apply(this,arguments)}return getTransactionCount}()},{key:"getLastId",value:function(){var _ref7=_asyncToGenerator(_regeneratorRuntime.mark(function _callee7(){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee7$(_context7){while(1){switch(_context7.prev=_context7.next){case 0:_context7.next=2;return this._rpcRequest("getLastId",[]);case 2:unsafeRes=_context7.sent;res=GetLastId(unsafeRes);if(!res.error){_context7.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context7.abrupt("return",res.result);case 8:case"end":return _context7.stop()}}},_callee7,this)}));function getLastId(){return _ref7.apply(this,arguments)}return getLastId}()},{key:"getConfirmationTime",value:function(){var _ref8=_asyncToGenerator(_regeneratorRuntime.mark(function _callee8(){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee8$(_context8){while(1){switch(_context8.prev=_context8.next){case 0:_context8.next=2;return this._rpcRequest("getConfirmationTime",[]);case 2:unsafeRes=_context8.sent;res=GetConfirmationTimeRpcResult(unsafeRes);if(!res.error){_context8.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context8.abrupt("return",Number(res.result));case 8:case"end":return _context8.stop()}}},_callee8,this)}));function getConfirmationTime(){return _ref8.apply(this,arguments)}return getConfirmationTime}()},{key:"requestAirdrop",value:function(){var _ref9=_asyncToGenerator(_regeneratorRuntime.mark(function _callee9(to,amount){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee9$(_context9){while(1){switch(_context9.prev=_context9.next){case 0:_context9.next=2;return this._rpcRequest("requestAirdrop",[to.toBase58(),amount]);case 2:unsafeRes=_context9.sent;res=RequestAirdropRpcResult(unsafeRes);if(!res.error){_context9.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context9.abrupt("return",res.result);case 8:case"end":return _context9.stop()}}},_callee9,this)}));function requestAirdrop(_x7,_x8){return _ref9.apply(this,arguments)}return requestAirdrop}()},{key:"sendTransaction",value:function(){var _ref10=_asyncToGenerator(_regeneratorRuntime.mark(function _callee10(transaction){for(var _len=arguments.length,signers=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){signers[_key-1]=arguments[_key]}var _seconds,signature,attempts,startTime,_lastId,wireTransaction;return _regeneratorRuntime.wrap(function _callee10$(_context10){while(1){switch(_context10.prev=_context10.next){case 0:_seconds=(new Date).getSeconds();if(!(this._lastIdInfo.lastId!=null&&this._lastIdInfo.seconds===_seconds)){_context10.next=11;break}transaction.lastId=this._lastIdInfo.lastId;transaction.sign.apply(transaction,signers);if(transaction.signature){_context10.next=6;break}throw new Error("!signature");case 6:signature=transaction.signature.toString();if(this._lastIdInfo.transactionSignatures.includes(signature)){_context10.next=11;break}this._lastIdInfo.transactionSignatures.push(signature);if(this._disableLastIdCaching){this._lastIdInfo.seconds=-1}return _context10.abrupt("break",28);case 11:attempts=0;startTime=Date.now();case 13:_context10.next=15;return this.getLastId();case 15:_lastId=_context10.sent;if(!(this._lastIdInfo.lastId!=_lastId)){_context10.next=19;break}this._lastIdInfo={lastId:_lastId,seconds:(new Date).getSeconds(),transactionSignatures:[]};return _context10.abrupt("break",26);case 19:if(!(attempts===8)){_context10.next=21;break}throw new Error("Unable to obtain a new last id after "+(Date.now()-startTime)+"ms");case 21:_context10.next=23;return sleep(250);case 23:++attempts;case 24:_context10.next=13;break;case 26:_context10.next=0;break;case 28:wireTransaction=transaction.serialize();_context10.next=31;return this.sendRawTransaction(wireTransaction);case 31:return _context10.abrupt("return",_context10.sent);case 32:case"end":return _context10.stop()}}},_callee10,this)}));function sendTransaction(_x9){return _ref10.apply(this,arguments)}return sendTransaction}()},{key:"sendRawTransaction",value:function(){var _ref11=_asyncToGenerator(_regeneratorRuntime.mark(function _callee11(rawTransaction){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee11$(_context11){while(1){switch(_context11.prev=_context11.next){case 0:_context11.next=2;return this._rpcRequest("sendTransaction",[[].concat(_toConsumableArray(rawTransaction))]);case 2:unsafeRes=_context11.sent;res=SendTransactionRpcResult(unsafeRes);if(!res.error){_context11.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");assert(res.result);return _context11.abrupt("return",res.result);case 9:case"end":return _context11.stop()}}},_callee11,this)}));function sendRawTransaction(_x10){return _ref11.apply(this,arguments)}return sendRawTransaction}()},{key:"_wsOnOpen",value:function _wsOnOpen(){this._rpcWebSocketConnected=true;this._updateSubscriptions()}},{key:"_wsOnError",value:function _wsOnError(err){console.log("ws error:",err.message)}},{key:"_wsOnClose",value:function _wsOnClose(code,message){if(code!==1e3){console.log("ws close:",code,message)}this._rpcWebSocketConnected=false}},{key:"_wsOnAccountNotification",value:function _wsOnAccountNotification(notification){var res=AccountNotificationResult(notification);if(res.error){throw new Error(res.error.message)}var keys=_Object$keys(this._accountChangeSubscriptions).map(Number);var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=_getIterator(keys),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var id=_step.value;var sub=this._accountChangeSubscriptions[id];if(sub.subscriptionId===res.subscription){var result=res.result;assert(typeof result!=="undefined");sub.callback({executable:result.executable,loader:new PublicKey(result.loader),owner:new PublicKey(result.owner),tokens:result.tokens,userdata:Buffer.from(result.userdata)});return true}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}}},{key:"_updateSubscriptions",value:function(){var _ref12=_asyncToGenerator(_regeneratorRuntime.mark(function _callee12(){var keys,_iteratorNormalCompletion2,_didIteratorError2,_iteratorError2,_iterator2,_step2,id,_iteratorNormalCompletion3,_didIteratorError3,_iteratorError3,_iterator3,_step3,_id,_accountChangeSubscri,_subscriptionId,_publicKey;return _regeneratorRuntime.wrap(function _callee12$(_context12){while(1){switch(_context12.prev=_context12.next){case 0:keys=_Object$keys(this._accountChangeSubscriptions).map(Number);if(!(keys.length===0)){_context12.next=4;break}this._rpcWebSocket.close();return _context12.abrupt("return");case 4:if(this._rpcWebSocketConnected){_context12.next=26;break}_iteratorNormalCompletion2=true;_didIteratorError2=false;_iteratorError2=undefined;_context12.prev=8;for(_iterator2=_getIterator(keys);!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=true){id=_step2.value;this._accountChangeSubscriptions[id].subscriptionId=null}_context12.next=16;break;case 12:_context12.prev=12;_context12.t0=_context12["catch"](8);_didIteratorError2=true;_iteratorError2=_context12.t0;case 16:_context12.prev=16;_context12.prev=17;if(!_iteratorNormalCompletion2&&_iterator2.return){_iterator2.return()}case 19:_context12.prev=19;if(!_didIteratorError2){_context12.next=22;break}throw _iteratorError2;case 22:return _context12.finish(19);case 23:return _context12.finish(16);case 24:this._rpcWebSocket.connect();return _context12.abrupt("return");case 26:_iteratorNormalCompletion3=true;_didIteratorError3=false;_iteratorError3=undefined;_context12.prev=29;_iterator3=_getIterator(keys);case 31:if(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done){_context12.next=47;break}_id=_step3.value;_accountChangeSubscri=this._accountChangeSubscriptions[_id],_subscriptionId=_accountChangeSubscri.subscriptionId,_publicKey=_accountChangeSubscri.publicKey;if(!(_subscriptionId===null)){_context12.next=44;break}_context12.prev=35;_context12.next=38;return this._rpcWebSocket.call("accountSubscribe",[_publicKey]);case 38:this._accountChangeSubscriptions[_id].subscriptionId=_context12.sent;_context12.next=44;break;case 41:_context12.prev=41;_context12.t1=_context12["catch"](35);console.log("accountSubscribe error for "+_publicKey+": "+_context12.t1.message);case 44:_iteratorNormalCompletion3=true;_context12.next=31;break;case 47:_context12.next=53;break;case 49:_context12.prev=49;_context12.t2=_context12["catch"](29);_didIteratorError3=true;_iteratorError3=_context12.t2;case 53:_context12.prev=53;_context12.prev=54;if(!_iteratorNormalCompletion3&&_iterator3.return){_iterator3.return()}case 56:_context12.prev=56;if(!_didIteratorError3){_context12.next=59;break}throw _iteratorError3;case 59:return _context12.finish(56);case 60:return _context12.finish(53);case 61:case"end":return _context12.stop()}}},_callee12,this,[[8,12,16,24],[17,,19,23],[29,49,53,61],[35,41],[54,,56,60]])}));function _updateSubscriptions(){return _ref12.apply(this,arguments)}return _updateSubscriptions}()},{key:"onAccountChange",value:function onAccountChange(publicKey,callback){var id=++this._accountChangeSubscriptionCounter;this._accountChangeSubscriptions[id]={publicKey:publicKey.toBase58(),callback:callback,subscriptionId:null};this._updateSubscriptions();return id}},{key:"removeAccountChangeListener",value:function(){var _ref13=_asyncToGenerator(_regeneratorRuntime.mark(function _callee13(id){var _subscriptionId2;return _regeneratorRuntime.wrap(function _callee13$(_context13){while(1){switch(_context13.prev=_context13.next){case 0:if(!this._accountChangeSubscriptions[id]){_context13.next=15;break}_subscriptionId2=this._accountChangeSubscriptions[id].subscriptionId;delete this._accountChangeSubscriptions[id];if(!(_subscriptionId2!==null)){_context13.next=12;break}_context13.prev=4;_context13.next=7;return this._rpcWebSocket.call("accountUnsubscribe",[_subscriptionId2]);case 7:_context13.next=12;break;case 9:_context13.prev=9;_context13.t0=_context13["catch"](4);console.log("accountUnsubscribe error:",_context13.t0.message);case 12:this._updateSubscriptions();_context13.next=16;break;case 15:throw new Error("Unknown account change id: "+id);case 16:case"end":return _context13.stop()}}},_callee13,this,[[4,9]])}));function removeAccountChangeListener(_x11){return _ref13.apply(this,arguments)}return removeAccountChangeListener}()}]);return Connection}();var sendAndConfirmTransaction=function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(connection,transaction){for(var _len=arguments.length,signers=Array(_len>2?_len-2:0),_key=2;_key<_len;_key++){signers[_key-2]=arguments[_key]}var sendRetries,signature,start,status,statusRetries,duration;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:sendRetries=10;signature=void 0;case 2:start=Date.now();_context.next=5;return connection.sendTransaction.apply(connection,[transaction].concat(signers));case 5:signature=_context.sent;status="SignatureNotFound";statusRetries=4;case 8:_context.next=10;return connection.getSignatureStatus(signature);case 10:status=_context.sent;if(!(status!=="SignatureNotFound")){_context.next=13;break}return _context.abrupt("break",20);case 13:_context.next=15;return sleep(500);case 15:if(!(--statusRetries<=0)){_context.next=18;break}duration=(Date.now()-start)/1e3;throw new Error("Transaction '"+signature+"' was not confirmed in "+duration.toFixed(2)+" seconds ("+status+")");case 18:_context.next=8;break;case 20:if(!(status==="Confirmed")){_context.next=22;break}return _context.abrupt("break",28);case 22:if(!(status!=="AccountInUse"||--sendRetries<=0)){_context.next=24;break}throw new Error("Transaction "+signature+" failed ("+status+")");case 24:_context.next=26;return sleep(Math.random()*100);case 26:_context.next=2;break;case 28:assert(signature!==undefined);return _context.abrupt("return",signature);case 30:case"end":return _context.stop()}}},_callee,this)}));return function sendAndConfirmTransaction(_x,_x2){return _ref.apply(this,arguments)}}();var Loader=function(){_createClass(Loader,null,[{key:"chunkSize",get:function get(){return 256}}]);function Loader(connection,programId){_classCallCheck(this,Loader);_Object$assign(this,{connection:connection,programId:programId})}_createClass(Loader,[{key:"load",value:function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(program,data){var userdataLayout,chunkSize,offset,array,transactions,bytes,userdata,transaction;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction"),BufferLayout.u32("offset"),BufferLayout.u32("bytesLength"),BufferLayout.u32("bytesLengthPadding"),BufferLayout.seq(BufferLayout.u8("byte"),BufferLayout.offset(BufferLayout.u32(),-8),"bytes")]);chunkSize=Loader.chunkSize;offset=0;array=data;transactions=[];case 5:if(!(array.length>0)){_context.next=19;break}bytes=array.slice(0,chunkSize);userdata=Buffer.alloc(chunkSize+16);userdataLayout.encode({instruction:0,offset:offset,bytes:bytes},userdata);transaction=(new Transaction).add({keys:[program.publicKey],programId:this.programId,userdata:userdata});transactions.push(sendAndConfirmTransaction(this.connection,transaction,program));if(!(transactions.length===8)){_context.next=15;break}_context.next=14;return _Promise.all(transactions);case 14:transactions=[];case 15:offset+=chunkSize;array=array.slice(chunkSize);_context.next=5;break;case 19:_context.next=21;return _Promise.all(transactions);case 21:case"end":return _context.stop()}}},_callee,this)}));function load(_x,_x2){return _ref.apply(this,arguments)}return load}()},{key:"finalize",value:function(){var _ref2=_asyncToGenerator(_regeneratorRuntime.mark(function _callee2(program){var userdataLayout,userdata,transaction;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction")]);userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:1},userdata);transaction=new Transaction;transaction.add({keys:[program.publicKey],programId:this.programId,userdata:userdata});transaction.add(SystemProgram.spawn(program.publicKey));_context2.next=8;return sendAndConfirmTransaction(this.connection,transaction,program);case 8:case"end":return _context2.stop()}}},_callee2,this)}));function finalize(_x3){return _ref2.apply(this,arguments)}return finalize}()}]);return Loader}();var BpfLoader=function(){function BpfLoader(){_classCallCheck(this,BpfLoader)}_createClass(BpfLoader,null,[{key:"load",value:function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(connection,owner,elf){var programAccount,transaction,loader;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:programAccount=new Account;transaction=SystemProgram.createAccount(owner.publicKey,programAccount.publicKey,1+Math.ceil(elf.length/Loader.chunkSize)+1,elf.length,BpfLoader.programId);_context.next=4;return sendAndConfirmTransaction(connection,transaction,owner);case 4:loader=new Loader(connection,BpfLoader.programId);_context.next=7;return loader.load(programAccount,elf);case 7:_context.next=9;return loader.finalize(programAccount);case 9:return _context.abrupt("return",programAccount.publicKey);case 10:case"end":return _context.stop()}}},_callee,this)}));function load(_x,_x2,_x3){return _ref.apply(this,arguments)}return load}()},{key:"programId",get:function get(){return new PublicKey("0x8000000000000000000000000000000000000000000000000000000000000000")}}]);return BpfLoader}();function serializePayment(payment){var toData=payment.to.toBuffer();var userdata=Buffer.alloc(8+toData.length);userdata.writeUInt32LE(payment.amount,0);toData.copy(userdata,8);return userdata}function serializeDate(when){var userdata=Buffer.alloc(8+20);userdata.writeUInt32LE(20,0);function iso(date){function pad(number){if(number<10){return"0"+number}return number}return date.getUTCFullYear()+"-"+pad(date.getUTCMonth()+1)+"-"+pad(date.getUTCDate())+"T"+pad(date.getUTCHours())+":"+pad(date.getUTCMinutes())+":"+pad(date.getUTCSeconds())+"Z"}userdata.write(iso(when),8);return userdata}function serializeCondition(condition){switch(condition.type){case"timestamp":{var date=serializeDate(condition.when);var _from=condition.from.toBuffer();var userdata=Buffer.alloc(4+date.length+_from.length);userdata.writeUInt32LE(0,0);date.copy(userdata,4);_from.copy(userdata,4+date.length);return userdata}case"signature":{var userdataLayout=BufferLayout.struct([BufferLayout.u32("condition"),publicKey("from")]);var _from2=condition.from.toBuffer();var _userdata=Buffer.alloc(4+_from2.length);userdataLayout.encode({instruction:1,from:_from2},_userdata);return _userdata}default:throw new Error("Unknown condition type: "+condition.type)}}var BudgetProgram=function(){function BudgetProgram(){_classCallCheck(this,BudgetProgram)}_createClass(BudgetProgram,null,[{key:"timestampCondition",value:function timestampCondition(from,when){return{type:"timestamp",from:from,when:when}}},{key:"signatureCondition",value:function signatureCondition(from){return{type:"signature",from:from}}},{key:"pay",value:function pay(from,program,to,amount){var userdata=Buffer.alloc(1024);var pos=0;userdata.writeUInt32LE(0,pos);pos+=4;for(var _len=arguments.length,conditions=Array(_len>4?_len-4:0),_key=4;_key<_len;_key++){conditions[_key-4]=arguments[_key]}switch(conditions.length){case 0:userdata.writeUInt32LE(0,pos);pos+=4;{var payment=serializePayment({amount:amount,to:to});payment.copy(userdata,pos);pos+=payment.length}return(new Transaction).add({keys:[from,to],programId:this.programId,userdata:userdata.slice(0,pos)});case 1:userdata.writeUInt32LE(1,pos);pos+=4;{var condition=conditions[0];var conditionData=serializeCondition(condition);conditionData.copy(userdata,pos);pos+=conditionData.length;var paymentData=serializePayment({amount:amount,to:to});paymentData.copy(userdata,pos);pos+=paymentData.length}return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata.slice(0,pos)});case 2:userdata.writeUInt32LE(2,pos);pos+=4;var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=_getIterator(conditions),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var _condition=_step.value;var _conditionData=serializeCondition(_condition);_conditionData.copy(userdata,pos);pos+=_conditionData.length;var _paymentData=serializePayment({amount:amount,to:to});_paymentData.copy(userdata,pos);pos+=_paymentData.length}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata.slice(0,pos)});default:throw new Error("A maximum of two conditions are support: "+conditions.length+" provided")}}},{key:"payOnBoth",value:function payOnBoth(from,program,to,amount,condition1,condition2){var userdata=Buffer.alloc(1024);var pos=0;userdata.writeUInt32LE(0,pos);pos+=4;userdata.writeUInt32LE(3,pos);pos+=4;var _arr=[condition1,condition2];for(var _i=0;_i<_arr.length;_i++){var condition=_arr[_i];var conditionData=serializeCondition(condition);conditionData.copy(userdata,pos);pos+=conditionData.length}var paymentData=serializePayment({amount:amount,to:to});paymentData.copy(userdata,pos);pos+=paymentData.length;return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata.slice(0,pos)})}},{key:"applyTimestamp",value:function applyTimestamp(from,program,to,when){var whenData=serializeDate(when);var userdata=Buffer.alloc(4+whenData.length);userdata.writeUInt32LE(1,0);whenData.copy(userdata,4);return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata})}},{key:"applySignature",value:function applySignature(from,program,to){var userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:2},userdata);return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata})}},{key:"programId",get:function get(){return new PublicKey("0x8100000000000000000000000000000000000000000000000000000000000000")}},{key:"space",get:function get(){return 128}}]);return BudgetProgram}();var NativeLoader=function(){function NativeLoader(){_classCallCheck(this,NativeLoader)}_createClass(NativeLoader,null,[{key:"load",value:function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(connection,owner,programName){var bytes,programAccount,transaction,loader;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:bytes=[].concat(_toConsumableArray(Buffer.from(programName)));programAccount=new Account;transaction=SystemProgram.createAccount(owner.publicKey,programAccount.publicKey,1+1+1,bytes.length+1,NativeLoader.programId);_context.next=5;return sendAndConfirmTransaction(connection,transaction,owner);case 5:loader=new Loader(connection,NativeLoader.programId);_context.next=8;return loader.load(programAccount,bytes);case 8:_context.next=10;return loader.finalize(programAccount);case 10:return _context.abrupt("return",programAccount.publicKey);case 11:case"end":return _context.stop()}}},_callee,this)}));function load(_x,_x2,_x3){return _ref.apply(this,arguments)}return load}()},{key:"programId",get:function get(){return new PublicKey("0x100000000000000000000000000000000000000000000000000000000000000")}}]);return NativeLoader}();var TokenAmount=function(_BN){_inherits(TokenAmount,_BN);function TokenAmount(){_classCallCheck(this,TokenAmount);return _possibleConstructorReturn(this,(TokenAmount.__proto__||_Object$getPrototypeOf(TokenAmount)).apply(this,arguments))}_createClass(TokenAmount,[{key:"toBuffer",value:function toBuffer(){var a=_get(TokenAmount.prototype.__proto__||_Object$getPrototypeOf(TokenAmount.prototype),"toArray",this).call(this).reverse();var b=Buffer.from(a);if(b.length===8){return b}assert(b.length<8,"TokenAmount too large");var zeroPad=Buffer.alloc(8);b.copy(zeroPad);return zeroPad}}],[{key:"fromBuffer",value:function fromBuffer(buffer){assert(buffer.length===8,"Invalid buffer length: "+buffer.length);return new BN([].concat(_toConsumableArray(buffer)).reverse().map(function(i){return("00"+i.toString(16)).slice(-2)}).join(""),16)}}]);return TokenAmount}(BN);var TokenInfoLayout=BufferLayout.struct([uint64("supply"),BufferLayout.u8("decimals"),rustString("name"),rustString("symbol")]);var TokenAccountInfoLayout=BufferLayout.struct([publicKey("token"),publicKey("owner"),uint64("amount"),BufferLayout.u8("sourceOption"),publicKey("source"),uint64("originalAmount")]);var SYSTEM_TOKEN_PROGRAM_ID=new PublicKey("0x8300000000000000000000000000000000000000000000000000000000000000");var Token=function(){function Token(connection,token){var programId=arguments.length>2&&arguments[2]!==undefined?arguments[2]:SYSTEM_TOKEN_PROGRAM_ID;_classCallCheck(this,Token);_Object$assign(this,{connection:connection,token:token,programId:programId})}_createClass(Token,[{key:"newAccount",value:function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(owner){var source=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var tokenAccount,transaction,userdataLayout,userdata,keys;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:tokenAccount=new Account;transaction=void 0;userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction")]);userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:1},userdata);transaction=SystemProgram.createAccount(owner.publicKey,tokenAccount.publicKey,1,1+TokenAccountInfoLayout.span,this.programId);_context.next=8;return sendAndConfirmTransaction(this.connection,transaction,owner);case 8:keys=[tokenAccount.publicKey,owner.publicKey,this.token];if(source){keys.push(source)}transaction=(new Transaction).add({keys:keys,programId:this.programId,userdata:userdata});transaction.fee=0;_context.next=14;return sendAndConfirmTransaction(this.connection,transaction,tokenAccount);case 14:return _context.abrupt("return",tokenAccount.publicKey);case 15:case"end":return _context.stop()}}},_callee,this)}));function newAccount(_x2){return _ref.apply(this,arguments)}return newAccount}()},{key:"tokenInfo",value:function(){var _ref2=_asyncToGenerator(_regeneratorRuntime.mark(function _callee2(){var accountInfo,userdata,tokenInfo;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:_context2.next=2;return this.connection.getAccountInfo(this.token);case 2:accountInfo=_context2.sent;if(accountInfo.owner.equals(this.programId)){_context2.next=5;break}throw new Error("Invalid token owner: "+_JSON$stringify(accountInfo.owner));case 5:userdata=Buffer.from(accountInfo.userdata);if(!(userdata.readUInt8(0)!==1)){_context2.next=8;break}throw new Error("Invalid token userdata");case 8:tokenInfo=TokenInfoLayout.decode(userdata,1);tokenInfo.supply=TokenAmount.fromBuffer(tokenInfo.supply);return _context2.abrupt("return",tokenInfo);case 11:case"end":return _context2.stop()}}},_callee2,this)}));function tokenInfo(){return _ref2.apply(this,arguments)}return tokenInfo}()},{key:"accountInfo",value:function(){var _ref3=_asyncToGenerator(_regeneratorRuntime.mark(function _callee3(account){var accountInfo,userdata,tokenAccountInfo;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:_context3.next=2;return this.connection.getAccountInfo(account);case 2:accountInfo=_context3.sent;if(accountInfo.owner.equals(this.programId)){_context3.next=5;break}throw new Error("Invalid token account owner");case 5:userdata=Buffer.from(accountInfo.userdata);if(!(userdata.readUInt8(0)!==2)){_context3.next=8;break}throw new Error("Invalid token account userdata");case 8:tokenAccountInfo=TokenAccountInfoLayout.decode(userdata,1);tokenAccountInfo.token=new PublicKey(tokenAccountInfo.token);tokenAccountInfo.owner=new PublicKey(tokenAccountInfo.owner);tokenAccountInfo.amount=TokenAmount.fromBuffer(tokenAccountInfo.amount);if(tokenAccountInfo.sourceOption===0){tokenAccountInfo.source=null;tokenAccountInfo.originalAmount=new TokenAmount}else{tokenAccountInfo.source=new PublicKey(tokenAccountInfo.source);tokenAccountInfo.originalAmount=TokenAmount.fromBuffer(tokenAccountInfo.originalAmount)}if(tokenAccountInfo.token.equals(this.token)){_context3.next=15;break}throw new Error("Invalid token account token: "+_JSON$stringify(tokenAccountInfo.token)+" !== "+_JSON$stringify(this.token));case 15:return _context3.abrupt("return",tokenAccountInfo);case 16:case"end":return _context3.stop()}}},_callee3,this)}));function accountInfo(_x4){return _ref3.apply(this,arguments)}return accountInfo}()},{key:"transfer",value:function(){var _ref4=_asyncToGenerator(_regeneratorRuntime.mark(function _callee4(owner,source,destination,amount){return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:_context4.t0=sendAndConfirmTransaction;_context4.t1=this.connection;_context4.t2=new Transaction;_context4.next=5;return this.transferInstruction(owner.publicKey,source,destination,amount);case 5:_context4.t3=_context4.sent;_context4.t4=_context4.t2.add.call(_context4.t2,_context4.t3);_context4.t5=owner;_context4.next=10;return(0,_context4.t0)(_context4.t1,_context4.t4,_context4.t5);case 10:return _context4.abrupt("return",_context4.sent);case 11:case"end":return _context4.stop()}}},_callee4,this)}));function transfer(_x5,_x6,_x7,_x8){return _ref4.apply(this,arguments)}return transfer}()},{key:"approve",value:function(){var _ref5=_asyncToGenerator(_regeneratorRuntime.mark(function _callee5(owner,account,delegate,amount){return _regeneratorRuntime.wrap(function _callee5$(_context5){while(1){switch(_context5.prev=_context5.next){case 0:_context5.next=2;return sendAndConfirmTransaction(this.connection,(new Transaction).add(this.approveInstruction(owner.publicKey,account,delegate,amount)),owner);case 2:case"end":return _context5.stop()}}},_callee5,this)}));function approve(_x9,_x10,_x11,_x12){return _ref5.apply(this,arguments)}return approve}()},{key:"revoke",value:function revoke(owner,account,delegate){return this.approve(owner,account,delegate,0)}},{key:"setOwner",value:function(){var _ref6=_asyncToGenerator(_regeneratorRuntime.mark(function _callee6(owner,account,newOwner){return _regeneratorRuntime.wrap(function _callee6$(_context6){while(1){switch(_context6.prev=_context6.next){case 0:_context6.next=2;return sendAndConfirmTransaction(this.connection,(new Transaction).add(this.setOwnerInstruction(owner.publicKey,account,newOwner)),owner);case 2:case"end":return _context6.stop()}}},_callee6,this)}));function setOwner(_x13,_x14,_x15){return _ref6.apply(this,arguments)}return setOwner}()},{key:"transferInstruction",value:function(){var _ref7=_asyncToGenerator(_regeneratorRuntime.mark(function _callee7(owner,source,destination,amount){var accountInfo,userdataLayout,userdata,keys;return _regeneratorRuntime.wrap(function _callee7$(_context7){while(1){switch(_context7.prev=_context7.next){case 0:_context7.next=2;return this.accountInfo(source);case 2:accountInfo=_context7.sent;if(owner.equals(accountInfo.owner)){_context7.next=5;break}throw new Error("Account owner mismatch");case 5:userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction"),uint64("amount")]);userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:2,amount:new TokenAmount(amount).toBuffer()},userdata);keys=[owner,source,destination];if(accountInfo.source){keys.push(accountInfo.source)}return _context7.abrupt("return",new TransactionInstruction({keys:keys,programId:this.programId,userdata:userdata}));case 11:case"end":return _context7.stop()}}},_callee7,this)}));function transferInstruction(_x16,_x17,_x18,_x19){return _ref7.apply(this,arguments)}return transferInstruction}()},{key:"approveInstruction",value:function approveInstruction(owner,account,delegate,amount){var userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction"),uint64("amount")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:3,amount:new TokenAmount(amount).toBuffer()},userdata);return new TransactionInstruction({keys:[owner,account,delegate],programId:this.programId,userdata:userdata})}},{key:"revokeInstruction",value:function revokeInstruction(owner,account,delegate){return this.approveInstruction(owner,account,delegate,0)}},{key:"setOwnerInstruction",value:function setOwnerInstruction(owner,account,newOwner){var userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:4},userdata);return new TransactionInstruction({keys:[owner,account,newOwner],programId:this.programId,userdata:userdata})}}],[{key:"createNewToken",value:function(){var _ref8=_asyncToGenerator(_regeneratorRuntime.mark(function _callee8(connection,owner,supply,name,symbol,decimals){var programId=arguments.length>6&&arguments[6]!==undefined?arguments[6]:SYSTEM_TOKEN_PROGRAM_ID;var tokenAccount,token,initialAccountPublicKey,transaction,userdataLayout,userdata,encodeLength;return _regeneratorRuntime.wrap(function _callee8$(_context8){while(1){switch(_context8.prev=_context8.next){case 0:tokenAccount=new Account;token=new Token(connection,tokenAccount.publicKey,programId);_context8.next=4;return token.newAccount(owner,null);case 4:initialAccountPublicKey=_context8.sent;transaction=void 0;userdataLayout=BufferLayout.struct([BufferLayout.u32("instruction"),uint64("supply"),BufferLayout.u8("decimals"),rustString("name"),rustString("symbol")]);userdata=Buffer.alloc(1024);encodeLength=userdataLayout.encode({instruction:0,supply:supply.toBuffer(),decimals:decimals,name:name,symbol:symbol},userdata);userdata=userdata.slice(0,encodeLength);transaction=SystemProgram.createAccount(owner.publicKey,tokenAccount.publicKey,1,1+userdata.length,programId);_context8.next=13;return sendAndConfirmTransaction(connection,transaction,owner);case 13:transaction=(new Transaction).add({keys:[tokenAccount.publicKey,initialAccountPublicKey],programId:programId,userdata:userdata});transaction.fee=0;_context8.next=17;return sendAndConfirmTransaction(connection,transaction,tokenAccount);case 17:return _context8.abrupt("return",[token,initialAccountPublicKey]);case 18:case"end":return _context8.stop()}}},_callee8,this)}));function createNewToken(_x20,_x21,_x22,_x23,_x24,_x25){return _ref8.apply(this,arguments)}return createNewToken}()}]);return Token}();var sendAndConfirmRawTransaction=function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(connection,rawTransaction){var start,signature,status,statusRetries,duration;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:start=Date.now();_context.next=3;return connection.sendRawTransaction(rawTransaction);case 3:signature=_context.sent;status="";statusRetries=4;case 6:_context.next=8;return connection.getSignatureStatus(signature);case 8:status=_context.sent;if(!(status!=="SignatureNotFound")){_context.next=11;break}return _context.abrupt("break",18);case 11:_context.next=13;return sleep(500);case 13:if(!(--statusRetries<=0)){_context.next=16;break}duration=(Date.now()-start)/1e3;throw new Error("Raw Transaction '"+signature+"' was not confirmed in "+duration.toFixed(2)+" seconds ("+status+")");case 16:_context.next=6;break;case 18:if(!(status==="Confirmed")){_context.next=20;break}return _context.abrupt("return",signature);case 20:throw new Error("Raw transaction "+signature+" failed ("+status+")");case 21:case"end":return _context.stop()}}},_callee,this)}));return function sendAndConfirmRawTransaction(_x,_x2){return _ref.apply(this,arguments)}}();var testnetDefaultChannel="beta";var endpoint={edge:"https://api.edge.testnet.solana.com",beta:"https://api.beta.testnet.solana.com",stable:"https://api.testnet.solana.com"};function testnetChannelEndpoint(channel){if(!channel){return endpoint[testnetDefaultChannel]}if(endpoint[channel]){return endpoint[channel]}throw new Error("Unknown channel: "+channel)}exports.Account=Account;exports.BpfLoader=BpfLoader;exports.BudgetProgram=BudgetProgram;exports.Connection=Connection;exports.Loader=Loader;exports.NativeLoader=NativeLoader;exports.PublicKey=PublicKey;exports.SystemProgram=SystemProgram;exports.Token=Token;exports.TokenAmount=TokenAmount;exports.Transaction=Transaction;exports.TransactionInstruction=TransactionInstruction;exports.sendAndConfirmTransaction=sendAndConfirmTransaction;exports.sendAndConfirmRawTransaction=sendAndConfirmRawTransaction;exports.testnetChannelEndpoint=testnetChannelEndpoint;
//# sourceMappingURL=index.cjs.js.map

@@ -1,2 +0,2 @@

import _classCallCheck from"babel-runtime/helpers/classCallCheck";import _createClass from"babel-runtime/helpers/createClass";import nacl from"tweetnacl";import BN from"bn.js";import bs58 from"bs58";import _regeneratorRuntime from"babel-runtime/regenerator";import _asyncToGenerator from"babel-runtime/helpers/asyncToGenerator";import _Promise from"babel-runtime/core-js/promise";import _Object$assign from"babel-runtime/core-js/object/assign";import{blob,struct,u32,offset,u8,seq,ns64}from"buffer-layout";import assert from"assert";import _getIterator from"babel-runtime/core-js/get-iterator";import _Object$keys from"babel-runtime/core-js/object/keys";import _toConsumableArray from"babel-runtime/helpers/toConsumableArray";import{parse,format}from"url";import fetch from"node-fetch";import jayson from"jayson/lib/client/browser";import{struct as struct$1}from"superstruct";import{Client}from"rpc-websockets";import _JSON$stringify from"babel-runtime/core-js/json/stringify";import _Object$getPrototypeOf from"babel-runtime/core-js/object/get-prototype-of";import _possibleConstructorReturn from"babel-runtime/helpers/possibleConstructorReturn";import _get from"babel-runtime/helpers/get";import _inherits from"babel-runtime/helpers/inherits";var PublicKey=function(){function PublicKey(value){_classCallCheck(this,PublicKey);if(typeof value==="string"){if(value.startsWith("0x")){this._bn=new BN(value.substring(2),16)}else{this._bn=new BN(bs58.decode(value))}}else{this._bn=new BN(value)}if(this._bn.byteLength()>32){throw new Error("Invalid public key input")}}_createClass(PublicKey,[{key:"equals",value:function equals(publicKey){return this._bn.eq(publicKey._bn)}},{key:"toBase58",value:function toBase58(){return bs58.encode(this.toBuffer())}},{key:"toBuffer",value:function toBuffer(){var b=this._bn.toArrayLike(Buffer);if(b.length===32){return b}var zeroPad=Buffer.alloc(32);b.copy(zeroPad,32-b.length);return zeroPad}},{key:"toString",value:function toString(){return this.toBase58()}}],[{key:"isPublicKey",value:function isPublicKey(o){return o instanceof PublicKey}}]);return PublicKey}();var Account=function(){function Account(){var secretKey=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;_classCallCheck(this,Account);if(secretKey){this._keypair=nacl.sign.keyPair.fromSecretKey(secretKey)}else{this._keypair=nacl.sign.keyPair()}}_createClass(Account,[{key:"publicKey",get:function get(){return new PublicKey(this._keypair.publicKey)}},{key:"secretKey",get:function get(){return this._keypair.secretKey}}]);return Account}();var publicKey=function publicKey(){var property=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"publicKey";return blob(32,property)};var uint64=function uint64(){var property=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"uint64";return blob(8,property)};var rustString=function rustString(){var property=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"string";var rsl=struct([u32("length"),u32("lengthPadding"),blob(offset(u32(),-8),"chars")],property);var _decode=rsl.decode.bind(rsl);var _encode=rsl.encode.bind(rsl);rsl.decode=function(buffer,offset$$1){var data=_decode(buffer,offset$$1);return data.chars.toString("utf8")};rsl.encode=function(str,buffer,offset$$1){var data={chars:Buffer.from(str,"utf8")};return _encode(data,buffer,offset$$1)};return rsl};var PACKET_DATA_SIZE=512;var TransactionInstruction=function TransactionInstruction(opts){_classCallCheck(this,TransactionInstruction);this.keys=[];this.userdata=Buffer.alloc(0);opts&&_Object$assign(this,opts)};var Transaction=function(){_createClass(Transaction,[{key:"signature",get:function get(){if(this.signatures.length>0){return this.signatures[0].signature}return null}}]);function Transaction(opts){_classCallCheck(this,Transaction);this.signatures=[];this.instructions=[];this.fee=1;opts&&_Object$assign(this,opts)}_createClass(Transaction,[{key:"add",value:function add(){var _this=this;for(var _len=arguments.length,items=Array(_len),_key=0;_key<_len;_key++){items[_key]=arguments[_key]}if(items.length===0){throw new Error("No instructions")}items.forEach(function(item){if(item instanceof Transaction){_this.instructions=_this.instructions.concat(item.instructions)}else{_this.instructions.push(new TransactionInstruction(item))}});return this}},{key:"_getSignData",value:function _getSignData(){var lastId=this.lastId;if(!lastId){throw new Error("Transaction lastId required")}if(this.instructions.length<1){throw new Error("No instructions provided")}var keys=this.signatures.map(function(_ref){var publicKey$$1=_ref.publicKey;return publicKey$$1.toString()});var programIds=[];this.instructions.forEach(function(instruction){var programId=instruction.programId.toString();if(!programIds.includes(programId)){programIds.push(programId)}instruction.keys.map(function(key){return key.toString()}).forEach(function(key){if(!keys.includes(key)){keys.push(key)}})});var instructions=this.instructions.map(function(instruction){var userdata=instruction.userdata,programId=instruction.programId;return{programIdIndex:programIds.indexOf(programId.toString()),keyIndices:instruction.keys.map(function(key){return keys.indexOf(key.toString())}),userdata:userdata}});instructions.forEach(function(instruction){assert(instruction.programIdIndex>=0);instruction.keyIndices.forEach(function(keyIndex){return assert(keyIndex>=0)})});var instructionLayout=struct([u8("programIdIndex"),u32("keyIndicesLength"),u32("keyIndicesLengthPadding"),seq(u8("keyIndex"),offset(u32(),-8),"keyIndices"),u32("userdataLength"),u32("userdataLengthPadding"),seq(u8("userdatum"),offset(u32(),-8),"userdata")]);var signDataLayout=struct([u32("keysLength"),u32("keysLengthPadding"),seq(publicKey("key"),offset(u32(),-8),"keys"),publicKey("lastId"),ns64("fee"),u32("programIdsLength"),u32("programIdsLengthPadding"),seq(publicKey("programId"),offset(u32(),-8),"programIds"),u32("instructionsLength"),u32("instructionsLengthPadding"),seq(instructionLayout,offset(u32(),-8),"instructions")]);var transaction={keys:keys.map(function(key){return new PublicKey(key).toBuffer()}),lastId:Buffer.from(bs58.decode(lastId)),fee:this.fee,programIds:programIds.map(function(programId){return new PublicKey(programId).toBuffer()}),instructions:instructions};var signData=Buffer.alloc(2048);var length=signDataLayout.encode(transaction,signData);signData=signData.slice(0,length);return signData}},{key:"sign",value:function sign(){this.signPartial.apply(this,arguments)}},{key:"signPartial",value:function signPartial(){for(var _len2=arguments.length,partialSigners=Array(_len2),_key2=0;_key2<_len2;_key2++){partialSigners[_key2]=arguments[_key2]}if(partialSigners.length===0){throw new Error("No signers")}var signatures=partialSigners.map(function(accountOrPublicKey){var publicKey$$1=accountOrPublicKey instanceof Account?accountOrPublicKey.publicKey:accountOrPublicKey;return{signature:null,publicKey:publicKey$$1}});this.signatures=signatures;var signData=this._getSignData();partialSigners.forEach(function(accountOrPublicKey,index){if(accountOrPublicKey instanceof PublicKey){return}var signature=nacl.sign.detached(signData,accountOrPublicKey.secretKey);assert(signature.length===64);signatures[index].signature=signature})}},{key:"addSigner",value:function addSigner(signer){var index=this.signatures.findIndex(function(sigpair){return signer.publicKey.equals(sigpair.publicKey)});if(index<0){throw new Error("Unknown signer: "+signer.publicKey.toString())}var signData=this._getSignData();var signature=nacl.sign.detached(signData,signer.secretKey);assert(signature.length===64);this.signatures[index].signature=signature}},{key:"serialize",value:function serialize(){var signatures=this.signatures;if(!signatures){throw new Error("Transaction has not been signed")}var signData=this._getSignData();var wireTransaction=Buffer.alloc(8+signatures.length*64+signData.length);assert(signatures.length<256);wireTransaction.writeUInt8(signatures.length,0);signatures.forEach(function(_ref2,index){var signature=_ref2.signature;assert(signature!==null,"null signature");assert(signature.length===64,"signature has invalid length");Buffer.from(signature).copy(wireTransaction,8+index*64)});signData.copy(wireTransaction,8+signatures.length*64);assert(wireTransaction.length<=PACKET_DATA_SIZE,"Transaction too large: "+wireTransaction.length+" > "+PACKET_DATA_SIZE);return wireTransaction}},{key:"keys",get:function get(){assert(this.instructions.length===1);return this.instructions[0].keys}},{key:"programId",get:function get(){assert(this.instructions.length===1);return this.instructions[0].programId}},{key:"userdata",get:function get(){assert(this.instructions.length===1);return this.instructions[0].userdata}}]);return Transaction}();var SystemProgram=function(){function SystemProgram(){_classCallCheck(this,SystemProgram)}_createClass(SystemProgram,null,[{key:"createAccount",value:function createAccount(from,newAccount,tokens,space,programId){var userdataLayout=struct([u32("instruction"),ns64("tokens"),ns64("space"),publicKey("programId")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:0,tokens:tokens,space:space,programId:programId.toBuffer()},userdata);return(new Transaction).add({keys:[from,newAccount],programId:SystemProgram.programId,userdata:userdata})}},{key:"move",value:function move(from,to,amount){var userdataLayout=struct([u32("instruction"),ns64("amount")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:2,amount:amount},userdata);return(new Transaction).add({keys:[from,to],programId:SystemProgram.programId,userdata:userdata})}},{key:"assign",value:function assign(from,programId){var userdataLayout=struct([u32("instruction"),publicKey("programId")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:1,programId:programId.toBuffer()},userdata);return(new Transaction).add({keys:[from],programId:SystemProgram.programId,userdata:userdata})}},{key:"spawn",value:function spawn(programId){var userdataLayout=struct([u32("instruction")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:3},userdata);return(new Transaction).add({keys:[programId],programId:SystemProgram.programId,userdata:userdata})}},{key:"programId",get:function get(){return new PublicKey("0x000000000000000000000000000000000000000000000000000000000000000")}}]);return SystemProgram}();function sleep(ms){return new _Promise(function(resolve){return setTimeout(resolve,ms)})}function createRpcRequest(url){var _this=this;var server=jayson(function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(request,callback){var options,res,text;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:options={method:"POST",body:request,headers:{"Content-Type":"application/json"}};_context.prev=1;_context.next=4;return fetch(url,options);case 4:res=_context.sent;_context.next=7;return res.text();case 7:text=_context.sent;callback(null,text);_context.next=14;break;case 11:_context.prev=11;_context.t0=_context["catch"](1);callback(_context.t0);case 14:case"end":return _context.stop()}}},_callee,_this,[[1,11]])}));return function(_x,_x2){return _ref.apply(this,arguments)}}());return function(method,args){return new _Promise(function(resolve,reject){server.request(method,args,function(err,response){if(err){reject(err);return}resolve(response)})})}}var GetBalanceRpcResult=struct$1({jsonrpc:struct$1.literal("2.0"),id:"string",error:"any?",result:"number?"});function jsonRpcResult(resultDescription){var jsonRpcVersion=struct$1.literal("2.0");return struct$1.union([struct$1({jsonrpc:jsonRpcVersion,id:"string",error:"any"}),struct$1({jsonrpc:jsonRpcVersion,id:"string",error:"null?",result:resultDescription})])}var AccountInfoResult=struct$1({executable:"boolean",loader:"array",owner:"array",tokens:"number",userdata:"array"});var GetAccountInfoRpcResult=jsonRpcResult(AccountInfoResult);var AccountNotificationResult=struct$1({subscription:"number",result:AccountInfoResult});var ConfirmTransactionRpcResult=jsonRpcResult("boolean");var GetSignatureStatusRpcResult=jsonRpcResult(struct$1.enum(["AccountInUse","Confirmed","GenericFailure","ProgramRuntimeError","SignatureNotFound"]));var GetTransactionCountRpcResult=jsonRpcResult("number");var GetLastId=jsonRpcResult("string");var GetFinalityRpcResult=jsonRpcResult("number");var RequestAirdropRpcResult=jsonRpcResult("string");var SendTransactionRpcResult=jsonRpcResult("string");var Connection=function(){function Connection(endpoint){_classCallCheck(this,Connection);this._rpcWebSocketConnected=false;this._disableLastIdCaching=false;this._accountChangeSubscriptions={};this._accountChangeSubscriptionCounter=0;var url=parse(endpoint);this._rpcRequest=createRpcRequest(url.href);this._lastIdInfo={lastId:null,seconds:-1,transactionSignatures:[]};url.protocol=url.protocol==="https:"?"wss:":"ws:";url.host="";url.port=String(Number(url.port)+1);if(url.port==="1"){url.port=url.protocol==="wss:"?"8901":"8900"}this._rpcWebSocket=new Client(format(url),{autoconnect:false,max_reconnects:Infinity});this._rpcWebSocket.on("open",this._wsOnOpen.bind(this));this._rpcWebSocket.on("error",this._wsOnError.bind(this));this._rpcWebSocket.on("close",this._wsOnClose.bind(this));this._rpcWebSocket.on("accountNotification",this._wsOnAccountNotification.bind(this))}_createClass(Connection,[{key:"getBalance",value:function(){var _ref2=_asyncToGenerator(_regeneratorRuntime.mark(function _callee2(publicKey){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:_context2.next=2;return this._rpcRequest("getBalance",[publicKey.toBase58()]);case 2:unsafeRes=_context2.sent;res=GetBalanceRpcResult(unsafeRes);if(!res.error){_context2.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context2.abrupt("return",res.result);case 8:case"end":return _context2.stop()}}},_callee2,this)}));function getBalance(_x3){return _ref2.apply(this,arguments)}return getBalance}()},{key:"getAccountInfo",value:function(){var _ref3=_asyncToGenerator(_regeneratorRuntime.mark(function _callee3(publicKey){var unsafeRes,res,result;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:_context3.next=2;return this._rpcRequest("getAccountInfo",[publicKey.toBase58()]);case 2:unsafeRes=_context3.sent;res=GetAccountInfoRpcResult(unsafeRes);if(!res.error){_context3.next=6;break}throw new Error(res.error.message);case 6:result=res.result;assert(typeof result!=="undefined");return _context3.abrupt("return",{executable:result.executable,loader:new PublicKey(result.loader),owner:new PublicKey(result.owner),tokens:result.tokens,userdata:Buffer.from(result.userdata)});case 9:case"end":return _context3.stop()}}},_callee3,this)}));function getAccountInfo(_x4){return _ref3.apply(this,arguments)}return getAccountInfo}()},{key:"confirmTransaction",value:function(){var _ref4=_asyncToGenerator(_regeneratorRuntime.mark(function _callee4(signature){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:_context4.next=2;return this._rpcRequest("confirmTransaction",[signature]);case 2:unsafeRes=_context4.sent;res=ConfirmTransactionRpcResult(unsafeRes);if(!res.error){_context4.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context4.abrupt("return",res.result);case 8:case"end":return _context4.stop()}}},_callee4,this)}));function confirmTransaction(_x5){return _ref4.apply(this,arguments)}return confirmTransaction}()},{key:"getSignatureStatus",value:function(){var _ref5=_asyncToGenerator(_regeneratorRuntime.mark(function _callee5(signature){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee5$(_context5){while(1){switch(_context5.prev=_context5.next){case 0:_context5.next=2;return this._rpcRequest("getSignatureStatus",[signature]);case 2:unsafeRes=_context5.sent;res=GetSignatureStatusRpcResult(unsafeRes);if(!res.error){_context5.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context5.abrupt("return",res.result);case 8:case"end":return _context5.stop()}}},_callee5,this)}));function getSignatureStatus(_x6){return _ref5.apply(this,arguments)}return getSignatureStatus}()},{key:"getTransactionCount",value:function(){var _ref6=_asyncToGenerator(_regeneratorRuntime.mark(function _callee6(){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee6$(_context6){while(1){switch(_context6.prev=_context6.next){case 0:_context6.next=2;return this._rpcRequest("getTransactionCount",[]);case 2:unsafeRes=_context6.sent;res=GetTransactionCountRpcResult(unsafeRes);if(!res.error){_context6.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context6.abrupt("return",Number(res.result));case 8:case"end":return _context6.stop()}}},_callee6,this)}));function getTransactionCount(){return _ref6.apply(this,arguments)}return getTransactionCount}()},{key:"getLastId",value:function(){var _ref7=_asyncToGenerator(_regeneratorRuntime.mark(function _callee7(){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee7$(_context7){while(1){switch(_context7.prev=_context7.next){case 0:_context7.next=2;return this._rpcRequest("getLastId",[]);case 2:unsafeRes=_context7.sent;res=GetLastId(unsafeRes);if(!res.error){_context7.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context7.abrupt("return",res.result);case 8:case"end":return _context7.stop()}}},_callee7,this)}));function getLastId(){return _ref7.apply(this,arguments)}return getLastId}()},{key:"getFinality",value:function(){var _ref8=_asyncToGenerator(_regeneratorRuntime.mark(function _callee8(){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee8$(_context8){while(1){switch(_context8.prev=_context8.next){case 0:_context8.next=2;return this._rpcRequest("getFinality",[]);case 2:unsafeRes=_context8.sent;res=GetFinalityRpcResult(unsafeRes);if(!res.error){_context8.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context8.abrupt("return",Number(res.result));case 8:case"end":return _context8.stop()}}},_callee8,this)}));function getFinality(){return _ref8.apply(this,arguments)}return getFinality}()},{key:"requestAirdrop",value:function(){var _ref9=_asyncToGenerator(_regeneratorRuntime.mark(function _callee9(to,amount){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee9$(_context9){while(1){switch(_context9.prev=_context9.next){case 0:_context9.next=2;return this._rpcRequest("requestAirdrop",[to.toBase58(),amount]);case 2:unsafeRes=_context9.sent;res=RequestAirdropRpcResult(unsafeRes);if(!res.error){_context9.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context9.abrupt("return",res.result);case 8:case"end":return _context9.stop()}}},_callee9,this)}));function requestAirdrop(_x7,_x8){return _ref9.apply(this,arguments)}return requestAirdrop}()},{key:"sendTransaction",value:function(){var _ref10=_asyncToGenerator(_regeneratorRuntime.mark(function _callee10(transaction){for(var _len=arguments.length,signers=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){signers[_key-1]=arguments[_key]}var _seconds,signature,attempts,startTime,_lastId,wireTransaction;return _regeneratorRuntime.wrap(function _callee10$(_context10){while(1){switch(_context10.prev=_context10.next){case 0:_seconds=(new Date).getSeconds();if(!(this._lastIdInfo.lastId!=null&&this._lastIdInfo.seconds===_seconds)){_context10.next=11;break}transaction.lastId=this._lastIdInfo.lastId;transaction.sign.apply(transaction,signers);if(transaction.signature){_context10.next=6;break}throw new Error("!signature");case 6:signature=transaction.signature.toString();if(this._lastIdInfo.transactionSignatures.includes(signature)){_context10.next=11;break}this._lastIdInfo.transactionSignatures.push(signature);if(this._disableLastIdCaching){this._lastIdInfo.seconds=-1}return _context10.abrupt("break",28);case 11:attempts=0;startTime=Date.now();case 13:_context10.next=15;return this.getLastId();case 15:_lastId=_context10.sent;if(!(this._lastIdInfo.lastId!=_lastId)){_context10.next=19;break}this._lastIdInfo={lastId:_lastId,seconds:(new Date).getSeconds(),transactionSignatures:[]};return _context10.abrupt("break",26);case 19:if(!(attempts===8)){_context10.next=21;break}throw new Error("Unable to obtain a new last id after "+(Date.now()-startTime)+"ms");case 21:_context10.next=23;return sleep(250);case 23:++attempts;case 24:_context10.next=13;break;case 26:_context10.next=0;break;case 28:wireTransaction=transaction.serialize();_context10.next=31;return this.sendRawTransaction(wireTransaction);case 31:return _context10.abrupt("return",_context10.sent);case 32:case"end":return _context10.stop()}}},_callee10,this)}));function sendTransaction(_x9){return _ref10.apply(this,arguments)}return sendTransaction}()},{key:"sendRawTransaction",value:function(){var _ref11=_asyncToGenerator(_regeneratorRuntime.mark(function _callee11(rawTransaction){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee11$(_context11){while(1){switch(_context11.prev=_context11.next){case 0:_context11.next=2;return this._rpcRequest("sendTransaction",[[].concat(_toConsumableArray(rawTransaction))]);case 2:unsafeRes=_context11.sent;res=SendTransactionRpcResult(unsafeRes);if(!res.error){_context11.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");assert(res.result);return _context11.abrupt("return",res.result);case 9:case"end":return _context11.stop()}}},_callee11,this)}));function sendRawTransaction(_x10){return _ref11.apply(this,arguments)}return sendRawTransaction}()},{key:"_wsOnOpen",value:function _wsOnOpen(){this._rpcWebSocketConnected=true;this._updateSubscriptions()}},{key:"_wsOnError",value:function _wsOnError(err){console.log("ws error:",err.message)}},{key:"_wsOnClose",value:function _wsOnClose(code,message){if(code!==1e3){console.log("ws close:",code,message)}this._rpcWebSocketConnected=false}},{key:"_wsOnAccountNotification",value:function _wsOnAccountNotification(notification){var res=AccountNotificationResult(notification);if(res.error){throw new Error(res.error.message)}var keys=_Object$keys(this._accountChangeSubscriptions).map(Number);var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=_getIterator(keys),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var id=_step.value;var sub=this._accountChangeSubscriptions[id];if(sub.subscriptionId===res.subscription){var result=res.result;assert(typeof result!=="undefined");sub.callback({executable:result.executable,loader:new PublicKey(result.loader),owner:new PublicKey(result.owner),tokens:result.tokens,userdata:Buffer.from(result.userdata)});return true}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}}},{key:"_updateSubscriptions",value:function(){var _ref12=_asyncToGenerator(_regeneratorRuntime.mark(function _callee12(){var keys,_iteratorNormalCompletion2,_didIteratorError2,_iteratorError2,_iterator2,_step2,id,_iteratorNormalCompletion3,_didIteratorError3,_iteratorError3,_iterator3,_step3,_id,_accountChangeSubscri,_subscriptionId,_publicKey;return _regeneratorRuntime.wrap(function _callee12$(_context12){while(1){switch(_context12.prev=_context12.next){case 0:keys=_Object$keys(this._accountChangeSubscriptions).map(Number);if(!(keys.length===0)){_context12.next=4;break}this._rpcWebSocket.close();return _context12.abrupt("return");case 4:if(this._rpcWebSocketConnected){_context12.next=26;break}_iteratorNormalCompletion2=true;_didIteratorError2=false;_iteratorError2=undefined;_context12.prev=8;for(_iterator2=_getIterator(keys);!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=true){id=_step2.value;this._accountChangeSubscriptions[id].subscriptionId=null}_context12.next=16;break;case 12:_context12.prev=12;_context12.t0=_context12["catch"](8);_didIteratorError2=true;_iteratorError2=_context12.t0;case 16:_context12.prev=16;_context12.prev=17;if(!_iteratorNormalCompletion2&&_iterator2.return){_iterator2.return()}case 19:_context12.prev=19;if(!_didIteratorError2){_context12.next=22;break}throw _iteratorError2;case 22:return _context12.finish(19);case 23:return _context12.finish(16);case 24:this._rpcWebSocket.connect();return _context12.abrupt("return");case 26:_iteratorNormalCompletion3=true;_didIteratorError3=false;_iteratorError3=undefined;_context12.prev=29;_iterator3=_getIterator(keys);case 31:if(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done){_context12.next=47;break}_id=_step3.value;_accountChangeSubscri=this._accountChangeSubscriptions[_id],_subscriptionId=_accountChangeSubscri.subscriptionId,_publicKey=_accountChangeSubscri.publicKey;if(!(_subscriptionId===null)){_context12.next=44;break}_context12.prev=35;_context12.next=38;return this._rpcWebSocket.call("accountSubscribe",[_publicKey]);case 38:this._accountChangeSubscriptions[_id].subscriptionId=_context12.sent;_context12.next=44;break;case 41:_context12.prev=41;_context12.t1=_context12["catch"](35);console.log("accountSubscribe error for "+_publicKey+": "+_context12.t1.message);case 44:_iteratorNormalCompletion3=true;_context12.next=31;break;case 47:_context12.next=53;break;case 49:_context12.prev=49;_context12.t2=_context12["catch"](29);_didIteratorError3=true;_iteratorError3=_context12.t2;case 53:_context12.prev=53;_context12.prev=54;if(!_iteratorNormalCompletion3&&_iterator3.return){_iterator3.return()}case 56:_context12.prev=56;if(!_didIteratorError3){_context12.next=59;break}throw _iteratorError3;case 59:return _context12.finish(56);case 60:return _context12.finish(53);case 61:case"end":return _context12.stop()}}},_callee12,this,[[8,12,16,24],[17,,19,23],[29,49,53,61],[35,41],[54,,56,60]])}));function _updateSubscriptions(){return _ref12.apply(this,arguments)}return _updateSubscriptions}()},{key:"onAccountChange",value:function onAccountChange(publicKey,callback){var id=++this._accountChangeSubscriptionCounter;this._accountChangeSubscriptions[id]={publicKey:publicKey.toBase58(),callback:callback,subscriptionId:null};this._updateSubscriptions();return id}},{key:"removeAccountChangeListener",value:function(){var _ref13=_asyncToGenerator(_regeneratorRuntime.mark(function _callee13(id){var _subscriptionId2;return _regeneratorRuntime.wrap(function _callee13$(_context13){while(1){switch(_context13.prev=_context13.next){case 0:if(!this._accountChangeSubscriptions[id]){_context13.next=15;break}_subscriptionId2=this._accountChangeSubscriptions[id].subscriptionId;delete this._accountChangeSubscriptions[id];if(!(_subscriptionId2!==null)){_context13.next=12;break}_context13.prev=4;_context13.next=7;return this._rpcWebSocket.call("accountUnsubscribe",[_subscriptionId2]);case 7:_context13.next=12;break;case 9:_context13.prev=9;_context13.t0=_context13["catch"](4);console.log("accountUnsubscribe error:",_context13.t0.message);case 12:this._updateSubscriptions();_context13.next=16;break;case 15:throw new Error("Unknown account change id: "+id);case 16:case"end":return _context13.stop()}}},_callee13,this,[[4,9]])}));function removeAccountChangeListener(_x11){return _ref13.apply(this,arguments)}return removeAccountChangeListener}()}]);return Connection}();var sendAndConfirmTransaction=function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(connection,transaction){for(var _len=arguments.length,signers=Array(_len>2?_len-2:0),_key=2;_key<_len;_key++){signers[_key-2]=arguments[_key]}var sendRetries,signature,start,status,statusRetries,duration;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:sendRetries=10;signature=void 0;case 2:start=Date.now();_context.next=5;return connection.sendTransaction.apply(connection,[transaction].concat(signers));case 5:signature=_context.sent;status="SignatureNotFound";statusRetries=4;case 8:_context.next=10;return connection.getSignatureStatus(signature);case 10:status=_context.sent;if(!(status!=="SignatureNotFound")){_context.next=13;break}return _context.abrupt("break",20);case 13:_context.next=15;return sleep(500);case 15:if(!(--statusRetries<=0)){_context.next=18;break}duration=(Date.now()-start)/1e3;throw new Error("Transaction '"+signature+"' was not confirmed in "+duration.toFixed(2)+" seconds ("+status+")");case 18:_context.next=8;break;case 20:if(!(status==="Confirmed")){_context.next=22;break}return _context.abrupt("break",28);case 22:if(!(status!=="AccountInUse"||--sendRetries<=0)){_context.next=24;break}throw new Error("Transaction "+signature+" failed ("+status+")");case 24:_context.next=26;return sleep(Math.random()*100);case 26:_context.next=2;break;case 28:assert(signature!==undefined);return _context.abrupt("return",signature);case 30:case"end":return _context.stop()}}},_callee,this)}));return function sendAndConfirmTransaction(_x,_x2){return _ref.apply(this,arguments)}}();var Loader=function(){_createClass(Loader,null,[{key:"chunkSize",get:function get(){return 256}}]);function Loader(connection,programId){_classCallCheck(this,Loader);_Object$assign(this,{connection:connection,programId:programId})}_createClass(Loader,[{key:"load",value:function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(program,data){var userdataLayout,chunkSize,offset$$1,array,transactions,bytes,userdata,transaction;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:userdataLayout=struct([u32("instruction"),u32("offset"),u32("bytesLength"),u32("bytesLengthPadding"),seq(u8("byte"),offset(u32(),-8),"bytes")]);chunkSize=Loader.chunkSize;offset$$1=0;array=data;transactions=[];case 5:if(!(array.length>0)){_context.next=19;break}bytes=array.slice(0,chunkSize);userdata=Buffer.alloc(chunkSize+16);userdataLayout.encode({instruction:0,offset:offset$$1,bytes:bytes},userdata);transaction=(new Transaction).add({keys:[program.publicKey],programId:this.programId,userdata:userdata});transactions.push(sendAndConfirmTransaction(this.connection,transaction,program));if(!(transactions.length===8)){_context.next=15;break}_context.next=14;return _Promise.all(transactions);case 14:transactions=[];case 15:offset$$1+=chunkSize;array=array.slice(chunkSize);_context.next=5;break;case 19:_context.next=21;return _Promise.all(transactions);case 21:case"end":return _context.stop()}}},_callee,this)}));function load(_x,_x2){return _ref.apply(this,arguments)}return load}()},{key:"finalize",value:function(){var _ref2=_asyncToGenerator(_regeneratorRuntime.mark(function _callee2(program){var userdataLayout,userdata,transaction;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:userdataLayout=struct([u32("instruction")]);userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:1},userdata);transaction=new Transaction;transaction.add({keys:[program.publicKey],programId:this.programId,userdata:userdata});transaction.add(SystemProgram.spawn(program.publicKey));_context2.next=8;return sendAndConfirmTransaction(this.connection,transaction,program);case 8:case"end":return _context2.stop()}}},_callee2,this)}));function finalize(_x3){return _ref2.apply(this,arguments)}return finalize}()}]);return Loader}();var BpfLoader=function(){function BpfLoader(){_classCallCheck(this,BpfLoader)}_createClass(BpfLoader,null,[{key:"load",value:function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(connection,owner,elf){var programAccount,transaction,loader;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:programAccount=new Account;transaction=SystemProgram.createAccount(owner.publicKey,programAccount.publicKey,1+Math.ceil(elf.length/Loader.chunkSize)+1,elf.length,BpfLoader.programId);_context.next=4;return sendAndConfirmTransaction(connection,transaction,owner);case 4:loader=new Loader(connection,BpfLoader.programId);_context.next=7;return loader.load(programAccount,elf);case 7:_context.next=9;return loader.finalize(programAccount);case 9:return _context.abrupt("return",programAccount.publicKey);case 10:case"end":return _context.stop()}}},_callee,this)}));function load(_x,_x2,_x3){return _ref.apply(this,arguments)}return load}()},{key:"programId",get:function get(){return new PublicKey("0x8000000000000000000000000000000000000000000000000000000000000000")}}]);return BpfLoader}();function serializePayment(payment){var toData=payment.to.toBuffer();var userdata=Buffer.alloc(8+toData.length);userdata.writeUInt32LE(payment.amount,0);toData.copy(userdata,8);return userdata}function serializeDate(when){var userdata=Buffer.alloc(8+20);userdata.writeUInt32LE(20,0);function iso(date){function pad(number){if(number<10){return"0"+number}return number}return date.getUTCFullYear()+"-"+pad(date.getUTCMonth()+1)+"-"+pad(date.getUTCDate())+"T"+pad(date.getUTCHours())+":"+pad(date.getUTCMinutes())+":"+pad(date.getUTCSeconds())+"Z"}userdata.write(iso(when),8);return userdata}function serializeCondition(condition){switch(condition.type){case"timestamp":{var date=serializeDate(condition.when);var _from=condition.from.toBuffer();var userdata=Buffer.alloc(4+date.length+_from.length);userdata.writeUInt32LE(0,0);date.copy(userdata,4);_from.copy(userdata,4+date.length);return userdata}case"signature":{var userdataLayout=struct([u32("condition"),publicKey("from")]);var _from2=condition.from.toBuffer();var _userdata=Buffer.alloc(4+_from2.length);userdataLayout.encode({instruction:1,from:_from2},_userdata);return _userdata}default:throw new Error("Unknown condition type: "+condition.type)}}var BudgetProgram=function(){function BudgetProgram(){_classCallCheck(this,BudgetProgram)}_createClass(BudgetProgram,null,[{key:"timestampCondition",value:function timestampCondition(from,when){return{type:"timestamp",from:from,when:when}}},{key:"signatureCondition",value:function signatureCondition(from){return{type:"signature",from:from}}},{key:"pay",value:function pay(from,program,to,amount){var userdata=Buffer.alloc(1024);var pos=0;userdata.writeUInt32LE(0,pos);pos+=4;for(var _len=arguments.length,conditions=Array(_len>4?_len-4:0),_key=4;_key<_len;_key++){conditions[_key-4]=arguments[_key]}switch(conditions.length){case 0:userdata.writeUInt32LE(0,pos);pos+=4;{var payment=serializePayment({amount:amount,to:to});payment.copy(userdata,pos);pos+=payment.length}return(new Transaction).add({keys:[from,to],programId:this.programId,userdata:userdata.slice(0,pos)});case 1:userdata.writeUInt32LE(1,pos);pos+=4;{var condition=conditions[0];var conditionData=serializeCondition(condition);conditionData.copy(userdata,pos);pos+=conditionData.length;var paymentData=serializePayment({amount:amount,to:to});paymentData.copy(userdata,pos);pos+=paymentData.length}return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata.slice(0,pos)});case 2:userdata.writeUInt32LE(2,pos);pos+=4;var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=_getIterator(conditions),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var _condition=_step.value;var _conditionData=serializeCondition(_condition);_conditionData.copy(userdata,pos);pos+=_conditionData.length;var _paymentData=serializePayment({amount:amount,to:to});_paymentData.copy(userdata,pos);pos+=_paymentData.length}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata.slice(0,pos)});default:throw new Error("A maximum of two conditions are support: "+conditions.length+" provided")}}},{key:"payOnBoth",value:function payOnBoth(from,program,to,amount,condition1,condition2){var userdata=Buffer.alloc(1024);var pos=0;userdata.writeUInt32LE(0,pos);pos+=4;userdata.writeUInt32LE(3,pos);pos+=4;var _arr=[condition1,condition2];for(var _i=0;_i<_arr.length;_i++){var condition=_arr[_i];var conditionData=serializeCondition(condition);conditionData.copy(userdata,pos);pos+=conditionData.length}var paymentData=serializePayment({amount:amount,to:to});paymentData.copy(userdata,pos);pos+=paymentData.length;return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata.slice(0,pos)})}},{key:"applyTimestamp",value:function applyTimestamp(from,program,to,when){var whenData=serializeDate(when);var userdata=Buffer.alloc(4+whenData.length);userdata.writeUInt32LE(1,0);whenData.copy(userdata,4);return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata})}},{key:"applySignature",value:function applySignature(from,program,to){var userdataLayout=struct([u32("instruction")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:2},userdata);return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata})}},{key:"programId",get:function get(){return new PublicKey("0x8100000000000000000000000000000000000000000000000000000000000000")}},{key:"space",get:function get(){return 128}}]);return BudgetProgram}();var NativeLoader=function(){function NativeLoader(){_classCallCheck(this,NativeLoader)}_createClass(NativeLoader,null,[{key:"load",value:function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(connection,owner,programName){var bytes,programAccount,transaction,loader;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:bytes=[].concat(_toConsumableArray(Buffer.from(programName)));programAccount=new Account;transaction=SystemProgram.createAccount(owner.publicKey,programAccount.publicKey,1+1+1,bytes.length+1,NativeLoader.programId);_context.next=5;return sendAndConfirmTransaction(connection,transaction,owner);case 5:loader=new Loader(connection,NativeLoader.programId);_context.next=8;return loader.load(programAccount,bytes);case 8:_context.next=10;return loader.finalize(programAccount);case 10:return _context.abrupt("return",programAccount.publicKey);case 11:case"end":return _context.stop()}}},_callee,this)}));function load(_x,_x2,_x3){return _ref.apply(this,arguments)}return load}()},{key:"programId",get:function get(){return new PublicKey("0x100000000000000000000000000000000000000000000000000000000000000")}}]);return NativeLoader}();var TokenAmount=function(_BN){_inherits(TokenAmount,_BN);function TokenAmount(){_classCallCheck(this,TokenAmount);return _possibleConstructorReturn(this,(TokenAmount.__proto__||_Object$getPrototypeOf(TokenAmount)).apply(this,arguments))}_createClass(TokenAmount,[{key:"toBuffer",value:function toBuffer(){var a=_get(TokenAmount.prototype.__proto__||_Object$getPrototypeOf(TokenAmount.prototype),"toArray",this).call(this).reverse();var b=Buffer.from(a);if(b.length===8){return b}assert(b.length<8,"TokenAmount too large");var zeroPad=Buffer.alloc(8);b.copy(zeroPad);return zeroPad}}],[{key:"fromBuffer",value:function fromBuffer(buffer){assert(buffer.length===8,"Invalid buffer length: "+buffer.length);return new BN([].concat(_toConsumableArray(buffer)).reverse().map(function(i){return("00"+i.toString(16)).slice(-2)}).join(""),16)}}]);return TokenAmount}(BN);var TokenInfoLayout=struct([uint64("supply"),u8("decimals"),rustString("name"),rustString("symbol")]);var TokenAccountInfoLayout=struct([publicKey("token"),publicKey("owner"),uint64("amount"),u8("sourceOption"),publicKey("source"),uint64("originalAmount")]);var SYSTEM_TOKEN_PROGRAM_ID=new PublicKey("0x8300000000000000000000000000000000000000000000000000000000000000");var Token=function(){function Token(connection,token){var programId=arguments.length>2&&arguments[2]!==undefined?arguments[2]:SYSTEM_TOKEN_PROGRAM_ID;_classCallCheck(this,Token);_Object$assign(this,{connection:connection,token:token,programId:programId})}_createClass(Token,[{key:"newAccount",value:function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(owner){var source=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var tokenAccount,transaction,userdataLayout,userdata,keys;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:tokenAccount=new Account;transaction=void 0;userdataLayout=struct([u32("instruction")]);userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:1},userdata);transaction=SystemProgram.createAccount(owner.publicKey,tokenAccount.publicKey,1,1+TokenAccountInfoLayout.span,this.programId);_context.next=8;return sendAndConfirmTransaction(this.connection,transaction,owner);case 8:keys=[tokenAccount.publicKey,owner.publicKey,this.token];if(source){keys.push(source)}transaction=(new Transaction).add({keys:keys,programId:this.programId,userdata:userdata});transaction.fee=0;_context.next=14;return sendAndConfirmTransaction(this.connection,transaction,tokenAccount);case 14:return _context.abrupt("return",tokenAccount.publicKey);case 15:case"end":return _context.stop()}}},_callee,this)}));function newAccount(_x2){return _ref.apply(this,arguments)}return newAccount}()},{key:"tokenInfo",value:function(){var _ref2=_asyncToGenerator(_regeneratorRuntime.mark(function _callee2(){var accountInfo,userdata,tokenInfo;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:_context2.next=2;return this.connection.getAccountInfo(this.token);case 2:accountInfo=_context2.sent;if(accountInfo.owner.equals(this.programId)){_context2.next=5;break}throw new Error("Invalid token owner: "+_JSON$stringify(accountInfo.owner));case 5:userdata=Buffer.from(accountInfo.userdata);if(!(userdata.readUInt8(0)!==1)){_context2.next=8;break}throw new Error("Invalid token userdata");case 8:tokenInfo=TokenInfoLayout.decode(userdata,1);tokenInfo.supply=TokenAmount.fromBuffer(tokenInfo.supply);return _context2.abrupt("return",tokenInfo);case 11:case"end":return _context2.stop()}}},_callee2,this)}));function tokenInfo(){return _ref2.apply(this,arguments)}return tokenInfo}()},{key:"accountInfo",value:function(){var _ref3=_asyncToGenerator(_regeneratorRuntime.mark(function _callee3(account){var accountInfo,userdata,tokenAccountInfo;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:_context3.next=2;return this.connection.getAccountInfo(account);case 2:accountInfo=_context3.sent;if(accountInfo.owner.equals(this.programId)){_context3.next=5;break}throw new Error("Invalid token account owner");case 5:userdata=Buffer.from(accountInfo.userdata);if(!(userdata.readUInt8(0)!==2)){_context3.next=8;break}throw new Error("Invalid token account userdata");case 8:tokenAccountInfo=TokenAccountInfoLayout.decode(userdata,1);tokenAccountInfo.token=new PublicKey(tokenAccountInfo.token);tokenAccountInfo.owner=new PublicKey(tokenAccountInfo.owner);tokenAccountInfo.amount=TokenAmount.fromBuffer(tokenAccountInfo.amount);if(tokenAccountInfo.sourceOption===0){tokenAccountInfo.source=null;tokenAccountInfo.originalAmount=new TokenAmount}else{tokenAccountInfo.source=new PublicKey(tokenAccountInfo.source);tokenAccountInfo.originalAmount=TokenAmount.fromBuffer(tokenAccountInfo.originalAmount)}if(tokenAccountInfo.token.equals(this.token)){_context3.next=15;break}throw new Error("Invalid token account token: "+_JSON$stringify(tokenAccountInfo.token)+" !== "+_JSON$stringify(this.token));case 15:return _context3.abrupt("return",tokenAccountInfo);case 16:case"end":return _context3.stop()}}},_callee3,this)}));function accountInfo(_x4){return _ref3.apply(this,arguments)}return accountInfo}()},{key:"transfer",value:function(){var _ref4=_asyncToGenerator(_regeneratorRuntime.mark(function _callee4(owner,source,destination,amount){return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:_context4.t0=sendAndConfirmTransaction;_context4.t1=this.connection;_context4.t2=new Transaction;_context4.next=5;return this.transferInstruction(owner.publicKey,source,destination,amount);case 5:_context4.t3=_context4.sent;_context4.t4=_context4.t2.add.call(_context4.t2,_context4.t3);_context4.t5=owner;_context4.next=10;return(0,_context4.t0)(_context4.t1,_context4.t4,_context4.t5);case 10:return _context4.abrupt("return",_context4.sent);case 11:case"end":return _context4.stop()}}},_callee4,this)}));function transfer(_x5,_x6,_x7,_x8){return _ref4.apply(this,arguments)}return transfer}()},{key:"approve",value:function(){var _ref5=_asyncToGenerator(_regeneratorRuntime.mark(function _callee5(owner,account,delegate,amount){return _regeneratorRuntime.wrap(function _callee5$(_context5){while(1){switch(_context5.prev=_context5.next){case 0:_context5.next=2;return sendAndConfirmTransaction(this.connection,(new Transaction).add(this.approveInstruction(owner.publicKey,account,delegate,amount)),owner);case 2:case"end":return _context5.stop()}}},_callee5,this)}));function approve(_x9,_x10,_x11,_x12){return _ref5.apply(this,arguments)}return approve}()},{key:"revoke",value:function revoke(owner,account,delegate){return this.approve(owner,account,delegate,0)}},{key:"setOwner",value:function(){var _ref6=_asyncToGenerator(_regeneratorRuntime.mark(function _callee6(owner,account,newOwner){return _regeneratorRuntime.wrap(function _callee6$(_context6){while(1){switch(_context6.prev=_context6.next){case 0:_context6.next=2;return sendAndConfirmTransaction(this.connection,(new Transaction).add(this.setOwnerInstruction(owner.publicKey,account,newOwner)),owner);case 2:case"end":return _context6.stop()}}},_callee6,this)}));function setOwner(_x13,_x14,_x15){return _ref6.apply(this,arguments)}return setOwner}()},{key:"transferInstruction",value:function(){var _ref7=_asyncToGenerator(_regeneratorRuntime.mark(function _callee7(owner,source,destination,amount){var accountInfo,userdataLayout,userdata,keys;return _regeneratorRuntime.wrap(function _callee7$(_context7){while(1){switch(_context7.prev=_context7.next){case 0:_context7.next=2;return this.accountInfo(source);case 2:accountInfo=_context7.sent;if(owner.equals(accountInfo.owner)){_context7.next=5;break}throw new Error("Account owner mismatch");case 5:userdataLayout=struct([u32("instruction"),uint64("amount")]);userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:2,amount:new TokenAmount(amount).toBuffer()},userdata);keys=[owner,source,destination];if(accountInfo.source){keys.push(accountInfo.source)}return _context7.abrupt("return",new TransactionInstruction({keys:keys,programId:this.programId,userdata:userdata}));case 11:case"end":return _context7.stop()}}},_callee7,this)}));function transferInstruction(_x16,_x17,_x18,_x19){return _ref7.apply(this,arguments)}return transferInstruction}()},{key:"approveInstruction",value:function approveInstruction(owner,account,delegate,amount){var userdataLayout=struct([u32("instruction"),uint64("amount")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:3,amount:new TokenAmount(amount).toBuffer()},userdata);return new TransactionInstruction({keys:[owner,account,delegate],programId:this.programId,userdata:userdata})}},{key:"revokeInstruction",value:function revokeInstruction(owner,account,delegate){return this.approveInstruction(owner,account,delegate,0)}},{key:"setOwnerInstruction",value:function setOwnerInstruction(owner,account,newOwner){var userdataLayout=struct([u32("instruction")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:4},userdata);return new TransactionInstruction({keys:[owner,account,newOwner],programId:this.programId,userdata:userdata})}}],[{key:"createNewToken",value:function(){var _ref8=_asyncToGenerator(_regeneratorRuntime.mark(function _callee8(connection,owner,supply,name,symbol,decimals){var programId=arguments.length>6&&arguments[6]!==undefined?arguments[6]:SYSTEM_TOKEN_PROGRAM_ID;var tokenAccount,token,initialAccountPublicKey,transaction,userdataLayout,userdata,encodeLength;return _regeneratorRuntime.wrap(function _callee8$(_context8){while(1){switch(_context8.prev=_context8.next){case 0:tokenAccount=new Account;token=new Token(connection,tokenAccount.publicKey,programId);_context8.next=4;return token.newAccount(owner,null);case 4:initialAccountPublicKey=_context8.sent;transaction=void 0;userdataLayout=struct([u32("instruction"),uint64("supply"),u8("decimals"),rustString("name"),rustString("symbol")]);userdata=Buffer.alloc(1024);encodeLength=userdataLayout.encode({instruction:0,supply:supply.toBuffer(),decimals:decimals,name:name,symbol:symbol},userdata);userdata=userdata.slice(0,encodeLength);transaction=SystemProgram.createAccount(owner.publicKey,tokenAccount.publicKey,1,1+userdata.length,programId);_context8.next=13;return sendAndConfirmTransaction(connection,transaction,owner);case 13:transaction=(new Transaction).add({keys:[tokenAccount.publicKey,initialAccountPublicKey],programId:programId,userdata:userdata});transaction.fee=0;_context8.next=17;return sendAndConfirmTransaction(connection,transaction,tokenAccount);case 17:return _context8.abrupt("return",[token,initialAccountPublicKey]);case 18:case"end":return _context8.stop()}}},_callee8,this)}));function createNewToken(_x20,_x21,_x22,_x23,_x24,_x25){return _ref8.apply(this,arguments)}return createNewToken}()}]);return Token}();var sendAndConfirmRawTransaction=function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(connection,rawTransaction){var start,signature,status,statusRetries,duration;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:start=Date.now();_context.next=3;return connection.sendRawTransaction(rawTransaction);case 3:signature=_context.sent;status="";statusRetries=4;case 6:_context.next=8;return connection.getSignatureStatus(signature);case 8:status=_context.sent;if(!(status!=="SignatureNotFound")){_context.next=11;break}return _context.abrupt("break",18);case 11:_context.next=13;return sleep(500);case 13:if(!(--statusRetries<=0)){_context.next=16;break}duration=(Date.now()-start)/1e3;throw new Error("Raw Transaction '"+signature+"' was not confirmed in "+duration.toFixed(2)+" seconds ("+status+")");case 16:_context.next=6;break;case 18:if(!(status==="Confirmed")){_context.next=20;break}return _context.abrupt("return",signature);case 20:throw new Error("Raw transaction "+signature+" failed ("+status+")");case 21:case"end":return _context.stop()}}},_callee,this)}));return function sendAndConfirmRawTransaction(_x,_x2){return _ref.apply(this,arguments)}}();var testnetDefaultChannel="beta";var endpoint={edge:"https://api.edge.testnet.solana.com",beta:"https://api.beta.testnet.solana.com",stable:"https://api.testnet.solana.com"};function testnetChannelEndpoint(channel){if(!channel){return endpoint[testnetDefaultChannel]}if(endpoint[channel]){return endpoint[channel]}throw new Error("Unknown channel: "+channel)}export{Account,BpfLoader,BudgetProgram,Connection,Loader,NativeLoader,PublicKey,SystemProgram,Token,TokenAmount,Transaction,TransactionInstruction,sendAndConfirmTransaction,sendAndConfirmRawTransaction,testnetChannelEndpoint};
import _classCallCheck from"babel-runtime/helpers/classCallCheck";import _createClass from"babel-runtime/helpers/createClass";import nacl from"tweetnacl";import BN from"bn.js";import bs58 from"bs58";import _regeneratorRuntime from"babel-runtime/regenerator";import _asyncToGenerator from"babel-runtime/helpers/asyncToGenerator";import _Promise from"babel-runtime/core-js/promise";import _Object$assign from"babel-runtime/core-js/object/assign";import{blob,struct,u32,offset,u8,seq,ns64}from"buffer-layout";import assert from"assert";import _getIterator from"babel-runtime/core-js/get-iterator";import _Object$keys from"babel-runtime/core-js/object/keys";import _toConsumableArray from"babel-runtime/helpers/toConsumableArray";import{parse,format}from"url";import fetch from"node-fetch";import jayson from"jayson/lib/client/browser";import{struct as struct$1}from"superstruct";import{Client}from"rpc-websockets";import _JSON$stringify from"babel-runtime/core-js/json/stringify";import _Object$getPrototypeOf from"babel-runtime/core-js/object/get-prototype-of";import _possibleConstructorReturn from"babel-runtime/helpers/possibleConstructorReturn";import _get from"babel-runtime/helpers/get";import _inherits from"babel-runtime/helpers/inherits";var PublicKey=function(){function PublicKey(value){_classCallCheck(this,PublicKey);if(typeof value==="string"){if(value.startsWith("0x")){this._bn=new BN(value.substring(2),16)}else{this._bn=new BN(bs58.decode(value))}}else{this._bn=new BN(value)}if(this._bn.byteLength()>32){throw new Error("Invalid public key input")}}_createClass(PublicKey,[{key:"equals",value:function equals(publicKey){return this._bn.eq(publicKey._bn)}},{key:"toBase58",value:function toBase58(){return bs58.encode(this.toBuffer())}},{key:"toBuffer",value:function toBuffer(){var b=this._bn.toArrayLike(Buffer);if(b.length===32){return b}var zeroPad=Buffer.alloc(32);b.copy(zeroPad,32-b.length);return zeroPad}},{key:"toString",value:function toString(){return this.toBase58()}}],[{key:"isPublicKey",value:function isPublicKey(o){return o instanceof PublicKey}}]);return PublicKey}();var Account=function(){function Account(){var secretKey=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;_classCallCheck(this,Account);if(secretKey){this._keypair=nacl.sign.keyPair.fromSecretKey(secretKey)}else{this._keypair=nacl.sign.keyPair()}}_createClass(Account,[{key:"publicKey",get:function get(){return new PublicKey(this._keypair.publicKey)}},{key:"secretKey",get:function get(){return this._keypair.secretKey}}]);return Account}();var publicKey=function publicKey(){var property=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"publicKey";return blob(32,property)};var uint64=function uint64(){var property=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"uint64";return blob(8,property)};var rustString=function rustString(){var property=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"string";var rsl=struct([u32("length"),u32("lengthPadding"),blob(offset(u32(),-8),"chars")],property);var _decode=rsl.decode.bind(rsl);var _encode=rsl.encode.bind(rsl);rsl.decode=function(buffer,offset$$1){var data=_decode(buffer,offset$$1);return data.chars.toString("utf8")};rsl.encode=function(str,buffer,offset$$1){var data={chars:Buffer.from(str,"utf8")};return _encode(data,buffer,offset$$1)};return rsl};var PACKET_DATA_SIZE=512;var TransactionInstruction=function TransactionInstruction(opts){_classCallCheck(this,TransactionInstruction);this.keys=[];this.userdata=Buffer.alloc(0);opts&&_Object$assign(this,opts)};var Transaction=function(){_createClass(Transaction,[{key:"signature",get:function get(){if(this.signatures.length>0){return this.signatures[0].signature}return null}}]);function Transaction(opts){_classCallCheck(this,Transaction);this.signatures=[];this.instructions=[];this.fee=1;opts&&_Object$assign(this,opts)}_createClass(Transaction,[{key:"add",value:function add(){var _this=this;for(var _len=arguments.length,items=Array(_len),_key=0;_key<_len;_key++){items[_key]=arguments[_key]}if(items.length===0){throw new Error("No instructions")}items.forEach(function(item){if(item instanceof Transaction){_this.instructions=_this.instructions.concat(item.instructions)}else{_this.instructions.push(new TransactionInstruction(item))}});return this}},{key:"_getSignData",value:function _getSignData(){var lastId=this.lastId;if(!lastId){throw new Error("Transaction lastId required")}if(this.instructions.length<1){throw new Error("No instructions provided")}var keys=this.signatures.map(function(_ref){var publicKey$$1=_ref.publicKey;return publicKey$$1.toString()});var programIds=[];this.instructions.forEach(function(instruction){var programId=instruction.programId.toString();if(!programIds.includes(programId)){programIds.push(programId)}instruction.keys.map(function(key){return key.toString()}).forEach(function(key){if(!keys.includes(key)){keys.push(key)}})});var instructions=this.instructions.map(function(instruction){var userdata=instruction.userdata,programId=instruction.programId;return{programIdIndex:programIds.indexOf(programId.toString()),keyIndices:instruction.keys.map(function(key){return keys.indexOf(key.toString())}),userdata:userdata}});instructions.forEach(function(instruction){assert(instruction.programIdIndex>=0);instruction.keyIndices.forEach(function(keyIndex){return assert(keyIndex>=0)})});var instructionLayout=struct([u8("programIdIndex"),u32("keyIndicesLength"),u32("keyIndicesLengthPadding"),seq(u8("keyIndex"),offset(u32(),-8),"keyIndices"),u32("userdataLength"),u32("userdataLengthPadding"),seq(u8("userdatum"),offset(u32(),-8),"userdata")]);var signDataLayout=struct([u32("keysLength"),u32("keysLengthPadding"),seq(publicKey("key"),offset(u32(),-8),"keys"),publicKey("lastId"),ns64("fee"),u32("programIdsLength"),u32("programIdsLengthPadding"),seq(publicKey("programId"),offset(u32(),-8),"programIds"),u32("instructionsLength"),u32("instructionsLengthPadding"),seq(instructionLayout,offset(u32(),-8),"instructions")]);var transaction={keys:keys.map(function(key){return new PublicKey(key).toBuffer()}),lastId:Buffer.from(bs58.decode(lastId)),fee:this.fee,programIds:programIds.map(function(programId){return new PublicKey(programId).toBuffer()}),instructions:instructions};var signData=Buffer.alloc(2048);var length=signDataLayout.encode(transaction,signData);signData=signData.slice(0,length);return signData}},{key:"sign",value:function sign(){this.signPartial.apply(this,arguments)}},{key:"signPartial",value:function signPartial(){for(var _len2=arguments.length,partialSigners=Array(_len2),_key2=0;_key2<_len2;_key2++){partialSigners[_key2]=arguments[_key2]}if(partialSigners.length===0){throw new Error("No signers")}var signatures=partialSigners.map(function(accountOrPublicKey){var publicKey$$1=accountOrPublicKey instanceof Account?accountOrPublicKey.publicKey:accountOrPublicKey;return{signature:null,publicKey:publicKey$$1}});this.signatures=signatures;var signData=this._getSignData();partialSigners.forEach(function(accountOrPublicKey,index){if(accountOrPublicKey instanceof PublicKey){return}var signature=nacl.sign.detached(signData,accountOrPublicKey.secretKey);assert(signature.length===64);signatures[index].signature=signature})}},{key:"addSigner",value:function addSigner(signer){var index=this.signatures.findIndex(function(sigpair){return signer.publicKey.equals(sigpair.publicKey)});if(index<0){throw new Error("Unknown signer: "+signer.publicKey.toString())}var signData=this._getSignData();var signature=nacl.sign.detached(signData,signer.secretKey);assert(signature.length===64);this.signatures[index].signature=signature}},{key:"serialize",value:function serialize(){var signatures=this.signatures;if(!signatures){throw new Error("Transaction has not been signed")}var signData=this._getSignData();var wireTransaction=Buffer.alloc(8+signatures.length*64+signData.length);assert(signatures.length<256);wireTransaction.writeUInt8(signatures.length,0);signatures.forEach(function(_ref2,index){var signature=_ref2.signature;assert(signature!==null,"null signature");assert(signature.length===64,"signature has invalid length");Buffer.from(signature).copy(wireTransaction,8+index*64)});signData.copy(wireTransaction,8+signatures.length*64);assert(wireTransaction.length<=PACKET_DATA_SIZE,"Transaction too large: "+wireTransaction.length+" > "+PACKET_DATA_SIZE);return wireTransaction}},{key:"keys",get:function get(){assert(this.instructions.length===1);return this.instructions[0].keys}},{key:"programId",get:function get(){assert(this.instructions.length===1);return this.instructions[0].programId}},{key:"userdata",get:function get(){assert(this.instructions.length===1);return this.instructions[0].userdata}}]);return Transaction}();var SystemProgram=function(){function SystemProgram(){_classCallCheck(this,SystemProgram)}_createClass(SystemProgram,null,[{key:"createAccount",value:function createAccount(from,newAccount,tokens,space,programId){var userdataLayout=struct([u32("instruction"),ns64("tokens"),ns64("space"),publicKey("programId")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:0,tokens:tokens,space:space,programId:programId.toBuffer()},userdata);return(new Transaction).add({keys:[from,newAccount],programId:SystemProgram.programId,userdata:userdata})}},{key:"move",value:function move(from,to,amount){var userdataLayout=struct([u32("instruction"),ns64("amount")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:2,amount:amount},userdata);return(new Transaction).add({keys:[from,to],programId:SystemProgram.programId,userdata:userdata})}},{key:"assign",value:function assign(from,programId){var userdataLayout=struct([u32("instruction"),publicKey("programId")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:1,programId:programId.toBuffer()},userdata);return(new Transaction).add({keys:[from],programId:SystemProgram.programId,userdata:userdata})}},{key:"spawn",value:function spawn(programId){var userdataLayout=struct([u32("instruction")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:3},userdata);return(new Transaction).add({keys:[programId],programId:SystemProgram.programId,userdata:userdata})}},{key:"programId",get:function get(){return new PublicKey("0x000000000000000000000000000000000000000000000000000000000000000")}}]);return SystemProgram}();function sleep(ms){return new _Promise(function(resolve){return setTimeout(resolve,ms)})}function createRpcRequest(url){var _this=this;var server=jayson(function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(request,callback){var options,res,text;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:options={method:"POST",body:request,headers:{"Content-Type":"application/json"}};_context.prev=1;_context.next=4;return fetch(url,options);case 4:res=_context.sent;_context.next=7;return res.text();case 7:text=_context.sent;callback(null,text);_context.next=14;break;case 11:_context.prev=11;_context.t0=_context["catch"](1);callback(_context.t0);case 14:case"end":return _context.stop()}}},_callee,_this,[[1,11]])}));return function(_x,_x2){return _ref.apply(this,arguments)}}());return function(method,args){return new _Promise(function(resolve,reject){server.request(method,args,function(err,response){if(err){reject(err);return}resolve(response)})})}}var GetBalanceRpcResult=struct$1({jsonrpc:struct$1.literal("2.0"),id:"string",error:"any?",result:"number?"});function jsonRpcResult(resultDescription){var jsonRpcVersion=struct$1.literal("2.0");return struct$1.union([struct$1({jsonrpc:jsonRpcVersion,id:"string",error:"any"}),struct$1({jsonrpc:jsonRpcVersion,id:"string",error:"null?",result:resultDescription})])}var AccountInfoResult=struct$1({executable:"boolean",loader:"array",owner:"array",tokens:"number",userdata:"array"});var GetAccountInfoRpcResult=jsonRpcResult(AccountInfoResult);var AccountNotificationResult=struct$1({subscription:"number",result:AccountInfoResult});var ConfirmTransactionRpcResult=jsonRpcResult("boolean");var GetSignatureStatusRpcResult=jsonRpcResult(struct$1.enum(["AccountInUse","Confirmed","GenericFailure","ProgramRuntimeError","SignatureNotFound"]));var GetTransactionCountRpcResult=jsonRpcResult("number");var GetLastId=jsonRpcResult("string");var GetConfirmationTimeRpcResult=jsonRpcResult("number");var RequestAirdropRpcResult=jsonRpcResult("string");var SendTransactionRpcResult=jsonRpcResult("string");var Connection=function(){function Connection(endpoint){_classCallCheck(this,Connection);this._rpcWebSocketConnected=false;this._disableLastIdCaching=false;this._accountChangeSubscriptions={};this._accountChangeSubscriptionCounter=0;var url=parse(endpoint);this._rpcRequest=createRpcRequest(url.href);this._lastIdInfo={lastId:null,seconds:-1,transactionSignatures:[]};url.protocol=url.protocol==="https:"?"wss:":"ws:";url.host="";url.port=String(Number(url.port)+1);if(url.port==="1"){url.port=url.protocol==="wss:"?"8901":"8900"}this._rpcWebSocket=new Client(format(url),{autoconnect:false,max_reconnects:Infinity});this._rpcWebSocket.on("open",this._wsOnOpen.bind(this));this._rpcWebSocket.on("error",this._wsOnError.bind(this));this._rpcWebSocket.on("close",this._wsOnClose.bind(this));this._rpcWebSocket.on("accountNotification",this._wsOnAccountNotification.bind(this))}_createClass(Connection,[{key:"getBalance",value:function(){var _ref2=_asyncToGenerator(_regeneratorRuntime.mark(function _callee2(publicKey){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:_context2.next=2;return this._rpcRequest("getBalance",[publicKey.toBase58()]);case 2:unsafeRes=_context2.sent;res=GetBalanceRpcResult(unsafeRes);if(!res.error){_context2.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context2.abrupt("return",res.result);case 8:case"end":return _context2.stop()}}},_callee2,this)}));function getBalance(_x3){return _ref2.apply(this,arguments)}return getBalance}()},{key:"getAccountInfo",value:function(){var _ref3=_asyncToGenerator(_regeneratorRuntime.mark(function _callee3(publicKey){var unsafeRes,res,result;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:_context3.next=2;return this._rpcRequest("getAccountInfo",[publicKey.toBase58()]);case 2:unsafeRes=_context3.sent;res=GetAccountInfoRpcResult(unsafeRes);if(!res.error){_context3.next=6;break}throw new Error(res.error.message);case 6:result=res.result;assert(typeof result!=="undefined");return _context3.abrupt("return",{executable:result.executable,loader:new PublicKey(result.loader),owner:new PublicKey(result.owner),tokens:result.tokens,userdata:Buffer.from(result.userdata)});case 9:case"end":return _context3.stop()}}},_callee3,this)}));function getAccountInfo(_x4){return _ref3.apply(this,arguments)}return getAccountInfo}()},{key:"confirmTransaction",value:function(){var _ref4=_asyncToGenerator(_regeneratorRuntime.mark(function _callee4(signature){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:_context4.next=2;return this._rpcRequest("confirmTransaction",[signature]);case 2:unsafeRes=_context4.sent;res=ConfirmTransactionRpcResult(unsafeRes);if(!res.error){_context4.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context4.abrupt("return",res.result);case 8:case"end":return _context4.stop()}}},_callee4,this)}));function confirmTransaction(_x5){return _ref4.apply(this,arguments)}return confirmTransaction}()},{key:"getSignatureStatus",value:function(){var _ref5=_asyncToGenerator(_regeneratorRuntime.mark(function _callee5(signature){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee5$(_context5){while(1){switch(_context5.prev=_context5.next){case 0:_context5.next=2;return this._rpcRequest("getSignatureStatus",[signature]);case 2:unsafeRes=_context5.sent;res=GetSignatureStatusRpcResult(unsafeRes);if(!res.error){_context5.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context5.abrupt("return",res.result);case 8:case"end":return _context5.stop()}}},_callee5,this)}));function getSignatureStatus(_x6){return _ref5.apply(this,arguments)}return getSignatureStatus}()},{key:"getTransactionCount",value:function(){var _ref6=_asyncToGenerator(_regeneratorRuntime.mark(function _callee6(){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee6$(_context6){while(1){switch(_context6.prev=_context6.next){case 0:_context6.next=2;return this._rpcRequest("getTransactionCount",[]);case 2:unsafeRes=_context6.sent;res=GetTransactionCountRpcResult(unsafeRes);if(!res.error){_context6.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context6.abrupt("return",Number(res.result));case 8:case"end":return _context6.stop()}}},_callee6,this)}));function getTransactionCount(){return _ref6.apply(this,arguments)}return getTransactionCount}()},{key:"getLastId",value:function(){var _ref7=_asyncToGenerator(_regeneratorRuntime.mark(function _callee7(){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee7$(_context7){while(1){switch(_context7.prev=_context7.next){case 0:_context7.next=2;return this._rpcRequest("getLastId",[]);case 2:unsafeRes=_context7.sent;res=GetLastId(unsafeRes);if(!res.error){_context7.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context7.abrupt("return",res.result);case 8:case"end":return _context7.stop()}}},_callee7,this)}));function getLastId(){return _ref7.apply(this,arguments)}return getLastId}()},{key:"getConfirmationTime",value:function(){var _ref8=_asyncToGenerator(_regeneratorRuntime.mark(function _callee8(){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee8$(_context8){while(1){switch(_context8.prev=_context8.next){case 0:_context8.next=2;return this._rpcRequest("getConfirmationTime",[]);case 2:unsafeRes=_context8.sent;res=GetConfirmationTimeRpcResult(unsafeRes);if(!res.error){_context8.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context8.abrupt("return",Number(res.result));case 8:case"end":return _context8.stop()}}},_callee8,this)}));function getConfirmationTime(){return _ref8.apply(this,arguments)}return getConfirmationTime}()},{key:"requestAirdrop",value:function(){var _ref9=_asyncToGenerator(_regeneratorRuntime.mark(function _callee9(to,amount){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee9$(_context9){while(1){switch(_context9.prev=_context9.next){case 0:_context9.next=2;return this._rpcRequest("requestAirdrop",[to.toBase58(),amount]);case 2:unsafeRes=_context9.sent;res=RequestAirdropRpcResult(unsafeRes);if(!res.error){_context9.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");return _context9.abrupt("return",res.result);case 8:case"end":return _context9.stop()}}},_callee9,this)}));function requestAirdrop(_x7,_x8){return _ref9.apply(this,arguments)}return requestAirdrop}()},{key:"sendTransaction",value:function(){var _ref10=_asyncToGenerator(_regeneratorRuntime.mark(function _callee10(transaction){for(var _len=arguments.length,signers=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){signers[_key-1]=arguments[_key]}var _seconds,signature,attempts,startTime,_lastId,wireTransaction;return _regeneratorRuntime.wrap(function _callee10$(_context10){while(1){switch(_context10.prev=_context10.next){case 0:_seconds=(new Date).getSeconds();if(!(this._lastIdInfo.lastId!=null&&this._lastIdInfo.seconds===_seconds)){_context10.next=11;break}transaction.lastId=this._lastIdInfo.lastId;transaction.sign.apply(transaction,signers);if(transaction.signature){_context10.next=6;break}throw new Error("!signature");case 6:signature=transaction.signature.toString();if(this._lastIdInfo.transactionSignatures.includes(signature)){_context10.next=11;break}this._lastIdInfo.transactionSignatures.push(signature);if(this._disableLastIdCaching){this._lastIdInfo.seconds=-1}return _context10.abrupt("break",28);case 11:attempts=0;startTime=Date.now();case 13:_context10.next=15;return this.getLastId();case 15:_lastId=_context10.sent;if(!(this._lastIdInfo.lastId!=_lastId)){_context10.next=19;break}this._lastIdInfo={lastId:_lastId,seconds:(new Date).getSeconds(),transactionSignatures:[]};return _context10.abrupt("break",26);case 19:if(!(attempts===8)){_context10.next=21;break}throw new Error("Unable to obtain a new last id after "+(Date.now()-startTime)+"ms");case 21:_context10.next=23;return sleep(250);case 23:++attempts;case 24:_context10.next=13;break;case 26:_context10.next=0;break;case 28:wireTransaction=transaction.serialize();_context10.next=31;return this.sendRawTransaction(wireTransaction);case 31:return _context10.abrupt("return",_context10.sent);case 32:case"end":return _context10.stop()}}},_callee10,this)}));function sendTransaction(_x9){return _ref10.apply(this,arguments)}return sendTransaction}()},{key:"sendRawTransaction",value:function(){var _ref11=_asyncToGenerator(_regeneratorRuntime.mark(function _callee11(rawTransaction){var unsafeRes,res;return _regeneratorRuntime.wrap(function _callee11$(_context11){while(1){switch(_context11.prev=_context11.next){case 0:_context11.next=2;return this._rpcRequest("sendTransaction",[[].concat(_toConsumableArray(rawTransaction))]);case 2:unsafeRes=_context11.sent;res=SendTransactionRpcResult(unsafeRes);if(!res.error){_context11.next=6;break}throw new Error(res.error.message);case 6:assert(typeof res.result!=="undefined");assert(res.result);return _context11.abrupt("return",res.result);case 9:case"end":return _context11.stop()}}},_callee11,this)}));function sendRawTransaction(_x10){return _ref11.apply(this,arguments)}return sendRawTransaction}()},{key:"_wsOnOpen",value:function _wsOnOpen(){this._rpcWebSocketConnected=true;this._updateSubscriptions()}},{key:"_wsOnError",value:function _wsOnError(err){console.log("ws error:",err.message)}},{key:"_wsOnClose",value:function _wsOnClose(code,message){if(code!==1e3){console.log("ws close:",code,message)}this._rpcWebSocketConnected=false}},{key:"_wsOnAccountNotification",value:function _wsOnAccountNotification(notification){var res=AccountNotificationResult(notification);if(res.error){throw new Error(res.error.message)}var keys=_Object$keys(this._accountChangeSubscriptions).map(Number);var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=_getIterator(keys),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var id=_step.value;var sub=this._accountChangeSubscriptions[id];if(sub.subscriptionId===res.subscription){var result=res.result;assert(typeof result!=="undefined");sub.callback({executable:result.executable,loader:new PublicKey(result.loader),owner:new PublicKey(result.owner),tokens:result.tokens,userdata:Buffer.from(result.userdata)});return true}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}}},{key:"_updateSubscriptions",value:function(){var _ref12=_asyncToGenerator(_regeneratorRuntime.mark(function _callee12(){var keys,_iteratorNormalCompletion2,_didIteratorError2,_iteratorError2,_iterator2,_step2,id,_iteratorNormalCompletion3,_didIteratorError3,_iteratorError3,_iterator3,_step3,_id,_accountChangeSubscri,_subscriptionId,_publicKey;return _regeneratorRuntime.wrap(function _callee12$(_context12){while(1){switch(_context12.prev=_context12.next){case 0:keys=_Object$keys(this._accountChangeSubscriptions).map(Number);if(!(keys.length===0)){_context12.next=4;break}this._rpcWebSocket.close();return _context12.abrupt("return");case 4:if(this._rpcWebSocketConnected){_context12.next=26;break}_iteratorNormalCompletion2=true;_didIteratorError2=false;_iteratorError2=undefined;_context12.prev=8;for(_iterator2=_getIterator(keys);!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=true){id=_step2.value;this._accountChangeSubscriptions[id].subscriptionId=null}_context12.next=16;break;case 12:_context12.prev=12;_context12.t0=_context12["catch"](8);_didIteratorError2=true;_iteratorError2=_context12.t0;case 16:_context12.prev=16;_context12.prev=17;if(!_iteratorNormalCompletion2&&_iterator2.return){_iterator2.return()}case 19:_context12.prev=19;if(!_didIteratorError2){_context12.next=22;break}throw _iteratorError2;case 22:return _context12.finish(19);case 23:return _context12.finish(16);case 24:this._rpcWebSocket.connect();return _context12.abrupt("return");case 26:_iteratorNormalCompletion3=true;_didIteratorError3=false;_iteratorError3=undefined;_context12.prev=29;_iterator3=_getIterator(keys);case 31:if(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done){_context12.next=47;break}_id=_step3.value;_accountChangeSubscri=this._accountChangeSubscriptions[_id],_subscriptionId=_accountChangeSubscri.subscriptionId,_publicKey=_accountChangeSubscri.publicKey;if(!(_subscriptionId===null)){_context12.next=44;break}_context12.prev=35;_context12.next=38;return this._rpcWebSocket.call("accountSubscribe",[_publicKey]);case 38:this._accountChangeSubscriptions[_id].subscriptionId=_context12.sent;_context12.next=44;break;case 41:_context12.prev=41;_context12.t1=_context12["catch"](35);console.log("accountSubscribe error for "+_publicKey+": "+_context12.t1.message);case 44:_iteratorNormalCompletion3=true;_context12.next=31;break;case 47:_context12.next=53;break;case 49:_context12.prev=49;_context12.t2=_context12["catch"](29);_didIteratorError3=true;_iteratorError3=_context12.t2;case 53:_context12.prev=53;_context12.prev=54;if(!_iteratorNormalCompletion3&&_iterator3.return){_iterator3.return()}case 56:_context12.prev=56;if(!_didIteratorError3){_context12.next=59;break}throw _iteratorError3;case 59:return _context12.finish(56);case 60:return _context12.finish(53);case 61:case"end":return _context12.stop()}}},_callee12,this,[[8,12,16,24],[17,,19,23],[29,49,53,61],[35,41],[54,,56,60]])}));function _updateSubscriptions(){return _ref12.apply(this,arguments)}return _updateSubscriptions}()},{key:"onAccountChange",value:function onAccountChange(publicKey,callback){var id=++this._accountChangeSubscriptionCounter;this._accountChangeSubscriptions[id]={publicKey:publicKey.toBase58(),callback:callback,subscriptionId:null};this._updateSubscriptions();return id}},{key:"removeAccountChangeListener",value:function(){var _ref13=_asyncToGenerator(_regeneratorRuntime.mark(function _callee13(id){var _subscriptionId2;return _regeneratorRuntime.wrap(function _callee13$(_context13){while(1){switch(_context13.prev=_context13.next){case 0:if(!this._accountChangeSubscriptions[id]){_context13.next=15;break}_subscriptionId2=this._accountChangeSubscriptions[id].subscriptionId;delete this._accountChangeSubscriptions[id];if(!(_subscriptionId2!==null)){_context13.next=12;break}_context13.prev=4;_context13.next=7;return this._rpcWebSocket.call("accountUnsubscribe",[_subscriptionId2]);case 7:_context13.next=12;break;case 9:_context13.prev=9;_context13.t0=_context13["catch"](4);console.log("accountUnsubscribe error:",_context13.t0.message);case 12:this._updateSubscriptions();_context13.next=16;break;case 15:throw new Error("Unknown account change id: "+id);case 16:case"end":return _context13.stop()}}},_callee13,this,[[4,9]])}));function removeAccountChangeListener(_x11){return _ref13.apply(this,arguments)}return removeAccountChangeListener}()}]);return Connection}();var sendAndConfirmTransaction=function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(connection,transaction){for(var _len=arguments.length,signers=Array(_len>2?_len-2:0),_key=2;_key<_len;_key++){signers[_key-2]=arguments[_key]}var sendRetries,signature,start,status,statusRetries,duration;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:sendRetries=10;signature=void 0;case 2:start=Date.now();_context.next=5;return connection.sendTransaction.apply(connection,[transaction].concat(signers));case 5:signature=_context.sent;status="SignatureNotFound";statusRetries=4;case 8:_context.next=10;return connection.getSignatureStatus(signature);case 10:status=_context.sent;if(!(status!=="SignatureNotFound")){_context.next=13;break}return _context.abrupt("break",20);case 13:_context.next=15;return sleep(500);case 15:if(!(--statusRetries<=0)){_context.next=18;break}duration=(Date.now()-start)/1e3;throw new Error("Transaction '"+signature+"' was not confirmed in "+duration.toFixed(2)+" seconds ("+status+")");case 18:_context.next=8;break;case 20:if(!(status==="Confirmed")){_context.next=22;break}return _context.abrupt("break",28);case 22:if(!(status!=="AccountInUse"||--sendRetries<=0)){_context.next=24;break}throw new Error("Transaction "+signature+" failed ("+status+")");case 24:_context.next=26;return sleep(Math.random()*100);case 26:_context.next=2;break;case 28:assert(signature!==undefined);return _context.abrupt("return",signature);case 30:case"end":return _context.stop()}}},_callee,this)}));return function sendAndConfirmTransaction(_x,_x2){return _ref.apply(this,arguments)}}();var Loader=function(){_createClass(Loader,null,[{key:"chunkSize",get:function get(){return 256}}]);function Loader(connection,programId){_classCallCheck(this,Loader);_Object$assign(this,{connection:connection,programId:programId})}_createClass(Loader,[{key:"load",value:function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(program,data){var userdataLayout,chunkSize,offset$$1,array,transactions,bytes,userdata,transaction;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:userdataLayout=struct([u32("instruction"),u32("offset"),u32("bytesLength"),u32("bytesLengthPadding"),seq(u8("byte"),offset(u32(),-8),"bytes")]);chunkSize=Loader.chunkSize;offset$$1=0;array=data;transactions=[];case 5:if(!(array.length>0)){_context.next=19;break}bytes=array.slice(0,chunkSize);userdata=Buffer.alloc(chunkSize+16);userdataLayout.encode({instruction:0,offset:offset$$1,bytes:bytes},userdata);transaction=(new Transaction).add({keys:[program.publicKey],programId:this.programId,userdata:userdata});transactions.push(sendAndConfirmTransaction(this.connection,transaction,program));if(!(transactions.length===8)){_context.next=15;break}_context.next=14;return _Promise.all(transactions);case 14:transactions=[];case 15:offset$$1+=chunkSize;array=array.slice(chunkSize);_context.next=5;break;case 19:_context.next=21;return _Promise.all(transactions);case 21:case"end":return _context.stop()}}},_callee,this)}));function load(_x,_x2){return _ref.apply(this,arguments)}return load}()},{key:"finalize",value:function(){var _ref2=_asyncToGenerator(_regeneratorRuntime.mark(function _callee2(program){var userdataLayout,userdata,transaction;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:userdataLayout=struct([u32("instruction")]);userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:1},userdata);transaction=new Transaction;transaction.add({keys:[program.publicKey],programId:this.programId,userdata:userdata});transaction.add(SystemProgram.spawn(program.publicKey));_context2.next=8;return sendAndConfirmTransaction(this.connection,transaction,program);case 8:case"end":return _context2.stop()}}},_callee2,this)}));function finalize(_x3){return _ref2.apply(this,arguments)}return finalize}()}]);return Loader}();var BpfLoader=function(){function BpfLoader(){_classCallCheck(this,BpfLoader)}_createClass(BpfLoader,null,[{key:"load",value:function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(connection,owner,elf){var programAccount,transaction,loader;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:programAccount=new Account;transaction=SystemProgram.createAccount(owner.publicKey,programAccount.publicKey,1+Math.ceil(elf.length/Loader.chunkSize)+1,elf.length,BpfLoader.programId);_context.next=4;return sendAndConfirmTransaction(connection,transaction,owner);case 4:loader=new Loader(connection,BpfLoader.programId);_context.next=7;return loader.load(programAccount,elf);case 7:_context.next=9;return loader.finalize(programAccount);case 9:return _context.abrupt("return",programAccount.publicKey);case 10:case"end":return _context.stop()}}},_callee,this)}));function load(_x,_x2,_x3){return _ref.apply(this,arguments)}return load}()},{key:"programId",get:function get(){return new PublicKey("0x8000000000000000000000000000000000000000000000000000000000000000")}}]);return BpfLoader}();function serializePayment(payment){var toData=payment.to.toBuffer();var userdata=Buffer.alloc(8+toData.length);userdata.writeUInt32LE(payment.amount,0);toData.copy(userdata,8);return userdata}function serializeDate(when){var userdata=Buffer.alloc(8+20);userdata.writeUInt32LE(20,0);function iso(date){function pad(number){if(number<10){return"0"+number}return number}return date.getUTCFullYear()+"-"+pad(date.getUTCMonth()+1)+"-"+pad(date.getUTCDate())+"T"+pad(date.getUTCHours())+":"+pad(date.getUTCMinutes())+":"+pad(date.getUTCSeconds())+"Z"}userdata.write(iso(when),8);return userdata}function serializeCondition(condition){switch(condition.type){case"timestamp":{var date=serializeDate(condition.when);var _from=condition.from.toBuffer();var userdata=Buffer.alloc(4+date.length+_from.length);userdata.writeUInt32LE(0,0);date.copy(userdata,4);_from.copy(userdata,4+date.length);return userdata}case"signature":{var userdataLayout=struct([u32("condition"),publicKey("from")]);var _from2=condition.from.toBuffer();var _userdata=Buffer.alloc(4+_from2.length);userdataLayout.encode({instruction:1,from:_from2},_userdata);return _userdata}default:throw new Error("Unknown condition type: "+condition.type)}}var BudgetProgram=function(){function BudgetProgram(){_classCallCheck(this,BudgetProgram)}_createClass(BudgetProgram,null,[{key:"timestampCondition",value:function timestampCondition(from,when){return{type:"timestamp",from:from,when:when}}},{key:"signatureCondition",value:function signatureCondition(from){return{type:"signature",from:from}}},{key:"pay",value:function pay(from,program,to,amount){var userdata=Buffer.alloc(1024);var pos=0;userdata.writeUInt32LE(0,pos);pos+=4;for(var _len=arguments.length,conditions=Array(_len>4?_len-4:0),_key=4;_key<_len;_key++){conditions[_key-4]=arguments[_key]}switch(conditions.length){case 0:userdata.writeUInt32LE(0,pos);pos+=4;{var payment=serializePayment({amount:amount,to:to});payment.copy(userdata,pos);pos+=payment.length}return(new Transaction).add({keys:[from,to],programId:this.programId,userdata:userdata.slice(0,pos)});case 1:userdata.writeUInt32LE(1,pos);pos+=4;{var condition=conditions[0];var conditionData=serializeCondition(condition);conditionData.copy(userdata,pos);pos+=conditionData.length;var paymentData=serializePayment({amount:amount,to:to});paymentData.copy(userdata,pos);pos+=paymentData.length}return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata.slice(0,pos)});case 2:userdata.writeUInt32LE(2,pos);pos+=4;var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=_getIterator(conditions),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var _condition=_step.value;var _conditionData=serializeCondition(_condition);_conditionData.copy(userdata,pos);pos+=_conditionData.length;var _paymentData=serializePayment({amount:amount,to:to});_paymentData.copy(userdata,pos);pos+=_paymentData.length}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata.slice(0,pos)});default:throw new Error("A maximum of two conditions are support: "+conditions.length+" provided")}}},{key:"payOnBoth",value:function payOnBoth(from,program,to,amount,condition1,condition2){var userdata=Buffer.alloc(1024);var pos=0;userdata.writeUInt32LE(0,pos);pos+=4;userdata.writeUInt32LE(3,pos);pos+=4;var _arr=[condition1,condition2];for(var _i=0;_i<_arr.length;_i++){var condition=_arr[_i];var conditionData=serializeCondition(condition);conditionData.copy(userdata,pos);pos+=conditionData.length}var paymentData=serializePayment({amount:amount,to:to});paymentData.copy(userdata,pos);pos+=paymentData.length;return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata.slice(0,pos)})}},{key:"applyTimestamp",value:function applyTimestamp(from,program,to,when){var whenData=serializeDate(when);var userdata=Buffer.alloc(4+whenData.length);userdata.writeUInt32LE(1,0);whenData.copy(userdata,4);return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata})}},{key:"applySignature",value:function applySignature(from,program,to){var userdataLayout=struct([u32("instruction")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:2},userdata);return(new Transaction).add({keys:[from,program,to],programId:this.programId,userdata:userdata})}},{key:"programId",get:function get(){return new PublicKey("0x8100000000000000000000000000000000000000000000000000000000000000")}},{key:"space",get:function get(){return 128}}]);return BudgetProgram}();var NativeLoader=function(){function NativeLoader(){_classCallCheck(this,NativeLoader)}_createClass(NativeLoader,null,[{key:"load",value:function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(connection,owner,programName){var bytes,programAccount,transaction,loader;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:bytes=[].concat(_toConsumableArray(Buffer.from(programName)));programAccount=new Account;transaction=SystemProgram.createAccount(owner.publicKey,programAccount.publicKey,1+1+1,bytes.length+1,NativeLoader.programId);_context.next=5;return sendAndConfirmTransaction(connection,transaction,owner);case 5:loader=new Loader(connection,NativeLoader.programId);_context.next=8;return loader.load(programAccount,bytes);case 8:_context.next=10;return loader.finalize(programAccount);case 10:return _context.abrupt("return",programAccount.publicKey);case 11:case"end":return _context.stop()}}},_callee,this)}));function load(_x,_x2,_x3){return _ref.apply(this,arguments)}return load}()},{key:"programId",get:function get(){return new PublicKey("0x100000000000000000000000000000000000000000000000000000000000000")}}]);return NativeLoader}();var TokenAmount=function(_BN){_inherits(TokenAmount,_BN);function TokenAmount(){_classCallCheck(this,TokenAmount);return _possibleConstructorReturn(this,(TokenAmount.__proto__||_Object$getPrototypeOf(TokenAmount)).apply(this,arguments))}_createClass(TokenAmount,[{key:"toBuffer",value:function toBuffer(){var a=_get(TokenAmount.prototype.__proto__||_Object$getPrototypeOf(TokenAmount.prototype),"toArray",this).call(this).reverse();var b=Buffer.from(a);if(b.length===8){return b}assert(b.length<8,"TokenAmount too large");var zeroPad=Buffer.alloc(8);b.copy(zeroPad);return zeroPad}}],[{key:"fromBuffer",value:function fromBuffer(buffer){assert(buffer.length===8,"Invalid buffer length: "+buffer.length);return new BN([].concat(_toConsumableArray(buffer)).reverse().map(function(i){return("00"+i.toString(16)).slice(-2)}).join(""),16)}}]);return TokenAmount}(BN);var TokenInfoLayout=struct([uint64("supply"),u8("decimals"),rustString("name"),rustString("symbol")]);var TokenAccountInfoLayout=struct([publicKey("token"),publicKey("owner"),uint64("amount"),u8("sourceOption"),publicKey("source"),uint64("originalAmount")]);var SYSTEM_TOKEN_PROGRAM_ID=new PublicKey("0x8300000000000000000000000000000000000000000000000000000000000000");var Token=function(){function Token(connection,token){var programId=arguments.length>2&&arguments[2]!==undefined?arguments[2]:SYSTEM_TOKEN_PROGRAM_ID;_classCallCheck(this,Token);_Object$assign(this,{connection:connection,token:token,programId:programId})}_createClass(Token,[{key:"newAccount",value:function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(owner){var source=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var tokenAccount,transaction,userdataLayout,userdata,keys;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:tokenAccount=new Account;transaction=void 0;userdataLayout=struct([u32("instruction")]);userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:1},userdata);transaction=SystemProgram.createAccount(owner.publicKey,tokenAccount.publicKey,1,1+TokenAccountInfoLayout.span,this.programId);_context.next=8;return sendAndConfirmTransaction(this.connection,transaction,owner);case 8:keys=[tokenAccount.publicKey,owner.publicKey,this.token];if(source){keys.push(source)}transaction=(new Transaction).add({keys:keys,programId:this.programId,userdata:userdata});transaction.fee=0;_context.next=14;return sendAndConfirmTransaction(this.connection,transaction,tokenAccount);case 14:return _context.abrupt("return",tokenAccount.publicKey);case 15:case"end":return _context.stop()}}},_callee,this)}));function newAccount(_x2){return _ref.apply(this,arguments)}return newAccount}()},{key:"tokenInfo",value:function(){var _ref2=_asyncToGenerator(_regeneratorRuntime.mark(function _callee2(){var accountInfo,userdata,tokenInfo;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:_context2.next=2;return this.connection.getAccountInfo(this.token);case 2:accountInfo=_context2.sent;if(accountInfo.owner.equals(this.programId)){_context2.next=5;break}throw new Error("Invalid token owner: "+_JSON$stringify(accountInfo.owner));case 5:userdata=Buffer.from(accountInfo.userdata);if(!(userdata.readUInt8(0)!==1)){_context2.next=8;break}throw new Error("Invalid token userdata");case 8:tokenInfo=TokenInfoLayout.decode(userdata,1);tokenInfo.supply=TokenAmount.fromBuffer(tokenInfo.supply);return _context2.abrupt("return",tokenInfo);case 11:case"end":return _context2.stop()}}},_callee2,this)}));function tokenInfo(){return _ref2.apply(this,arguments)}return tokenInfo}()},{key:"accountInfo",value:function(){var _ref3=_asyncToGenerator(_regeneratorRuntime.mark(function _callee3(account){var accountInfo,userdata,tokenAccountInfo;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:_context3.next=2;return this.connection.getAccountInfo(account);case 2:accountInfo=_context3.sent;if(accountInfo.owner.equals(this.programId)){_context3.next=5;break}throw new Error("Invalid token account owner");case 5:userdata=Buffer.from(accountInfo.userdata);if(!(userdata.readUInt8(0)!==2)){_context3.next=8;break}throw new Error("Invalid token account userdata");case 8:tokenAccountInfo=TokenAccountInfoLayout.decode(userdata,1);tokenAccountInfo.token=new PublicKey(tokenAccountInfo.token);tokenAccountInfo.owner=new PublicKey(tokenAccountInfo.owner);tokenAccountInfo.amount=TokenAmount.fromBuffer(tokenAccountInfo.amount);if(tokenAccountInfo.sourceOption===0){tokenAccountInfo.source=null;tokenAccountInfo.originalAmount=new TokenAmount}else{tokenAccountInfo.source=new PublicKey(tokenAccountInfo.source);tokenAccountInfo.originalAmount=TokenAmount.fromBuffer(tokenAccountInfo.originalAmount)}if(tokenAccountInfo.token.equals(this.token)){_context3.next=15;break}throw new Error("Invalid token account token: "+_JSON$stringify(tokenAccountInfo.token)+" !== "+_JSON$stringify(this.token));case 15:return _context3.abrupt("return",tokenAccountInfo);case 16:case"end":return _context3.stop()}}},_callee3,this)}));function accountInfo(_x4){return _ref3.apply(this,arguments)}return accountInfo}()},{key:"transfer",value:function(){var _ref4=_asyncToGenerator(_regeneratorRuntime.mark(function _callee4(owner,source,destination,amount){return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:_context4.t0=sendAndConfirmTransaction;_context4.t1=this.connection;_context4.t2=new Transaction;_context4.next=5;return this.transferInstruction(owner.publicKey,source,destination,amount);case 5:_context4.t3=_context4.sent;_context4.t4=_context4.t2.add.call(_context4.t2,_context4.t3);_context4.t5=owner;_context4.next=10;return(0,_context4.t0)(_context4.t1,_context4.t4,_context4.t5);case 10:return _context4.abrupt("return",_context4.sent);case 11:case"end":return _context4.stop()}}},_callee4,this)}));function transfer(_x5,_x6,_x7,_x8){return _ref4.apply(this,arguments)}return transfer}()},{key:"approve",value:function(){var _ref5=_asyncToGenerator(_regeneratorRuntime.mark(function _callee5(owner,account,delegate,amount){return _regeneratorRuntime.wrap(function _callee5$(_context5){while(1){switch(_context5.prev=_context5.next){case 0:_context5.next=2;return sendAndConfirmTransaction(this.connection,(new Transaction).add(this.approveInstruction(owner.publicKey,account,delegate,amount)),owner);case 2:case"end":return _context5.stop()}}},_callee5,this)}));function approve(_x9,_x10,_x11,_x12){return _ref5.apply(this,arguments)}return approve}()},{key:"revoke",value:function revoke(owner,account,delegate){return this.approve(owner,account,delegate,0)}},{key:"setOwner",value:function(){var _ref6=_asyncToGenerator(_regeneratorRuntime.mark(function _callee6(owner,account,newOwner){return _regeneratorRuntime.wrap(function _callee6$(_context6){while(1){switch(_context6.prev=_context6.next){case 0:_context6.next=2;return sendAndConfirmTransaction(this.connection,(new Transaction).add(this.setOwnerInstruction(owner.publicKey,account,newOwner)),owner);case 2:case"end":return _context6.stop()}}},_callee6,this)}));function setOwner(_x13,_x14,_x15){return _ref6.apply(this,arguments)}return setOwner}()},{key:"transferInstruction",value:function(){var _ref7=_asyncToGenerator(_regeneratorRuntime.mark(function _callee7(owner,source,destination,amount){var accountInfo,userdataLayout,userdata,keys;return _regeneratorRuntime.wrap(function _callee7$(_context7){while(1){switch(_context7.prev=_context7.next){case 0:_context7.next=2;return this.accountInfo(source);case 2:accountInfo=_context7.sent;if(owner.equals(accountInfo.owner)){_context7.next=5;break}throw new Error("Account owner mismatch");case 5:userdataLayout=struct([u32("instruction"),uint64("amount")]);userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:2,amount:new TokenAmount(amount).toBuffer()},userdata);keys=[owner,source,destination];if(accountInfo.source){keys.push(accountInfo.source)}return _context7.abrupt("return",new TransactionInstruction({keys:keys,programId:this.programId,userdata:userdata}));case 11:case"end":return _context7.stop()}}},_callee7,this)}));function transferInstruction(_x16,_x17,_x18,_x19){return _ref7.apply(this,arguments)}return transferInstruction}()},{key:"approveInstruction",value:function approveInstruction(owner,account,delegate,amount){var userdataLayout=struct([u32("instruction"),uint64("amount")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:3,amount:new TokenAmount(amount).toBuffer()},userdata);return new TransactionInstruction({keys:[owner,account,delegate],programId:this.programId,userdata:userdata})}},{key:"revokeInstruction",value:function revokeInstruction(owner,account,delegate){return this.approveInstruction(owner,account,delegate,0)}},{key:"setOwnerInstruction",value:function setOwnerInstruction(owner,account,newOwner){var userdataLayout=struct([u32("instruction")]);var userdata=Buffer.alloc(userdataLayout.span);userdataLayout.encode({instruction:4},userdata);return new TransactionInstruction({keys:[owner,account,newOwner],programId:this.programId,userdata:userdata})}}],[{key:"createNewToken",value:function(){var _ref8=_asyncToGenerator(_regeneratorRuntime.mark(function _callee8(connection,owner,supply,name,symbol,decimals){var programId=arguments.length>6&&arguments[6]!==undefined?arguments[6]:SYSTEM_TOKEN_PROGRAM_ID;var tokenAccount,token,initialAccountPublicKey,transaction,userdataLayout,userdata,encodeLength;return _regeneratorRuntime.wrap(function _callee8$(_context8){while(1){switch(_context8.prev=_context8.next){case 0:tokenAccount=new Account;token=new Token(connection,tokenAccount.publicKey,programId);_context8.next=4;return token.newAccount(owner,null);case 4:initialAccountPublicKey=_context8.sent;transaction=void 0;userdataLayout=struct([u32("instruction"),uint64("supply"),u8("decimals"),rustString("name"),rustString("symbol")]);userdata=Buffer.alloc(1024);encodeLength=userdataLayout.encode({instruction:0,supply:supply.toBuffer(),decimals:decimals,name:name,symbol:symbol},userdata);userdata=userdata.slice(0,encodeLength);transaction=SystemProgram.createAccount(owner.publicKey,tokenAccount.publicKey,1,1+userdata.length,programId);_context8.next=13;return sendAndConfirmTransaction(connection,transaction,owner);case 13:transaction=(new Transaction).add({keys:[tokenAccount.publicKey,initialAccountPublicKey],programId:programId,userdata:userdata});transaction.fee=0;_context8.next=17;return sendAndConfirmTransaction(connection,transaction,tokenAccount);case 17:return _context8.abrupt("return",[token,initialAccountPublicKey]);case 18:case"end":return _context8.stop()}}},_callee8,this)}));function createNewToken(_x20,_x21,_x22,_x23,_x24,_x25){return _ref8.apply(this,arguments)}return createNewToken}()}]);return Token}();var sendAndConfirmRawTransaction=function(){var _ref=_asyncToGenerator(_regeneratorRuntime.mark(function _callee(connection,rawTransaction){var start,signature,status,statusRetries,duration;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:start=Date.now();_context.next=3;return connection.sendRawTransaction(rawTransaction);case 3:signature=_context.sent;status="";statusRetries=4;case 6:_context.next=8;return connection.getSignatureStatus(signature);case 8:status=_context.sent;if(!(status!=="SignatureNotFound")){_context.next=11;break}return _context.abrupt("break",18);case 11:_context.next=13;return sleep(500);case 13:if(!(--statusRetries<=0)){_context.next=16;break}duration=(Date.now()-start)/1e3;throw new Error("Raw Transaction '"+signature+"' was not confirmed in "+duration.toFixed(2)+" seconds ("+status+")");case 16:_context.next=6;break;case 18:if(!(status==="Confirmed")){_context.next=20;break}return _context.abrupt("return",signature);case 20:throw new Error("Raw transaction "+signature+" failed ("+status+")");case 21:case"end":return _context.stop()}}},_callee,this)}));return function sendAndConfirmRawTransaction(_x,_x2){return _ref.apply(this,arguments)}}();var testnetDefaultChannel="beta";var endpoint={edge:"https://api.edge.testnet.solana.com",beta:"https://api.beta.testnet.solana.com",stable:"https://api.testnet.solana.com"};function testnetChannelEndpoint(channel){if(!channel){return endpoint[testnetDefaultChannel]}if(endpoint[channel]){return endpoint[channel]}throw new Error("Unknown channel: "+channel)}export{Account,BpfLoader,BudgetProgram,Connection,Loader,NativeLoader,PublicKey,SystemProgram,Token,TokenAmount,Transaction,TransactionInstruction,sendAndConfirmTransaction,sendAndConfirmRawTransaction,testnetChannelEndpoint};
//# sourceMappingURL=index.esm.js.map

@@ -63,3 +63,3 @@ /**

getLastId(): Promise<TransactionId>;
getFinality(): Promise<number>;
getConfirmationTime(): Promise<number>;
requestAirdrop(

@@ -66,0 +66,0 @@ to: PublicKey,

{
"name": "@solana/web3.js",
"version": "0.14.1",
"version": "0.14.2",
"description": "Solana Javascript API",

@@ -5,0 +5,0 @@ "keywords": [

@@ -133,5 +133,5 @@ // @flow

/**
* Expected JSON RPC response for the "getFinality" message
* Expected JSON RPC response for the "getConfirmationTime" message
*/
const GetFinalityRpcResult = jsonRpcResult('number');
const GetConfirmationTimeRpcResult = jsonRpcResult('number');

@@ -337,7 +337,7 @@ /**

/**
* Return the current network finality time in millliseconds
* Return the current cluster confirmation time in millliseconds
*/
async getFinality(): Promise<number> {
const unsafeRes = await this._rpcRequest('getFinality', []);
const res = GetFinalityRpcResult(unsafeRes);
async getConfirmationTime(): Promise<number> {
const unsafeRes = await this._rpcRequest('getConfirmationTime', []);
const res = GetConfirmationTimeRpcResult(unsafeRes);
if (res.error) {

@@ -344,0 +344,0 @@ throw new Error(res.error.message);

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc