@asichain/asi-wallet-sdk 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/dist/index.cjs.js +2 -1
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.esm.js +2 -1
- package/dist/index.esm.js.map +1 -0
- package/dist/services/AssetsService/index.d.ts +1 -0
- package/dist/utils/decorators/index.d.ts +5 -0
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
# ASI Chain: Wallet SDK
|
|
4
4
|
|
|
5
5
|
[](https://github.com/asi-alliance/asi-chain-wallet-sdk)
|
|
6
|
-
[](https://github.com/asi-alliance/asi-chain-wallet-sdk/releases)
|
|
7
6
|
[](LICENSE)
|
|
8
7
|
[](https://docs.asichain.io)
|
|
8
|
+
</br>
|
|
9
|
+

|
|
9
10
|
|
|
10
11
|
<h3>TypeScript SDK for wallet management and blockchain interaction on ASI Chain</h3>
|
|
11
12
|
|
|
@@ -52,7 +53,7 @@ ASI Chain Wallet SDK is a lightweight, modular TypeScript library designed to si
|
|
|
52
53
|
## Installation
|
|
53
54
|
|
|
54
55
|
```bash
|
|
55
|
-
npm install asi-wallet-sdk
|
|
56
|
+
npm install @asichain/asi-wallet-sdk
|
|
56
57
|
```
|
|
57
58
|
|
|
58
59
|
---
|
|
@@ -188,7 +189,7 @@ See [AssetsService](docs/SERVICES.md) for full API reference. For amount convers
|
|
|
188
189
|
- **Address Derivation**: keccak256 hash → blake2b checksum → Base58 encoding with [chain prefix](src/utils/constants)
|
|
189
190
|
- **Encryption**: PBKDF2 (100,000 iterations) → AES-GCM via [CryptoService](docs/SERVICES.md)
|
|
190
191
|
- **Mnemonic**: BIP-39 standard (12/24 words) via [MnemonicService](docs/SERVICES.md)
|
|
191
|
-
- **Derivation Path**: BIP-44
|
|
192
|
+
- **Derivation Path**: BIP-44 via [KeyDerivationService](docs/SERVICES.md)
|
|
192
193
|
|
|
193
194
|
---
|
|
194
195
|
|
package/dist/index.cjs.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("bs58"),t=require("bip39"),r=require("buffer"),s=require("tiny-secp256k1"),o=require("bip32"),a=require("@noble/secp256k1"),n=require("blakejs"),i=require("js-sha3"),l=require("axios");function c(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(r){if("default"!==r){var s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:function(){return e[r]}})}}),t.default=e,Object.freeze(t)}var d=c(t),u=c(s);const p={coinId:"000000",version:"00"},y={BASE_FEE:.0025,VARIATION_RANGE:.1,LABEL:"ASI",TRANSFER:"0.0025",DEPLOY:"0.0025"},h=BigInt(10)**BigInt(8),E={coinType:60,account:0,change:0,index:0};var g;class m{}g=m,m.generateRandomGasFee=()=>{const e=2*(Math.random()-.5)*y.VARIATION_RANGE;return(y.BASE_FEE*(1+e)).toFixed(4)},m.getGasFeeAsNumber=()=>y.BASE_FEE,m.formatGasFee=e=>`${e||g.generateRandomGasFee()} ${y.LABEL}`;const I=t=>{const r=w(t);return e.encode(r)},f=t=>e.decode(t),w=e=>{const t=new Uint8Array(e.length/2);for(let r=0;r<e.length;r+=2)t[r/2]=parseInt(e.substr(r,2),16);return t},N=e=>Array.from(e,e=>e.toString(16).padStart(2,"0")).join(""),A=e=>{const t=new Uint8Array(e);let r="";for(let e=0;e<t.byteLength;e++)r+=String.fromCharCode(t[e]);return btoa(r)},v=e=>{const t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return r.buffer},S=2,D=12,R=16,b=256,x="AES-GCM",_="SHA-256",L="raw",O="PBKDF2",C=1e5;class T{static async encryptWithPassword(e,t){const r=crypto.getRandomValues(new Uint8Array(R)),s=crypto.getRandomValues(new Uint8Array(D)),o=await this.deriveKey(t,r),a=await crypto.subtle.encrypt({name:x,iv:s},o,(new TextEncoder).encode(e));return{data:A(a),salt:A(r.buffer),iv:A(s.buffer),version:S}}static async decryptWithPassword(e,t){if(e.version!==S)throw new Error(`Unsupported version ${e.version}`);const r=new Uint8Array(v(e.salt)),s=new Uint8Array(v(e.iv)),o=await this.deriveKey(t,r),a=await crypto.subtle.decrypt({name:x,iv:s},o,v(e.data));return(new TextDecoder).decode(a)}static async deriveKey(e,t){const r=await crypto.subtle.importKey(L,(new TextEncoder).encode(e),O,!1,["deriveKey"]);return crypto.subtle.deriveKey({name:O,salt:new Uint8Array(t),iterations:C,hash:_},r,{name:x,length:b},!1,["encrypt","decrypt"])}}const P=()=>{"undefined"==typeof window||window.Buffer||(window.Buffer=r.Buffer)};var U;P(),exports.MnemonicStrength=void 0,(U=exports.MnemonicStrength||(exports.MnemonicStrength={}))[U.TWELVE_WORDS=128]="TWELVE_WORDS",U[U.TWENTY_FOUR_WORDS=256]="TWENTY_FOUR_WORDS";class K{static generateMnemonic(e=exports.MnemonicStrength.TWELVE_WORDS){return d.generateMnemonic(e)}static generateMnemonicArray(e=exports.MnemonicStrength.TWELVE_WORDS){return this.mnemonicToWordArray(this.generateMnemonic(e))}static isMnemonicValid(e){return d.validateMnemonic(e)}static mnemonicToWordArray(e){return e.trim().split(" ")}static wordArrayToMnemonic(e){return e.join(" ")}}P();class k{static buildBip44Path({coinType:e=60,account:t=0,change:r=0,index:s=0}){return`m/44'/${e}'/${t}'/${r}/${s}`}static derivePrivateKey(e,t){const r=e.derivePath(t);if(!r.privateKey)throw new Error("No private key at derived node");return new Uint8Array(r.privateKey)}static async mnemonicToSeed(e,r=""){return"string"==typeof e?await t.mnemonicToSeed(e,r):await t.mnemonicToSeed(K.wordArrayToMnemonic(e),r)}static seedToMasterNode(e){return o.BIP32Factory(u).fromSeed(e)}static async deriveKeyFromMnemonic(e,t=E){const r=this.buildBip44Path(t),s=await k.mnemonicToSeed(e),o=k.seedToMasterNode(s);return k.derivePrivateKey(o,r)}static async deriveNextKeyFromMnemonic(e,t,r=E){const s=t+1;return await this.deriveKeyFromMnemonic(e,{...r,index:s})}}const{randomBytes:V,bytesToHex:M}=a.utils;class B{static generateRandomKey(e=32){if(!e||e<0||!Number.isInteger(e))throw new Error("PrivateKeyLength must be a positive integer");return V(e)}static generateKeyPair(e=32){if(!e||e<0||!Number.isInteger(e))throw new Error("PrivateKeyLength must be a positive integer");const t=V(e);return{privateKey:t,publicKey:a.getPublicKey(t)}}static getKeyPairFromPrivateKey(e){return{privateKey:e,publicKey:a.getPublicKey(e)}}static getPublicKeyFromPrivateKey(e){return a.getPublicKey(e)}static convertKeyToHex(e){return M(e)}static async deriveKeyFromMnemonic(e,t){return await k.deriveKeyFromMnemonic(e,t)}static generateMpcKeyPair(){throw new Error("MPC key generation is not implemented yet.")}}const{blake2bHex:F}=n,{keccak256:W}=i;class G{static createWallet(e,t){let r;r=e?B.getKeyPairFromPrivateKey(e):B.generateKeyPair();return{address:this.deriveAddressFromPublicKey(r.publicKey),publicKey:r.publicKey,privateKey:r.privateKey}}static async createWalletFromMnemonic(e,t){const r=e?K.mnemonicToWordArray(e):K.generateMnemonicArray(),s=K.wordArrayToMnemonic(r);if(!s||!K.isMnemonicValid(s))throw new Error("WalletsService.createWalletFromMnemonic: Recovery mnemonic is missing or invalid");const o=await k.mnemonicToSeed(r),a=k.seedToMasterNode(o),n=k.buildBip44Path({coinType:60,account:0,change:0,index:t||0}),i=k.derivePrivateKey(a,n);return{...this.createWallet(i),mnemonic:s}}static deriveAddressFromPrivateKey(e){const t=B.getKeyPairFromPrivateKey(e);return this.deriveAddressFromPublicKey(t.publicKey)}static deriveAddressFromPublicKey(e){const t=W(e.slice(1)),r=w(t.slice(-40)),s=W(r),o=`${p.coinId}${p.version}${s}`,a=w(o),n=F(a,void 0,32).slice(0,8);return I(`${o}${n}`)}}function H(e,t,r,s,o,a){function n(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var i,l=s.kind,c="getter"===l?"get":"setter"===l?"set":"value",d=!t&&e?s.static?e:e.prototype:null,u=t||(d?Object.getOwnPropertyDescriptor(d,s.name):{}),p=!1,y=r.length-1;y>=0;y--){var h={};for(var E in s)h[E]="access"===E?{}:s[E];for(var E in s.access)h.access[E]=s.access[E];h.addInitializer=function(e){if(p)throw new TypeError("Cannot add initializers after decoration has completed");a.push(n(e||null))};var g=(0,r[y])("accessor"===l?{get:u.get,set:u.set}:u[c],h);if("accessor"===l){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(i=n(g.get))&&(u.get=i),(i=n(g.set))&&(u.set=i),(i=n(g.init))&&o.unshift(i)}else(i=n(g))&&("field"===l?o.unshift(i):u[c]=i)}d&&Object.defineProperty(d,s.name,u),p=!0}var $,z;"function"==typeof SuppressedError&&SuppressedError,exports.RecoverableDeployErrors=void 0,($=exports.RecoverableDeployErrors||(exports.RecoverableDeployErrors={})).READ_ONLY_NODE="READ_ONLY_NODE",$.CASPER_INSTANCE_UNAVAILABLE="CASPER_INSTANCE_UNAVAILABLE",$.INVALID_DEPLOY_ID="INVALID_DEPLOY_ID",$.INVALID_BLOCK_NUMBER="INVALID_BLOCK_NUMBER",exports.FatalDeployErrors=void 0,(z=exports.FatalDeployErrors||(exports.FatalDeployErrors={})).INSUFFICIENT_BALANCE="INSUFFICIENT_BALANCE",z.WRONG_NETWORK="WRONG_NETWORK",z.PARSING_ERROR="PARSING_ERROR",z.LOW_PHLO_PRICE="LOW_PHLO_PRICE",z.SIGNATURE_ERROR="SIGNATURE_ERROR",z.STORAGE_RETRIEVAL_ERROR="STORAGE_RETRIEVAL_ERROR",z.UNKNOWN_ERROR="UNKNOWN_ERROR",z.DEPLOY_SUBMIT_TIMEOUT="DEPLOY_SUBMIT_TIMEOUT",z.BLOCK_INCLUSION_TIMEOUT="BLOCK_INCLUSION_TIMEOUT",z.FINALIZATION_TIMEOUT="FINALIZATION_TIMEOUT";const Y={[exports.RecoverableDeployErrors.READ_ONLY_NODE]:"Node is read-only. Trying another node...",[exports.RecoverableDeployErrors.CASPER_INSTANCE_UNAVAILABLE]:"Casper instance not available. Trying another node...",[exports.RecoverableDeployErrors.INVALID_DEPLOY_ID]:"Invalid deploy ID. Please try again.",[exports.RecoverableDeployErrors.INVALID_BLOCK_NUMBER]:"Invalid block number. Please try again.",[exports.FatalDeployErrors.INSUFFICIENT_BALANCE]:"Insufficient balance. Please top up your account.",[exports.FatalDeployErrors.WRONG_NETWORK]:"Wrong network. Please contact technical support.",[exports.FatalDeployErrors.PARSING_ERROR]:"Parsing error. Please contact technical support.",[exports.FatalDeployErrors.LOW_PHLO_PRICE]:"Phlo price too low. Please rebuild the transaction with a higher phlo price.",[exports.FatalDeployErrors.SIGNATURE_ERROR]:"Signature verification failed. Please try again.",[exports.FatalDeployErrors.STORAGE_RETRIEVAL_ERROR]:"Storage retrieval error. Please try again later.",[exports.FatalDeployErrors.UNKNOWN_ERROR]:"An unknown error occurred. Please try again.",[exports.FatalDeployErrors.DEPLOY_SUBMIT_TIMEOUT]:"Deploy submission timed out. Please try again.",[exports.FatalDeployErrors.BLOCK_INCLUSION_TIMEOUT]:"Deploy was not included in a block within the expected time.",[exports.FatalDeployErrors.FINALIZATION_TIMEOUT]:"Block finalization polling timed out."};function j(e,t){return function(...t){return"string"==typeof t[0]&&(t[0]=t[0].toLowerCase()),e.apply(this,t)}}let X=(()=>{var e;let t,r,s=[];return e=class{parseDeploymentError(e){return e.includes("read only")?exports.RecoverableDeployErrors.READ_ONLY_NODE:e.includes("casper instance")?exports.RecoverableDeployErrors.CASPER_INSTANCE_UNAVAILABLE:e.includes("invalid deploy ID")?exports.RecoverableDeployErrors.INVALID_DEPLOY_ID:e.includes("invalid block number")?exports.RecoverableDeployErrors.INVALID_BLOCK_NUMBER:e.includes("insufficient balance")?exports.FatalDeployErrors.INSUFFICIENT_BALANCE:e.includes("wrong network")?exports.FatalDeployErrors.WRONG_NETWORK:e.includes("parsing error")?exports.FatalDeployErrors.PARSING_ERROR:e.includes("low")&&e.includes("phlo")?exports.FatalDeployErrors.LOW_PHLO_PRICE:e.includes("signature")||e.includes("sign")||e.includes("invalid signature")?exports.FatalDeployErrors.SIGNATURE_ERROR:e.includes("storage")||e.includes("retrieval")?exports.FatalDeployErrors.STORAGE_RETRIEVAL_ERROR:exports.FatalDeployErrors.UNKNOWN_ERROR}isDeploymentErrorRecoverable(e){return Object.values(exports.RecoverableDeployErrors).includes(e)}isDeploymentErrorFatal(e){return Object.values(exports.FatalDeployErrors).includes(e)}isPollingErrorRecoverable(e){return e.includes("casper instance")||e.includes("storage")||e.includes("parsing")}getErrorMessageByErrorType(e){return Y[e]??Y[exports.FatalDeployErrors.UNKNOWN_ERROR]}constructor(){!function(e,t,r){for(var s=arguments.length>2,o=0;o<t.length;o++)r=s?t[o].call(e,r):t[o].call(e)}(this,s)}},(()=>{const o="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;t=[j],r=[j],H(e,null,t,{kind:"method",name:"parseDeploymentError",static:!1,private:!1,access:{has:e=>"parseDeploymentError"in e,get:e=>e.parseDeploymentError},metadata:o},null,s),H(e,null,r,{kind:"method",name:"isPollingErrorRecoverable",static:!1,private:!1,access:{has:e=>"isPollingErrorRecoverable"in e,get:e=>e.isPollingErrorRecoverable},metadata:o},null,s),o&&Object.defineProperty(e,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:o})})(),e})();class J{constructor(e){this.client=e}async get(e){return(await this.client.get(e)).data}async post(e,t){return(await this.client.post(e,t)).data}getBaseUrl(){return this.client.defaults.baseURL}}var q,Z;exports.DeployStatus=void 0,(q=exports.DeployStatus||(exports.DeployStatus={})).DEPLOYING="Deploying",q.INCLUDED_IN_BLOCK="IncludedInBlock",q.FINALIZED="Finalized",q.CHECK_ERROR="CheckingError";class Q{constructor(e,t){this.validatorClient=e,this.indexerClient=t}static createHttpClient(e){const t=l.create({baseURL:e.baseUrl,...e.axiosConfig});return new J(t)}changeValidator(e){return this.validatorClient=Q.createHttpClient(e),this}changeIndexer(e){return this.indexerClient=Q.createHttpClient(e),this}static init(e){return Q.instance=new Q(this.createHttpClient(e.validator),this.createHttpClient(e.indexer)),Q.instance}static isInitialized(){return void 0!==Q?.instance}static getInstance(){if(!Q.isInitialized())throw new Error("BlockchainGateway is not initialized. Call BlockchainGateway.init() first.");return Q.instance}getValidatorClientUrl(){return this.validatorClient.getBaseUrl()??""}async submitDeploy(e){try{const t=await this.validatorClient.post("/api/deploy",e,{headers:{"Content-Type":"application/json"}});if(console.log("BlockchainGateway.submitDeploy: Deploy result:",t),"string"==typeof t){const e=/DeployId is:\s*([a-fA-F0-9]+)/.exec(t);return e?e[1]:t}return t.signature||t.deployId||t}catch(e){const t="BlockchainGateway.submitDeploy: "+this.getGatewayErrorMessage(e);throw new Error(t)}}async submitExploratoryDeploy(e){try{return await this.indexerClient.post("/api/explore-deploy",e)}catch(e){const t="BlockchainGateway.submitExploratoryDeploy: "+this.getGatewayErrorMessage(e);throw new Error(t)}}async exploreDeployData(e){try{return(await this.submitExploratoryDeploy(e)).expr}catch(e){const t="BlockchainGateway.exploreDeployData: "+this.getGatewayErrorMessage(e);throw console.error(t),new Error(t)}}async getDeploy(e){return await this.indexerClient.get(`/api/deploy/${e}`)}async isDeployFinalized(e){return e.faultTolerance>=.99}async getDeployStatus(e){try{let t;if(t=await this.getDeploy(e),!t?.blockHash)return{status:exports.DeployStatus.DEPLOYING};return{status:await this.isDeployFinalized(t)?exports.DeployStatus.FINALIZED:exports.DeployStatus.INCLUDED_IN_BLOCK}}catch(e){const t="BlockchainGateway.getDeployStatus: "+this.getGatewayErrorMessage(e);return{status:exports.DeployStatus.CHECK_ERROR,errorMessage:t}}}async getBlock(e){const t=await this.indexerClient.get(`/api/block/${e}`);return t?.blockInfo}async getLatestBlockNumber(){try{const e=await this.getLatestBlock();return e?.blockNumber??-1}catch(e){const t="BlockchainGateway.getLatestBlockNumber: "+this.getGatewayErrorMessage(e);return console.error(t),-1}}async isValidatorActive(){try{return await this.validatorClient.get("/status"),!0}catch(e){return console.error("BlockchainGateway.isValidatorActive: Node health check failed:",e),!1}}getGatewayErrorMessage(e){if(l.isAxiosError(e)){const t=e.response?.status??e.code,r=e.response?.statusText??"";return`Axios error while requesting "${e.config?.url??""}": [${t}] ${r} - ${e.message}`}return e instanceof Error?e.message:String(e)}validateBlocksResponse(e){if(!e?.length){throw new Error("BlockchainGateway.validateBlocksResponse: No blocks returned from /api/blocks endpoint")}}async getLatestBlock(){const e=await this.indexerClient.get("/api/blocks/1");return this.validateBlocksResponse(e),e[0]}}exports.WalletClientModes=void 0,(Z=exports.WalletClientModes||(exports.WalletClientModes={})).LOCAL="local",Z.MPC="mpc";const ee={mode:exports.WalletClientModes.LOCAL},te=5e5,re={phloPrice:1,useRandomNode:!0,deployValiditySeconds:80,nodeSelectionAttempts:3,deployRetries:3,deployIntervalSeconds:5,pollingIntervalSeconds:3};class se{constructor(e,t,r){if(this.inactiveNodesUrls=new Set,this.currentNodeUrl="",!e?.length)throw new Error("At least one node URL must be provided");this.availableNodesUrls=e,this.useRandomNode=r,this.retriesLeft=t}static initialize(e,t=re.nodeSelectionAttempts,r=re.useRandomNode){const s=r?Math.max(1,t):0,o=new se(e,s,r);return se.instance=o,o}async connectDefaultNode(){if(this.useRandomNode)throw new Error("NodeManager.connectDefaultNode: Random node selection is enabled, cannot connect to default node");await this.connectNode(this.availableNodesUrls[0])}async connectNode(e){Q.getInstance().getValidatorClientUrl()!==e&&Q.getInstance().changeValidator({baseUrl:e});if(!await Q.getInstance().isValidatorActive()){this.deactivateNode(e);const t=`NodeManager.connectNode: Node ${e} is not active`;throw console.error(t),new Error(t)}this.currentNodeUrl=e}static getInstance(){if(!se.instance)throw new Error("NodeManager is not initialized. Call NodeManager.initialize() first.");return se.instance}isInitialized(){return!!this.currentNodeUrl}markNodeInactive(e){this.inactiveNodesUrls.add(e)}deactivateCurrentNode(){this.isInitialized()&&this.deactivateNode(this.currentNodeUrl)}deactivateNode(e){this.retriesLeft--,this.markNodeInactive(e),this.currentNodeUrl===e&&(this.currentNodeUrl="")}getAvailableNodesUrls(){return this.availableNodesUrls.filter(e=>!this.inactiveNodesUrls.has(e))}getRetriesLeft(){return this.retriesLeft}getRandomAvailableNodeUrl(){const e=this.getAvailableNodesUrls();if(!e?.length)throw console.error("NodeManager.getRandomAvailableNodeUrl: No available node URLs to select"),new Error("NodeManager: no available node URLs");return e[Math.floor(Math.random()*e.length)]}async connectActiveRandomNode(){if(!this.useRandomNode)throw new Error("NodeManager.connectActiveRandomNode: Random node selection is disabled, connect to default node");for(;this.retriesLeft>0;){const e=this.getRandomAvailableNodeUrl();if(console.log(`NodeManager.connectActiveRandomNode: Attempting to connect to node ${e}. Retries left: ${this.retriesLeft}`),e){try{await this.connectNode(e)}catch(e){continue}return}}throw new Error("NodeManager.connectActiveRandomNode: No active node URL found after all attempts")}}const oe=127;class ae{constructor(){this.buffer=[]}writeString(e,t){if(!t)return;const r=e<<3|2;this.writeInteger(r);const s=(new TextEncoder).encode(t);this.writeInteger(s.length),this.buffer.push(...Array.from(s))}writeInt64(e,t){if(!t)return;const r=e<<3;this.writeInteger(r),this.writeInteger64(t)}writeInteger(e){for(;e>oe;)this.buffer.push(e&oe|128),e>>>=7;this.buffer.push(e)}writeInteger64(e){for(;e>oe;)this.buffer.push(e&oe|128),e=Math.floor(e/128);this.buffer.push(e)}getResultBuffer(){return new Uint8Array(this.buffer)}}const{blake2bHex:ne}=n;class ie{static async sign(e,t){const{wallet:r,data:s}=e;try{const e=await t();return await r.withSigningCapability(e,async e=>{const t=this.deployDataProtobufSerialize(s),r=ne(t,void 0,32),o=Uint8Array.from(Buffer.from(r,"hex")),a=await e.signDigest(o),n=e.getPublicKey();return{data:{term:s.term,timestamp:s.timestamp,phloPrice:s.phloPrice,phloLimit:s.phloLimit,validAfterBlockNumber:s.validAfterBlockNumber,shardId:s.shardId},deployer:N(n),signature:N(a),sigAlgorithm:"secp256k1"}})}catch(e){const t=`SignerService.sign: ${e.message}`;throw new Error(t)}}}ie.deployDataProtobufSerialize=e=>{const{term:t,timestamp:r,phloPrice:s,phloLimit:o,validAfterBlockNumber:a,shardId:n=""}=e,i=new ae;return i.writeString(2,t),i.writeInt64(3,r),i.writeInt64(7,s),i.writeInt64(8,o),i.writeInt64(10,a),i.writeString(11,n),i.getResultBuffer()};const le=/[,\s]+/g,ce=/^\d+(?:\.\d+)?$/,de=/(\.\d*?[1-9])0+$/,ue=/\.0+$/,pe=e=>{const t=e/h,r=e%h,s=h.toString().length-1,o=r.toString().padStart(s,"0");return`${t.toString()}.${o}`.replace(de,"$1").replace(ue,"")},ye=pe,{blake2bHex:he}=n,Ee=/[<>:"/\\|?*]/,ge=/^[a-zA-Z0-9]+$/,me=/^[1-9A-HJ-NP-Za-km-z]+$/,Ie=`${p.coinId}${p.version}`;var fe;exports.AddressValidationErrorCode=void 0,(fe=exports.AddressValidationErrorCode||(exports.AddressValidationErrorCode={})).INVALID_PREFIX="INVALID_PREFIX",fe.INVALID_LENGTH="INVALID_LENGTH",fe.INVALID_ALPHABET="INVALID_ALPHABET",fe.INVALID_BASE58="INVALID_BASE58",fe.INVALID_HEX_LENGTH="INVALID_HEX_LENGTH",fe.INVALID_CHAIN_PREFIX="INVALID_CHAIN_PREFIX",fe.INVALID_CHECKSUM="INVALID_CHECKSUM",fe.NON_CANONICAL="NON_CANONICAL";const we=e=>({isValid:!1,errorCode:e}),Ne=e=>{if(!e.startsWith("1111"))return we(exports.AddressValidationErrorCode.INVALID_PREFIX);if(e.length<50||e.length>54)return we(exports.AddressValidationErrorCode.INVALID_LENGTH);if(!ge.test(e))return we(exports.AddressValidationErrorCode.INVALID_ALPHABET);if(!me.test(e))return we(exports.AddressValidationErrorCode.INVALID_BASE58);const t=N(f(e));if(80!==t.length)return we(exports.AddressValidationErrorCode.INVALID_HEX_LENGTH);if(I(t)!==e)return we(exports.AddressValidationErrorCode.NON_CANONICAL);const r=t.slice(0,72),s=t.slice(72);if(!r.startsWith(Ie))return we(exports.AddressValidationErrorCode.INVALID_CHAIN_PREFIX);const o=he(w(r),void 0,32).slice(0,8);return 8!==s.length||s!==o?we(exports.AddressValidationErrorCode.INVALID_CHECKSUM):{isValid:!0}};const Ae=e=>e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t");class ve{static async createAndEncrypt(e,t){const r=await T.encryptWithPassword(e,t);return new ve(r)}static createFromEncryptedData(e){return new ve(e)}static createFromStringifiedEncryptedData(e){return new ve(JSON.parse(e))}constructor(e){this.encryptedSeedData=e}async decrypt(e){return await T.decryptWithPassword(this.encryptedSeedData,e)}toString(){return JSON.stringify(this.encryptedSeedData)}}var Se;exports.WalletMemoryKeys=void 0,(Se=exports.WalletMemoryKeys||(exports.WalletMemoryKeys={})).PRIVATE_KEY="private_key",Se.CRYPTO_SALT="crypto_salt",Se.CRYPTO_IV="crypto_iv",Se.CRYPTO_VERSION="crypto version";class De{constructor(e,t,r,s,o){this.name=e,this.index=o,this.masterNodeId=s,this.address=t,this.privateKey=r,this.assets=new Map,this.isLocked=!0}static async fromPrivateKey(e,t,r,s=null,o=null){const a=G.deriveAddressFromPrivateKey(t),n=await this.encryptPrivateKey(t,r);return new De(e,a,n,s,o)}static fromEncryptedData(e,t,r,s,o){const a=Ne(t);if(!a.isValid)throw new Error(`Invalid address format: ${a.errorCode??"UNKNOWN"}`);return new De(e,t,r,s,o)}async decrypt(e){if(!De.unsafeRawKeyExportEnabled)throw new Error("Wallet.decrypt is disabled by default for security. Use withSigningCapability() instead.");return await this.decryptPrivateKey(e)}static enableUnsafeRawKeyExportForLegacyInterop(){De.unsafeRawKeyExportEnabled=!0}static disableUnsafeRawKeyExport(){De.unsafeRawKeyExportEnabled=!1}static isUnsafeRawKeyExportEnabled(){return De.unsafeRawKeyExportEnabled}async decryptPrivateKey(e){try{const t=await T.decryptWithPassword(this.privateKey,e),r=JSON.parse(t);if(r&&"object"==typeof r&&!Array.isArray(r)){const e=Object.keys(r).sort((e,t)=>Number(e)-Number(t)).map(e=>{const t=r[e],s="string"==typeof t?Number(t):t;return"number"!=typeof s||isNaN(s)?0:s});return new Uint8Array(e)}return new Uint8Array(r)}catch(e){throw new Error("Unlock Failed: "+e?.message)}}async withSigningCapability(e,t){const r=await this.decryptPrivateKey(e);let s=!1;const o={signDigest:async e=>{if(s)throw new Error("Signing capability has expired");return await a.sign(e,r)},getPublicKey:()=>{if(s)throw new Error("Signing capability has expired");return B.getPublicKeyFromPrivateKey(r)}};try{return await t(o)}finally{s=!0,r.fill(0)}}getEncryptedPrivateKey(){return this.privateKey}registerAsset(e){this.assets.set(e.getId(),e)}getAddress(){return this.address}getName(){return this.name}getIndex(){return this.index}getAssets(){return this.assets}isWalletLocked(){return this.isLocked}toString(){const e={name:this.name,address:this.address,encryptedPrivateKey:JSON.stringify(this.privateKey),masterNodeId:this.masterNodeId??"",index:this.index?.toString()??""};return JSON.stringify(e)}static async encryptPrivateKey(e,t){return await T.encryptWithPassword(JSON.stringify(e),t)}}De.unsafeRawKeyExportEnabled=!1;class Re{constructor(e){if("undefined"==typeof window)throw new Error("getVault can only be called in a browser environment");if(this.isLocked=!1,this.wallets=new Map,this.seeds=new Map,this.encryptedVaultData=null,!e)return;const t=JSON.parse(e);this.encryptedVaultData=t,this.isLocked=!0}static getSavedVaultKeys(){this.ensureBrowserEnvironment();const e=[];for(let t=0;t<localStorage.length;t++){const r=localStorage.key(t);r&&r.startsWith(this.vaultPrefix)&&e.push(r)}return e}static getVaultDataFromStorage(e){return this.ensureBrowserEnvironment(),localStorage.getItem(e)}isVaultLocked(){return this.isLocked}save(e="0"){if(Re.ensureBrowserEnvironment(),!this.isLocked)throw new Error("Cannot save an unlocked vault");const t=`${Re.vaultPrefix}_${e}`;localStorage.setItem(t,JSON.stringify(this.encryptedVaultData))}async lock(e){this.ensureUnlocked();const t=this.toString();this.encryptedVaultData=await T.encryptWithPassword(t,e),this.wallets=new Map,this.seeds=new Map,this.isLocked=!0}async unlock(e){if(!this.isLocked)return;if(!this.encryptedVaultData)throw new Error("Vault was unlocked on undefined encryptedVaultData");const t=await T.decryptWithPassword(this.encryptedVaultData,e),{wallets:r,seeds:s}=JSON.parse(t);this.metaToWallets(r),this.metaToSeeds(s),this.isLocked=!1}isEmpty(){return this.ensureUnlocked(),0===this.wallets.size}getWallets(){return Array.from(this.wallets.values())}getWalletsCount(){return this.ensureUnlocked(),this.wallets.size}getWalletAddresses(){return this.ensureUnlocked(),Array.from(this.wallets.keys())}addWallet(e){this.ensureUnlocked(),this.wallets.set(e.getAddress(),e)}removeWallet(e){this.ensureUnlocked(),this.wallets.delete(e)}getWallet(e){return this.ensureUnlocked(),this.wallets.get(e)}hasWallet(e){return this.ensureUnlocked(),this.wallets.has(e)}hasSeed(e){return this.ensureUnlocked(),this.seeds.has(e)}metaToWallets(e){const t=new Map;Object.keys(e).forEach(r=>{const s=JSON.parse(e[r]),o=De.fromEncryptedData(s.name,s.address,JSON.parse(s.encryptedPrivateKey),s.masterNodeId,s.index?+s.index:null);t.set(r,o)}),this.wallets=t}metaToSeeds(e){const t=new Map;Object.keys(e).forEach(r=>{const s=ve.createFromStringifiedEncryptedData(e[r]);t.set(r,s)}),this.seeds=t}getSeeds(){return this.ensureUnlocked(),Array.from(this.seeds.values())}getSeed(e){return this.ensureUnlocked(),this.seeds.get(e)}addSeed(e,t){this.ensureUnlocked(),this.seeds.set(e,t)}removeSeed(e){this.ensureUnlocked(),this.seeds.delete(e)}getSeedsIds(){return this.ensureUnlocked(),Array.from(this.seeds.keys())}toString(){const e={},t={};this.ensureUnlocked();const r=this.getWalletAddresses(),s=this.getSeedsIds();return r.forEach(e=>{const r=this.getWallet(e);r&&(t[e]=r.toString())}),s.forEach(t=>{const r=this.getSeed(t);r&&(e[t]=r.toString())}),JSON.stringify({wallets:t,seeds:e})}ensureUnlocked(){if(this.isLocked)throw new Error("Attempted to access locked vault")}static ensureBrowserEnvironment(){if("undefined"==typeof window)throw new Error("getVault can only be called in a browser environment")}}Re.vaultPrefix="ASI_WALLETS_VAULT";exports.ASI_BASE_UNIT=h,exports.ASI_CHAIN_PREFIX=p,exports.ASI_COIN_TYPE=60,exports.ASI_DECIMALS=8,exports.Asset=class{constructor(e,t,r=8){this.id=e,this.name=t,this.decimals=r}getId(){return this.id}getName(){return this.name}getDecimals(){return this.decimals}},exports.AssetsService=class{async transfer(e,t,r,s,o,a=5e5){try{const n=Ne(e);if(!n.isValid)throw new Error(`AssetsService.transfer: Invalid 'fromAddress': ${n.errorCode??"UNKNOWN"}`);const i=Ne(t);if(!i.isValid)throw new Error(`AssetsService.transfer: Invalid 'toAddress': ${i.errorCode??"UNKNOWN"}`);if(r<=0n)throw new Error("AssetsService.transfer: Transfer amount must be greater than zero");const l=Q.getInstance(),c=((e,t,r)=>{if(r<=0n)throw new Error("Transfer amount must be greater than zero");const s=Ae(e),o=Ae(t),a=r.toString();return`\n new \n deployerId(\`rho:rchain:deployerId\`),\n stdout(\`rho:io:stdout\`),\n rl(\`rho:registry:lookup\`),\n ASIVaultCh,\n vaultCh,\n toVaultCh,\n asiVaultkeyCh,\n resultCh\n in {\n rl!(\`rho:rchain:asiVault\`, *ASIVaultCh) |\n for (@(_, ASIVault) <- ASIVaultCh) {\n @ASIVault!("findOrCreate", "${s}", *vaultCh) |\n @ASIVault!("findOrCreate", "${o}", *toVaultCh) |\n @ASIVault!("deployerAuthKey", *deployerId, *asiVaultkeyCh) |\n for (@(true, vault) <- vaultCh; key <- asiVaultkeyCh; @(true, toVault) <- toVaultCh) {\n @vault!("transfer", "${o}", ${a}, *key, *resultCh) |\n for (@result <- resultCh) {\n match result {\n (true, Nil) => {\n stdout!(("Transfer successful:", ${a}, "ASI"))\n }\n (false, reason) => {\n stdout!(("Transfer failed:", reason))\n }\n }\n }\n } |\n for (@(false, errorMsg) <- vaultCh) {\n stdout!(("Sender vault error:", errorMsg))\n } |\n for (@(false, errorMsg) <- toVaultCh) {\n stdout!(("Destination vault error:", errorMsg))\n }\n }\n }\n `})(e,t,r),d=await l.getLatestBlockNumber();if(-1===d)throw new Error("AssetsService.transfer: Invalid block number");const u={term:c,phloLimit:a,phloPrice:1,validAfterBlockNumber:d-1,timestamp:Date.now(),shardId:"root"},p=await ie.sign({wallet:s,data:u},o);return await l.submitDeploy(p)}catch(e){const t="AssetsService.transfer: "+e.message;throw new Error(t)}}async getASIBalance(e){const t=Ne(e);if(!t.isValid)throw new Error(`AssetsService.getASIBalance: Invalid address: ${t.errorCode??"UNKNOWN"}`);const r=Q.getInstance(),s=(e=>`\n new return, rl(\`rho:registry:lookup\`), ASIVaultCh, vaultCh in {\n rl!(\`rho:rchain:asiVault\`, *ASIVaultCh) |\n for (@(_, ASIVault) <- ASIVaultCh) {\n @ASIVault!("findOrCreate", "${Ae(e)}", *vaultCh) |\n for (@maybeVault <- vaultCh) {\n match maybeVault {\n (true, vault) => @vault!("balance", *return)\n (false, err) => return!(err)\n }\n }\n }\n }\n`)(e);try{const e=await r.exploreDeployData(s);if(e&&e.length>0){const t=e[0];if(t?.ExprInt?.data)return BigInt(t.ExprInt.data);if(t?.ExprString?.data)throw new Error("Balance check error:")}return BigInt(0)}catch(e){return BigInt(0)}}},exports.AxiosHttpClient=J,exports.BinaryWriter=ae,exports.BlockchainGateway=Q,exports.CryptoService=T,exports.DEFAULT_AXIOS_TIMEOUT_MS=3e4,exports.DEFAULT_BIP_44_PATH_OPTIONS=E,exports.DEFAULT_CLIENT_CONFIG=ee,exports.DEFAULT_DECIMALS_AMOUNT=8,exports.DEFAULT_PHLO_LIMIT=te,exports.DEFAULT_RESUBMIT_CONFIG=re,exports.DEFAULT_STORAGE_KEY="0",exports.DeployResubmitter=class{constructor(e,t){if(this.startSubmissionTime=0,this.config=e,this.nodeManager=se.initialize(t,e.nodeSelectionAttempts,e.useRandomNode),this.errorHandler=new X,!Q.isInitialized())throw new Error("BlockchainGateway is not initialized")}isDeployExpired(){return Date.now()-this.startSubmissionTime>=1e3*this.config.deployValiditySeconds}sleep(e){return new Promise(t=>setTimeout(t,1e3*e))}async retryDeployToOneNode(e,t,r,s){let o=this.config.deployRetries,a={success:!1};for(;o>0&&!this.isDeployExpired();){try{const o=Q.getInstance(),n=await o.getLatestBlockNumber();if(-1===n)throw new Error("DeployResubmitter.retryDeployToOneNode: Invalid block number");const i={term:e,phloLimit:s||te,phloPrice:1,validAfterBlockNumber:n-1,timestamp:Date.now(),shardId:"root"},l=await ie.sign({wallet:t,data:i},r),c=await o.submitDeploy(l);if("string"!=typeof c){throw new Error("Invalid deploy ID received: "+c)}return a={success:!0,deployId:c},a}catch(e){const t="DeployResubmitter.retryDeployToOneNode:"+e.message,r=this.errorHandler.parseDeploymentError(t);if(console.error(t),a.error={blockchainError:{type:r,message:t}},this.errorHandler.isDeploymentErrorFatal(r))break;o--}await this.sleep(this.config.deployIntervalSeconds)}return this.isDeployExpired()&&(a.error=a?.error||{},a.error.exceededTimeout=exports.FatalDeployErrors.DEPLOY_SUBMIT_TIMEOUT),{success:!1,error:a.error}}async retryDeployToRandomNodes(e,t,r,s){let o={success:!1};for(;!this.isDeployExpired()&&this.nodeManager.getRetriesLeft()>0&&(await this.nodeManager.connectActiveRandomNode(),o=await this.retryDeployToOneNode(e,t,r,s),!o.success)&&(this.nodeManager.deactivateCurrentNode(),o.error?.blockchainError?.type)&&!this.errorHandler.isDeploymentErrorFatal(o.error?.blockchainError?.type););return o}async pollDeployStatus(e){let t;for(;!this.isDeployExpired();){const r=await Q.getInstance().getDeployStatus(e),s=r.status;if(s===exports.DeployStatus.CHECK_ERROR){const e=`DeployResubmitter.pollDeployStatus: ${"errorMessage"in r?r.errorMessage:"Unknown error"}`,s=this.errorHandler.parseDeploymentError(e);console.error(e);const o={type:s,message:e};if(this.errorHandler.isDeploymentErrorFatal(s)&&!e.includes("Bad Request"))return{success:!1,deployStatus:exports.DeployStatus.CHECK_ERROR,error:{blockchainError:o}};t=o}if(console.log("DeployResubmitter.pollDeployStatus: current deploy status:",s),s==exports.DeployStatus.INCLUDED_IN_BLOCK||s==exports.DeployStatus.FINALIZED)return{success:!0,deployStatus:r.status};await this.sleep(this.config.pollingIntervalSeconds)}return{success:!1,deployStatus:t?exports.DeployStatus.CHECK_ERROR:exports.DeployStatus.DEPLOYING,error:{...t,exceededTimeout:exports.FatalDeployErrors.BLOCK_INCLUSION_TIMEOUT}}}async resubmit(e,t,r,s){let o;if(console.log("DeployResubmitter: starting deploy submission with resubmission logic"),this.startSubmissionTime=Date.now(),this.config.useRandomNode?o=await this.retryDeployToRandomNodes(e,t,r,s):(await this.nodeManager.connectDefaultNode(),o=await this.retryDeployToOneNode(e,t,r,s)),!o.success||!o?.deployId)return o;console.log(`DeployResubmitter: deploy submitted successfully with ID: ${o.deployId}. Starting to poll for status...`);const a=await this.pollDeployStatus(o.deployId);return console.log(`DeployResubmitter: finished polling deploy status. Final status: ${a.deployStatus}, success: ${a.success}`),a}},exports.DeploymentErrorHandler=X,exports.EncryptedRecord=ve,exports.FAULT_TOLERANCE_THRESHOLD=.99,exports.FeeService=m,exports.GasFee=y,exports.INVALID_BLOCK_NUMBER=-1,exports.KeyDerivationService=k,exports.KeysManager=B,exports.MAX_WALLETS_PER_ACCOUNT=20,exports.MnemonicService=K,exports.POWER_BASE=10,exports.PRIVATE_KEY_LENGTH=32,exports.ResubmitNodeManager=se,exports.SecureStorage=class{constructor(e="storage_prefix"){if("undefined"==typeof localStorage)throw new Error("localStorage is not supported in this environment.");this.prefix=e}write(e,t){localStorage.setItem(this.createKey(e),t)}read(e){return localStorage.getItem(this.createKey(e))}delete(e){localStorage.removeItem(this.createKey(e))}has(e){return!!localStorage.getItem(this.createKey(e))}isEmpty(){return!this.getIds().length}clear(){this.getIds().forEach(e=>localStorage.removeItem(e))}getIds(){const e=[];for(let t=0;t<localStorage.length;t++){const r=localStorage.key(t);if(!r)break;r.startsWith(`${this.prefix}`)&&e.push(r)}return e}createKey(e){return`${this.prefix}_${e}`}},exports.SignerService=ie,exports.Vault=Re,exports.Wallet=De,exports.WalletsService=G,exports.arrayBufferToBase64=A,exports.base64ToArrayBuffer=v,exports.decodeBase16=w,exports.decodeBase58=f,exports.deploymentErrorMessages=Y,exports.encodeBase16=N,exports.encodeBase58=I,exports.fromAtomicAmount=ye,exports.fromAtomicAmountToNumber=e=>{const t=e/h,r=e%h;return t>BigInt(Number.MAX_SAFE_INTEGER)?(console.warn("Integer part exceeds Number.MAX_SAFE_INTEGER; returning imprecise Number"),Number(pe(e))):Number(t)+Number(r)/Number(h)},exports.fromAtomicAmountToString=pe,exports.genRandomHex=e=>[...Array(e)].map(()=>Math.floor(16*Math.random()).toString(16)).join(""),exports.getDeploymentErrorMessage=function(e){return Y[e]??"An unknown error occurred. Please try again."},exports.isAddress=e=>Ne(e).isValid,exports.setupBufferPolyfill=P,exports.toAtomicAmount=e=>{const t=h.toString().length-1;if("number"==typeof e){if(!Number.isFinite(e))throw new Error("Invalid number");e=String(e)}let r=String(e).trim();if(!r.length)throw new Error("Cannot process empty amount");let s=!1;if(r.startsWith("-")&&(s=!0,r=r.slice(1)),r=r.replace(le,""),!ce.test(r))throw new Error("Invalid amount format");const[o,a=""]=r.split("."),n=o||"0";let i=a;i.length>t&&(console.warn(`Fraction ${i} has more than allowed decimals; truncating`),i=i.slice(0,t)),i=i.padEnd(t,"0");const l=BigInt(n)*h+BigInt(i||"0");return s?-l:l},exports.validateAccountName=(e,t=30)=>e&&0!==e.trim().length?e.length>t?{isValid:!1,error:`Account name must be ${t} characters or less`}:Ee.test(e)?{isValid:!1,error:"Account name contains invalid characters"}:{isValid:!0}:{isValid:!1,error:"Account name is required"},exports.validateAddress=Ne;
|
|
1
|
+
"use strict";var e=require("bs58"),t=require("bip39"),r=require("buffer"),s=require("tiny-secp256k1"),o=require("bip32"),a=require("@noble/secp256k1"),n=require("blakejs"),i=require("js-sha3"),l=require("axios");function c(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(r){if("default"!==r){var s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:function(){return e[r]}})}}),t.default=e,Object.freeze(t)}var d=c(t),u=c(s);const p={coinId:"000000",version:"00"},y={BASE_FEE:.0025,VARIATION_RANGE:.1,LABEL:"ASI",TRANSFER:"0.0025",DEPLOY:"0.0025"},h=BigInt(10)**BigInt(8),E={coinType:60,account:0,change:0,index:0};var g;class m{}g=m,m.generateRandomGasFee=()=>{const e=2*(Math.random()-.5)*y.VARIATION_RANGE;return(y.BASE_FEE*(1+e)).toFixed(4)},m.getGasFeeAsNumber=()=>y.BASE_FEE,m.formatGasFee=e=>`${e||g.generateRandomGasFee()} ${y.LABEL}`;const f=t=>{const r=I(t);return e.encode(r)},w=t=>e.decode(t),I=e=>{const t=new Uint8Array(e.length/2);for(let r=0;r<e.length;r+=2)t[r/2]=parseInt(e.substr(r,2),16);return t},N=e=>Array.from(e,e=>e.toString(16).padStart(2,"0")).join(""),A=e=>{const t=new Uint8Array(e);let r="";for(let e=0;e<t.byteLength;e++)r+=String.fromCharCode(t[e]);return btoa(r)},v=e=>{const t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return r.buffer},S=2,b=12,D=16,R=256,x="AES-GCM",_="SHA-256",L="raw",O="PBKDF2",C=1e5;class T{static async encryptWithPassword(e,t){const r=crypto.getRandomValues(new Uint8Array(D)),s=crypto.getRandomValues(new Uint8Array(b)),o=await this.deriveKey(t,r),a=await crypto.subtle.encrypt({name:x,iv:s},o,(new TextEncoder).encode(e));return{data:A(a),salt:A(r.buffer),iv:A(s.buffer),version:S}}static async decryptWithPassword(e,t){if(e.version!==S)throw new Error(`Unsupported version ${e.version}`);const r=new Uint8Array(v(e.salt)),s=new Uint8Array(v(e.iv)),o=await this.deriveKey(t,r),a=await crypto.subtle.decrypt({name:x,iv:s},o,v(e.data));return(new TextDecoder).decode(a)}static async deriveKey(e,t){const r=await crypto.subtle.importKey(L,(new TextEncoder).encode(e),O,!1,["deriveKey"]);return crypto.subtle.deriveKey({name:O,salt:new Uint8Array(t),iterations:C,hash:_},r,{name:x,length:R},!1,["encrypt","decrypt"])}}const P=()=>{"undefined"==typeof window||window.Buffer||(window.Buffer=r.Buffer)};var k;P(),exports.MnemonicStrength=void 0,(k=exports.MnemonicStrength||(exports.MnemonicStrength={}))[k.TWELVE_WORDS=128]="TWELVE_WORDS",k[k.TWENTY_FOUR_WORDS=256]="TWENTY_FOUR_WORDS";class U{static generateMnemonic(e=exports.MnemonicStrength.TWELVE_WORDS){return d.generateMnemonic(e)}static generateMnemonicArray(e=exports.MnemonicStrength.TWELVE_WORDS){return this.mnemonicToWordArray(this.generateMnemonic(e))}static isMnemonicValid(e){return d.validateMnemonic(e)}static mnemonicToWordArray(e){return e.trim().split(" ")}static wordArrayToMnemonic(e){return e.join(" ")}}P();class K{static buildBip44Path({coinType:e=60,account:t=0,change:r=0,index:s=0}){return`m/44'/${e}'/${t}'/${r}/${s}`}static derivePrivateKey(e,t){const r=e.derivePath(t);if(!r.privateKey)throw new Error("No private key at derived node");return new Uint8Array(r.privateKey)}static async mnemonicToSeed(e,r=""){return"string"==typeof e?await t.mnemonicToSeed(e,r):await t.mnemonicToSeed(U.wordArrayToMnemonic(e),r)}static seedToMasterNode(e){return o.BIP32Factory(u).fromSeed(e)}static async deriveKeyFromMnemonic(e,t=E){const r=this.buildBip44Path(t),s=await K.mnemonicToSeed(e),o=K.seedToMasterNode(s);return K.derivePrivateKey(o,r)}static async deriveNextKeyFromMnemonic(e,t,r=E){const s=t+1;return await this.deriveKeyFromMnemonic(e,{...r,index:s})}}const{randomBytes:V,bytesToHex:B}=a.utils;class M{static generateRandomKey(e=32){if(!e||e<0||!Number.isInteger(e))throw new Error("PrivateKeyLength must be a positive integer");return V(e)}static generateKeyPair(e=32){if(!e||e<0||!Number.isInteger(e))throw new Error("PrivateKeyLength must be a positive integer");const t=V(e);return{privateKey:t,publicKey:a.getPublicKey(t)}}static getKeyPairFromPrivateKey(e){return{privateKey:e,publicKey:a.getPublicKey(e)}}static getPublicKeyFromPrivateKey(e){return a.getPublicKey(e)}static convertKeyToHex(e){return B(e)}static async deriveKeyFromMnemonic(e,t){return await K.deriveKeyFromMnemonic(e,t)}static generateMpcKeyPair(){throw new Error("MPC key generation is not implemented yet.")}}const{blake2bHex:F}=n,{keccak256:W}=i;class G{static createWallet(e,t){let r;r=e?M.getKeyPairFromPrivateKey(e):M.generateKeyPair();return{address:this.deriveAddressFromPublicKey(r.publicKey),publicKey:r.publicKey,privateKey:r.privateKey}}static async createWalletFromMnemonic(e,t){const r=e?U.mnemonicToWordArray(e):U.generateMnemonicArray(),s=U.wordArrayToMnemonic(r);if(!s||!U.isMnemonicValid(s))throw new Error("WalletsService.createWalletFromMnemonic: Recovery mnemonic is missing or invalid");const o=await K.mnemonicToSeed(r),a=K.seedToMasterNode(o),n=K.buildBip44Path({coinType:60,account:0,change:0,index:t||0}),i=K.derivePrivateKey(a,n);return{...this.createWallet(i),mnemonic:s}}static deriveAddressFromPrivateKey(e){const t=M.getKeyPairFromPrivateKey(e);return this.deriveAddressFromPublicKey(t.publicKey)}static deriveAddressFromPublicKey(e){const t=W(e.slice(1)),r=I(t.slice(-40)),s=W(r),o=`${p.coinId}${p.version}${s}`,a=I(o),n=F(a,void 0,32).slice(0,8);return f(`${o}${n}`)}}function H(e,t,r,s,o,a){function n(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var i,l=s.kind,c="getter"===l?"get":"setter"===l?"set":"value",d=!t&&e?s.static?e:e.prototype:null,u=t||(d?Object.getOwnPropertyDescriptor(d,s.name):{}),p=!1,y=r.length-1;y>=0;y--){var h={};for(var E in s)h[E]="access"===E?{}:s[E];for(var E in s.access)h.access[E]=s.access[E];h.addInitializer=function(e){if(p)throw new TypeError("Cannot add initializers after decoration has completed");a.push(n(e||null))};var g=(0,r[y])("accessor"===l?{get:u.get,set:u.set}:u[c],h);if("accessor"===l){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(i=n(g.get))&&(u.get=i),(i=n(g.set))&&(u.set=i),(i=n(g.init))&&o.unshift(i)}else(i=n(g))&&("field"===l?o.unshift(i):u[c]=i)}d&&Object.defineProperty(d,s.name,u),p=!0}function $(e,t,r){for(var s=arguments.length>2,o=0;o<t.length;o++)r=s?t[o].call(e,r):t[o].call(e);return s?r:void 0}var z,j;"function"==typeof SuppressedError&&SuppressedError,exports.RecoverableDeployErrors=void 0,(z=exports.RecoverableDeployErrors||(exports.RecoverableDeployErrors={})).READ_ONLY_NODE="READ_ONLY_NODE",z.CASPER_INSTANCE_UNAVAILABLE="CASPER_INSTANCE_UNAVAILABLE",z.INVALID_DEPLOY_ID="INVALID_DEPLOY_ID",z.INVALID_BLOCK_NUMBER="INVALID_BLOCK_NUMBER",exports.FatalDeployErrors=void 0,(j=exports.FatalDeployErrors||(exports.FatalDeployErrors={})).INSUFFICIENT_BALANCE="INSUFFICIENT_BALANCE",j.WRONG_NETWORK="WRONG_NETWORK",j.PARSING_ERROR="PARSING_ERROR",j.LOW_PHLO_PRICE="LOW_PHLO_PRICE",j.SIGNATURE_ERROR="SIGNATURE_ERROR",j.STORAGE_RETRIEVAL_ERROR="STORAGE_RETRIEVAL_ERROR",j.UNKNOWN_ERROR="UNKNOWN_ERROR",j.DEPLOY_SUBMIT_TIMEOUT="DEPLOY_SUBMIT_TIMEOUT",j.BLOCK_INCLUSION_TIMEOUT="BLOCK_INCLUSION_TIMEOUT",j.FINALIZATION_TIMEOUT="FINALIZATION_TIMEOUT";const Y={[exports.RecoverableDeployErrors.READ_ONLY_NODE]:"Node is read-only. Trying another node...",[exports.RecoverableDeployErrors.CASPER_INSTANCE_UNAVAILABLE]:"Casper instance not available. Trying another node...",[exports.RecoverableDeployErrors.INVALID_DEPLOY_ID]:"Invalid deploy ID. Please try again.",[exports.RecoverableDeployErrors.INVALID_BLOCK_NUMBER]:"Invalid block number. Please try again.",[exports.FatalDeployErrors.INSUFFICIENT_BALANCE]:"Insufficient balance. Please top up your account.",[exports.FatalDeployErrors.WRONG_NETWORK]:"Wrong network. Please contact technical support.",[exports.FatalDeployErrors.PARSING_ERROR]:"Parsing error. Please contact technical support.",[exports.FatalDeployErrors.LOW_PHLO_PRICE]:"Phlo price too low. Please rebuild the transaction with a higher phlo price.",[exports.FatalDeployErrors.SIGNATURE_ERROR]:"Signature verification failed. Please try again.",[exports.FatalDeployErrors.STORAGE_RETRIEVAL_ERROR]:"Storage retrieval error. Please try again later.",[exports.FatalDeployErrors.UNKNOWN_ERROR]:"An unknown error occurred. Please try again.",[exports.FatalDeployErrors.DEPLOY_SUBMIT_TIMEOUT]:"Deploy submission timed out. Please try again.",[exports.FatalDeployErrors.BLOCK_INCLUSION_TIMEOUT]:"Deploy was not included in a block within the expected time.",[exports.FatalDeployErrors.FINALIZATION_TIMEOUT]:"Block finalization polling timed out."};function X(e,t){return function(...t){return"string"==typeof t[0]&&(t[0]=t[0].toLowerCase()),e.apply(this,t)}}let J=(()=>{var e;let t,r,s=[];return e=class{parseDeploymentError(e){return e.includes("read only")?exports.RecoverableDeployErrors.READ_ONLY_NODE:e.includes("casper instance")?exports.RecoverableDeployErrors.CASPER_INSTANCE_UNAVAILABLE:e.includes("invalid deploy ID")?exports.RecoverableDeployErrors.INVALID_DEPLOY_ID:e.includes("invalid block number")?exports.RecoverableDeployErrors.INVALID_BLOCK_NUMBER:e.includes("insufficient balance")?exports.FatalDeployErrors.INSUFFICIENT_BALANCE:e.includes("wrong network")?exports.FatalDeployErrors.WRONG_NETWORK:e.includes("parsing error")?exports.FatalDeployErrors.PARSING_ERROR:e.includes("low")&&e.includes("phlo")?exports.FatalDeployErrors.LOW_PHLO_PRICE:e.includes("signature")||e.includes("sign")||e.includes("invalid signature")?exports.FatalDeployErrors.SIGNATURE_ERROR:e.includes("storage")||e.includes("retrieval")?exports.FatalDeployErrors.STORAGE_RETRIEVAL_ERROR:exports.FatalDeployErrors.UNKNOWN_ERROR}isDeploymentErrorRecoverable(e){return Object.values(exports.RecoverableDeployErrors).includes(e)}isDeploymentErrorFatal(e){return Object.values(exports.FatalDeployErrors).includes(e)}isPollingErrorRecoverable(e){return e.includes("casper instance")||e.includes("storage")||e.includes("parsing")}getErrorMessageByErrorType(e){return Y[e]??Y[exports.FatalDeployErrors.UNKNOWN_ERROR]}constructor(){$(this,s)}},(()=>{const o="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;t=[X],r=[X],H(e,null,t,{kind:"method",name:"parseDeploymentError",static:!1,private:!1,access:{has:e=>"parseDeploymentError"in e,get:e=>e.parseDeploymentError},metadata:o},null,s),H(e,null,r,{kind:"method",name:"isPollingErrorRecoverable",static:!1,private:!1,access:{has:e=>"isPollingErrorRecoverable"in e,get:e=>e.isPollingErrorRecoverable},metadata:o},null,s),o&&Object.defineProperty(e,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:o})})(),e})();class q{constructor(e){this.client=e}async get(e){return(await this.client.get(e)).data}async post(e,t){return(await this.client.post(e,t)).data}getBaseUrl(){return this.client.defaults.baseURL}}var Z,Q;exports.DeployStatus=void 0,(Z=exports.DeployStatus||(exports.DeployStatus={})).DEPLOYING="Deploying",Z.INCLUDED_IN_BLOCK="IncludedInBlock",Z.FINALIZED="Finalized",Z.CHECK_ERROR="CheckingError";class ee{constructor(e,t){this.validatorClient=e,this.indexerClient=t}static createHttpClient(e){const t=l.create({baseURL:e.baseUrl,...e.axiosConfig});return new q(t)}changeValidator(e){return this.validatorClient=ee.createHttpClient(e),this}changeIndexer(e){return this.indexerClient=ee.createHttpClient(e),this}static init(e){return ee.instance=new ee(this.createHttpClient(e.validator),this.createHttpClient(e.indexer)),ee.instance}static isInitialized(){return void 0!==ee?.instance}static getInstance(){if(!ee.isInitialized())throw new Error("BlockchainGateway is not initialized. Call BlockchainGateway.init() first.");return ee.instance}getValidatorClientUrl(){return this.validatorClient.getBaseUrl()??""}async submitDeploy(e){try{const t=await this.validatorClient.post("/api/deploy",e,{headers:{"Content-Type":"application/json"}});if(console.log("BlockchainGateway.submitDeploy: Deploy result:",t),"string"==typeof t){const e=/DeployId is:\s*([a-fA-F0-9]+)/.exec(t);return e?e[1]:t}return t.signature||t.deployId||t}catch(e){const t="BlockchainGateway.submitDeploy: "+this.getGatewayErrorMessage(e);throw new Error(t)}}async submitExploratoryDeploy(e){try{return await this.indexerClient.post("/api/explore-deploy",e)}catch(e){const t="BlockchainGateway.submitExploratoryDeploy: "+this.getGatewayErrorMessage(e);throw new Error(t)}}async exploreDeployData(e){try{return(await this.submitExploratoryDeploy(e)).expr}catch(e){const t="BlockchainGateway.exploreDeployData: "+this.getGatewayErrorMessage(e);throw console.error(t),new Error(t)}}async getDeploy(e){return await this.indexerClient.get(`/api/deploy/${e}`)}async isDeployFinalized(e){return e.faultTolerance>=.99}async getDeployStatus(e){try{let t;if(t=await this.getDeploy(e),!t?.blockHash)return{status:exports.DeployStatus.DEPLOYING};return{status:await this.isDeployFinalized(t)?exports.DeployStatus.FINALIZED:exports.DeployStatus.INCLUDED_IN_BLOCK}}catch(e){const t="BlockchainGateway.getDeployStatus: "+this.getGatewayErrorMessage(e);return{status:exports.DeployStatus.CHECK_ERROR,errorMessage:t}}}async getBlock(e){const t=await this.indexerClient.get(`/api/block/${e}`);return t?.blockInfo}async getLatestBlockNumber(){try{const e=await this.getLatestBlock();return e?.blockNumber??-1}catch(e){const t="BlockchainGateway.getLatestBlockNumber: "+this.getGatewayErrorMessage(e);return console.error(t),-1}}async isValidatorActive(){try{return await this.validatorClient.get("/status"),!0}catch(e){return console.error("BlockchainGateway.isValidatorActive: Node health check failed:",e),!1}}getGatewayErrorMessage(e){if(l.isAxiosError(e)){const t=e.response?.status??e.code,r=e.response?.statusText??"";return`Axios error while requesting "${e.config?.url??""}": [${t}] ${r} - ${e.message}`}return e instanceof Error?e.message:String(e)}validateBlocksResponse(e){if(!e?.length){throw new Error("BlockchainGateway.validateBlocksResponse: No blocks returned from /api/blocks endpoint")}}async getLatestBlock(){const e=await this.indexerClient.get("/api/blocks/1");return this.validateBlocksResponse(e),e[0]}}exports.WalletClientModes=void 0,(Q=exports.WalletClientModes||(exports.WalletClientModes={})).LOCAL="local",Q.MPC="mpc";const te={mode:exports.WalletClientModes.LOCAL},re=5e5,se={phloPrice:1,useRandomNode:!0,deployValiditySeconds:80,nodeSelectionAttempts:3,deployRetries:3,deployIntervalSeconds:5,pollingIntervalSeconds:3};function oe(e,t){return function(...r){if(!ee.isInitialized())throw new Error(`${t.kind} ${String(t.name)}: BlockchainGateway is not initialized. Call BlockchainGateway.init() first.`);return e.apply(this,r)}}let ae=(()=>{var e;let t,r,s=[];return e=class{constructor(e,t,r){if(this.retriesLeft=$(this,s),this.inactiveNodesUrls=new Set,this.currentNodeUrl="",!e?.length)throw new Error("At least one node URL must be provided");this.availableNodesUrls=e,this.useRandomNode=r,this.retriesLeft=t}static initialize(t,r=se.nodeSelectionAttempts,s=se.useRandomNode){const o=s?Math.max(1,r):0,a=new e(t,o,s);return e.instance=a,a}async connectDefaultNode(){if(this.useRandomNode)throw new Error("NodeManager.connectDefaultNode: Random node selection is enabled, cannot connect to default node");await this.connectNode(this.availableNodesUrls[0])}async connectNode(e){ee.getInstance().getValidatorClientUrl()!==e&&ee.getInstance().changeValidator({baseUrl:e});if(!await ee.getInstance().isValidatorActive()){this.deactivateNode(e);const t=`NodeManager.connectNode: Node ${e} is not active`;throw console.error(t),new Error(t)}this.currentNodeUrl=e}static getInstance(){if(!e.instance)throw new Error("NodeManager is not initialized. Call NodeManager.initialize() first.");return e.instance}isInitialized(){return!!this.currentNodeUrl}markNodeInactive(e){this.inactiveNodesUrls.add(e)}deactivateCurrentNode(){this.isInitialized()&&this.deactivateNode(this.currentNodeUrl)}deactivateNode(e){this.retriesLeft--,this.markNodeInactive(e),this.currentNodeUrl===e&&(this.currentNodeUrl="")}getAvailableNodesUrls(){return this.availableNodesUrls.filter(e=>!this.inactiveNodesUrls.has(e))}getRetriesLeft(){return this.retriesLeft}getRandomAvailableNodeUrl(){const e=this.getAvailableNodesUrls();if(!e?.length)throw console.error("NodeManager.getRandomAvailableNodeUrl: No available node URLs to select"),new Error("NodeManager: no available node URLs");return e[Math.floor(Math.random()*e.length)]}async connectActiveRandomNode(){if(!this.useRandomNode)throw new Error("NodeManager.connectActiveRandomNode: Random node selection is disabled, connect to default node");for(;this.retriesLeft>0;){const e=this.getRandomAvailableNodeUrl();if(console.log(`NodeManager.connectActiveRandomNode: Attempting to connect to node ${e}. Retries left: ${this.retriesLeft}`),e){try{await this.connectNode(e)}catch(e){continue}return}}throw new Error("NodeManager.connectActiveRandomNode: No active node URL found after all attempts")}},(()=>{const o="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;t=[oe],r=[oe],H(e,null,t,{kind:"method",name:"connectDefaultNode",static:!1,private:!1,access:{has:e=>"connectDefaultNode"in e,get:e=>e.connectDefaultNode},metadata:o},null,s),H(e,null,r,{kind:"method",name:"connectActiveRandomNode",static:!1,private:!1,access:{has:e=>"connectActiveRandomNode"in e,get:e=>e.connectActiveRandomNode},metadata:o},null,s),o&&Object.defineProperty(e,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:o})})(),e})();const ne=127;class ie{constructor(){this.buffer=[]}writeString(e,t){if(!t)return;const r=e<<3|2;this.writeInteger(r);const s=(new TextEncoder).encode(t);this.writeInteger(s.length),this.buffer.push(...Array.from(s))}writeInt64(e,t){if(!t)return;const r=e<<3;this.writeInteger(r),this.writeInteger64(t)}writeInteger(e){for(;e>ne;)this.buffer.push(e&ne|128),e>>>=7;this.buffer.push(e)}writeInteger64(e){for(;e>ne;)this.buffer.push(e&ne|128),e=Math.floor(e/128);this.buffer.push(e)}getResultBuffer(){return new Uint8Array(this.buffer)}}const{blake2bHex:le}=n;class ce{static async sign(e,t){const{wallet:r,data:s}=e;try{const e=await t();return await r.withSigningCapability(e,async e=>{const t=this.deployDataProtobufSerialize(s),r=le(t,void 0,32),o=Uint8Array.from(Buffer.from(r,"hex")),a=await e.signDigest(o),n=e.getPublicKey();return{data:{term:s.term,timestamp:s.timestamp,phloPrice:s.phloPrice,phloLimit:s.phloLimit,validAfterBlockNumber:s.validAfterBlockNumber,shardId:s.shardId},deployer:N(n),signature:N(a),sigAlgorithm:"secp256k1"}})}catch(e){const t=`SignerService.sign: ${e.message}`;throw new Error(t)}}}ce.deployDataProtobufSerialize=e=>{const{term:t,timestamp:r,phloPrice:s,phloLimit:o,validAfterBlockNumber:a,shardId:n=""}=e,i=new ie;return i.writeString(2,t),i.writeInt64(3,r),i.writeInt64(7,s),i.writeInt64(8,o),i.writeInt64(10,a),i.writeString(11,n),i.getResultBuffer()};const de=/[,\s]+/g,ue=/^\d+(?:\.\d+)?$/,pe=/(\.\d*?[1-9])0+$/,ye=/\.0+$/,he=e=>{const t=e/h,r=e%h,s=h.toString().length-1,o=r.toString().padStart(s,"0");return`${t.toString()}.${o}`.replace(pe,"$1").replace(ye,"")},Ee=he,{blake2bHex:ge}=n,me=/[<>:"/\\|?*]/,fe=/^[a-zA-Z0-9]+$/,we=/^[1-9A-HJ-NP-Za-km-z]+$/,Ie=`${p.coinId}${p.version}`;var Ne;exports.AddressValidationErrorCode=void 0,(Ne=exports.AddressValidationErrorCode||(exports.AddressValidationErrorCode={})).INVALID_PREFIX="INVALID_PREFIX",Ne.INVALID_LENGTH="INVALID_LENGTH",Ne.INVALID_ALPHABET="INVALID_ALPHABET",Ne.INVALID_BASE58="INVALID_BASE58",Ne.INVALID_HEX_LENGTH="INVALID_HEX_LENGTH",Ne.INVALID_CHAIN_PREFIX="INVALID_CHAIN_PREFIX",Ne.INVALID_CHECKSUM="INVALID_CHECKSUM",Ne.NON_CANONICAL="NON_CANONICAL";const Ae=e=>({isValid:!1,errorCode:e}),ve=e=>{if(!e.startsWith("1111"))return Ae(exports.AddressValidationErrorCode.INVALID_PREFIX);if(e.length<50||e.length>54)return Ae(exports.AddressValidationErrorCode.INVALID_LENGTH);if(!fe.test(e))return Ae(exports.AddressValidationErrorCode.INVALID_ALPHABET);if(!we.test(e))return Ae(exports.AddressValidationErrorCode.INVALID_BASE58);const t=N(w(e));if(80!==t.length)return Ae(exports.AddressValidationErrorCode.INVALID_HEX_LENGTH);if(f(t)!==e)return Ae(exports.AddressValidationErrorCode.NON_CANONICAL);const r=t.slice(0,72),s=t.slice(72);if(!r.startsWith(Ie))return Ae(exports.AddressValidationErrorCode.INVALID_CHAIN_PREFIX);const o=ge(I(r),void 0,32).slice(0,8);return 8!==s.length||s!==o?Ae(exports.AddressValidationErrorCode.INVALID_CHECKSUM):{isValid:!0}};const Se=e=>e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t");let be=(()=>{var e;let t,r,s=[];return e=class{getBlockchainGateway(){return ee.getInstance()}async transfer(e,t,r,s,o,a=5e5){try{const n=ve(e);if(!n.isValid)throw new Error(`AssetsService.transfer: Invalid 'fromAddress': ${n.errorCode??"UNKNOWN"}`);const i=ve(t);if(!i.isValid)throw new Error(`AssetsService.transfer: Invalid 'toAddress': ${i.errorCode??"UNKNOWN"}`);if(e===t)throw new Error("AssetsService.transfer: Sender and recipient addresses cannot be the same");if(r<=0n)throw new Error("AssetsService.transfer: Transfer amount must be greater than zero");if(e===t)throw new Error("AssetsService.transfer: Sender and recipient addresses cannot be the same");const l=this.getBlockchainGateway(),c=((e,t,r)=>{if(r<=0n)throw new Error("Transfer amount must be greater than zero");const s=Se(e),o=Se(t),a=r.toString();return`\n new \n deployerId(\`rho:rchain:deployerId\`),\n stdout(\`rho:io:stdout\`),\n rl(\`rho:registry:lookup\`),\n ASIVaultCh,\n vaultCh,\n toVaultCh,\n asiVaultkeyCh,\n resultCh\n in {\n rl!(\`rho:rchain:asiVault\`, *ASIVaultCh) |\n for (@(_, ASIVault) <- ASIVaultCh) {\n @ASIVault!("findOrCreate", "${s}", *vaultCh) |\n @ASIVault!("findOrCreate", "${o}", *toVaultCh) |\n @ASIVault!("deployerAuthKey", *deployerId, *asiVaultkeyCh) |\n for (@(true, vault) <- vaultCh; key <- asiVaultkeyCh; @(true, toVault) <- toVaultCh) {\n @vault!("transfer", "${o}", ${a}, *key, *resultCh) |\n for (@result <- resultCh) {\n match result {\n (true, Nil) => {\n stdout!(("Transfer successful:", ${a}, "ASI"))\n }\n (false, reason) => {\n stdout!(("Transfer failed:", reason))\n }\n }\n }\n } |\n for (@(false, errorMsg) <- vaultCh) {\n stdout!(("Sender vault error:", errorMsg))\n } |\n for (@(false, errorMsg) <- toVaultCh) {\n stdout!(("Destination vault error:", errorMsg))\n }\n }\n }\n `})(e,t,r),d=await l.getLatestBlockNumber();if(-1===d)throw new Error("AssetsService.transfer: Invalid block number");const u={term:c,phloLimit:a,phloPrice:1,validAfterBlockNumber:d-1,timestamp:Date.now(),shardId:"root"},p=await ce.sign({wallet:s,data:u},o);return await l.submitDeploy(p)}catch(e){const t="AssetsService.transfer: "+e.message;throw new Error(t)}}async getASIBalance(e){const t=ve(e);if(!t.isValid)throw new Error(`AssetsService.getASIBalance: Invalid address: ${t.errorCode??"UNKNOWN"}`);const r=this.getBlockchainGateway(),s=(e=>`\n new return, rl(\`rho:registry:lookup\`), ASIVaultCh, vaultCh in {\n rl!(\`rho:rchain:asiVault\`, *ASIVaultCh) |\n for (@(_, ASIVault) <- ASIVaultCh) {\n @ASIVault!("findOrCreate", "${Se(e)}", *vaultCh) |\n for (@maybeVault <- vaultCh) {\n match maybeVault {\n (true, vault) => @vault!("balance", *return)\n (false, err) => return!(err)\n }\n }\n }\n }\n`)(e);try{const e=await r.exploreDeployData(s);if(e&&e.length>0){const t=e[0];if(t?.ExprInt?.data)return BigInt(t.ExprInt.data);if(t?.ExprString?.data)throw new Error("Balance check error:")}return BigInt(0)}catch(e){return BigInt(0)}}constructor(){$(this,s)}},(()=>{const o="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;t=[oe],r=[oe],H(e,null,t,{kind:"method",name:"transfer",static:!1,private:!1,access:{has:e=>"transfer"in e,get:e=>e.transfer},metadata:o},null,s),H(e,null,r,{kind:"method",name:"getASIBalance",static:!1,private:!1,access:{has:e=>"getASIBalance"in e,get:e=>e.getASIBalance},metadata:o},null,s),o&&Object.defineProperty(e,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:o})})(),e})();class De{static async createAndEncrypt(e,t){const r=await T.encryptWithPassword(e,t);return new De(r)}static createFromEncryptedData(e){return new De(e)}static createFromStringifiedEncryptedData(e){return new De(JSON.parse(e))}constructor(e){this.encryptedSeedData=e}async decrypt(e){return await T.decryptWithPassword(this.encryptedSeedData,e)}toString(){return JSON.stringify(this.encryptedSeedData)}}var Re;exports.WalletMemoryKeys=void 0,(Re=exports.WalletMemoryKeys||(exports.WalletMemoryKeys={})).PRIVATE_KEY="private_key",Re.CRYPTO_SALT="crypto_salt",Re.CRYPTO_IV="crypto_iv",Re.CRYPTO_VERSION="crypto version";class xe{constructor(e,t,r,s,o){this.name=e,this.index=o,this.masterNodeId=s,this.address=t,this.privateKey=r,this.assets=new Map,this.isLocked=!0}static async fromPrivateKey(e,t,r,s=null,o=null){const a=G.deriveAddressFromPrivateKey(t),n=await this.encryptPrivateKey(t,r);return new xe(e,a,n,s,o)}static fromEncryptedData(e,t,r,s,o){const a=ve(t);if(!a.isValid)throw new Error(`Invalid address format: ${a.errorCode??"UNKNOWN"}`);return new xe(e,t,r,s,o)}async decrypt(e){if(!xe.unsafeRawKeyExportEnabled)throw new Error("Wallet.decrypt is disabled by default for security. Use withSigningCapability() instead.");return await this.decryptPrivateKey(e)}static enableUnsafeRawKeyExportForLegacyInterop(){xe.unsafeRawKeyExportEnabled=!0}static disableUnsafeRawKeyExport(){xe.unsafeRawKeyExportEnabled=!1}static isUnsafeRawKeyExportEnabled(){return xe.unsafeRawKeyExportEnabled}async decryptPrivateKey(e){try{const t=await T.decryptWithPassword(this.privateKey,e),r=JSON.parse(t);if(r&&"object"==typeof r&&!Array.isArray(r)){const e=Object.keys(r).sort((e,t)=>Number(e)-Number(t)).map(e=>{const t=r[e],s="string"==typeof t?Number(t):t;return"number"!=typeof s||isNaN(s)?0:s});return new Uint8Array(e)}return new Uint8Array(r)}catch(e){throw new Error("Unlock Failed: "+e?.message)}}async withSigningCapability(e,t){const r=await this.decryptPrivateKey(e);let s=!1;const o={signDigest:async e=>{if(s)throw new Error("Signing capability has expired");return await a.sign(e,r)},getPublicKey:()=>{if(s)throw new Error("Signing capability has expired");return M.getPublicKeyFromPrivateKey(r)}};try{return await t(o)}finally{s=!0,r.fill(0)}}getEncryptedPrivateKey(){return this.privateKey}registerAsset(e){this.assets.set(e.getId(),e)}getAddress(){return this.address}getName(){return this.name}getIndex(){return this.index}getAssets(){return this.assets}isWalletLocked(){return this.isLocked}toString(){const e={name:this.name,address:this.address,encryptedPrivateKey:JSON.stringify(this.privateKey),masterNodeId:this.masterNodeId??"",index:this.index?.toString()??""};return JSON.stringify(e)}static async encryptPrivateKey(e,t){return await T.encryptWithPassword(JSON.stringify(e),t)}}xe.unsafeRawKeyExportEnabled=!1;class _e{constructor(e){if("undefined"==typeof window)throw new Error("getVault can only be called in a browser environment");if(this.isLocked=!1,this.wallets=new Map,this.seeds=new Map,this.encryptedVaultData=null,!e)return;const t=JSON.parse(e);this.encryptedVaultData=t,this.isLocked=!0}static getSavedVaultKeys(){this.ensureBrowserEnvironment();const e=[];for(let t=0;t<localStorage.length;t++){const r=localStorage.key(t);r&&r.startsWith(this.vaultPrefix)&&e.push(r)}return e}static getVaultDataFromStorage(e){return this.ensureBrowserEnvironment(),localStorage.getItem(e)}isVaultLocked(){return this.isLocked}save(e="0"){if(_e.ensureBrowserEnvironment(),!this.isLocked)throw new Error("Cannot save an unlocked vault");const t=`${_e.vaultPrefix}_${e}`;localStorage.setItem(t,JSON.stringify(this.encryptedVaultData))}async lock(e){this.ensureUnlocked();const t=this.toString();this.encryptedVaultData=await T.encryptWithPassword(t,e),this.wallets=new Map,this.seeds=new Map,this.isLocked=!0}async unlock(e){if(!this.isLocked)return;if(!this.encryptedVaultData)throw new Error("Vault was unlocked on undefined encryptedVaultData");const t=await T.decryptWithPassword(this.encryptedVaultData,e),{wallets:r,seeds:s}=JSON.parse(t);this.metaToWallets(r),this.metaToSeeds(s),this.isLocked=!1}isEmpty(){return this.ensureUnlocked(),0===this.wallets.size}getWallets(){return Array.from(this.wallets.values())}getWalletsCount(){return this.ensureUnlocked(),this.wallets.size}getWalletAddresses(){return this.ensureUnlocked(),Array.from(this.wallets.keys())}addWallet(e){this.ensureUnlocked(),this.wallets.set(e.getAddress(),e)}removeWallet(e){this.ensureUnlocked(),this.wallets.delete(e)}getWallet(e){return this.ensureUnlocked(),this.wallets.get(e)}hasWallet(e){return this.ensureUnlocked(),this.wallets.has(e)}hasSeed(e){return this.ensureUnlocked(),this.seeds.has(e)}metaToWallets(e){const t=new Map;Object.keys(e).forEach(r=>{const s=JSON.parse(e[r]),o=xe.fromEncryptedData(s.name,s.address,JSON.parse(s.encryptedPrivateKey),s.masterNodeId,s.index?+s.index:null);t.set(r,o)}),this.wallets=t}metaToSeeds(e){const t=new Map;Object.keys(e).forEach(r=>{const s=De.createFromStringifiedEncryptedData(e[r]);t.set(r,s)}),this.seeds=t}getSeeds(){return this.ensureUnlocked(),Array.from(this.seeds.values())}getSeed(e){return this.ensureUnlocked(),this.seeds.get(e)}addSeed(e,t){this.ensureUnlocked(),this.seeds.set(e,t)}removeSeed(e){this.ensureUnlocked(),this.seeds.delete(e)}getSeedsIds(){return this.ensureUnlocked(),Array.from(this.seeds.keys())}toString(){const e={},t={};this.ensureUnlocked();const r=this.getWalletAddresses(),s=this.getSeedsIds();return r.forEach(e=>{const r=this.getWallet(e);r&&(t[e]=r.toString())}),s.forEach(t=>{const r=this.getSeed(t);r&&(e[t]=r.toString())}),JSON.stringify({wallets:t,seeds:e})}ensureUnlocked(){if(this.isLocked)throw new Error("Attempted to access locked vault")}static ensureBrowserEnvironment(){if("undefined"==typeof window)throw new Error("getVault can only be called in a browser environment")}}_e.vaultPrefix="ASI_WALLETS_VAULT";exports.ASI_BASE_UNIT=h,exports.ASI_CHAIN_PREFIX=p,exports.ASI_COIN_TYPE=60,exports.ASI_DECIMALS=8,exports.Asset=class{constructor(e,t,r=8){this.id=e,this.name=t,this.decimals=r}getId(){return this.id}getName(){return this.name}getDecimals(){return this.decimals}},exports.AssetsService=be,exports.AxiosHttpClient=q,exports.BinaryWriter=ie,exports.BlockchainGateway=ee,exports.CryptoService=T,exports.DEFAULT_AXIOS_TIMEOUT_MS=3e4,exports.DEFAULT_BIP_44_PATH_OPTIONS=E,exports.DEFAULT_CLIENT_CONFIG=te,exports.DEFAULT_DECIMALS_AMOUNT=8,exports.DEFAULT_PHLO_LIMIT=re,exports.DEFAULT_RESUBMIT_CONFIG=se,exports.DEFAULT_STORAGE_KEY="0",exports.DeployResubmitter=class{constructor(e,t){if(this.startSubmissionTime=0,this.config=e,this.nodeManager=ae.initialize(t,e.nodeSelectionAttempts,e.useRandomNode),this.errorHandler=new J,!ee.isInitialized())throw new Error("BlockchainGateway is not initialized")}isDeployExpired(){return Date.now()-this.startSubmissionTime>=1e3*this.config.deployValiditySeconds}sleep(e){return new Promise(t=>setTimeout(t,1e3*e))}async retryDeployToOneNode(e,t,r,s){let o=this.config.deployRetries,a={success:!1};for(;o>0&&!this.isDeployExpired();){try{const o=ee.getInstance(),n=await o.getLatestBlockNumber();if(-1===n)throw new Error("DeployResubmitter.retryDeployToOneNode: Invalid block number");const i={term:e,phloLimit:s||re,phloPrice:1,validAfterBlockNumber:n-1,timestamp:Date.now(),shardId:"root"},l=await ce.sign({wallet:t,data:i},r),c=await o.submitDeploy(l);if("string"!=typeof c){throw new Error("Invalid deploy ID received: "+c)}return a={success:!0,deployId:c},a}catch(e){const t="DeployResubmitter.retryDeployToOneNode:"+e.message,r=this.errorHandler.parseDeploymentError(t);if(console.error(t),a.error={blockchainError:{type:r,message:t}},this.errorHandler.isDeploymentErrorFatal(r))break;o--}await this.sleep(this.config.deployIntervalSeconds)}return this.isDeployExpired()&&(a.error=a?.error||{},a.error.exceededTimeout=exports.FatalDeployErrors.DEPLOY_SUBMIT_TIMEOUT),{success:!1,error:a.error}}async retryDeployToRandomNodes(e,t,r,s){let o={success:!1};for(;!this.isDeployExpired()&&this.nodeManager.getRetriesLeft()>0&&(await this.nodeManager.connectActiveRandomNode(),o=await this.retryDeployToOneNode(e,t,r,s),!o.success)&&(this.nodeManager.deactivateCurrentNode(),o.error?.blockchainError?.type)&&!this.errorHandler.isDeploymentErrorFatal(o.error?.blockchainError?.type););return o}async pollDeployStatus(e){let t;for(;!this.isDeployExpired();){const r=await ee.getInstance().getDeployStatus(e),s=r.status;if(s===exports.DeployStatus.CHECK_ERROR){const e=`DeployResubmitter.pollDeployStatus: ${"errorMessage"in r?r.errorMessage:"Unknown error"}`,s=this.errorHandler.parseDeploymentError(e);console.error(e);const o={type:s,message:e};if(this.errorHandler.isDeploymentErrorFatal(s)&&!e.includes("Bad Request"))return{success:!1,deployStatus:exports.DeployStatus.CHECK_ERROR,error:{blockchainError:o}};t=o}if(console.log("DeployResubmitter.pollDeployStatus: current deploy status:",s),s==exports.DeployStatus.INCLUDED_IN_BLOCK||s==exports.DeployStatus.FINALIZED)return{success:!0,deployStatus:r.status};await this.sleep(this.config.pollingIntervalSeconds)}return{success:!1,deployStatus:t?exports.DeployStatus.CHECK_ERROR:exports.DeployStatus.DEPLOYING,error:{...t,exceededTimeout:exports.FatalDeployErrors.BLOCK_INCLUSION_TIMEOUT}}}async resubmit(e,t,r,s){let o;if(console.log("DeployResubmitter: starting deploy submission with resubmission logic"),this.startSubmissionTime=Date.now(),this.config.useRandomNode?o=await this.retryDeployToRandomNodes(e,t,r,s):(await this.nodeManager.connectDefaultNode(),o=await this.retryDeployToOneNode(e,t,r,s)),!o.success||!o?.deployId)return o;console.log(`DeployResubmitter: deploy submitted successfully with ID: ${o.deployId}. Starting to poll for status...`);const a=await this.pollDeployStatus(o.deployId);return console.log(`DeployResubmitter: finished polling deploy status. Final status: ${a.deployStatus}, success: ${a.success}`),a}},exports.DeploymentErrorHandler=J,exports.EncryptedRecord=De,exports.FAULT_TOLERANCE_THRESHOLD=.99,exports.FeeService=m,exports.GasFee=y,exports.INVALID_BLOCK_NUMBER=-1,exports.KeyDerivationService=K,exports.KeysManager=M,exports.MAX_WALLETS_PER_ACCOUNT=20,exports.MnemonicService=U,exports.POWER_BASE=10,exports.PRIVATE_KEY_LENGTH=32,exports.ResubmitNodeManager=ae,exports.SecureStorage=class{constructor(e="storage_prefix"){if("undefined"==typeof localStorage)throw new Error("localStorage is not supported in this environment.");this.prefix=e}write(e,t){localStorage.setItem(this.createKey(e),t)}read(e){return localStorage.getItem(this.createKey(e))}delete(e){localStorage.removeItem(this.createKey(e))}has(e){return!!localStorage.getItem(this.createKey(e))}isEmpty(){return!this.getIds().length}clear(){this.getIds().forEach(e=>localStorage.removeItem(e))}getIds(){const e=[];for(let t=0;t<localStorage.length;t++){const r=localStorage.key(t);if(!r)break;r.startsWith(`${this.prefix}`)&&e.push(r)}return e}createKey(e){return`${this.prefix}_${e}`}},exports.SignerService=ce,exports.Vault=_e,exports.Wallet=xe,exports.WalletsService=G,exports.arrayBufferToBase64=A,exports.base64ToArrayBuffer=v,exports.decodeBase16=I,exports.decodeBase58=w,exports.deploymentErrorMessages=Y,exports.encodeBase16=N,exports.encodeBase58=f,exports.fromAtomicAmount=Ee,exports.fromAtomicAmountToNumber=e=>{const t=e/h,r=e%h;return t>BigInt(Number.MAX_SAFE_INTEGER)?(console.warn("Integer part exceeds Number.MAX_SAFE_INTEGER; returning imprecise Number"),Number(he(e))):Number(t)+Number(r)/Number(h)},exports.fromAtomicAmountToString=he,exports.genRandomHex=e=>[...Array(e)].map(()=>Math.floor(16*Math.random()).toString(16)).join(""),exports.getDeploymentErrorMessage=function(e){return Y[e]??"An unknown error occurred. Please try again."},exports.isAddress=e=>ve(e).isValid,exports.setupBufferPolyfill=P,exports.toAtomicAmount=e=>{const t=h.toString().length-1;if("number"==typeof e){if(!Number.isFinite(e))throw new Error("Invalid number");e=String(e)}let r=String(e).trim();if(!r.length)throw new Error("Cannot process empty amount");let s=!1;if(r.startsWith("-")&&(s=!0,r=r.slice(1)),r=r.replace(de,""),!ue.test(r))throw new Error("Invalid amount format");const[o,a=""]=r.split("."),n=o||"0";let i=a;i.length>t&&(console.warn(`Fraction ${i} has more than allowed decimals; truncating`),i=i.slice(0,t)),i=i.padEnd(t,"0");const l=BigInt(n)*h+BigInt(i||"0");return s?-l:l},exports.validateAccountName=(e,t=30)=>e&&0!==e.trim().length?e.length>t?{isValid:!1,error:`Account name must be ${t} characters or less`}:me.test(e)?{isValid:!1,error:"Account name contains invalid characters"}:{isValid:!0}:{isValid:!1,error:"Account name is required"},exports.validateAddress=ve;
|
|
2
|
+
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/utils/constants/index.ts","../src/services/Fee/index.ts","../src/utils/codec/index.ts","../src/services/Crypto/index.ts","../src/utils/polyfills/index.ts","../src/services/Mnemonic/index.ts","../src/services/KeyDerivation/index.ts","../src/services/KeysManager/index.ts","../src/services/Wallets/index.ts","../node_modules/tslib/tslib.es6.js","../src/domains/Error/meta.ts","../src/domains/Error/DeploymentErrorHandler.ts","../src/domains/HttpClient/index.ts","../src/domains/BlockchainGateway/index.ts","../src/config/index.ts","../src/utils/decorators/index.ts","../src/services/Resubmit/NodeManager.ts","../src/services/BinaryWriter/index.ts","../src/services/Signer/index.ts","../src/utils/functions/index.ts","../src/utils/validators/index.ts","../src/domains/Deploy/factory/index.ts","../src/services/AssetsService/index.ts","../src/domains/EncryptedRecord/index.ts","../src/domains/Wallet/index.ts","../src/domains/Vault/index.ts","../src/domains/Asset/index.ts","../src/services/Resubmit/DeployResubmitter.ts","../src/domains/BrowserStorage/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,"/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["ASI_CHAIN_PREFIX","coinId","version","GasFee","BASE_FEE","VARIATION_RANGE","LABEL","TRANSFER","DEPLOY","ASI_BASE_UNIT","BigInt","DEFAULT_BIP_44_PATH_OPTIONS","coinType","account","change","index","FeeService","generateRandomGasFee","variation","Math","random","toFixed","getGasFeeAsNumber","formatGasFee","fee","_a","encodeBase58","hex","bytes","decodeBase16","bs58","encode","decodeBase58","value","decode","Uint8Array","length","i","parseInt","substr","encodeBase16","Array","from","byte","toString","padStart","join","arrayBufferToBase64","buffer","binary","byteLength","String","fromCharCode","btoa","base64ToArrayBuffer","base64","atob","charCodeAt","CryptoConfig","CryptoService","encryptWithPassword","data","password","salt","crypto","getRandomValues","iv","key","this","deriveKey","encrypted","subtle","encrypt","name","TextEncoder","decryptWithPassword","payload","passphrase","Error","decrypted","decrypt","TextDecoder","keyMaterial","importKey","iterations","hash","setupBufferPolyfill","window","Buffer","MnemonicStrength","MnemonicService","generateMnemonic","strength","TWELVE_WORDS","bip39","generateMnemonicArray","mnemonicToWordArray","isMnemonicValid","mnemonic","validateMnemonic","trim","split","wordArrayToMnemonic","words","KeyDerivationService","buildBip44Path","derivePrivateKey","masterNode","path","node","derivePath","privateKey","mnemonicToSeed","mnemonicWords","seedToMasterNode","seed","BIP32Factory","tinysecp","fromSeed","deriveKeyFromMnemonic","options","bip44Path","deriveNextKeyFromMnemonic","currentIndex","nextIndex","randomBytes","bytesToHex","utils","KeysManager","generateRandomKey","Number","isInteger","generateKeyPair","keyLength","publicKey","getPublicKey","getKeyPairFromPrivateKey","getPublicKeyFromPrivateKey","convertKeyToHex","generateMpcKeyPair","blake2bHex","blakejs","keccak256","sha3","WalletsService","createWallet","keyPair","address","deriveAddressFromPublicKey","createWalletFromMnemonic","mnemonicToUse","normalizedMnemonic","deriveAddressFromPrivateKey","slice","addressBase","addressBaseHash","addressPayload","addressPayloadBytes","checksum","undefined","__esDecorate","ctor","descriptorIn","decorators","contextIn","initializers","extraInitializers","accept","f","TypeError","_","kind","target","prototype","descriptor","Object","getOwnPropertyDescriptor","done","context","p","access","addInitializer","push","result","get","set","init","unshift","defineProperty","__runInitializers","thisArg","useValue","arguments","call","RecoverableDeployErrors","FatalDeployErrors","SuppressedError","deploymentErrorMessages","READ_ONLY_NODE","CASPER_INSTANCE_UNAVAILABLE","INVALID_DEPLOY_ID","INVALID_BLOCK_NUMBER","INSUFFICIENT_BALANCE","WRONG_NETWORK","PARSING_ERROR","LOW_PHLO_PRICE","SIGNATURE_ERROR","STORAGE_RETRIEVAL_ERROR","UNKNOWN_ERROR","DEPLOY_SUBMIT_TIMEOUT","BLOCK_INCLUSION_TIMEOUT","FINALIZATION_TIMEOUT","useLowerCaseMessage","methodArguments","toLowerCase","apply","parseDeploymentError","errorMessage","includes","isDeploymentErrorRecoverable","errorType","values","isDeploymentErrorFatal","isPollingErrorRecoverable","getErrorMessageByErrorType","_instanceExtraInitializers","_parseDeploymentError_decorators","static","private","has","obj","metadata","_metadata","_isPollingErrorRecoverable_decorators","AxiosHttpClient","constructor","client","url","post","getBaseUrl","defaults","baseURL","DeployStatus","WalletClientModes","BlockchainGateway","validatorClient","indexerClient","createHttpClient","config","axiosInstance","axios","create","baseUrl","axiosConfig","changeValidator","changeIndexer","instance","validator","indexer","isInitialized","getInstance","getValidatorClientUrl","submitDeploy","deployData","headers","console","log","deployIdMatch","exec","signature","deployId","error","message","getGatewayErrorMessage","submitExploratoryDeploy","rholangCode","exploreDeployData","expr","getDeploy","deployHash","isDeployFinalized","deploy","faultTolerance","getDeployStatus","blockHash","status","DEPLOYING","FINALIZED","INCLUDED_IN_BLOCK","CHECK_ERROR","getBlock","response","blockInfo","getLatestBlockNumber","block","getLatestBlock","blockNumber","isValidatorActive","isAxiosError","code","statusText","validateBlocksResponse","blocks","DEFAULT_CLIENT_CONFIG","mode","LOCAL","DEFAULT_PHLO_LIMIT","DEFAULT_RESUBMIT_CONFIG","phloPrice","useRandomNode","deployValiditySeconds","nodeSelectionAttempts","deployRetries","deployIntervalSeconds","pollingIntervalSeconds","RequireBlockchainGateway","availableNodesUrls","retriesLeft","inactiveNodesUrls","Set","currentNodeUrl","initialize","attempts","max","connectDefaultNode","connectNode","nodeUrl","deactivateNode","markNodeInactive","add","deactivateCurrentNode","getAvailableNodesUrls","filter","getRetriesLeft","getRandomAvailableNodeUrl","availableNodeUrls","floor","connectActiveRandomNode","_connectDefaultNode_decorators","_connectActiveRandomNode_decorators","MAX_BYTE_VALUE","BinaryWriterService","writeString","fieldNumber","writeInteger","writeInt64","writeInteger64","getResultBuffer","SignerService","sign","request","passwordProvider","wallet","withSigningCapability","async","signingCapability","deploySerialized","deployDataProtobufSerialize","hashed","suitableBytes","signDigest","term","timestamp","phloLimit","validAfterBlockNumber","shardId","deployer","sigAlgorithm","writer","BinaryWriter","REGEX_THOUSANDS","REGEX_AMOUNT_FORMAT","REGEX_TRIM_TRAILING_ZEROS","REGEX_DOT_ZERO","fromAtomicAmountToString","atomicAmount","integerPart","remainder","decimals","fraction","replace","fromAtomicAmount","INVALID_ACCOUNT_NAME_CHARS","ADDRESS_ALPHABET_REGEX","ADDRESS_BASE58_ALPHABET_REGEX","ADDRESS_PREFIX_HEX","AddressValidationErrorCode","getInvalidResult","errorCode","isValid","validateAddress","startsWith","INVALID_PREFIX","INVALID_LENGTH","test","INVALID_ALPHABET","INVALID_BASE58","decodedHex","ADDRESS_PAYLOAD_HEX_LENGTH","INVALID_HEX_LENGTH","NON_CANONICAL","payloadHex","checksumHex","INVALID_CHAIN_PREFIX","expectedChecksumHex","INVALID_CHECKSUM","escapeRholangString","getBlockchainGateway","transfer","fromAddress","toAddress","amount","fromValidation","toValidation","gateway","transferRho","escapedFromAddress","escapedToAddress","amountString","createTransferDeploy","latestBlockNumber","Date","now","signedDeploy","getASIBalance","validation","checkBalanceRho","createCheckBalanceDeploy","firstExpr","ExprInt","ExprString","_transfer_decorators","_getASIBalance_decorators","EncryptedRecord","createAndEncrypt","encryptedData","createFromEncryptedData","createFromStringifiedEncryptedData","JSON","parse","encryptedSeedData","stringify","WalletMemoryKeys","Wallet","encryptedPrivateKey","masterNodeId","assets","Map","isLocked","fromPrivateKey","encryptPrivateKey","fromEncryptedData","unsafeRawKeyExportEnabled","decryptPrivateKey","enableUnsafeRawKeyExportForLegacyInterop","disableUnsafeRawKeyExport","isUnsafeRawKeyExportEnabled","parsed","isArray","keys","sort","a","b","map","k","v","num","isNaN","callback","expired","digest","fill","getEncryptedPrivateKey","registerAsset","asset","getId","getAddress","getName","getIndex","getAssets","isWalletLocked","meta","Vault","VaultData","wallets","seeds","encryptedVaultData","parsedData","getSavedVaultKeys","ensureBrowserEnvironment","localStorage","vaultPrefix","getVaultDataFromStorage","vaultKey","getItem","isVaultLocked","save","storageKey","setItem","lock","ensureUnlocked","rawVaultData","unlock","decryptedData","metaToWallets","metaToSeeds","isEmpty","size","getWallets","getWalletsCount","getWalletAddresses","addWallet","removeWallet","delete","getWallet","hasWallet","hasSeed","seedId","forEach","walletMeta","id","getSeeds","getSeed","addSeed","removeSeed","getSeedsIds","seedsMeta","walletsMeta","addresses","seedsIds","getDecimals","startSubmissionTime","nodeManager","NodeManager","errorHandler","DeploymentErrorHandler","isDeployExpired","sleep","sec","Promise","resolve","setTimeout","retryDeployToOneNode","deployResult","success","blockchainError","type","exceededTimeout","retryDeployToRandomNodes","pollDeployStatus","last_error","checkDeployResult","deployStatus","resubmit","pollResult","prefix","write","createKey","read","removeItem","getIds","clear","idsArray","localStorageKey","MAX_SAFE_INTEGER","warn","isFinite","isNegative","integerPartRaw","fractionRaw","padEnd","maxLength"],"mappings":"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","x_google_ignoreList":[9]}
|
package/dist/index.d.ts
CHANGED
|
@@ -328,6 +328,7 @@ declare class SignerService {
|
|
|
328
328
|
}
|
|
329
329
|
|
|
330
330
|
declare class AssetsService {
|
|
331
|
+
private getBlockchainGateway;
|
|
331
332
|
transfer(fromAddress: Address, toAddress: Address, amount: bigint, wallet: Wallet, passwordProvider: PasswordProvider, phloLimit?: number): Promise<string | undefined>;
|
|
332
333
|
getASIBalance(address: Address): Promise<bigint>;
|
|
333
334
|
}
|
package/dist/index.esm.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
import e from"bs58";import*as t from"bip39";import{mnemonicToSeed as r}from"bip39";import{Buffer as n}from"buffer";import*as a from"tiny-secp256k1";import{BIP32Factory as s}from"bip32";import{getPublicKey as i,utils as o,sign as c}from"@noble/secp256k1";import l from"blakejs";import d from"js-sha3";import u from"axios";const h=32,y={coinId:"000000",version:"00"},p=60,g=8,m={BASE_FEE:.0025,VARIATION_RANGE:.1,LABEL:"ASI",TRANSFER:"0.0025",DEPLOY:"0.0025"},f=10,w=BigInt(10)**BigInt(8),E=.99,I=-1,N={coinType:60,account:0,change:0,index:0};var A;class v{}A=v,v.generateRandomGasFee=()=>{const e=2*(Math.random()-.5)*m.VARIATION_RANGE;return(m.BASE_FEE*(1+e)).toFixed(4)},v.getGasFeeAsNumber=()=>m.BASE_FEE,v.formatGasFee=e=>`${e||A.generateRandomGasFee()} ${m.LABEL}`;const R=t=>{const r=S(t);return e.encode(r)},b=t=>e.decode(t),S=e=>{const t=new Uint8Array(e.length/2);for(let r=0;r<e.length;r+=2)t[r/2]=parseInt(e.substr(r,2),16);return t},D=e=>Array.from(e,e=>e.toString(16).padStart(2,"0")).join(""),L=e=>{const t=new Uint8Array(e);let r="";for(let e=0;e<t.byteLength;e++)r+=String.fromCharCode(t[e]);return btoa(r)},_=e=>{const t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return r.buffer},O=2,C=12,T=16,P=256,k="AES-GCM",U="SHA-256",K="raw",V="PBKDF2",B=1e5;class M{static async encryptWithPassword(e,t){const r=crypto.getRandomValues(new Uint8Array(T)),n=crypto.getRandomValues(new Uint8Array(C)),a=await this.deriveKey(t,r),s=await crypto.subtle.encrypt({name:k,iv:n},a,(new TextEncoder).encode(e));return{data:L(s),salt:L(r.buffer),iv:L(n.buffer),version:O}}static async decryptWithPassword(e,t){if(e.version!==O)throw new Error(`Unsupported version ${e.version}`);const r=new Uint8Array(_(e.salt)),n=new Uint8Array(_(e.iv)),a=await this.deriveKey(t,r),s=await crypto.subtle.decrypt({name:k,iv:n},a,_(e.data));return(new TextDecoder).decode(s)}static async deriveKey(e,t){const r=await crypto.subtle.importKey(K,(new TextEncoder).encode(e),V,!1,["deriveKey"]);return crypto.subtle.deriveKey({name:V,salt:new Uint8Array(t),iterations:B,hash:U},r,{name:k,length:P},!1,["encrypt","decrypt"])}}const x=()=>{"undefined"==typeof window||window.Buffer||(window.Buffer=n)};var W;x(),function(e){e[e.TWELVE_WORDS=128]="TWELVE_WORDS",e[e.TWENTY_FOUR_WORDS=256]="TWENTY_FOUR_WORDS"}(W||(W={}));class F{static generateMnemonic(e=W.TWELVE_WORDS){return t.generateMnemonic(e)}static generateMnemonicArray(e=W.TWELVE_WORDS){return this.mnemonicToWordArray(this.generateMnemonic(e))}static isMnemonicValid(e){return t.validateMnemonic(e)}static mnemonicToWordArray(e){return e.trim().split(" ")}static wordArrayToMnemonic(e){return e.join(" ")}}x();class ${static buildBip44Path({coinType:e=60,account:t=0,change:r=0,index:n=0}){return`m/44'/${e}'/${t}'/${r}/${n}`}static derivePrivateKey(e,t){const r=e.derivePath(t);if(!r.privateKey)throw new Error("No private key at derived node");return new Uint8Array(r.privateKey)}static async mnemonicToSeed(e,t=""){return"string"==typeof e?await r(e,t):await r(F.wordArrayToMnemonic(e),t)}static seedToMasterNode(e){return s(a).fromSeed(e)}static async deriveKeyFromMnemonic(e,t=N){const r=this.buildBip44Path(t),n=await $.mnemonicToSeed(e),a=$.seedToMasterNode(n);return $.derivePrivateKey(a,r)}static async deriveNextKeyFromMnemonic(e,t,r=N){const n=t+1;return await this.deriveKeyFromMnemonic(e,{...r,index:n})}}const{randomBytes:G,bytesToHex:H}=o;class z{static generateRandomKey(e=32){if(!e||e<0||!Number.isInteger(e))throw new Error("PrivateKeyLength must be a positive integer");return G(e)}static generateKeyPair(e=32){if(!e||e<0||!Number.isInteger(e))throw new Error("PrivateKeyLength must be a positive integer");const t=G(e);return{privateKey:t,publicKey:i(t)}}static getKeyPairFromPrivateKey(e){return{privateKey:e,publicKey:i(e)}}static getPublicKeyFromPrivateKey(e){return i(e)}static convertKeyToHex(e){return H(e)}static async deriveKeyFromMnemonic(e,t){return await $.deriveKeyFromMnemonic(e,t)}static generateMpcKeyPair(){throw new Error("MPC key generation is not implemented yet.")}}const{blake2bHex:Y}=l,{keccak256:j}=d;class J{static createWallet(e,t){let r;r=e?z.getKeyPairFromPrivateKey(e):z.generateKeyPair();return{address:this.deriveAddressFromPublicKey(r.publicKey),publicKey:r.publicKey,privateKey:r.privateKey}}static async createWalletFromMnemonic(e,t){const r=e?F.mnemonicToWordArray(e):F.generateMnemonicArray(),n=F.wordArrayToMnemonic(r);if(!n||!F.isMnemonicValid(n))throw new Error("WalletsService.createWalletFromMnemonic: Recovery mnemonic is missing or invalid");const a=await $.mnemonicToSeed(r),s=$.seedToMasterNode(a),i=$.buildBip44Path({coinType:60,account:0,change:0,index:t||0}),o=$.derivePrivateKey(s,i);return{...this.createWallet(o),mnemonic:n}}static deriveAddressFromPrivateKey(e){const t=z.getKeyPairFromPrivateKey(e);return this.deriveAddressFromPublicKey(t.publicKey)}static deriveAddressFromPublicKey(e){const t=j(e.slice(1)),r=S(t.slice(-40)),n=j(r),a=`${y.coinId}${y.version}${n}`,s=S(a),i=Y(s,void 0,32).slice(0,8);return R(`${a}${i}`)}}function X(e,t,r,n,a,s){function i(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var o,c=n.kind,l="getter"===c?"get":"setter"===c?"set":"value",d=!t&&e?n.static?e:e.prototype:null,u=t||(d?Object.getOwnPropertyDescriptor(d,n.name):{}),h=!1,y=r.length-1;y>=0;y--){var p={};for(var g in n)p[g]="access"===g?{}:n[g];for(var g in n.access)p.access[g]=n.access[g];p.addInitializer=function(e){if(h)throw new TypeError("Cannot add initializers after decoration has completed");s.push(i(e||null))};var m=(0,r[y])("accessor"===c?{get:u.get,set:u.set}:u[l],p);if("accessor"===c){if(void 0===m)continue;if(null===m||"object"!=typeof m)throw new TypeError("Object expected");(o=i(m.get))&&(u.get=o),(o=i(m.set))&&(u.set=o),(o=i(m.init))&&a.unshift(o)}else(o=i(m))&&("field"===c?a.unshift(o):u[l]=o)}d&&Object.defineProperty(d,n.name,u),h=!0}var Z,q;"function"==typeof SuppressedError&&SuppressedError,function(e){e.READ_ONLY_NODE="READ_ONLY_NODE",e.CASPER_INSTANCE_UNAVAILABLE="CASPER_INSTANCE_UNAVAILABLE",e.INVALID_DEPLOY_ID="INVALID_DEPLOY_ID",e.INVALID_BLOCK_NUMBER="INVALID_BLOCK_NUMBER"}(Z||(Z={})),function(e){e.INSUFFICIENT_BALANCE="INSUFFICIENT_BALANCE",e.WRONG_NETWORK="WRONG_NETWORK",e.PARSING_ERROR="PARSING_ERROR",e.LOW_PHLO_PRICE="LOW_PHLO_PRICE",e.SIGNATURE_ERROR="SIGNATURE_ERROR",e.STORAGE_RETRIEVAL_ERROR="STORAGE_RETRIEVAL_ERROR",e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.DEPLOY_SUBMIT_TIMEOUT="DEPLOY_SUBMIT_TIMEOUT",e.BLOCK_INCLUSION_TIMEOUT="BLOCK_INCLUSION_TIMEOUT",e.FINALIZATION_TIMEOUT="FINALIZATION_TIMEOUT"}(q||(q={}));const Q={[Z.READ_ONLY_NODE]:"Node is read-only. Trying another node...",[Z.CASPER_INSTANCE_UNAVAILABLE]:"Casper instance not available. Trying another node...",[Z.INVALID_DEPLOY_ID]:"Invalid deploy ID. Please try again.",[Z.INVALID_BLOCK_NUMBER]:"Invalid block number. Please try again.",[q.INSUFFICIENT_BALANCE]:"Insufficient balance. Please top up your account.",[q.WRONG_NETWORK]:"Wrong network. Please contact technical support.",[q.PARSING_ERROR]:"Parsing error. Please contact technical support.",[q.LOW_PHLO_PRICE]:"Phlo price too low. Please rebuild the transaction with a higher phlo price.",[q.SIGNATURE_ERROR]:"Signature verification failed. Please try again.",[q.STORAGE_RETRIEVAL_ERROR]:"Storage retrieval error. Please try again later.",[q.UNKNOWN_ERROR]:"An unknown error occurred. Please try again.",[q.DEPLOY_SUBMIT_TIMEOUT]:"Deploy submission timed out. Please try again.",[q.BLOCK_INCLUSION_TIMEOUT]:"Deploy was not included in a block within the expected time.",[q.FINALIZATION_TIMEOUT]:"Block finalization polling timed out."};function ee(e){return Q[e]??"An unknown error occurred. Please try again."}function te(e,t){return function(...t){return"string"==typeof t[0]&&(t[0]=t[0].toLowerCase()),e.apply(this,t)}}let re=(()=>{var e;let t,r,n=[];return e=class{parseDeploymentError(e){return e.includes("read only")?Z.READ_ONLY_NODE:e.includes("casper instance")?Z.CASPER_INSTANCE_UNAVAILABLE:e.includes("invalid deploy ID")?Z.INVALID_DEPLOY_ID:e.includes("invalid block number")?Z.INVALID_BLOCK_NUMBER:e.includes("insufficient balance")?q.INSUFFICIENT_BALANCE:e.includes("wrong network")?q.WRONG_NETWORK:e.includes("parsing error")?q.PARSING_ERROR:e.includes("low")&&e.includes("phlo")?q.LOW_PHLO_PRICE:e.includes("signature")||e.includes("sign")||e.includes("invalid signature")?q.SIGNATURE_ERROR:e.includes("storage")||e.includes("retrieval")?q.STORAGE_RETRIEVAL_ERROR:q.UNKNOWN_ERROR}isDeploymentErrorRecoverable(e){return Object.values(Z).includes(e)}isDeploymentErrorFatal(e){return Object.values(q).includes(e)}isPollingErrorRecoverable(e){return e.includes("casper instance")||e.includes("storage")||e.includes("parsing")}getErrorMessageByErrorType(e){return Q[e]??Q[q.UNKNOWN_ERROR]}constructor(){!function(e,t,r){for(var n=arguments.length>2,a=0;a<t.length;a++)r=n?t[a].call(e,r):t[a].call(e)}(this,n)}},(()=>{const a="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;t=[te],r=[te],X(e,null,t,{kind:"method",name:"parseDeploymentError",static:!1,private:!1,access:{has:e=>"parseDeploymentError"in e,get:e=>e.parseDeploymentError},metadata:a},null,n),X(e,null,r,{kind:"method",name:"isPollingErrorRecoverable",static:!1,private:!1,access:{has:e=>"isPollingErrorRecoverable"in e,get:e=>e.isPollingErrorRecoverable},metadata:a},null,n),a&&Object.defineProperty(e,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:a})})(),e})();class ne{constructor(e){this.client=e}async get(e){return(await this.client.get(e)).data}async post(e,t){return(await this.client.post(e,t)).data}getBaseUrl(){return this.client.defaults.baseURL}}var ae,se;!function(e){e.DEPLOYING="Deploying",e.INCLUDED_IN_BLOCK="IncludedInBlock",e.FINALIZED="Finalized",e.CHECK_ERROR="CheckingError"}(ae||(ae={}));class ie{constructor(e,t){this.validatorClient=e,this.indexerClient=t}static createHttpClient(e){const t=u.create({baseURL:e.baseUrl,...e.axiosConfig});return new ne(t)}changeValidator(e){return this.validatorClient=ie.createHttpClient(e),this}changeIndexer(e){return this.indexerClient=ie.createHttpClient(e),this}static init(e){return ie.instance=new ie(this.createHttpClient(e.validator),this.createHttpClient(e.indexer)),ie.instance}static isInitialized(){return void 0!==ie?.instance}static getInstance(){if(!ie.isInitialized())throw new Error("BlockchainGateway is not initialized. Call BlockchainGateway.init() first.");return ie.instance}getValidatorClientUrl(){return this.validatorClient.getBaseUrl()??""}async submitDeploy(e){try{const t=await this.validatorClient.post("/api/deploy",e,{headers:{"Content-Type":"application/json"}});if(console.log("BlockchainGateway.submitDeploy: Deploy result:",t),"string"==typeof t){const e=/DeployId is:\s*([a-fA-F0-9]+)/.exec(t);return e?e[1]:t}return t.signature||t.deployId||t}catch(e){const t="BlockchainGateway.submitDeploy: "+this.getGatewayErrorMessage(e);throw new Error(t)}}async submitExploratoryDeploy(e){try{return await this.indexerClient.post("/api/explore-deploy",e)}catch(e){const t="BlockchainGateway.submitExploratoryDeploy: "+this.getGatewayErrorMessage(e);throw new Error(t)}}async exploreDeployData(e){try{return(await this.submitExploratoryDeploy(e)).expr}catch(e){const t="BlockchainGateway.exploreDeployData: "+this.getGatewayErrorMessage(e);throw console.error(t),new Error(t)}}async getDeploy(e){return await this.indexerClient.get(`/api/deploy/${e}`)}async isDeployFinalized(e){return e.faultTolerance>=.99}async getDeployStatus(e){try{let t;if(t=await this.getDeploy(e),!t?.blockHash)return{status:ae.DEPLOYING};return{status:await this.isDeployFinalized(t)?ae.FINALIZED:ae.INCLUDED_IN_BLOCK}}catch(e){const t="BlockchainGateway.getDeployStatus: "+this.getGatewayErrorMessage(e);return{status:ae.CHECK_ERROR,errorMessage:t}}}async getBlock(e){const t=await this.indexerClient.get(`/api/block/${e}`);return t?.blockInfo}async getLatestBlockNumber(){try{const e=await this.getLatestBlock();return e?.blockNumber??-1}catch(e){const t="BlockchainGateway.getLatestBlockNumber: "+this.getGatewayErrorMessage(e);return console.error(t),-1}}async isValidatorActive(){try{return await this.validatorClient.get("/status"),!0}catch(e){return console.error("BlockchainGateway.isValidatorActive: Node health check failed:",e),!1}}getGatewayErrorMessage(e){if(u.isAxiosError(e)){const t=e.response?.status??e.code,r=e.response?.statusText??"";return`Axios error while requesting "${e.config?.url??""}": [${t}] ${r} - ${e.message}`}return e instanceof Error?e.message:String(e)}validateBlocksResponse(e){if(!e?.length){throw new Error("BlockchainGateway.validateBlocksResponse: No blocks returned from /api/blocks endpoint")}}async getLatestBlock(){const e=await this.indexerClient.get("/api/blocks/1");return this.validateBlocksResponse(e),e[0]}}!function(e){e.LOCAL="local",e.MPC="mpc"}(se||(se={}));const oe={mode:se.LOCAL},ce=3e4,le=20,de=8,ue=5e5,he={phloPrice:1,useRandomNode:!0,deployValiditySeconds:80,nodeSelectionAttempts:3,deployRetries:3,deployIntervalSeconds:5,pollingIntervalSeconds:3};class ye{constructor(e,t,r){if(this.inactiveNodesUrls=new Set,this.currentNodeUrl="",!e?.length)throw new Error("At least one node URL must be provided");this.availableNodesUrls=e,this.useRandomNode=r,this.retriesLeft=t}static initialize(e,t=he.nodeSelectionAttempts,r=he.useRandomNode){const n=r?Math.max(1,t):0,a=new ye(e,n,r);return ye.instance=a,a}async connectDefaultNode(){if(this.useRandomNode)throw new Error("NodeManager.connectDefaultNode: Random node selection is enabled, cannot connect to default node");await this.connectNode(this.availableNodesUrls[0])}async connectNode(e){ie.getInstance().getValidatorClientUrl()!==e&&ie.getInstance().changeValidator({baseUrl:e});if(!await ie.getInstance().isValidatorActive()){this.deactivateNode(e);const t=`NodeManager.connectNode: Node ${e} is not active`;throw console.error(t),new Error(t)}this.currentNodeUrl=e}static getInstance(){if(!ye.instance)throw new Error("NodeManager is not initialized. Call NodeManager.initialize() first.");return ye.instance}isInitialized(){return!!this.currentNodeUrl}markNodeInactive(e){this.inactiveNodesUrls.add(e)}deactivateCurrentNode(){this.isInitialized()&&this.deactivateNode(this.currentNodeUrl)}deactivateNode(e){this.retriesLeft--,this.markNodeInactive(e),this.currentNodeUrl===e&&(this.currentNodeUrl="")}getAvailableNodesUrls(){return this.availableNodesUrls.filter(e=>!this.inactiveNodesUrls.has(e))}getRetriesLeft(){return this.retriesLeft}getRandomAvailableNodeUrl(){const e=this.getAvailableNodesUrls();if(!e?.length)throw console.error("NodeManager.getRandomAvailableNodeUrl: No available node URLs to select"),new Error("NodeManager: no available node URLs");return e[Math.floor(Math.random()*e.length)]}async connectActiveRandomNode(){if(!this.useRandomNode)throw new Error("NodeManager.connectActiveRandomNode: Random node selection is disabled, connect to default node");for(;this.retriesLeft>0;){const e=this.getRandomAvailableNodeUrl();if(console.log(`NodeManager.connectActiveRandomNode: Attempting to connect to node ${e}. Retries left: ${this.retriesLeft}`),e){try{await this.connectNode(e)}catch(e){continue}return}}throw new Error("NodeManager.connectActiveRandomNode: No active node URL found after all attempts")}}const pe=127;class ge{constructor(){this.buffer=[]}writeString(e,t){if(!t)return;const r=e<<3|2;this.writeInteger(r);const n=(new TextEncoder).encode(t);this.writeInteger(n.length),this.buffer.push(...Array.from(n))}writeInt64(e,t){if(!t)return;const r=e<<3;this.writeInteger(r),this.writeInteger64(t)}writeInteger(e){for(;e>pe;)this.buffer.push(e&pe|128),e>>>=7;this.buffer.push(e)}writeInteger64(e){for(;e>pe;)this.buffer.push(e&pe|128),e=Math.floor(e/128);this.buffer.push(e)}getResultBuffer(){return new Uint8Array(this.buffer)}}const{blake2bHex:me}=l;class fe{static async sign(e,t){const{wallet:r,data:n}=e;try{const e=await t();return await r.withSigningCapability(e,async e=>{const t=this.deployDataProtobufSerialize(n),r=me(t,void 0,32),a=Uint8Array.from(Buffer.from(r,"hex")),s=await e.signDigest(a),i=e.getPublicKey();return{data:{term:n.term,timestamp:n.timestamp,phloPrice:n.phloPrice,phloLimit:n.phloLimit,validAfterBlockNumber:n.validAfterBlockNumber,shardId:n.shardId},deployer:D(i),signature:D(s),sigAlgorithm:"secp256k1"}})}catch(e){const t=`SignerService.sign: ${e.message}`;throw new Error(t)}}}fe.deployDataProtobufSerialize=e=>{const{term:t,timestamp:r,phloPrice:n,phloLimit:a,validAfterBlockNumber:s,shardId:i=""}=e,o=new ge;return o.writeString(2,t),o.writeInt64(3,r),o.writeInt64(7,n),o.writeInt64(8,a),o.writeInt64(10,s),o.writeString(11,i),o.getResultBuffer()};const we=/[,\s]+/g,Ee=/^\d+(?:\.\d+)?$/,Ie=/(\.\d*?[1-9])0+$/,Ne=/\.0+$/,Ae=e=>{const t=w.toString().length-1;if("number"==typeof e){if(!Number.isFinite(e))throw new Error("Invalid number");e=String(e)}let r=String(e).trim();if(!r.length)throw new Error("Cannot process empty amount");let n=!1;if(r.startsWith("-")&&(n=!0,r=r.slice(1)),r=r.replace(we,""),!Ee.test(r))throw new Error("Invalid amount format");const[a,s=""]=r.split("."),i=a||"0";let o=s;o.length>t&&(console.warn(`Fraction ${o} has more than allowed decimals; truncating`),o=o.slice(0,t)),o=o.padEnd(t,"0");const c=BigInt(i)*w+BigInt(o||"0");return n?-c:c},ve=e=>{const t=e/w,r=e%w,n=w.toString().length-1,a=r.toString().padStart(n,"0");return`${t.toString()}.${a}`.replace(Ie,"$1").replace(Ne,"")},Re=e=>{const t=e/w,r=e%w;return t>BigInt(Number.MAX_SAFE_INTEGER)?(console.warn("Integer part exceeds Number.MAX_SAFE_INTEGER; returning imprecise Number"),Number(ve(e))):Number(t)+Number(r)/Number(w)},be=ve,Se=e=>[...Array(e)].map(()=>Math.floor(16*Math.random()).toString(16)).join(""),{blake2bHex:De}=l,Le=/[<>:"/\\|?*]/,_e=(e,t=30)=>e&&0!==e.trim().length?e.length>t?{isValid:!1,error:`Account name must be ${t} characters or less`}:Le.test(e)?{isValid:!1,error:"Account name contains invalid characters"}:{isValid:!0}:{isValid:!1,error:"Account name is required"},Oe=/^[a-zA-Z0-9]+$/,Ce=/^[1-9A-HJ-NP-Za-km-z]+$/,Te=`${y.coinId}${y.version}`;var Pe;!function(e){e.INVALID_PREFIX="INVALID_PREFIX",e.INVALID_LENGTH="INVALID_LENGTH",e.INVALID_ALPHABET="INVALID_ALPHABET",e.INVALID_BASE58="INVALID_BASE58",e.INVALID_HEX_LENGTH="INVALID_HEX_LENGTH",e.INVALID_CHAIN_PREFIX="INVALID_CHAIN_PREFIX",e.INVALID_CHECKSUM="INVALID_CHECKSUM",e.NON_CANONICAL="NON_CANONICAL"}(Pe||(Pe={}));const ke=e=>({isValid:!1,errorCode:e}),Ue=e=>{if(!e.startsWith("1111"))return ke(Pe.INVALID_PREFIX);if(e.length<50||e.length>54)return ke(Pe.INVALID_LENGTH);if(!Oe.test(e))return ke(Pe.INVALID_ALPHABET);if(!Ce.test(e))return ke(Pe.INVALID_BASE58);const t=D(b(e));if(80!==t.length)return ke(Pe.INVALID_HEX_LENGTH);if(R(t)!==e)return ke(Pe.NON_CANONICAL);const r=t.slice(0,72),n=t.slice(72);if(!r.startsWith(Te))return ke(Pe.INVALID_CHAIN_PREFIX);const a=De(S(r),void 0,32).slice(0,8);return 8!==n.length||n!==a?ke(Pe.INVALID_CHECKSUM):{isValid:!0}},Ke=e=>Ue(e).isValid;class Ve{constructor(e,t){if(this.startSubmissionTime=0,this.config=e,this.nodeManager=ye.initialize(t,e.nodeSelectionAttempts,e.useRandomNode),this.errorHandler=new re,!ie.isInitialized())throw new Error("BlockchainGateway is not initialized")}isDeployExpired(){return Date.now()-this.startSubmissionTime>=1e3*this.config.deployValiditySeconds}sleep(e){return new Promise(t=>setTimeout(t,1e3*e))}async retryDeployToOneNode(e,t,r,n){let a=this.config.deployRetries,s={success:!1};for(;a>0&&!this.isDeployExpired();){try{const a=ie.getInstance(),i=await a.getLatestBlockNumber();if(-1===i)throw new Error("DeployResubmitter.retryDeployToOneNode: Invalid block number");const o={term:e,phloLimit:n||ue,phloPrice:1,validAfterBlockNumber:i-1,timestamp:Date.now(),shardId:"root"},c=await fe.sign({wallet:t,data:o},r),l=await a.submitDeploy(c);if("string"!=typeof l){throw new Error("Invalid deploy ID received: "+l)}return s={success:!0,deployId:l},s}catch(e){const t="DeployResubmitter.retryDeployToOneNode:"+e.message,r=this.errorHandler.parseDeploymentError(t);if(console.error(t),s.error={blockchainError:{type:r,message:t}},this.errorHandler.isDeploymentErrorFatal(r))break;a--}await this.sleep(this.config.deployIntervalSeconds)}return this.isDeployExpired()&&(s.error=s?.error||{},s.error.exceededTimeout=q.DEPLOY_SUBMIT_TIMEOUT),{success:!1,error:s.error}}async retryDeployToRandomNodes(e,t,r,n){let a={success:!1};for(;!this.isDeployExpired()&&this.nodeManager.getRetriesLeft()>0&&(await this.nodeManager.connectActiveRandomNode(),a=await this.retryDeployToOneNode(e,t,r,n),!a.success)&&(this.nodeManager.deactivateCurrentNode(),a.error?.blockchainError?.type)&&!this.errorHandler.isDeploymentErrorFatal(a.error?.blockchainError?.type););return a}async pollDeployStatus(e){let t;for(;!this.isDeployExpired();){const r=await ie.getInstance().getDeployStatus(e),n=r.status;if(n===ae.CHECK_ERROR){const e=`DeployResubmitter.pollDeployStatus: ${"errorMessage"in r?r.errorMessage:"Unknown error"}`,n=this.errorHandler.parseDeploymentError(e);console.error(e);const a={type:n,message:e};if(this.errorHandler.isDeploymentErrorFatal(n)&&!e.includes("Bad Request"))return{success:!1,deployStatus:ae.CHECK_ERROR,error:{blockchainError:a}};t=a}if(console.log("DeployResubmitter.pollDeployStatus: current deploy status:",n),n==ae.INCLUDED_IN_BLOCK||n==ae.FINALIZED)return{success:!0,deployStatus:r.status};await this.sleep(this.config.pollingIntervalSeconds)}return{success:!1,deployStatus:t?ae.CHECK_ERROR:ae.DEPLOYING,error:{...t,exceededTimeout:q.BLOCK_INCLUSION_TIMEOUT}}}async resubmit(e,t,r,n){let a;if(console.log("DeployResubmitter: starting deploy submission with resubmission logic"),this.startSubmissionTime=Date.now(),this.config.useRandomNode?a=await this.retryDeployToRandomNodes(e,t,r,n):(await this.nodeManager.connectDefaultNode(),a=await this.retryDeployToOneNode(e,t,r,n)),!a.success||!a?.deployId)return a;console.log(`DeployResubmitter: deploy submitted successfully with ID: ${a.deployId}. Starting to poll for status...`);const s=await this.pollDeployStatus(a.deployId);return console.log(`DeployResubmitter: finished polling deploy status. Final status: ${s.deployStatus}, success: ${s.success}`),s}}const Be=e=>e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t");class Me{async transfer(e,t,r,n,a,s=5e5){try{const i=Ue(e);if(!i.isValid)throw new Error(`AssetsService.transfer: Invalid 'fromAddress': ${i.errorCode??"UNKNOWN"}`);const o=Ue(t);if(!o.isValid)throw new Error(`AssetsService.transfer: Invalid 'toAddress': ${o.errorCode??"UNKNOWN"}`);if(r<=0n)throw new Error("AssetsService.transfer: Transfer amount must be greater than zero");const c=ie.getInstance(),l=((e,t,r)=>{if(r<=0n)throw new Error("Transfer amount must be greater than zero");const n=Be(e),a=Be(t),s=r.toString();return`\n new \n deployerId(\`rho:rchain:deployerId\`),\n stdout(\`rho:io:stdout\`),\n rl(\`rho:registry:lookup\`),\n ASIVaultCh,\n vaultCh,\n toVaultCh,\n asiVaultkeyCh,\n resultCh\n in {\n rl!(\`rho:rchain:asiVault\`, *ASIVaultCh) |\n for (@(_, ASIVault) <- ASIVaultCh) {\n @ASIVault!("findOrCreate", "${n}", *vaultCh) |\n @ASIVault!("findOrCreate", "${a}", *toVaultCh) |\n @ASIVault!("deployerAuthKey", *deployerId, *asiVaultkeyCh) |\n for (@(true, vault) <- vaultCh; key <- asiVaultkeyCh; @(true, toVault) <- toVaultCh) {\n @vault!("transfer", "${a}", ${s}, *key, *resultCh) |\n for (@result <- resultCh) {\n match result {\n (true, Nil) => {\n stdout!(("Transfer successful:", ${s}, "ASI"))\n }\n (false, reason) => {\n stdout!(("Transfer failed:", reason))\n }\n }\n }\n } |\n for (@(false, errorMsg) <- vaultCh) {\n stdout!(("Sender vault error:", errorMsg))\n } |\n for (@(false, errorMsg) <- toVaultCh) {\n stdout!(("Destination vault error:", errorMsg))\n }\n }\n }\n `})(e,t,r),d=await c.getLatestBlockNumber();if(-1===d)throw new Error("AssetsService.transfer: Invalid block number");const u={term:l,phloLimit:s,phloPrice:1,validAfterBlockNumber:d-1,timestamp:Date.now(),shardId:"root"},h=await fe.sign({wallet:n,data:u},a);return await c.submitDeploy(h)}catch(e){const t="AssetsService.transfer: "+e.message;throw new Error(t)}}async getASIBalance(e){const t=Ue(e);if(!t.isValid)throw new Error(`AssetsService.getASIBalance: Invalid address: ${t.errorCode??"UNKNOWN"}`);const r=ie.getInstance(),n=(e=>`\n new return, rl(\`rho:registry:lookup\`), ASIVaultCh, vaultCh in {\n rl!(\`rho:rchain:asiVault\`, *ASIVaultCh) |\n for (@(_, ASIVault) <- ASIVaultCh) {\n @ASIVault!("findOrCreate", "${Be(e)}", *vaultCh) |\n for (@maybeVault <- vaultCh) {\n match maybeVault {\n (true, vault) => @vault!("balance", *return)\n (false, err) => return!(err)\n }\n }\n }\n }\n`)(e);try{const e=await r.exploreDeployData(n);if(e&&e.length>0){const t=e[0];if(t?.ExprInt?.data)return BigInt(t.ExprInt.data);if(t?.ExprString?.data)throw new Error("Balance check error:")}return BigInt(0)}catch(e){return BigInt(0)}}}class xe{constructor(e,t,r=8){this.id=e,this.name=t,this.decimals=r}getId(){return this.id}getName(){return this.name}getDecimals(){return this.decimals}}class We{static async createAndEncrypt(e,t){const r=await M.encryptWithPassword(e,t);return new We(r)}static createFromEncryptedData(e){return new We(e)}static createFromStringifiedEncryptedData(e){return new We(JSON.parse(e))}constructor(e){this.encryptedSeedData=e}async decrypt(e){return await M.decryptWithPassword(this.encryptedSeedData,e)}toString(){return JSON.stringify(this.encryptedSeedData)}}var Fe;!function(e){e.PRIVATE_KEY="private_key",e.CRYPTO_SALT="crypto_salt",e.CRYPTO_IV="crypto_iv",e.CRYPTO_VERSION="crypto version"}(Fe||(Fe={}));class $e{constructor(e,t,r,n,a){this.name=e,this.index=a,this.masterNodeId=n,this.address=t,this.privateKey=r,this.assets=new Map,this.isLocked=!0}static async fromPrivateKey(e,t,r,n=null,a=null){const s=J.deriveAddressFromPrivateKey(t),i=await this.encryptPrivateKey(t,r);return new $e(e,s,i,n,a)}static fromEncryptedData(e,t,r,n,a){const s=Ue(t);if(!s.isValid)throw new Error(`Invalid address format: ${s.errorCode??"UNKNOWN"}`);return new $e(e,t,r,n,a)}async decrypt(e){if(!$e.unsafeRawKeyExportEnabled)throw new Error("Wallet.decrypt is disabled by default for security. Use withSigningCapability() instead.");return await this.decryptPrivateKey(e)}static enableUnsafeRawKeyExportForLegacyInterop(){$e.unsafeRawKeyExportEnabled=!0}static disableUnsafeRawKeyExport(){$e.unsafeRawKeyExportEnabled=!1}static isUnsafeRawKeyExportEnabled(){return $e.unsafeRawKeyExportEnabled}async decryptPrivateKey(e){try{const t=await M.decryptWithPassword(this.privateKey,e),r=JSON.parse(t);if(r&&"object"==typeof r&&!Array.isArray(r)){const e=Object.keys(r).sort((e,t)=>Number(e)-Number(t)).map(e=>{const t=r[e],n="string"==typeof t?Number(t):t;return"number"!=typeof n||isNaN(n)?0:n});return new Uint8Array(e)}return new Uint8Array(r)}catch(e){throw new Error("Unlock Failed: "+e?.message)}}async withSigningCapability(e,t){const r=await this.decryptPrivateKey(e);let n=!1;const a={signDigest:async e=>{if(n)throw new Error("Signing capability has expired");return await c(e,r)},getPublicKey:()=>{if(n)throw new Error("Signing capability has expired");return z.getPublicKeyFromPrivateKey(r)}};try{return await t(a)}finally{n=!0,r.fill(0)}}getEncryptedPrivateKey(){return this.privateKey}registerAsset(e){this.assets.set(e.getId(),e)}getAddress(){return this.address}getName(){return this.name}getIndex(){return this.index}getAssets(){return this.assets}isWalletLocked(){return this.isLocked}toString(){const e={name:this.name,address:this.address,encryptedPrivateKey:JSON.stringify(this.privateKey),masterNodeId:this.masterNodeId??"",index:this.index?.toString()??""};return JSON.stringify(e)}static async encryptPrivateKey(e,t){return await M.encryptWithPassword(JSON.stringify(e),t)}}$e.unsafeRawKeyExportEnabled=!1;const Ge="0";class He{constructor(e){if("undefined"==typeof window)throw new Error("getVault can only be called in a browser environment");if(this.isLocked=!1,this.wallets=new Map,this.seeds=new Map,this.encryptedVaultData=null,!e)return;const t=JSON.parse(e);this.encryptedVaultData=t,this.isLocked=!0}static getSavedVaultKeys(){this.ensureBrowserEnvironment();const e=[];for(let t=0;t<localStorage.length;t++){const r=localStorage.key(t);r&&r.startsWith(this.vaultPrefix)&&e.push(r)}return e}static getVaultDataFromStorage(e){return this.ensureBrowserEnvironment(),localStorage.getItem(e)}isVaultLocked(){return this.isLocked}save(e="0"){if(He.ensureBrowserEnvironment(),!this.isLocked)throw new Error("Cannot save an unlocked vault");const t=`${He.vaultPrefix}_${e}`;localStorage.setItem(t,JSON.stringify(this.encryptedVaultData))}async lock(e){this.ensureUnlocked();const t=this.toString();this.encryptedVaultData=await M.encryptWithPassword(t,e),this.wallets=new Map,this.seeds=new Map,this.isLocked=!0}async unlock(e){if(!this.isLocked)return;if(!this.encryptedVaultData)throw new Error("Vault was unlocked on undefined encryptedVaultData");const t=await M.decryptWithPassword(this.encryptedVaultData,e),{wallets:r,seeds:n}=JSON.parse(t);this.metaToWallets(r),this.metaToSeeds(n),this.isLocked=!1}isEmpty(){return this.ensureUnlocked(),0===this.wallets.size}getWallets(){return Array.from(this.wallets.values())}getWalletsCount(){return this.ensureUnlocked(),this.wallets.size}getWalletAddresses(){return this.ensureUnlocked(),Array.from(this.wallets.keys())}addWallet(e){this.ensureUnlocked(),this.wallets.set(e.getAddress(),e)}removeWallet(e){this.ensureUnlocked(),this.wallets.delete(e)}getWallet(e){return this.ensureUnlocked(),this.wallets.get(e)}hasWallet(e){return this.ensureUnlocked(),this.wallets.has(e)}hasSeed(e){return this.ensureUnlocked(),this.seeds.has(e)}metaToWallets(e){const t=new Map;Object.keys(e).forEach(r=>{const n=JSON.parse(e[r]),a=$e.fromEncryptedData(n.name,n.address,JSON.parse(n.encryptedPrivateKey),n.masterNodeId,n.index?+n.index:null);t.set(r,a)}),this.wallets=t}metaToSeeds(e){const t=new Map;Object.keys(e).forEach(r=>{const n=We.createFromStringifiedEncryptedData(e[r]);t.set(r,n)}),this.seeds=t}getSeeds(){return this.ensureUnlocked(),Array.from(this.seeds.values())}getSeed(e){return this.ensureUnlocked(),this.seeds.get(e)}addSeed(e,t){this.ensureUnlocked(),this.seeds.set(e,t)}removeSeed(e){this.ensureUnlocked(),this.seeds.delete(e)}getSeedsIds(){return this.ensureUnlocked(),Array.from(this.seeds.keys())}toString(){const e={},t={};this.ensureUnlocked();const r=this.getWalletAddresses(),n=this.getSeedsIds();return r.forEach(e=>{const r=this.getWallet(e);r&&(t[e]=r.toString())}),n.forEach(t=>{const r=this.getSeed(t);r&&(e[t]=r.toString())}),JSON.stringify({wallets:t,seeds:e})}ensureUnlocked(){if(this.isLocked)throw new Error("Attempted to access locked vault")}static ensureBrowserEnvironment(){if("undefined"==typeof window)throw new Error("getVault can only be called in a browser environment")}}He.vaultPrefix="ASI_WALLETS_VAULT";class ze{constructor(e="storage_prefix"){if("undefined"==typeof localStorage)throw new Error("localStorage is not supported in this environment.");this.prefix=e}write(e,t){localStorage.setItem(this.createKey(e),t)}read(e){return localStorage.getItem(this.createKey(e))}delete(e){localStorage.removeItem(this.createKey(e))}has(e){return!!localStorage.getItem(this.createKey(e))}isEmpty(){return!this.getIds().length}clear(){this.getIds().forEach(e=>localStorage.removeItem(e))}getIds(){const e=[];for(let t=0;t<localStorage.length;t++){const r=localStorage.key(t);if(!r)break;r.startsWith(`${this.prefix}`)&&e.push(r)}return e}createKey(e){return`${this.prefix}_${e}`}}export{w as ASI_BASE_UNIT,y as ASI_CHAIN_PREFIX,p as ASI_COIN_TYPE,g as ASI_DECIMALS,Pe as AddressValidationErrorCode,xe as Asset,Me as AssetsService,ne as AxiosHttpClient,ge as BinaryWriter,ie as BlockchainGateway,M as CryptoService,ce as DEFAULT_AXIOS_TIMEOUT_MS,N as DEFAULT_BIP_44_PATH_OPTIONS,oe as DEFAULT_CLIENT_CONFIG,de as DEFAULT_DECIMALS_AMOUNT,ue as DEFAULT_PHLO_LIMIT,he as DEFAULT_RESUBMIT_CONFIG,Ge as DEFAULT_STORAGE_KEY,Ve as DeployResubmitter,ae as DeployStatus,re as DeploymentErrorHandler,We as EncryptedRecord,E as FAULT_TOLERANCE_THRESHOLD,q as FatalDeployErrors,v as FeeService,m as GasFee,I as INVALID_BLOCK_NUMBER,$ as KeyDerivationService,z as KeysManager,le as MAX_WALLETS_PER_ACCOUNT,F as MnemonicService,W as MnemonicStrength,f as POWER_BASE,h as PRIVATE_KEY_LENGTH,Z as RecoverableDeployErrors,ye as ResubmitNodeManager,ze as SecureStorage,fe as SignerService,He as Vault,$e as Wallet,se as WalletClientModes,Fe as WalletMemoryKeys,J as WalletsService,L as arrayBufferToBase64,_ as base64ToArrayBuffer,S as decodeBase16,b as decodeBase58,Q as deploymentErrorMessages,D as encodeBase16,R as encodeBase58,be as fromAtomicAmount,Re as fromAtomicAmountToNumber,ve as fromAtomicAmountToString,Se as genRandomHex,ee as getDeploymentErrorMessage,Ke as isAddress,x as setupBufferPolyfill,Ae as toAtomicAmount,_e as validateAccountName,Ue as validateAddress};
|
|
1
|
+
import e from"bs58";import*as t from"bip39";import{mnemonicToSeed as r}from"bip39";import{Buffer as n}from"buffer";import*as a from"tiny-secp256k1";import{BIP32Factory as i}from"bip32";import{getPublicKey as s,utils as o,sign as c}from"@noble/secp256k1";import l from"blakejs";import d from"js-sha3";import u from"axios";const h=32,y={coinId:"000000",version:"00"},p=60,g=8,m={BASE_FEE:.0025,VARIATION_RANGE:.1,LABEL:"ASI",TRANSFER:"0.0025",DEPLOY:"0.0025"},f=10,w=BigInt(10)**BigInt(8),E=.99,I=-1,N={coinType:60,account:0,change:0,index:0};var A;class v{}A=v,v.generateRandomGasFee=()=>{const e=2*(Math.random()-.5)*m.VARIATION_RANGE;return(m.BASE_FEE*(1+e)).toFixed(4)},v.getGasFeeAsNumber=()=>m.BASE_FEE,v.formatGasFee=e=>`${e||A.generateRandomGasFee()} ${m.LABEL}`;const b=t=>{const r=R(t);return e.encode(r)},S=t=>e.decode(t),R=e=>{const t=new Uint8Array(e.length/2);for(let r=0;r<e.length;r+=2)t[r/2]=parseInt(e.substr(r,2),16);return t},D=e=>Array.from(e,e=>e.toString(16).padStart(2,"0")).join(""),L=e=>{const t=new Uint8Array(e);let r="";for(let e=0;e<t.byteLength;e++)r+=String.fromCharCode(t[e]);return btoa(r)},_=e=>{const t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return r.buffer},O=2,C=12,T=16,k=256,P="AES-GCM",U="SHA-256",K="raw",V="PBKDF2",B=1e5;class M{static async encryptWithPassword(e,t){const r=crypto.getRandomValues(new Uint8Array(T)),n=crypto.getRandomValues(new Uint8Array(C)),a=await this.deriveKey(t,r),i=await crypto.subtle.encrypt({name:P,iv:n},a,(new TextEncoder).encode(e));return{data:L(i),salt:L(r.buffer),iv:L(n.buffer),version:O}}static async decryptWithPassword(e,t){if(e.version!==O)throw new Error(`Unsupported version ${e.version}`);const r=new Uint8Array(_(e.salt)),n=new Uint8Array(_(e.iv)),a=await this.deriveKey(t,r),i=await crypto.subtle.decrypt({name:P,iv:n},a,_(e.data));return(new TextDecoder).decode(i)}static async deriveKey(e,t){const r=await crypto.subtle.importKey(K,(new TextEncoder).encode(e),V,!1,["deriveKey"]);return crypto.subtle.deriveKey({name:V,salt:new Uint8Array(t),iterations:B,hash:U},r,{name:P,length:k},!1,["encrypt","decrypt"])}}const x=()=>{"undefined"==typeof window||window.Buffer||(window.Buffer=n)};var W;x(),function(e){e[e.TWELVE_WORDS=128]="TWELVE_WORDS",e[e.TWENTY_FOUR_WORDS=256]="TWENTY_FOUR_WORDS"}(W||(W={}));class F{static generateMnemonic(e=W.TWELVE_WORDS){return t.generateMnemonic(e)}static generateMnemonicArray(e=W.TWELVE_WORDS){return this.mnemonicToWordArray(this.generateMnemonic(e))}static isMnemonicValid(e){return t.validateMnemonic(e)}static mnemonicToWordArray(e){return e.trim().split(" ")}static wordArrayToMnemonic(e){return e.join(" ")}}x();class G{static buildBip44Path({coinType:e=60,account:t=0,change:r=0,index:n=0}){return`m/44'/${e}'/${t}'/${r}/${n}`}static derivePrivateKey(e,t){const r=e.derivePath(t);if(!r.privateKey)throw new Error("No private key at derived node");return new Uint8Array(r.privateKey)}static async mnemonicToSeed(e,t=""){return"string"==typeof e?await r(e,t):await r(F.wordArrayToMnemonic(e),t)}static seedToMasterNode(e){return i(a).fromSeed(e)}static async deriveKeyFromMnemonic(e,t=N){const r=this.buildBip44Path(t),n=await G.mnemonicToSeed(e),a=G.seedToMasterNode(n);return G.derivePrivateKey(a,r)}static async deriveNextKeyFromMnemonic(e,t,r=N){const n=t+1;return await this.deriveKeyFromMnemonic(e,{...r,index:n})}}const{randomBytes:$,bytesToHex:H}=o;class z{static generateRandomKey(e=32){if(!e||e<0||!Number.isInteger(e))throw new Error("PrivateKeyLength must be a positive integer");return $(e)}static generateKeyPair(e=32){if(!e||e<0||!Number.isInteger(e))throw new Error("PrivateKeyLength must be a positive integer");const t=$(e);return{privateKey:t,publicKey:s(t)}}static getKeyPairFromPrivateKey(e){return{privateKey:e,publicKey:s(e)}}static getPublicKeyFromPrivateKey(e){return s(e)}static convertKeyToHex(e){return H(e)}static async deriveKeyFromMnemonic(e,t){return await G.deriveKeyFromMnemonic(e,t)}static generateMpcKeyPair(){throw new Error("MPC key generation is not implemented yet.")}}const{blake2bHex:j}=l,{keccak256:Y}=d;class J{static createWallet(e,t){let r;r=e?z.getKeyPairFromPrivateKey(e):z.generateKeyPair();return{address:this.deriveAddressFromPublicKey(r.publicKey),publicKey:r.publicKey,privateKey:r.privateKey}}static async createWalletFromMnemonic(e,t){const r=e?F.mnemonicToWordArray(e):F.generateMnemonicArray(),n=F.wordArrayToMnemonic(r);if(!n||!F.isMnemonicValid(n))throw new Error("WalletsService.createWalletFromMnemonic: Recovery mnemonic is missing or invalid");const a=await G.mnemonicToSeed(r),i=G.seedToMasterNode(a),s=G.buildBip44Path({coinType:60,account:0,change:0,index:t||0}),o=G.derivePrivateKey(i,s);return{...this.createWallet(o),mnemonic:n}}static deriveAddressFromPrivateKey(e){const t=z.getKeyPairFromPrivateKey(e);return this.deriveAddressFromPublicKey(t.publicKey)}static deriveAddressFromPublicKey(e){const t=Y(e.slice(1)),r=R(t.slice(-40)),n=Y(r),a=`${y.coinId}${y.version}${n}`,i=R(a),s=j(i,void 0,32).slice(0,8);return b(`${a}${s}`)}}function X(e,t,r,n,a,i){function s(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var o,c=n.kind,l="getter"===c?"get":"setter"===c?"set":"value",d=!t&&e?n.static?e:e.prototype:null,u=t||(d?Object.getOwnPropertyDescriptor(d,n.name):{}),h=!1,y=r.length-1;y>=0;y--){var p={};for(var g in n)p[g]="access"===g?{}:n[g];for(var g in n.access)p.access[g]=n.access[g];p.addInitializer=function(e){if(h)throw new TypeError("Cannot add initializers after decoration has completed");i.push(s(e||null))};var m=(0,r[y])("accessor"===c?{get:u.get,set:u.set}:u[l],p);if("accessor"===c){if(void 0===m)continue;if(null===m||"object"!=typeof m)throw new TypeError("Object expected");(o=s(m.get))&&(u.get=o),(o=s(m.set))&&(u.set=o),(o=s(m.init))&&a.unshift(o)}else(o=s(m))&&("field"===c?a.unshift(o):u[l]=o)}d&&Object.defineProperty(d,n.name,u),h=!0}function Z(e,t,r){for(var n=arguments.length>2,a=0;a<t.length;a++)r=n?t[a].call(e,r):t[a].call(e);return n?r:void 0}var q,Q;"function"==typeof SuppressedError&&SuppressedError,function(e){e.READ_ONLY_NODE="READ_ONLY_NODE",e.CASPER_INSTANCE_UNAVAILABLE="CASPER_INSTANCE_UNAVAILABLE",e.INVALID_DEPLOY_ID="INVALID_DEPLOY_ID",e.INVALID_BLOCK_NUMBER="INVALID_BLOCK_NUMBER"}(q||(q={})),function(e){e.INSUFFICIENT_BALANCE="INSUFFICIENT_BALANCE",e.WRONG_NETWORK="WRONG_NETWORK",e.PARSING_ERROR="PARSING_ERROR",e.LOW_PHLO_PRICE="LOW_PHLO_PRICE",e.SIGNATURE_ERROR="SIGNATURE_ERROR",e.STORAGE_RETRIEVAL_ERROR="STORAGE_RETRIEVAL_ERROR",e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.DEPLOY_SUBMIT_TIMEOUT="DEPLOY_SUBMIT_TIMEOUT",e.BLOCK_INCLUSION_TIMEOUT="BLOCK_INCLUSION_TIMEOUT",e.FINALIZATION_TIMEOUT="FINALIZATION_TIMEOUT"}(Q||(Q={}));const ee={[q.READ_ONLY_NODE]:"Node is read-only. Trying another node...",[q.CASPER_INSTANCE_UNAVAILABLE]:"Casper instance not available. Trying another node...",[q.INVALID_DEPLOY_ID]:"Invalid deploy ID. Please try again.",[q.INVALID_BLOCK_NUMBER]:"Invalid block number. Please try again.",[Q.INSUFFICIENT_BALANCE]:"Insufficient balance. Please top up your account.",[Q.WRONG_NETWORK]:"Wrong network. Please contact technical support.",[Q.PARSING_ERROR]:"Parsing error. Please contact technical support.",[Q.LOW_PHLO_PRICE]:"Phlo price too low. Please rebuild the transaction with a higher phlo price.",[Q.SIGNATURE_ERROR]:"Signature verification failed. Please try again.",[Q.STORAGE_RETRIEVAL_ERROR]:"Storage retrieval error. Please try again later.",[Q.UNKNOWN_ERROR]:"An unknown error occurred. Please try again.",[Q.DEPLOY_SUBMIT_TIMEOUT]:"Deploy submission timed out. Please try again.",[Q.BLOCK_INCLUSION_TIMEOUT]:"Deploy was not included in a block within the expected time.",[Q.FINALIZATION_TIMEOUT]:"Block finalization polling timed out."};function te(e){return ee[e]??"An unknown error occurred. Please try again."}function re(e,t){return function(...t){return"string"==typeof t[0]&&(t[0]=t[0].toLowerCase()),e.apply(this,t)}}let ne=(()=>{var e;let t,r,n=[];return e=class{parseDeploymentError(e){return e.includes("read only")?q.READ_ONLY_NODE:e.includes("casper instance")?q.CASPER_INSTANCE_UNAVAILABLE:e.includes("invalid deploy ID")?q.INVALID_DEPLOY_ID:e.includes("invalid block number")?q.INVALID_BLOCK_NUMBER:e.includes("insufficient balance")?Q.INSUFFICIENT_BALANCE:e.includes("wrong network")?Q.WRONG_NETWORK:e.includes("parsing error")?Q.PARSING_ERROR:e.includes("low")&&e.includes("phlo")?Q.LOW_PHLO_PRICE:e.includes("signature")||e.includes("sign")||e.includes("invalid signature")?Q.SIGNATURE_ERROR:e.includes("storage")||e.includes("retrieval")?Q.STORAGE_RETRIEVAL_ERROR:Q.UNKNOWN_ERROR}isDeploymentErrorRecoverable(e){return Object.values(q).includes(e)}isDeploymentErrorFatal(e){return Object.values(Q).includes(e)}isPollingErrorRecoverable(e){return e.includes("casper instance")||e.includes("storage")||e.includes("parsing")}getErrorMessageByErrorType(e){return ee[e]??ee[Q.UNKNOWN_ERROR]}constructor(){Z(this,n)}},(()=>{const a="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;t=[re],r=[re],X(e,null,t,{kind:"method",name:"parseDeploymentError",static:!1,private:!1,access:{has:e=>"parseDeploymentError"in e,get:e=>e.parseDeploymentError},metadata:a},null,n),X(e,null,r,{kind:"method",name:"isPollingErrorRecoverable",static:!1,private:!1,access:{has:e=>"isPollingErrorRecoverable"in e,get:e=>e.isPollingErrorRecoverable},metadata:a},null,n),a&&Object.defineProperty(e,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:a})})(),e})();class ae{constructor(e){this.client=e}async get(e){return(await this.client.get(e)).data}async post(e,t){return(await this.client.post(e,t)).data}getBaseUrl(){return this.client.defaults.baseURL}}var ie,se;!function(e){e.DEPLOYING="Deploying",e.INCLUDED_IN_BLOCK="IncludedInBlock",e.FINALIZED="Finalized",e.CHECK_ERROR="CheckingError"}(ie||(ie={}));class oe{constructor(e,t){this.validatorClient=e,this.indexerClient=t}static createHttpClient(e){const t=u.create({baseURL:e.baseUrl,...e.axiosConfig});return new ae(t)}changeValidator(e){return this.validatorClient=oe.createHttpClient(e),this}changeIndexer(e){return this.indexerClient=oe.createHttpClient(e),this}static init(e){return oe.instance=new oe(this.createHttpClient(e.validator),this.createHttpClient(e.indexer)),oe.instance}static isInitialized(){return void 0!==oe?.instance}static getInstance(){if(!oe.isInitialized())throw new Error("BlockchainGateway is not initialized. Call BlockchainGateway.init() first.");return oe.instance}getValidatorClientUrl(){return this.validatorClient.getBaseUrl()??""}async submitDeploy(e){try{const t=await this.validatorClient.post("/api/deploy",e,{headers:{"Content-Type":"application/json"}});if(console.log("BlockchainGateway.submitDeploy: Deploy result:",t),"string"==typeof t){const e=/DeployId is:\s*([a-fA-F0-9]+)/.exec(t);return e?e[1]:t}return t.signature||t.deployId||t}catch(e){const t="BlockchainGateway.submitDeploy: "+this.getGatewayErrorMessage(e);throw new Error(t)}}async submitExploratoryDeploy(e){try{return await this.indexerClient.post("/api/explore-deploy",e)}catch(e){const t="BlockchainGateway.submitExploratoryDeploy: "+this.getGatewayErrorMessage(e);throw new Error(t)}}async exploreDeployData(e){try{return(await this.submitExploratoryDeploy(e)).expr}catch(e){const t="BlockchainGateway.exploreDeployData: "+this.getGatewayErrorMessage(e);throw console.error(t),new Error(t)}}async getDeploy(e){return await this.indexerClient.get(`/api/deploy/${e}`)}async isDeployFinalized(e){return e.faultTolerance>=.99}async getDeployStatus(e){try{let t;if(t=await this.getDeploy(e),!t?.blockHash)return{status:ie.DEPLOYING};return{status:await this.isDeployFinalized(t)?ie.FINALIZED:ie.INCLUDED_IN_BLOCK}}catch(e){const t="BlockchainGateway.getDeployStatus: "+this.getGatewayErrorMessage(e);return{status:ie.CHECK_ERROR,errorMessage:t}}}async getBlock(e){const t=await this.indexerClient.get(`/api/block/${e}`);return t?.blockInfo}async getLatestBlockNumber(){try{const e=await this.getLatestBlock();return e?.blockNumber??-1}catch(e){const t="BlockchainGateway.getLatestBlockNumber: "+this.getGatewayErrorMessage(e);return console.error(t),-1}}async isValidatorActive(){try{return await this.validatorClient.get("/status"),!0}catch(e){return console.error("BlockchainGateway.isValidatorActive: Node health check failed:",e),!1}}getGatewayErrorMessage(e){if(u.isAxiosError(e)){const t=e.response?.status??e.code,r=e.response?.statusText??"";return`Axios error while requesting "${e.config?.url??""}": [${t}] ${r} - ${e.message}`}return e instanceof Error?e.message:String(e)}validateBlocksResponse(e){if(!e?.length){throw new Error("BlockchainGateway.validateBlocksResponse: No blocks returned from /api/blocks endpoint")}}async getLatestBlock(){const e=await this.indexerClient.get("/api/blocks/1");return this.validateBlocksResponse(e),e[0]}}!function(e){e.LOCAL="local",e.MPC="mpc"}(se||(se={}));const ce={mode:se.LOCAL},le=3e4,de=20,ue=8,he=5e5,ye={phloPrice:1,useRandomNode:!0,deployValiditySeconds:80,nodeSelectionAttempts:3,deployRetries:3,deployIntervalSeconds:5,pollingIntervalSeconds:3};function pe(e,t){return function(...r){if(!oe.isInitialized())throw new Error(`${t.kind} ${String(t.name)}: BlockchainGateway is not initialized. Call BlockchainGateway.init() first.`);return e.apply(this,r)}}let ge=(()=>{var e;let t,r,n=[];return e=class{constructor(e,t,r){if(this.retriesLeft=Z(this,n),this.inactiveNodesUrls=new Set,this.currentNodeUrl="",!e?.length)throw new Error("At least one node URL must be provided");this.availableNodesUrls=e,this.useRandomNode=r,this.retriesLeft=t}static initialize(t,r=ye.nodeSelectionAttempts,n=ye.useRandomNode){const a=n?Math.max(1,r):0,i=new e(t,a,n);return e.instance=i,i}async connectDefaultNode(){if(this.useRandomNode)throw new Error("NodeManager.connectDefaultNode: Random node selection is enabled, cannot connect to default node");await this.connectNode(this.availableNodesUrls[0])}async connectNode(e){oe.getInstance().getValidatorClientUrl()!==e&&oe.getInstance().changeValidator({baseUrl:e});if(!await oe.getInstance().isValidatorActive()){this.deactivateNode(e);const t=`NodeManager.connectNode: Node ${e} is not active`;throw console.error(t),new Error(t)}this.currentNodeUrl=e}static getInstance(){if(!e.instance)throw new Error("NodeManager is not initialized. Call NodeManager.initialize() first.");return e.instance}isInitialized(){return!!this.currentNodeUrl}markNodeInactive(e){this.inactiveNodesUrls.add(e)}deactivateCurrentNode(){this.isInitialized()&&this.deactivateNode(this.currentNodeUrl)}deactivateNode(e){this.retriesLeft--,this.markNodeInactive(e),this.currentNodeUrl===e&&(this.currentNodeUrl="")}getAvailableNodesUrls(){return this.availableNodesUrls.filter(e=>!this.inactiveNodesUrls.has(e))}getRetriesLeft(){return this.retriesLeft}getRandomAvailableNodeUrl(){const e=this.getAvailableNodesUrls();if(!e?.length)throw console.error("NodeManager.getRandomAvailableNodeUrl: No available node URLs to select"),new Error("NodeManager: no available node URLs");return e[Math.floor(Math.random()*e.length)]}async connectActiveRandomNode(){if(!this.useRandomNode)throw new Error("NodeManager.connectActiveRandomNode: Random node selection is disabled, connect to default node");for(;this.retriesLeft>0;){const e=this.getRandomAvailableNodeUrl();if(console.log(`NodeManager.connectActiveRandomNode: Attempting to connect to node ${e}. Retries left: ${this.retriesLeft}`),e){try{await this.connectNode(e)}catch(e){continue}return}}throw new Error("NodeManager.connectActiveRandomNode: No active node URL found after all attempts")}},(()=>{const a="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;t=[pe],r=[pe],X(e,null,t,{kind:"method",name:"connectDefaultNode",static:!1,private:!1,access:{has:e=>"connectDefaultNode"in e,get:e=>e.connectDefaultNode},metadata:a},null,n),X(e,null,r,{kind:"method",name:"connectActiveRandomNode",static:!1,private:!1,access:{has:e=>"connectActiveRandomNode"in e,get:e=>e.connectActiveRandomNode},metadata:a},null,n),a&&Object.defineProperty(e,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:a})})(),e})();const me=127;class fe{constructor(){this.buffer=[]}writeString(e,t){if(!t)return;const r=e<<3|2;this.writeInteger(r);const n=(new TextEncoder).encode(t);this.writeInteger(n.length),this.buffer.push(...Array.from(n))}writeInt64(e,t){if(!t)return;const r=e<<3;this.writeInteger(r),this.writeInteger64(t)}writeInteger(e){for(;e>me;)this.buffer.push(e&me|128),e>>>=7;this.buffer.push(e)}writeInteger64(e){for(;e>me;)this.buffer.push(e&me|128),e=Math.floor(e/128);this.buffer.push(e)}getResultBuffer(){return new Uint8Array(this.buffer)}}const{blake2bHex:we}=l;class Ee{static async sign(e,t){const{wallet:r,data:n}=e;try{const e=await t();return await r.withSigningCapability(e,async e=>{const t=this.deployDataProtobufSerialize(n),r=we(t,void 0,32),a=Uint8Array.from(Buffer.from(r,"hex")),i=await e.signDigest(a),s=e.getPublicKey();return{data:{term:n.term,timestamp:n.timestamp,phloPrice:n.phloPrice,phloLimit:n.phloLimit,validAfterBlockNumber:n.validAfterBlockNumber,shardId:n.shardId},deployer:D(s),signature:D(i),sigAlgorithm:"secp256k1"}})}catch(e){const t=`SignerService.sign: ${e.message}`;throw new Error(t)}}}Ee.deployDataProtobufSerialize=e=>{const{term:t,timestamp:r,phloPrice:n,phloLimit:a,validAfterBlockNumber:i,shardId:s=""}=e,o=new fe;return o.writeString(2,t),o.writeInt64(3,r),o.writeInt64(7,n),o.writeInt64(8,a),o.writeInt64(10,i),o.writeString(11,s),o.getResultBuffer()};const Ie=/[,\s]+/g,Ne=/^\d+(?:\.\d+)?$/,Ae=/(\.\d*?[1-9])0+$/,ve=/\.0+$/,be=e=>{const t=w.toString().length-1;if("number"==typeof e){if(!Number.isFinite(e))throw new Error("Invalid number");e=String(e)}let r=String(e).trim();if(!r.length)throw new Error("Cannot process empty amount");let n=!1;if(r.startsWith("-")&&(n=!0,r=r.slice(1)),r=r.replace(Ie,""),!Ne.test(r))throw new Error("Invalid amount format");const[a,i=""]=r.split("."),s=a||"0";let o=i;o.length>t&&(console.warn(`Fraction ${o} has more than allowed decimals; truncating`),o=o.slice(0,t)),o=o.padEnd(t,"0");const c=BigInt(s)*w+BigInt(o||"0");return n?-c:c},Se=e=>{const t=e/w,r=e%w,n=w.toString().length-1,a=r.toString().padStart(n,"0");return`${t.toString()}.${a}`.replace(Ae,"$1").replace(ve,"")},Re=e=>{const t=e/w,r=e%w;return t>BigInt(Number.MAX_SAFE_INTEGER)?(console.warn("Integer part exceeds Number.MAX_SAFE_INTEGER; returning imprecise Number"),Number(Se(e))):Number(t)+Number(r)/Number(w)},De=Se,Le=e=>[...Array(e)].map(()=>Math.floor(16*Math.random()).toString(16)).join(""),{blake2bHex:_e}=l,Oe=/[<>:"/\\|?*]/,Ce=(e,t=30)=>e&&0!==e.trim().length?e.length>t?{isValid:!1,error:`Account name must be ${t} characters or less`}:Oe.test(e)?{isValid:!1,error:"Account name contains invalid characters"}:{isValid:!0}:{isValid:!1,error:"Account name is required"},Te=/^[a-zA-Z0-9]+$/,ke=/^[1-9A-HJ-NP-Za-km-z]+$/,Pe=`${y.coinId}${y.version}`;var Ue;!function(e){e.INVALID_PREFIX="INVALID_PREFIX",e.INVALID_LENGTH="INVALID_LENGTH",e.INVALID_ALPHABET="INVALID_ALPHABET",e.INVALID_BASE58="INVALID_BASE58",e.INVALID_HEX_LENGTH="INVALID_HEX_LENGTH",e.INVALID_CHAIN_PREFIX="INVALID_CHAIN_PREFIX",e.INVALID_CHECKSUM="INVALID_CHECKSUM",e.NON_CANONICAL="NON_CANONICAL"}(Ue||(Ue={}));const Ke=e=>({isValid:!1,errorCode:e}),Ve=e=>{if(!e.startsWith("1111"))return Ke(Ue.INVALID_PREFIX);if(e.length<50||e.length>54)return Ke(Ue.INVALID_LENGTH);if(!Te.test(e))return Ke(Ue.INVALID_ALPHABET);if(!ke.test(e))return Ke(Ue.INVALID_BASE58);const t=D(S(e));if(80!==t.length)return Ke(Ue.INVALID_HEX_LENGTH);if(b(t)!==e)return Ke(Ue.NON_CANONICAL);const r=t.slice(0,72),n=t.slice(72);if(!r.startsWith(Pe))return Ke(Ue.INVALID_CHAIN_PREFIX);const a=_e(R(r),void 0,32).slice(0,8);return 8!==n.length||n!==a?Ke(Ue.INVALID_CHECKSUM):{isValid:!0}},Be=e=>Ve(e).isValid;class Me{constructor(e,t){if(this.startSubmissionTime=0,this.config=e,this.nodeManager=ge.initialize(t,e.nodeSelectionAttempts,e.useRandomNode),this.errorHandler=new ne,!oe.isInitialized())throw new Error("BlockchainGateway is not initialized")}isDeployExpired(){return Date.now()-this.startSubmissionTime>=1e3*this.config.deployValiditySeconds}sleep(e){return new Promise(t=>setTimeout(t,1e3*e))}async retryDeployToOneNode(e,t,r,n){let a=this.config.deployRetries,i={success:!1};for(;a>0&&!this.isDeployExpired();){try{const a=oe.getInstance(),s=await a.getLatestBlockNumber();if(-1===s)throw new Error("DeployResubmitter.retryDeployToOneNode: Invalid block number");const o={term:e,phloLimit:n||he,phloPrice:1,validAfterBlockNumber:s-1,timestamp:Date.now(),shardId:"root"},c=await Ee.sign({wallet:t,data:o},r),l=await a.submitDeploy(c);if("string"!=typeof l){throw new Error("Invalid deploy ID received: "+l)}return i={success:!0,deployId:l},i}catch(e){const t="DeployResubmitter.retryDeployToOneNode:"+e.message,r=this.errorHandler.parseDeploymentError(t);if(console.error(t),i.error={blockchainError:{type:r,message:t}},this.errorHandler.isDeploymentErrorFatal(r))break;a--}await this.sleep(this.config.deployIntervalSeconds)}return this.isDeployExpired()&&(i.error=i?.error||{},i.error.exceededTimeout=Q.DEPLOY_SUBMIT_TIMEOUT),{success:!1,error:i.error}}async retryDeployToRandomNodes(e,t,r,n){let a={success:!1};for(;!this.isDeployExpired()&&this.nodeManager.getRetriesLeft()>0&&(await this.nodeManager.connectActiveRandomNode(),a=await this.retryDeployToOneNode(e,t,r,n),!a.success)&&(this.nodeManager.deactivateCurrentNode(),a.error?.blockchainError?.type)&&!this.errorHandler.isDeploymentErrorFatal(a.error?.blockchainError?.type););return a}async pollDeployStatus(e){let t;for(;!this.isDeployExpired();){const r=await oe.getInstance().getDeployStatus(e),n=r.status;if(n===ie.CHECK_ERROR){const e=`DeployResubmitter.pollDeployStatus: ${"errorMessage"in r?r.errorMessage:"Unknown error"}`,n=this.errorHandler.parseDeploymentError(e);console.error(e);const a={type:n,message:e};if(this.errorHandler.isDeploymentErrorFatal(n)&&!e.includes("Bad Request"))return{success:!1,deployStatus:ie.CHECK_ERROR,error:{blockchainError:a}};t=a}if(console.log("DeployResubmitter.pollDeployStatus: current deploy status:",n),n==ie.INCLUDED_IN_BLOCK||n==ie.FINALIZED)return{success:!0,deployStatus:r.status};await this.sleep(this.config.pollingIntervalSeconds)}return{success:!1,deployStatus:t?ie.CHECK_ERROR:ie.DEPLOYING,error:{...t,exceededTimeout:Q.BLOCK_INCLUSION_TIMEOUT}}}async resubmit(e,t,r,n){let a;if(console.log("DeployResubmitter: starting deploy submission with resubmission logic"),this.startSubmissionTime=Date.now(),this.config.useRandomNode?a=await this.retryDeployToRandomNodes(e,t,r,n):(await this.nodeManager.connectDefaultNode(),a=await this.retryDeployToOneNode(e,t,r,n)),!a.success||!a?.deployId)return a;console.log(`DeployResubmitter: deploy submitted successfully with ID: ${a.deployId}. Starting to poll for status...`);const i=await this.pollDeployStatus(a.deployId);return console.log(`DeployResubmitter: finished polling deploy status. Final status: ${i.deployStatus}, success: ${i.success}`),i}}const xe=e=>e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t");let We=(()=>{var e;let t,r,n=[];return e=class{getBlockchainGateway(){return oe.getInstance()}async transfer(e,t,r,n,a,i=5e5){try{const s=Ve(e);if(!s.isValid)throw new Error(`AssetsService.transfer: Invalid 'fromAddress': ${s.errorCode??"UNKNOWN"}`);const o=Ve(t);if(!o.isValid)throw new Error(`AssetsService.transfer: Invalid 'toAddress': ${o.errorCode??"UNKNOWN"}`);if(e===t)throw new Error("AssetsService.transfer: Sender and recipient addresses cannot be the same");if(r<=0n)throw new Error("AssetsService.transfer: Transfer amount must be greater than zero");if(e===t)throw new Error("AssetsService.transfer: Sender and recipient addresses cannot be the same");const c=this.getBlockchainGateway(),l=((e,t,r)=>{if(r<=0n)throw new Error("Transfer amount must be greater than zero");const n=xe(e),a=xe(t),i=r.toString();return`\n new \n deployerId(\`rho:rchain:deployerId\`),\n stdout(\`rho:io:stdout\`),\n rl(\`rho:registry:lookup\`),\n ASIVaultCh,\n vaultCh,\n toVaultCh,\n asiVaultkeyCh,\n resultCh\n in {\n rl!(\`rho:rchain:asiVault\`, *ASIVaultCh) |\n for (@(_, ASIVault) <- ASIVaultCh) {\n @ASIVault!("findOrCreate", "${n}", *vaultCh) |\n @ASIVault!("findOrCreate", "${a}", *toVaultCh) |\n @ASIVault!("deployerAuthKey", *deployerId, *asiVaultkeyCh) |\n for (@(true, vault) <- vaultCh; key <- asiVaultkeyCh; @(true, toVault) <- toVaultCh) {\n @vault!("transfer", "${a}", ${i}, *key, *resultCh) |\n for (@result <- resultCh) {\n match result {\n (true, Nil) => {\n stdout!(("Transfer successful:", ${i}, "ASI"))\n }\n (false, reason) => {\n stdout!(("Transfer failed:", reason))\n }\n }\n }\n } |\n for (@(false, errorMsg) <- vaultCh) {\n stdout!(("Sender vault error:", errorMsg))\n } |\n for (@(false, errorMsg) <- toVaultCh) {\n stdout!(("Destination vault error:", errorMsg))\n }\n }\n }\n `})(e,t,r),d=await c.getLatestBlockNumber();if(-1===d)throw new Error("AssetsService.transfer: Invalid block number");const u={term:l,phloLimit:i,phloPrice:1,validAfterBlockNumber:d-1,timestamp:Date.now(),shardId:"root"},h=await Ee.sign({wallet:n,data:u},a);return await c.submitDeploy(h)}catch(e){const t="AssetsService.transfer: "+e.message;throw new Error(t)}}async getASIBalance(e){const t=Ve(e);if(!t.isValid)throw new Error(`AssetsService.getASIBalance: Invalid address: ${t.errorCode??"UNKNOWN"}`);const r=this.getBlockchainGateway(),n=(e=>`\n new return, rl(\`rho:registry:lookup\`), ASIVaultCh, vaultCh in {\n rl!(\`rho:rchain:asiVault\`, *ASIVaultCh) |\n for (@(_, ASIVault) <- ASIVaultCh) {\n @ASIVault!("findOrCreate", "${xe(e)}", *vaultCh) |\n for (@maybeVault <- vaultCh) {\n match maybeVault {\n (true, vault) => @vault!("balance", *return)\n (false, err) => return!(err)\n }\n }\n }\n }\n`)(e);try{const e=await r.exploreDeployData(n);if(e&&e.length>0){const t=e[0];if(t?.ExprInt?.data)return BigInt(t.ExprInt.data);if(t?.ExprString?.data)throw new Error("Balance check error:")}return BigInt(0)}catch(e){return BigInt(0)}}constructor(){Z(this,n)}},(()=>{const a="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;t=[pe],r=[pe],X(e,null,t,{kind:"method",name:"transfer",static:!1,private:!1,access:{has:e=>"transfer"in e,get:e=>e.transfer},metadata:a},null,n),X(e,null,r,{kind:"method",name:"getASIBalance",static:!1,private:!1,access:{has:e=>"getASIBalance"in e,get:e=>e.getASIBalance},metadata:a},null,n),a&&Object.defineProperty(e,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:a})})(),e})();class Fe{constructor(e,t,r=8){this.id=e,this.name=t,this.decimals=r}getId(){return this.id}getName(){return this.name}getDecimals(){return this.decimals}}class Ge{static async createAndEncrypt(e,t){const r=await M.encryptWithPassword(e,t);return new Ge(r)}static createFromEncryptedData(e){return new Ge(e)}static createFromStringifiedEncryptedData(e){return new Ge(JSON.parse(e))}constructor(e){this.encryptedSeedData=e}async decrypt(e){return await M.decryptWithPassword(this.encryptedSeedData,e)}toString(){return JSON.stringify(this.encryptedSeedData)}}var $e;!function(e){e.PRIVATE_KEY="private_key",e.CRYPTO_SALT="crypto_salt",e.CRYPTO_IV="crypto_iv",e.CRYPTO_VERSION="crypto version"}($e||($e={}));class He{constructor(e,t,r,n,a){this.name=e,this.index=a,this.masterNodeId=n,this.address=t,this.privateKey=r,this.assets=new Map,this.isLocked=!0}static async fromPrivateKey(e,t,r,n=null,a=null){const i=J.deriveAddressFromPrivateKey(t),s=await this.encryptPrivateKey(t,r);return new He(e,i,s,n,a)}static fromEncryptedData(e,t,r,n,a){const i=Ve(t);if(!i.isValid)throw new Error(`Invalid address format: ${i.errorCode??"UNKNOWN"}`);return new He(e,t,r,n,a)}async decrypt(e){if(!He.unsafeRawKeyExportEnabled)throw new Error("Wallet.decrypt is disabled by default for security. Use withSigningCapability() instead.");return await this.decryptPrivateKey(e)}static enableUnsafeRawKeyExportForLegacyInterop(){He.unsafeRawKeyExportEnabled=!0}static disableUnsafeRawKeyExport(){He.unsafeRawKeyExportEnabled=!1}static isUnsafeRawKeyExportEnabled(){return He.unsafeRawKeyExportEnabled}async decryptPrivateKey(e){try{const t=await M.decryptWithPassword(this.privateKey,e),r=JSON.parse(t);if(r&&"object"==typeof r&&!Array.isArray(r)){const e=Object.keys(r).sort((e,t)=>Number(e)-Number(t)).map(e=>{const t=r[e],n="string"==typeof t?Number(t):t;return"number"!=typeof n||isNaN(n)?0:n});return new Uint8Array(e)}return new Uint8Array(r)}catch(e){throw new Error("Unlock Failed: "+e?.message)}}async withSigningCapability(e,t){const r=await this.decryptPrivateKey(e);let n=!1;const a={signDigest:async e=>{if(n)throw new Error("Signing capability has expired");return await c(e,r)},getPublicKey:()=>{if(n)throw new Error("Signing capability has expired");return z.getPublicKeyFromPrivateKey(r)}};try{return await t(a)}finally{n=!0,r.fill(0)}}getEncryptedPrivateKey(){return this.privateKey}registerAsset(e){this.assets.set(e.getId(),e)}getAddress(){return this.address}getName(){return this.name}getIndex(){return this.index}getAssets(){return this.assets}isWalletLocked(){return this.isLocked}toString(){const e={name:this.name,address:this.address,encryptedPrivateKey:JSON.stringify(this.privateKey),masterNodeId:this.masterNodeId??"",index:this.index?.toString()??""};return JSON.stringify(e)}static async encryptPrivateKey(e,t){return await M.encryptWithPassword(JSON.stringify(e),t)}}He.unsafeRawKeyExportEnabled=!1;const ze="0";class je{constructor(e){if("undefined"==typeof window)throw new Error("getVault can only be called in a browser environment");if(this.isLocked=!1,this.wallets=new Map,this.seeds=new Map,this.encryptedVaultData=null,!e)return;const t=JSON.parse(e);this.encryptedVaultData=t,this.isLocked=!0}static getSavedVaultKeys(){this.ensureBrowserEnvironment();const e=[];for(let t=0;t<localStorage.length;t++){const r=localStorage.key(t);r&&r.startsWith(this.vaultPrefix)&&e.push(r)}return e}static getVaultDataFromStorage(e){return this.ensureBrowserEnvironment(),localStorage.getItem(e)}isVaultLocked(){return this.isLocked}save(e="0"){if(je.ensureBrowserEnvironment(),!this.isLocked)throw new Error("Cannot save an unlocked vault");const t=`${je.vaultPrefix}_${e}`;localStorage.setItem(t,JSON.stringify(this.encryptedVaultData))}async lock(e){this.ensureUnlocked();const t=this.toString();this.encryptedVaultData=await M.encryptWithPassword(t,e),this.wallets=new Map,this.seeds=new Map,this.isLocked=!0}async unlock(e){if(!this.isLocked)return;if(!this.encryptedVaultData)throw new Error("Vault was unlocked on undefined encryptedVaultData");const t=await M.decryptWithPassword(this.encryptedVaultData,e),{wallets:r,seeds:n}=JSON.parse(t);this.metaToWallets(r),this.metaToSeeds(n),this.isLocked=!1}isEmpty(){return this.ensureUnlocked(),0===this.wallets.size}getWallets(){return Array.from(this.wallets.values())}getWalletsCount(){return this.ensureUnlocked(),this.wallets.size}getWalletAddresses(){return this.ensureUnlocked(),Array.from(this.wallets.keys())}addWallet(e){this.ensureUnlocked(),this.wallets.set(e.getAddress(),e)}removeWallet(e){this.ensureUnlocked(),this.wallets.delete(e)}getWallet(e){return this.ensureUnlocked(),this.wallets.get(e)}hasWallet(e){return this.ensureUnlocked(),this.wallets.has(e)}hasSeed(e){return this.ensureUnlocked(),this.seeds.has(e)}metaToWallets(e){const t=new Map;Object.keys(e).forEach(r=>{const n=JSON.parse(e[r]),a=He.fromEncryptedData(n.name,n.address,JSON.parse(n.encryptedPrivateKey),n.masterNodeId,n.index?+n.index:null);t.set(r,a)}),this.wallets=t}metaToSeeds(e){const t=new Map;Object.keys(e).forEach(r=>{const n=Ge.createFromStringifiedEncryptedData(e[r]);t.set(r,n)}),this.seeds=t}getSeeds(){return this.ensureUnlocked(),Array.from(this.seeds.values())}getSeed(e){return this.ensureUnlocked(),this.seeds.get(e)}addSeed(e,t){this.ensureUnlocked(),this.seeds.set(e,t)}removeSeed(e){this.ensureUnlocked(),this.seeds.delete(e)}getSeedsIds(){return this.ensureUnlocked(),Array.from(this.seeds.keys())}toString(){const e={},t={};this.ensureUnlocked();const r=this.getWalletAddresses(),n=this.getSeedsIds();return r.forEach(e=>{const r=this.getWallet(e);r&&(t[e]=r.toString())}),n.forEach(t=>{const r=this.getSeed(t);r&&(e[t]=r.toString())}),JSON.stringify({wallets:t,seeds:e})}ensureUnlocked(){if(this.isLocked)throw new Error("Attempted to access locked vault")}static ensureBrowserEnvironment(){if("undefined"==typeof window)throw new Error("getVault can only be called in a browser environment")}}je.vaultPrefix="ASI_WALLETS_VAULT";class Ye{constructor(e="storage_prefix"){if("undefined"==typeof localStorage)throw new Error("localStorage is not supported in this environment.");this.prefix=e}write(e,t){localStorage.setItem(this.createKey(e),t)}read(e){return localStorage.getItem(this.createKey(e))}delete(e){localStorage.removeItem(this.createKey(e))}has(e){return!!localStorage.getItem(this.createKey(e))}isEmpty(){return!this.getIds().length}clear(){this.getIds().forEach(e=>localStorage.removeItem(e))}getIds(){const e=[];for(let t=0;t<localStorage.length;t++){const r=localStorage.key(t);if(!r)break;r.startsWith(`${this.prefix}`)&&e.push(r)}return e}createKey(e){return`${this.prefix}_${e}`}}export{w as ASI_BASE_UNIT,y as ASI_CHAIN_PREFIX,p as ASI_COIN_TYPE,g as ASI_DECIMALS,Ue as AddressValidationErrorCode,Fe as Asset,We as AssetsService,ae as AxiosHttpClient,fe as BinaryWriter,oe as BlockchainGateway,M as CryptoService,le as DEFAULT_AXIOS_TIMEOUT_MS,N as DEFAULT_BIP_44_PATH_OPTIONS,ce as DEFAULT_CLIENT_CONFIG,ue as DEFAULT_DECIMALS_AMOUNT,he as DEFAULT_PHLO_LIMIT,ye as DEFAULT_RESUBMIT_CONFIG,ze as DEFAULT_STORAGE_KEY,Me as DeployResubmitter,ie as DeployStatus,ne as DeploymentErrorHandler,Ge as EncryptedRecord,E as FAULT_TOLERANCE_THRESHOLD,Q as FatalDeployErrors,v as FeeService,m as GasFee,I as INVALID_BLOCK_NUMBER,G as KeyDerivationService,z as KeysManager,de as MAX_WALLETS_PER_ACCOUNT,F as MnemonicService,W as MnemonicStrength,f as POWER_BASE,h as PRIVATE_KEY_LENGTH,q as RecoverableDeployErrors,ge as ResubmitNodeManager,Ye as SecureStorage,Ee as SignerService,je as Vault,He as Wallet,se as WalletClientModes,$e as WalletMemoryKeys,J as WalletsService,L as arrayBufferToBase64,_ as base64ToArrayBuffer,R as decodeBase16,S as decodeBase58,ee as deploymentErrorMessages,D as encodeBase16,b as encodeBase58,De as fromAtomicAmount,Re as fromAtomicAmountToNumber,Se as fromAtomicAmountToString,Le as genRandomHex,te as getDeploymentErrorMessage,Be as isAddress,x as setupBufferPolyfill,be as toAtomicAmount,Ce as validateAccountName,Ve as validateAddress};
|
|
2
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/utils/constants/index.ts","../src/services/Fee/index.ts","../src/utils/codec/index.ts","../src/services/Crypto/index.ts","../src/utils/polyfills/index.ts","../src/services/Mnemonic/index.ts","../src/services/KeyDerivation/index.ts","../src/services/KeysManager/index.ts","../src/services/Wallets/index.ts","../node_modules/tslib/tslib.es6.js","../src/domains/Error/meta.ts","../src/domains/Error/DeploymentErrorHandler.ts","../src/domains/HttpClient/index.ts","../src/domains/BlockchainGateway/index.ts","../src/config/index.ts","../src/utils/decorators/index.ts","../src/services/Resubmit/NodeManager.ts","../src/services/BinaryWriter/index.ts","../src/services/Signer/index.ts","../src/utils/functions/index.ts","../src/utils/validators/index.ts","../src/services/Resubmit/DeployResubmitter.ts","../src/domains/Deploy/factory/index.ts","../src/services/AssetsService/index.ts","../src/domains/Asset/index.ts","../src/domains/EncryptedRecord/index.ts","../src/domains/Wallet/index.ts","../src/domains/Vault/index.ts","../src/domains/BrowserStorage/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,"/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["PRIVATE_KEY_LENGTH","ASI_CHAIN_PREFIX","coinId","version","ASI_COIN_TYPE","ASI_DECIMALS","GasFee","BASE_FEE","VARIATION_RANGE","LABEL","TRANSFER","DEPLOY","POWER_BASE","ASI_BASE_UNIT","BigInt","FAULT_TOLERANCE_THRESHOLD","INVALID_BLOCK_NUMBER","DEFAULT_BIP_44_PATH_OPTIONS","coinType","account","change","index","FeeService","generateRandomGasFee","variation","Math","random","toFixed","getGasFeeAsNumber","formatGasFee","fee","_a","encodeBase58","hex","bytes","decodeBase16","bs58","encode","decodeBase58","value","decode","Uint8Array","length","i","parseInt","substr","encodeBase16","Array","from","byte","toString","padStart","join","arrayBufferToBase64","buffer","binary","byteLength","String","fromCharCode","btoa","base64ToArrayBuffer","base64","atob","charCodeAt","CryptoConfig","CryptoService","encryptWithPassword","data","password","salt","crypto","getRandomValues","iv","key","this","deriveKey","encrypted","subtle","encrypt","name","TextEncoder","decryptWithPassword","payload","passphrase","Error","decrypted","decrypt","TextDecoder","keyMaterial","importKey","iterations","hash","setupBufferPolyfill","window","Buffer","MnemonicStrength","MnemonicService","generateMnemonic","strength","TWELVE_WORDS","bip39","generateMnemonicArray","mnemonicToWordArray","isMnemonicValid","mnemonic","validateMnemonic","trim","split","wordArrayToMnemonic","words","KeyDerivationService","buildBip44Path","derivePrivateKey","masterNode","path","node","derivePath","privateKey","mnemonicToSeed","mnemonicWords","seedToMasterNode","seed","BIP32Factory","tinysecp","fromSeed","deriveKeyFromMnemonic","options","bip44Path","deriveNextKeyFromMnemonic","currentIndex","nextIndex","randomBytes","bytesToHex","utils","KeysManager","generateRandomKey","Number","isInteger","generateKeyPair","keyLength","publicKey","getPublicKey","getKeyPairFromPrivateKey","getPublicKeyFromPrivateKey","convertKeyToHex","generateMpcKeyPair","blake2bHex","blakejs","keccak256","sha3","WalletsService","createWallet","keyPair","address","deriveAddressFromPublicKey","createWalletFromMnemonic","mnemonicToUse","normalizedMnemonic","deriveAddressFromPrivateKey","slice","addressBase","addressBaseHash","addressPayload","addressPayloadBytes","checksum","undefined","__esDecorate","ctor","descriptorIn","decorators","contextIn","initializers","extraInitializers","accept","f","TypeError","_","kind","target","prototype","descriptor","Object","getOwnPropertyDescriptor","done","context","p","access","addInitializer","push","result","get","set","init","unshift","defineProperty","__runInitializers","thisArg","useValue","arguments","call","RecoverableDeployErrors","FatalDeployErrors","SuppressedError","deploymentErrorMessages","READ_ONLY_NODE","CASPER_INSTANCE_UNAVAILABLE","INVALID_DEPLOY_ID","INSUFFICIENT_BALANCE","WRONG_NETWORK","PARSING_ERROR","LOW_PHLO_PRICE","SIGNATURE_ERROR","STORAGE_RETRIEVAL_ERROR","UNKNOWN_ERROR","DEPLOY_SUBMIT_TIMEOUT","BLOCK_INCLUSION_TIMEOUT","FINALIZATION_TIMEOUT","getDeploymentErrorMessage","errorType","useLowerCaseMessage","methodArguments","toLowerCase","apply","parseDeploymentError","errorMessage","includes","isDeploymentErrorRecoverable","values","isDeploymentErrorFatal","isPollingErrorRecoverable","getErrorMessageByErrorType","_instanceExtraInitializers","_parseDeploymentError_decorators","static","private","has","obj","metadata","_metadata","_isPollingErrorRecoverable_decorators","AxiosHttpClient","constructor","client","url","post","getBaseUrl","defaults","baseURL","DeployStatus","WalletClientModes","BlockchainGateway","validatorClient","indexerClient","createHttpClient","config","axiosInstance","axios","create","baseUrl","axiosConfig","changeValidator","changeIndexer","instance","validator","indexer","isInitialized","getInstance","getValidatorClientUrl","submitDeploy","deployData","headers","console","log","deployIdMatch","exec","signature","deployId","error","message","getGatewayErrorMessage","submitExploratoryDeploy","rholangCode","exploreDeployData","expr","getDeploy","deployHash","isDeployFinalized","deploy","faultTolerance","getDeployStatus","blockHash","status","DEPLOYING","FINALIZED","INCLUDED_IN_BLOCK","CHECK_ERROR","getBlock","response","blockInfo","getLatestBlockNumber","block","getLatestBlock","blockNumber","isValidatorActive","isAxiosError","code","statusText","validateBlocksResponse","blocks","DEFAULT_CLIENT_CONFIG","mode","LOCAL","DEFAULT_AXIOS_TIMEOUT_MS","MAX_WALLETS_PER_ACCOUNT","DEFAULT_DECIMALS_AMOUNT","DEFAULT_PHLO_LIMIT","DEFAULT_RESUBMIT_CONFIG","phloPrice","useRandomNode","deployValiditySeconds","nodeSelectionAttempts","deployRetries","deployIntervalSeconds","pollingIntervalSeconds","RequireBlockchainGateway","availableNodesUrls","retriesLeft","inactiveNodesUrls","Set","currentNodeUrl","initialize","attempts","max","connectDefaultNode","connectNode","nodeUrl","deactivateNode","markNodeInactive","add","deactivateCurrentNode","getAvailableNodesUrls","filter","getRetriesLeft","getRandomAvailableNodeUrl","availableNodeUrls","floor","connectActiveRandomNode","_connectDefaultNode_decorators","_connectActiveRandomNode_decorators","MAX_BYTE_VALUE","BinaryWriterService","writeString","fieldNumber","writeInteger","writeInt64","writeInteger64","getResultBuffer","SignerService","sign","request","passwordProvider","wallet","withSigningCapability","async","signingCapability","deploySerialized","deployDataProtobufSerialize","hashed","suitableBytes","signDigest","term","timestamp","phloLimit","validAfterBlockNumber","shardId","deployer","sigAlgorithm","writer","BinaryWriter","REGEX_THOUSANDS","REGEX_AMOUNT_FORMAT","REGEX_TRIM_TRAILING_ZEROS","REGEX_DOT_ZERO","toAtomicAmount","amount","decimals","isFinite","amountString","isNegative","startsWith","replace","test","integerPartRaw","fractionRaw","integerPart","fraction","warn","padEnd","fromAtomicAmountToString","atomicAmount","remainder","fromAtomicAmountToNumber","MAX_SAFE_INTEGER","fromAtomicAmount","genRandomHex","size","map","INVALID_ACCOUNT_NAME_CHARS","validateAccountName","maxLength","isValid","ADDRESS_ALPHABET_REGEX","ADDRESS_BASE58_ALPHABET_REGEX","ADDRESS_PREFIX_HEX","AddressValidationErrorCode","getInvalidResult","errorCode","validateAddress","INVALID_PREFIX","INVALID_LENGTH","INVALID_ALPHABET","INVALID_BASE58","decodedHex","ADDRESS_PAYLOAD_HEX_LENGTH","INVALID_HEX_LENGTH","NON_CANONICAL","payloadHex","checksumHex","INVALID_CHAIN_PREFIX","expectedChecksumHex","INVALID_CHECKSUM","isAddress","DeployResubmitter","startSubmissionTime","nodeManager","NodeManager","errorHandler","DeploymentErrorHandler","isDeployExpired","Date","now","sleep","sec","Promise","resolve","setTimeout","retryDeployToOneNode","deployResult","success","gateway","latestBlockNumber","signedDeploy","blockchainError","type","exceededTimeout","retryDeployToRandomNodes","pollDeployStatus","last_error","checkDeployResult","deployStatus","resubmit","pollResult","escapeRholangString","getBlockchainGateway","transfer","fromAddress","toAddress","fromValidation","toValidation","transferRho","escapedFromAddress","escapedToAddress","createTransferDeploy","getASIBalance","validation","checkBalanceRho","createCheckBalanceDeploy","firstExpr","ExprInt","ExprString","_transfer_decorators","_getASIBalance_decorators","Asset","id","getId","getName","getDecimals","EncryptedRecord","createAndEncrypt","encryptedData","createFromEncryptedData","createFromStringifiedEncryptedData","JSON","parse","encryptedSeedData","stringify","WalletMemoryKeys","Wallet","encryptedPrivateKey","masterNodeId","assets","Map","isLocked","fromPrivateKey","encryptPrivateKey","fromEncryptedData","unsafeRawKeyExportEnabled","decryptPrivateKey","enableUnsafeRawKeyExportForLegacyInterop","disableUnsafeRawKeyExport","isUnsafeRawKeyExportEnabled","parsed","isArray","keys","sort","a","b","k","v","num","isNaN","callback","expired","digest","fill","getEncryptedPrivateKey","registerAsset","asset","getAddress","getIndex","getAssets","isWalletLocked","meta","DEFAULT_STORAGE_KEY","Vault","VaultData","wallets","seeds","encryptedVaultData","parsedData","getSavedVaultKeys","ensureBrowserEnvironment","localStorage","vaultPrefix","getVaultDataFromStorage","vaultKey","getItem","isVaultLocked","save","storageKey","setItem","lock","ensureUnlocked","rawVaultData","unlock","decryptedData","metaToWallets","metaToSeeds","isEmpty","getWallets","getWalletsCount","getWalletAddresses","addWallet","removeWallet","delete","getWallet","hasWallet","hasSeed","seedId","forEach","walletMeta","getSeeds","getSeed","addSeed","removeSeed","getSeedsIds","seedsMeta","walletsMeta","addresses","seedsIds","BrowserStorage","prefix","write","createKey","read","removeItem","getIds","clear","idsArray","localStorageKey"],"mappings":"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","x_google_ignoreList":[9]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Wallet, { Address } from "@domains/Wallet";
|
|
2
2
|
import { PasswordProvider } from "@domains/Signer";
|
|
3
3
|
export default class AssetsService {
|
|
4
|
+
private getBlockchainGateway;
|
|
4
5
|
transfer(fromAddress: Address, toAddress: Address, amount: bigint, wallet: Wallet, passwordProvider: PasswordProvider, phloLimit?: number): Promise<string | undefined>;
|
|
5
6
|
getASIBalance(address: Address): Promise<bigint>;
|
|
6
7
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decorator that ensures BlockchainGateway is initialized before method execution (Stage 3)
|
|
3
|
+
* Throws an error if BlockchainGateway has not been initialized via BlockchainGateway.init()
|
|
4
|
+
*/
|
|
5
|
+
export declare function RequireBlockchainGateway<T>(value: Function, context: ClassMethodDecoratorContext): (this: T, ...methodArguments: any[]) => any;
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.1.
|
|
2
|
+
"version": "0.1.3",
|
|
3
3
|
"name": "@asichain/asi-wallet-sdk",
|
|
4
4
|
"description": "ASI Wallet SDK",
|
|
5
5
|
"license": "Apache-2.0",
|
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
"module": "dist/index.esm.js",
|
|
9
9
|
"types": "dist/index.d.ts",
|
|
10
10
|
"sideEffects": false,
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "https://github.com/asi-alliance/asi-chain-wallet-sdk"
|
|
14
|
+
},
|
|
11
15
|
"files": [
|
|
12
16
|
"dist",
|
|
13
17
|
"README.md"
|