@ecency/sdk 2.3.40 → 2.3.43
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 +6 -2
- package/dist/browser/{hive-UyJkAmOk.d.ts → hive-CRPMQat7.d.ts} +10 -1
- package/dist/browser/hive.d.ts +1 -1
- package/dist/browser/hive.js +2 -2
- package/dist/browser/hive.js.map +1 -1
- package/dist/browser/index.d.ts +12 -3
- package/dist/browser/index.js +2 -2
- package/dist/browser/index.js.map +1 -1
- package/dist/node/hive.cjs +2 -2
- package/dist/node/hive.cjs.map +1 -1
- package/dist/node/hive.mjs +2 -2
- package/dist/node/hive.mjs.map +1 -1
- package/dist/node/index.cjs +2 -2
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.mjs +2 -2
- package/dist/node/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ Built and maintained by [Ecency](https://ecency.com), an open-source social plat
|
|
|
9
9
|
- **Built-in transaction engine** — create, sign, and broadcast Hive transactions with ECDSA secp256k1 cryptography, memo encryption, and full serialization for all 50 operation types (built on an improved version of [hive-tx](https://github.com/mahdiyari/hive-tx) by Mahdi Yari)
|
|
10
10
|
- **Multi-node RPC with health tracking** — automatic failover across Hive API nodes with per-node failure tracking, rate-limit detection, stale-head awareness, and quorum-based consensus calls
|
|
11
11
|
- **Query and mutation option builders** powered by [@tanstack/react-query](https://tanstack.com/query)
|
|
12
|
-
- **
|
|
12
|
+
- **26 domain modules**: accounts, ai, analytics, auth, bad-actors, bridge, communities, core, games, hive-engine, integrations, market, notifications, operations, points, polls, posts, private-api, promotions, proposals, quests, resource-credits, search, support, wallet, witnesses
|
|
13
13
|
- Central configuration via `CONFIG` / `ConfigManager` (RPC nodes, QueryClient, DMCA filtering)
|
|
14
14
|
|
|
15
15
|
## Why React Query?
|
|
@@ -352,8 +352,10 @@ src/hive-tx/ built-in transaction engine (signing, serialization, RPC
|
|
|
352
352
|
|
|
353
353
|
src/modules/
|
|
354
354
|
accounts/ account data, relationships, mutations
|
|
355
|
+
ai/ AI helpers (queries and mutations)
|
|
355
356
|
analytics/ activity tracking and stats
|
|
356
357
|
auth/ login, tokens, and auth helpers
|
|
358
|
+
bad-actors/ bad-actor list queries
|
|
357
359
|
bridge/ bridge API helpers
|
|
358
360
|
communities/ community queries and utils
|
|
359
361
|
core/ config, client, query manager, helpers
|
|
@@ -364,13 +366,15 @@ src/modules/
|
|
|
364
366
|
notifications/ notification queries and enums
|
|
365
367
|
operations/ operation signing helpers
|
|
366
368
|
points/ points queries and mutations
|
|
369
|
+
polls/ poll queries and mutations
|
|
367
370
|
posts/ post queries, mutations, utils
|
|
368
371
|
private-api/ private API helpers
|
|
369
372
|
promotions/ promotion queries
|
|
370
373
|
proposals/ proposal queries and mutations
|
|
374
|
+
quests/ quest queries and mutations
|
|
371
375
|
resource-credits/ RC stats helpers
|
|
372
376
|
search/ search queries
|
|
373
|
-
|
|
377
|
+
support/ support queries and mutations
|
|
374
378
|
wallet/ wallet-related queries and types
|
|
375
379
|
witnesses/ witness queries and votes
|
|
376
380
|
```
|
|
@@ -694,6 +694,15 @@ type APIMethods = 'balance' | 'hafah' | 'hafbe' | 'hivemind' | 'hivesense' | 're
|
|
|
694
694
|
* @param retry - Maximum number of retry attempts (default: config.retry). The
|
|
695
695
|
* wall-clock budget (`config.resilience.totalBudgetFactor` × timeout) may end
|
|
696
696
|
* the failover walk before the retry count is exhausted.
|
|
697
|
+
* @param validate - Optional payload validation. Some nodes return a valid
|
|
698
|
+
* JSON-RPC envelope carrying an impossible payload (e.g. account rows with
|
|
699
|
+
* metadata fields stripped to ""), which no transport-level check can catch.
|
|
700
|
+
* When the callback returns false the response is treated as a node fault:
|
|
701
|
+
* recorded against that node's per-API health (repeat offenders get an API
|
|
702
|
+
* cooldown and are deprioritized) and the failover walk continues to the
|
|
703
|
+
* next node instead of returning the lie. Keep validators conservative —
|
|
704
|
+
* reject only payloads the caller KNOWS cannot be correct, or a strict
|
|
705
|
+
* validator turns every node's honest answer into a failover storm.
|
|
697
706
|
* @returns Promise resolving to the API response
|
|
698
707
|
* @throws {RPCError} On blockchain-level errors (bad params, missing authority, etc.)
|
|
699
708
|
* @throws {Error} If all retry attempts fail
|
|
@@ -709,7 +718,7 @@ type APIMethods = 'balance' | 'hafah' | 'hafbe' | 'hivemind' | 'hivesense' | 're
|
|
|
709
718
|
* const data = await callRPC('condenser_api.get_content', ['alice', 'test-post'], 10_000, 5)
|
|
710
719
|
* ```
|
|
711
720
|
*/
|
|
712
|
-
declare const callRPC: <T = any>(method: string, params?: any[] | object, timeout?: number, retry?: number, signal?: AbortSignal) => Promise<T>;
|
|
721
|
+
declare const callRPC: <T = any>(method: string, params?: any[] | object, timeout?: number, retry?: number, signal?: AbortSignal, validate?: (result: unknown) => boolean) => Promise<T>;
|
|
713
722
|
/**
|
|
714
723
|
* Broadcast-safe RPC call. Only retries on pre-connection errors where the
|
|
715
724
|
* request definitively never reached the server (ECONNREFUSED, ENOTFOUND, etc.).
|
package/dist/browser/hive.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { a as AccountCreateOperation, b as AccountCreateWithDelegationOperation, c as AccountUpdate2Operation, d as AccountUpdateOperation, e as AccountWitnessProxyOperation, f as AccountWitnessVoteOperation, g as AssetSymbol, h as Authority, B as Beneficiary, i as BroadcastError, j as BroadcastResult, C as CallResponse, k as CancelTransferFromSavingsOperation, l as ChainProperties, m as ChangeRecoveryAccountOperation, n as ClaimAccountOperation, o as ClaimRewardBalanceOperation, p as CollateralizedConvertOperation, q as CommentOperation, r as CommentOptionsOperation, s as ConvertOperation, t as CreateClaimedAccountOperation, u as CreateProposalOperation, v as CustomJsonOperation, w as CustomOperation, D as DeclineVotingRightsOperation, x as DelegateVestingSharesOperation, y as DeleteCommentOperation, z as DigestData, E as EscrowApproveOperation, F as EscrowDisputeOperation, G as EscrowReleaseOperation, H as EscrowTransferOperation, I as Extension, J as FeedPublishOperation, L as LimitOrderCancelOperation, K as LimitOrderCreate2Operation, M as LimitOrderCreateOperation, N as Memo, O as Operation, P as OperationBody, Q as OperationName, R as Price, S as PrivateKey, T as PublicKey, U as RecoverAccountOperation, V as RecurrentTransferOperation, W as RemoveProposalOperation, X as RequestAccountRecoveryOperation, Y as ResetAccountOperation, Z as ResilienceOptions, _ as SetResetAccountOperation, $ as SetWithdrawVestingRouteOperation, a0 as Signature, a1 as Transaction, a2 as TransactionStatus, a3 as TransactionType, a4 as TransferFromSavingsOperation, a5 as TransferOperation, a6 as TransferToSavingsOperation, a7 as TransferToVestingOperation, a8 as UpdateProposalOperation, a9 as UpdateProposalVotesOperation, aa as VoteOperation, ab as WithdrawVestingOperation, ac as WitnessProps, ad as WitnessSetPropertiesOperation, ae as WitnessSetPropertiesParams, af as WitnessUpdateOperation, ag as callREST, ah as callRPC, ai as callRPCBroadcast, aj as callWithQuorum, ak as config, am as setNodes, an as setResilience, ao as setRestNodes, ap as setRestNodesByApi, aq as setUserAgent, ar as utils } from './hive-
|
|
1
|
+
export { a as AccountCreateOperation, b as AccountCreateWithDelegationOperation, c as AccountUpdate2Operation, d as AccountUpdateOperation, e as AccountWitnessProxyOperation, f as AccountWitnessVoteOperation, g as AssetSymbol, h as Authority, B as Beneficiary, i as BroadcastError, j as BroadcastResult, C as CallResponse, k as CancelTransferFromSavingsOperation, l as ChainProperties, m as ChangeRecoveryAccountOperation, n as ClaimAccountOperation, o as ClaimRewardBalanceOperation, p as CollateralizedConvertOperation, q as CommentOperation, r as CommentOptionsOperation, s as ConvertOperation, t as CreateClaimedAccountOperation, u as CreateProposalOperation, v as CustomJsonOperation, w as CustomOperation, D as DeclineVotingRightsOperation, x as DelegateVestingSharesOperation, y as DeleteCommentOperation, z as DigestData, E as EscrowApproveOperation, F as EscrowDisputeOperation, G as EscrowReleaseOperation, H as EscrowTransferOperation, I as Extension, J as FeedPublishOperation, L as LimitOrderCancelOperation, K as LimitOrderCreate2Operation, M as LimitOrderCreateOperation, N as Memo, O as Operation, P as OperationBody, Q as OperationName, R as Price, S as PrivateKey, T as PublicKey, U as RecoverAccountOperation, V as RecurrentTransferOperation, W as RemoveProposalOperation, X as RequestAccountRecoveryOperation, Y as ResetAccountOperation, Z as ResilienceOptions, _ as SetResetAccountOperation, $ as SetWithdrawVestingRouteOperation, a0 as Signature, a1 as Transaction, a2 as TransactionStatus, a3 as TransactionType, a4 as TransferFromSavingsOperation, a5 as TransferOperation, a6 as TransferToSavingsOperation, a7 as TransferToVestingOperation, a8 as UpdateProposalOperation, a9 as UpdateProposalVotesOperation, aa as VoteOperation, ab as WithdrawVestingOperation, ac as WitnessProps, ad as WitnessSetPropertiesOperation, ae as WitnessSetPropertiesParams, af as WitnessUpdateOperation, ag as callREST, ah as callRPC, ai as callRPCBroadcast, aj as callWithQuorum, ak as config, am as setNodes, an as setResilience, ao as setRestNodes, ap as setRestNodesByApi, aq as setUserAgent, ar as utils } from './hive-CRPMQat7.js';
|
package/dist/browser/hive.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {hexToBytes,bytesToHex}from'@noble/hashes/utils.js';import {ripemd160}from'@noble/hashes/legacy.js';import Ke from'bs58';import {secp256k1}from'@noble/curves/secp256k1.js';import {sha256,sha512}from'@noble/hashes/sha2.js';import {cbc}from'@noble/ciphers/aes.js';var Re=Object.defineProperty;var xt=(n,e,t)=>e in n?Re(n,e,{enumerable:true,configurable:true,writable:true,value:t}):n[e]=t;var St=(n,e)=>{for(var t in e)Re(n,t,{get:e[t],enumerable:true});};var _=(n,e,t)=>xt(n,typeof e!="symbol"?e+"":e,t);var oe=new ArrayBuffer(0),ae=null,ce=null;function Ut(){return ae||(typeof TextEncoder<"u"?ae=new TextEncoder:ae={encode(n){let e=[];for(let t=0;t<n.length;t++){let r=n.charCodeAt(t);if(r<128)e.push(r);else if(r<2048)e.push(192|r>>6,128|r&63);else if(r>=55296&&r<=56319&&t+1<n.length){let i=n.charCodeAt(++t);r=65536+((r&1023)<<10)+(i&1023),e.push(240|r>>18,128|r>>12&63,128|r>>6&63,128|r&63);}else e.push(224|r>>12,128|r>>6&63,128|r&63);}return new Uint8Array(e)}}),ae}function De(){return ce||(typeof TextDecoder<"u"?ce=new TextDecoder:ce={decode(n){let e=n instanceof ArrayBuffer?new Uint8Array(n):new Uint8Array(n.buffer,n.byteOffset,n.byteLength),t="";for(let r=0;r<e.length;){let i=e[r],s;i<128?(s=i,r+=1):(i&224)===192?(s=(i&31)<<6|e[r+1]&63,r+=2):(i&240)===224?(s=(i&15)<<12|(e[r+1]&63)<<6|e[r+2]&63,r+=3):(s=(i&7)<<18|(e[r+1]&63)<<12|(e[r+2]&63)<<6|e[r+3]&63,r+=4),s<=65535?t+=String.fromCharCode(s):(s-=65536,t+=String.fromCharCode(55296+(s>>10),56320+(s&1023)));}return t}}),ce}var B=class B{constructor(e=B.DEFAULT_CAPACITY,t=B.DEFAULT_ENDIAN){_(this,"buffer");_(this,"view");_(this,"offset");_(this,"markedOffset");_(this,"limit");_(this,"littleEndian");_(this,"readUInt32",this.readUint32);this.buffer=e===0?oe:new ArrayBuffer(e),this.view=e===0?new DataView(oe):new DataView(this.buffer),this.offset=0,this.markedOffset=-1,this.limit=e,this.littleEndian=t;}static allocate(e,t){return new B(e,t)}static concat(e,t){let r=0;for(let c=0;c<e.length;++c){let u=e[c];if(u instanceof B)r+=u.limit-u.offset;else if(u instanceof Uint8Array)r+=u.length;else if(u instanceof ArrayBuffer)r+=u.byteLength;else if(Array.isArray(u))r+=u.length;else throw TypeError("Illegal buffer")}if(r===0)return new B(0,t);let i=new B(r,t),s=new Uint8Array(i.buffer),a=0;for(let c=0;c<e.length;++c){let u=e[c];u instanceof B?(s.set(new Uint8Array(u.buffer,u.offset,u.limit-u.offset),a),a+=u.limit-u.offset):u instanceof Uint8Array?(s.set(u,a),a+=u.length):u instanceof ArrayBuffer?(s.set(new Uint8Array(u),a),a+=u.byteLength):(s.set(u,a),a+=u.length);}return i.limit=i.offset=a,i.offset=0,i}static wrap(e,t){if(e instanceof B){let i=e.clone();return i.markedOffset=-1,i}let r;if(e instanceof Uint8Array)r=new B(0,t),e.length>0&&(r.buffer=e.buffer,r.offset=e.byteOffset,r.limit=e.byteOffset+e.byteLength,r.view=new DataView(e.buffer));else if(e instanceof ArrayBuffer)r=new B(0,t),e.byteLength>0&&(r.buffer=e,r.offset=0,r.limit=e.byteLength,r.view=e.byteLength>0?new DataView(e):new DataView(oe));else if(Array.isArray(e))r=new B(e.length,t),r.limit=e.length,new Uint8Array(r.buffer).set(e);else throw TypeError("Illegal buffer");return r}writeBytes(e,t){return this.append(e,t)}writeInt8(e,t){let r=typeof t>"u";return r?t=this.offset:t=t,t+1>this.buffer.byteLength&&this.resize(t+1),this.view.setInt8(t,e),r&&(this.offset+=1),this}writeByte(e,t){return this.writeInt8(e,t)}writeUint8(e,t){let r=typeof t>"u";return r?t=this.offset:t=t,t+1>this.buffer.byteLength&&this.resize(t+1),this.view.setUint8(t,e),r&&(this.offset+=1),this}writeUInt8(e,t){return this.writeUint8(e,t)}readUint8(e){let t=typeof e>"u";t?e=this.offset:e=e;let r=this.view.getUint8(e);return t&&(this.offset+=1),r}readUInt8(e){return this.readUint8(e)}writeInt16(e,t){let r=typeof t>"u";return r?t=this.offset:t=t,t+2>this.buffer.byteLength&&this.resize(t+2),this.view.setInt16(t,e,this.littleEndian),r&&(this.offset+=2),this}writeShort(e,t){return this.writeInt16(e,t)}writeUint16(e,t){let r=typeof t>"u";return r?t=this.offset:t=t,t+2>this.buffer.byteLength&&this.resize(t+2),this.view.setUint16(t,e,this.littleEndian),r&&(this.offset+=2),this}writeUInt16(e,t){return this.writeUint16(e,t)}writeInt32(e,t){let r=typeof t>"u";return r?t=this.offset:t=t,t+4>this.buffer.byteLength&&this.resize(t+4),this.view.setInt32(t,e,this.littleEndian),r&&(this.offset+=4),this}writeInt(e,t){return this.writeInt32(e,t)}writeUint32(e,t){let r=typeof t>"u";return r?t=this.offset:t=t,t+4>this.buffer.byteLength&&this.resize(t+4),this.view.setUint32(t,e,this.littleEndian),r&&(this.offset+=4),this}writeUInt32(e,t){return this.writeUint32(e,t)}readUint32(e){let t=typeof e>"u";t?e=this.offset:e=e;let r=this.view.getUint32(e,this.littleEndian);return t&&(this.offset+=4),r}append(e,t){let r=typeof t>"u";r?t=this.offset:t=t;let i;return e instanceof B?(i=new Uint8Array(e.buffer,e.offset,e.limit-e.offset),e.offset+=i.length):e instanceof Uint8Array?i=e:e instanceof ArrayBuffer?i=new Uint8Array(e):i=new Uint8Array(e),i.length<=0?this:(t+i.length>this.buffer.byteLength&&this.resize(t+i.length),new Uint8Array(this.buffer).set(i,t),r&&(this.offset+=i.length),this)}clone(e){let t=new B(0,this.littleEndian);return e?(t.buffer=new ArrayBuffer(this.buffer.byteLength),new Uint8Array(t.buffer).set(new Uint8Array(this.buffer)),t.view=new DataView(t.buffer)):(t.buffer=this.buffer,t.view=this.view),t.offset=this.offset,t.markedOffset=this.markedOffset,t.limit=this.limit,t}copy(e,t){if(e===void 0&&(e=this.offset),t===void 0&&(t=this.limit),e===t)return new B(0,this.littleEndian);let r=t-e,i=new B(r,this.littleEndian);return i.offset=0,i.limit=r,new Uint8Array(i.buffer).set(new Uint8Array(this.buffer).subarray(e,t),0),i}copyTo(e,t,r,i){let s=typeof t>"u",a=typeof r>"u";t=s?e.offset:t,r=a?this.offset:r,i=i===void 0?this.limit:i;let c=i-r;return c===0?e:(e.ensureCapacity(t+c),new Uint8Array(e.buffer).set(new Uint8Array(this.buffer).subarray(r,i),t),a&&(this.offset+=c),s&&(e.offset+=c),this)}ensureCapacity(e){let t=this.buffer.byteLength;return t<e?this.resize((t*=2)>e?t:e):this}flip(){return this.limit=this.offset,this.offset=0,this}resize(e){if(this.buffer.byteLength<e){let t=new ArrayBuffer(e);new Uint8Array(t).set(new Uint8Array(this.buffer)),this.buffer=t,this.view=new DataView(t);}return this}skip(e){return this.offset+=e,this}writeInt64(e,t){let r=typeof t>"u";return r?t=this.offset:t=t,typeof e=="number"&&(e=BigInt(e)),t+8>this.buffer.byteLength&&this.resize(t+8),this.view.setBigInt64(t,e,this.littleEndian),r&&(this.offset+=8),this}writeLong(e,t){return this.writeInt64(e,t)}readInt64(e){let t=typeof e>"u";t?e=this.offset:e=e;let r=this.view.getBigInt64(e,this.littleEndian);return t&&(this.offset+=8),r}readLong(e){return this.readInt64(e)}writeUint64(e,t){let r=typeof t>"u";return r?t=this.offset:t=t,typeof e=="number"&&(e=BigInt(e)),t+8>this.buffer.byteLength&&this.resize(t+8),this.view.setBigUint64(t,e,this.littleEndian),r&&(this.offset+=8),this}writeUInt64(e,t){return this.writeUint64(e,t)}readUint64(e){let t=typeof e>"u";t?e=this.offset:e=e;let r=this.view.getBigUint64(e,this.littleEndian);return t&&(this.offset+=8),r}readUInt64(e){return this.readUint64(e)}toBuffer(e){let t=this.offset,r=this.limit;return !e&&t===0&&r===this.buffer.byteLength?this.buffer:t===r?oe:this.buffer.slice(t,r)}toArrayBuffer(e){return this.toBuffer(e)}writeVarint32(e,t){let r=typeof t>"u";r?t=this.offset:t=t;let i=this.calculateVarint32(e);for(t+i>this.buffer.byteLength&&this.resize(t+i),e>>>=0;e>=128;)this.view.setUint8(t++,e&127|128),e>>>=7;return this.view.setUint8(t++,e),r?(this.offset=t,this):i}readVarint32(e){let t=typeof e>"u";typeof e>"u"&&(e=this.offset);let r=0,i=0,s;do s=this.view.getUint8(e++),r<5&&(i|=(s&127)<<7*r),++r;while((s&128)!==0);return i|=0,t?(this.offset=e,i):{value:i,length:r}}calculateVarint32(e){return e=e>>>0,e<128?1:e<16384?2:e<1<<21?3:e<1<<28?4:5}writeVString(e,t){let r=typeof t>"u",i=r?this.offset:t,s=Ut().encode(e),a=s.length,c=this.calculateVarint32(a);return i+c+a>this.buffer.byteLength&&this.resize(i+c+a),this.writeVarint32(a,i),i+=c,new Uint8Array(this.buffer).set(s,i),i+=a,r?(this.offset=i,this):i-(t||0)}readVString(e){let t=typeof e>"u";t?e=this.offset:e=e;let r=e,i=this.readVarint32(e),s=i.value,a=i.length;e+=a;let c=De().decode(new Uint8Array(this.buffer,e,s));return e+=s,t?(this.offset=e,c):{string:c,length:e-r}}readUTF8String(e,t){let r=typeof t>"u";r?t=this.offset:t=t;let i=De().decode(new Uint8Array(this.buffer,t,e));return r?(this.offset+=e,i):{string:i,length:e}}};_(B,"LITTLE_ENDIAN",true),_(B,"BIG_ENDIAN",false),_(B,"DEFAULT_CAPACITY",16),_(B,"DEFAULT_ENDIAN",B.BIG_ENDIAN);var w=B;var f={nodes:["https://api.hive.blog","https://api.deathwing.me","https://api.openhive.network","https://techcoderx.com","https://api.syncad.com","https://rpc.mahdiyari.info"],restNodes:["https://api.hive.blog","https://rpc.mahdiyari.info","https://api.syncad.com","https://hiveapi.actifit.io","https://api.c0ff33a.uk"],restNodesByApi:{hivesense:["https://api.hive.blog","https://api.syncad.com"]},userAgent:"ecency-sdk",chain_id:"beeab0de00000000000000000000000000000000000000000000000000000000",address_prefix:"STM",timeout:5e3,broadcastTimeout:15e3,retry:5,resilience:{adaptiveTimeout:true,adaptiveTimeoutFloorMs:2e3,adaptiveTimeoutFactor:4,hedge:false,hedgeDelayFloorMs:750,hedgeDelayFactor:2,hedgeBucketCapacity:10,hedgeRefillPerSuccess:.1,totalBudgetFactor:2}},we=n=>Array.isArray(n)?[...new Set(n.filter(e=>typeof e=="string").map(e=>e.trim().replace(/\/+$/,"")).filter(e=>e.length>0&&/^https?:\/\/.+/.test(e)))]:[],Tt=n=>{let e=we(n);e.length&&(f.nodes=e);},Et=n=>{let e=we(n);e.length&&(f.restNodes=e);},kt=n=>{if(!n||typeof n!="object")return;let e={...f.restNodesByApi};for(let[t,r]of Object.entries(n)){let i=we(r);i.length?e[t]=i:delete e[t];}f.restNodesByApi=e;},Pt=n=>{if(typeof n!="string")return;let e=n.trim();!e||/[\u0000-\u001f\u007f]/.test(e)||(f.userAgent=e);},It=n=>{if(!n||typeof n!="object")return;let e=f.resilience,t=i=>typeof i=="boolean",r=i=>typeof i=="number"&&Number.isFinite(i)&&i>0;t(n.adaptiveTimeout)&&(e.adaptiveTimeout=n.adaptiveTimeout),r(n.adaptiveTimeoutFloorMs)&&(e.adaptiveTimeoutFloorMs=Math.max(n.adaptiveTimeoutFloorMs,2e3)),r(n.adaptiveTimeoutFactor)&&(e.adaptiveTimeoutFactor=n.adaptiveTimeoutFactor),t(n.hedge)&&(e.hedge=n.hedge),r(n.hedgeDelayFloorMs)&&(e.hedgeDelayFloorMs=n.hedgeDelayFloorMs),r(n.hedgeDelayFactor)&&(e.hedgeDelayFactor=n.hedgeDelayFactor),r(n.hedgeBucketCapacity)&&(e.hedgeBucketCapacity=n.hedgeBucketCapacity),r(n.hedgeRefillPerSuccess)&&(e.hedgeRefillPerSuccess=Math.min(n.hedgeRefillPerSuccess,1)),r(n.totalBudgetFactor)&&(e.totalBudgetFactor=Math.max(n.totalBudgetFactor,1));};var Y=class n{constructor(e,t,r){_(this,"data");_(this,"recovery");_(this,"compressed");this.data=e,this.recovery=t,this.compressed=r??true;}static from(e){if(typeof e=="string"){let t=hexToBytes(e),r=parseInt(bytesToHex(t.subarray(0,1)),16)-31,i=true;r<0&&(i=false,r=r+4);let s=t.subarray(1);return new n(s,r,i)}else throw new Error("Expected string for data")}toBuffer(){let e=new Uint8Array(65).fill(0);return this.compressed?e[0]=this.recovery+31&255:e[0]=this.recovery+27&255,e.set(this.data,1),e}customToString(){return bytesToHex(this.toBuffer())}toString(){return this.customToString()}getPublicKey(e){if(e instanceof Uint8Array&&e.length!==32||typeof e=="string"&&e.length!==64)throw new Error("Expected a valid sha256 hash as message");typeof e=="string"&&(e=hexToBytes(e));let t=secp256k1.Signature.fromBytes(this.data,"compact"),r=new secp256k1.Signature(t.r,t.s,this.recovery);return new k(r.recoverPublicKey(e).toBytes())}};var k=class n{constructor(e,t){_(this,"key");_(this,"prefix");this.key=e,this.prefix=t??f.address_prefix;}static fromString(e){let t=f.address_prefix;if(typeof e!="string"||e.length<=t.length)throw new Error("Invalid public key");let r=e.slice(0,t.length);if(r!==t)throw new Error(`Public key must start with ${t}`);let i;try{i=Ke.decode(e.slice(t.length));}catch{throw new Error("Invalid public key encoding")}if(i.length!==37)throw new Error("Invalid public key length");let s=i.subarray(0,33),a=i.subarray(33,37),c=ripemd160(s).subarray(0,4);if(!Nt(a,c))throw new Error("Public key checksum mismatch");try{secp256k1.Point.fromBytes(s);}catch{throw new Error("Invalid public key")}return new n(s,r)}static from(e){return e instanceof n?e:n.fromString(e)}verify(e,t){return typeof t=="string"&&(t=Y.from(t)),secp256k1.verify(t.data,e,this.key,{prehash:false,format:"compact"})}toString(){return Lt(this.key,this.prefix)}toJSON(){return this.toString()}inspect(){return `PublicKey: ${this.toString()}`}},Lt=(n,e)=>{let t=ripemd160(n);return e+Ke.encode(new Uint8Array([...n,...t.subarray(0,4)]))},Nt=(n,e)=>{if(n.byteLength!==e.byteLength)return false;for(let t=0;t<n.byteLength;t++)if(n[t]!==e[t])return false;return true};var ue=class n{constructor(e,t){_(this,"amount");_(this,"symbol");this.amount=e,this.symbol=t==="HIVE"?"STEEM":t==="HBD"?"SBD":t;}static fromString(e,t=null){let[r,i]=e.split(" ");if(["STEEM","VESTS","SBD","TESTS","TBD","HIVE","HBD"].indexOf(i)===-1)throw new Error(`Invalid asset symbol: ${i}`);if(t&&i!==t)throw new Error(`Invalid asset, expected symbol: ${t} got: ${i}`);let s=Number.parseFloat(r);if(!Number.isFinite(s))throw new Error(`Invalid asset amount: ${r}`);return new n(s,i)}static from(e,t){if(e instanceof n){if(t&&e.symbol!==t)throw new Error(`Invalid asset, expected symbol: ${t} got: ${e.symbol}`);return e}else {if(typeof e=="number"&&Number.isFinite(e))return new n(e,t||"STEEM");if(typeof e=="string")return n.fromString(e,t);throw new Error(`Invalid asset '${String(e)}'`)}}getPrecision(){switch(this.symbol){case "TESTS":case "TBD":case "STEEM":case "SBD":case "HBD":case "HIVE":return 3;case "VESTS":return 6;default:return 3}}toString(){return `${this.amount.toFixed(this.getPrecision())} ${this.symbol}`}toJSON(){return this.toString()}};var le=class n{constructor(e){_(this,"buffer");this.buffer=e;}static from(e){return e instanceof n?e:e instanceof Uint8Array?new n(e):typeof e=="string"?new n(hexToBytes(e)):new n(new Uint8Array(e))}toString(){return bytesToHex(this.buffer)}toJSON(){return this.toString()}};var h={vote:0,comment:1,transfer:2,transfer_to_vesting:3,withdraw_vesting:4,limit_order_create:5,limit_order_cancel:6,feed_publish:7,convert:8,account_create:9,account_update:10,witness_update:11,account_witness_vote:12,account_witness_proxy:13,custom:15,delete_comment:17,custom_json:18,comment_options:19,set_withdraw_vesting_route:20,limit_order_create2:21,claim_account:22,create_claimed_account:23,request_account_recovery:24,recover_account:25,change_recovery_account:26,escrow_transfer:27,escrow_dispute:28,escrow_release:29,escrow_approve:31,transfer_to_savings:32,transfer_from_savings:33,cancel_transfer_from_savings:34,decline_voting_rights:36,reset_account:37,set_reset_account:38,claim_reward_balance:39,delegate_vesting_shares:40,account_create_with_delegation:41,witness_set_properties:42,account_update2:43,create_proposal:44,update_proposal_votes:45,remove_proposal:46,update_proposal:47,collateralized_convert:48,recurrent_transfer:49},R=()=>{throw new Error("Void can not be serialized")},o=(n,e)=>{n.writeVString(e);},Mt=(n,e)=>{n.writeInt16(e);},Ve=(n,e)=>{n.writeInt64(e);},He=(n,e)=>{n.writeUint8(e);},F=(n,e)=>{n.writeUint16(e);},P=(n,e)=>{n.writeUint32(e);},je=(n,e)=>{n.writeUint64(e);},j=(n,e)=>{n.writeByte(e?1:0);},$e=n=>(e,t)=>{let[r,i]=t;e.writeVarint32(r),n[r](e,i);},b=(n,e)=>{let t=ue.from(e),r=t.getPrecision();n.writeInt64(Math.round(t.amount*Math.pow(10,r))),n.writeUint8(r);for(let i=0;i<7;i++)n.writeUint8(t.symbol.charCodeAt(i)||0);},$=(n,e)=>{n.writeUint32(Math.floor(new Date(e+"Z").getTime()/1e3));},K=(n,e)=>{e===null||typeof e=="string"&&e.slice(-39)==="1111111111111111111111111111111114T1Anm"?n.append(new Uint8Array(33).fill(0)):n.append(k.from(e).key);},qe=(n=null)=>(e,t)=>{t=le.from(t);let r=t.buffer.length;if(n){if(r!==n)throw new Error(`Unable to serialize binary. Expected ${n} bytes, got ${r}`)}else e.writeVarint32(r);e.append(t.buffer);},Ye=qe(),Ae=(n,e)=>(t,r)=>{t.writeVarint32(r.length);for(let[i,s]of r)n(t,i),e(t,s);},x=n=>(e,t)=>{e.writeVarint32(t.length);for(let r of t)n(e,r);},C=n=>(e,t)=>{for(let[r,i]of n)try{i(e,t[r]);}catch(s){throw s.message=`${r}: ${s.message}`,s}},W=n=>(e,t)=>{t!==void 0?(e.writeByte(1),n(e,t)):e.writeByte(0);},E=C([["weight_threshold",P],["account_auths",Ae(o,F)],["key_auths",Ae(K,F)]]),Ft=C([["account",o],["weight",F]]),ve=C([["base",b],["quote",b]]),Ct=C([["account_creation_fee",b],["maximum_block_size",P],["hbd_interest_rate",F]]),m=(n,e)=>{let t=C(e);return (r,i)=>{r.writeVarint32(n),t(r,i);}},d={};d.account_create=m(h.account_create,[["fee",b],["creator",o],["new_account_name",o],["owner",E],["active",E],["posting",E],["memo_key",K],["json_metadata",o]]);d.account_create_with_delegation=m(h.account_create_with_delegation,[["fee",b],["delegation",b],["creator",o],["new_account_name",o],["owner",E],["active",E],["posting",E],["memo_key",K],["json_metadata",o],["extensions",x(R)]]);d.account_update=m(h.account_update,[["account",o],["owner",W(E)],["active",W(E)],["posting",W(E)],["memo_key",K],["json_metadata",o]]);d.account_witness_proxy=m(h.account_witness_proxy,[["account",o],["proxy",o]]);d.account_witness_vote=m(h.account_witness_vote,[["account",o],["witness",o],["approve",j]]);d.cancel_transfer_from_savings=m(h.cancel_transfer_from_savings,[["from",o],["request_id",P]]);d.change_recovery_account=m(h.change_recovery_account,[["account_to_recover",o],["new_recovery_account",o],["extensions",x(R)]]);d.claim_account=m(h.claim_account,[["creator",o],["fee",b],["extensions",x(R)]]);d.claim_reward_balance=m(h.claim_reward_balance,[["account",o],["reward_hive",b],["reward_hbd",b],["reward_vests",b]]);d.comment=m(h.comment,[["parent_author",o],["parent_permlink",o],["author",o],["permlink",o],["title",o],["body",o],["json_metadata",o]]);d.comment_options=m(h.comment_options,[["author",o],["permlink",o],["max_accepted_payout",b],["percent_hbd",F],["allow_votes",j],["allow_curation_rewards",j],["extensions",x($e([C([["beneficiaries",x(Ft)]])]))]]);d.convert=m(h.convert,[["owner",o],["requestid",P],["amount",b]]);d.create_claimed_account=m(h.create_claimed_account,[["creator",o],["new_account_name",o],["owner",E],["active",E],["posting",E],["memo_key",K],["json_metadata",o],["extensions",x(R)]]);d.custom=m(h.custom,[["required_auths",x(o)],["id",F],["data",Ye]]);d.custom_json=m(h.custom_json,[["required_auths",x(o)],["required_posting_auths",x(o)],["id",o],["json",o]]);d.decline_voting_rights=m(h.decline_voting_rights,[["account",o],["decline",j]]);d.delegate_vesting_shares=m(h.delegate_vesting_shares,[["delegator",o],["delegatee",o],["vesting_shares",b]]);d.delete_comment=m(h.delete_comment,[["author",o],["permlink",o]]);d.escrow_approve=m(h.escrow_approve,[["from",o],["to",o],["agent",o],["who",o],["escrow_id",P],["approve",j]]);d.escrow_dispute=m(h.escrow_dispute,[["from",o],["to",o],["agent",o],["who",o],["escrow_id",P]]);d.escrow_release=m(h.escrow_release,[["from",o],["to",o],["agent",o],["who",o],["receiver",o],["escrow_id",P],["hbd_amount",b],["hive_amount",b]]);d.escrow_transfer=m(h.escrow_transfer,[["from",o],["to",o],["hbd_amount",b],["hive_amount",b],["escrow_id",P],["agent",o],["fee",b],["json_meta",o],["ratification_deadline",$],["escrow_expiration",$]]);d.feed_publish=m(h.feed_publish,[["publisher",o],["exchange_rate",ve]]);d.limit_order_cancel=m(h.limit_order_cancel,[["owner",o],["orderid",P]]);d.limit_order_create=m(h.limit_order_create,[["owner",o],["orderid",P],["amount_to_sell",b],["min_to_receive",b],["fill_or_kill",j],["expiration",$]]);d.limit_order_create2=m(h.limit_order_create2,[["owner",o],["orderid",P],["amount_to_sell",b],["exchange_rate",ve],["fill_or_kill",j],["expiration",$]]);d.recover_account=m(h.recover_account,[["account_to_recover",o],["new_owner_authority",E],["recent_owner_authority",E],["extensions",x(R)]]);d.request_account_recovery=m(h.request_account_recovery,[["recovery_account",o],["account_to_recover",o],["new_owner_authority",E],["extensions",x(R)]]);d.reset_account=m(h.reset_account,[["reset_account",o],["account_to_reset",o],["new_owner_authority",E]]);d.set_reset_account=m(h.set_reset_account,[["account",o],["current_reset_account",o],["reset_account",o]]);d.set_withdraw_vesting_route=m(h.set_withdraw_vesting_route,[["from_account",o],["to_account",o],["percent",F],["auto_vest",j]]);d.transfer=m(h.transfer,[["from",o],["to",o],["amount",b],["memo",o]]);d.transfer_from_savings=m(h.transfer_from_savings,[["from",o],["request_id",P],["to",o],["amount",b],["memo",o]]);d.transfer_to_savings=m(h.transfer_to_savings,[["from",o],["to",o],["amount",b],["memo",o]]);d.transfer_to_vesting=m(h.transfer_to_vesting,[["from",o],["to",o],["amount",b]]);d.vote=m(h.vote,[["voter",o],["author",o],["permlink",o],["weight",Mt]]);d.withdraw_vesting=m(h.withdraw_vesting,[["account",o],["vesting_shares",b]]);d.witness_update=m(h.witness_update,[["owner",o],["url",o],["block_signing_key",K],["props",Ct],["fee",b]]);d.witness_set_properties=m(h.witness_set_properties,[["owner",o],["props",Ae(o,Ye)],["extensions",x(R)]]);d.account_update2=m(h.account_update2,[["account",o],["owner",W(E)],["active",W(E)],["posting",W(E)],["memo_key",W(K)],["json_metadata",o],["posting_json_metadata",o],["extensions",x(R)]]);d.create_proposal=m(h.create_proposal,[["creator",o],["receiver",o],["start_date",$],["end_date",$],["daily_pay",b],["subject",o],["permlink",o],["extensions",x(R)]]);d.update_proposal_votes=m(h.update_proposal_votes,[["voter",o],["proposal_ids",x(Ve)],["approve",j],["extensions",x(R)]]);d.remove_proposal=m(h.remove_proposal,[["proposal_owner",o],["proposal_ids",x(Ve)],["extensions",x(R)]]);var Ot=C([["end_date",$]]);d.update_proposal=m(h.update_proposal,[["proposal_id",je],["creator",o],["daily_pay",b],["subject",o],["permlink",o],["extensions",x($e([R,Ot]))]]);d.collateralized_convert=m(h.collateralized_convert,[["owner",o],["requestid",P],["amount",b]]);d.recurrent_transfer=m(h.recurrent_transfer,[["from",o],["to",o],["amount",b],["memo",o],["recurrence",F],["executions",F],["extensions",x(C([["type",He],["value",C([["pair_id",He]])]]))]]);var zt=(n,e)=>{let t=d[e[0]];if(!t)throw new Error(`No serializer for operation: ${e[0]}`);try{t(n,e[1]);}catch(r){throw r.message=`${e[0]}: ${r.message}`,r}},Kt=C([["ref_block_num",F],["ref_block_prefix",P],["expiration",$],["operations",x(zt)],["extensions",x(o)]]),Ht=C([["from",K],["to",K],["nonce",je],["check",P],["encrypted",qe()]]),O={Asset:b,Memo:Ht,Price:ve,PublicKey:K,String:o,Transaction:Kt,UInt16:F,UInt32:P};var Q=n=>new Promise(e=>setTimeout(e,n));var Vt=(()=>{try{return !(typeof navigator<"u"&&navigator.product==="ReactNative")&&typeof process<"u"&&process.versions!=null&&process.versions.node!=null}catch{return false}})();function Je(){return Vt?{"User-Agent":f.userAgent}:{}}var D=class extends Error{constructor(t){super(t.message);_(this,"name","RPCError");_(this,"data");_(this,"code");_(this,"stack");this.code=t.code,"data"in t&&(this.data=t.data);}},J=class extends Error{constructor(t,r,i={}){super(r);_(this,"node");_(this,"rateLimitMs");_(this,"isRateLimit");this.node=t,this.rateLimitMs=i.rateLimitMs??0,this.isRateLimit=i.isRateLimit??false;}};function Ge(n){if(!n)return 0;let e=Number(n);if(Number.isFinite(e))return e>0?e*1e3:0;let t=Date.parse(n);if(Number.isFinite(t)){let r=t-Date.now();return r>0?r:0}return 0}var jt=["ECONNREFUSED","ENOTFOUND","EHOSTUNREACH","EAI_AGAIN"],$t=["Failed to fetch","NetworkError when attempting to fetch","Load failed","fetch failed"];function qt(n){if(!n)return "";let e=[String(n.name||""),String(n.message||""),String(n.code||"")],t=n.cause;for(let r=0;t&&r<5;r++)e.push(String(t.code||""),String(t.message||"")),t=t.cause;return e.join(" ")}function Yt(n){if(!n)return false;if(n instanceof J)return true;if(n instanceof D)return false;let e=qt(n);return !!(jt.some(t=>e.includes(t))||$t.some(t=>e.includes(t))||n instanceof SyntaxError||/Unexpected token|JSON\.parse|Unexpected end of JSON/i.test(e))}function Be(n,e){return !!(n===-32603||n<=-32e3&&n>=-32099||n===-32601||n===-32602&&/unable to parse|endpoint data|internal/i.test(e))}function Xe(n){let e=n.indexOf(".");return e>0?n.slice(0,e):n}var Wt=1e4,Jt=6e4,Gt=12e4,Xt=2,Qt=6e4,We=12e4,Zt=30,Z=.3,xe=3,ee=5*6e4,Qe=6e4,Ze=1e3,et=2e3,tt=700,rt=2.5,er=new Set(["hapi.ecency.com","api.ecency.com"]);function tr(n){try{return er.has(new URL(n).hostname)}catch{return false}}var fe=class{constructor(){_(this,"health",new Map);}getOrCreate(e){let t=this.health.get(e);return t||(t={consecutiveFailures:0,lastFailureTime:0,rateLimitedUntil:0,rateLimitStreak:0,lastRateLimitAt:0,apiFailures:new Map,headBlock:0,headBlockUpdatedAt:0,ewmaLatencyMs:void 0,latencySampleCount:0,latencyUpdatedAt:0,lastProbeAt:Date.now(),apiLatency:new Map},this.health.set(e,t)),t}recordSuccess(e,t,r,i){let s=this.getOrCreate(e);s.consecutiveFailures=0,s.rateLimitStreak=0,t&&s.apiFailures.delete(t),typeof r=="number"&&Number.isFinite(r)&&r>=0&&this.recordLatency(s,r,i??t);}recordSlowFailure(e,t,r){!Number.isFinite(t)||t<et||this.recordLatency(this.getOrCreate(e),t,r);}getUsableLatencyMs(e,t){let r=this.health.get(e);if(!r)return;let i=Date.now();if(t!==void 0){let s=r.apiLatency.get(t);return s&&s.sampleCount>=xe&&i-s.updatedAt<=ee?s.ewmaMs:void 0}return this.isLatencyUsable(r,i)?r.ewmaLatencyMs:void 0}recordCensoredLatency(e,t,r){!Number.isFinite(t)||t<50||this.recordLatency(this.getOrCreate(e),t,r);}recordLatency(e,t,r){let i=Date.now();if(e.latencyUpdatedAt>0&&i-e.latencyUpdatedAt>ee&&(e.ewmaLatencyMs=void 0,e.latencySampleCount=0,e.apiLatency.clear()),e.ewmaLatencyMs=e.ewmaLatencyMs===void 0?t:Z*t+(1-Z)*e.ewmaLatencyMs,e.latencySampleCount++,e.latencyUpdatedAt=i,r!==void 0){let s=e.apiLatency.get(r);!s||i-s.updatedAt>ee?e.apiLatency.set(r,{ewmaMs:t,sampleCount:1,updatedAt:i}):(s.ewmaMs=Z*t+(1-Z)*s.ewmaMs,s.sampleCount++,s.updatedAt=i);}}recordFailure(e,t){let r=this.getOrCreate(e);if(t){let i=Date.now(),s=r.apiFailures.get(t)??{count:0,cooldownUntil:0,lastFailureTime:0};(s.cooldownUntil>0&&s.cooldownUntil<=i||s.lastFailureTime>0&&i-s.lastFailureTime>3e4)&&(s.count=0,s.cooldownUntil=0),s.count++,s.lastFailureTime=i,s.count>=Xt&&(s.cooldownUntil=i+Qt),r.apiFailures.set(t,s);}else r.consecutiveFailures++,r.lastFailureTime=Date.now();}recordRateLimit(e,t){let r=this.getOrCreate(e),i=Date.now();r.rateLimitStreak>0&&i-r.lastRateLimitAt>Gt&&(r.rateLimitStreak=0);let s=typeof t=="number"&&Number.isFinite(t)&&t>0,a=s?t:Math.min(Wt*2**r.rateLimitStreak,Jt);s||r.rateLimitStreak++,r.lastRateLimitAt=i,r.rateLimitedUntil=s?i+a:Math.max(r.rateLimitedUntil,i+a),r.consecutiveFailures++,r.lastFailureTime=i;}recordHeadBlock(e,t){if(!t||!Number.isFinite(t))return;let r=this.getOrCreate(e);r.headBlock=t,r.headBlockUpdatedAt=Date.now();}consensusHeadBlock(){let e=Date.now(),t=[];for(let r of this.health.values())r.headBlock>0&&e-r.headBlockUpdatedAt<=We&&t.push(r.headBlock);return t.length<2?0:(t.sort((r,i)=>r-i),t[Math.floor((t.length-1)/2)])}isNodeHealthy(e,t){let r=this.health.get(e);if(!r)return true;let i=Date.now();if(r.rateLimitedUntil>i||r.consecutiveFailures>=3&&i-r.lastFailureTime<3e4)return false;if(t){let a=r.apiFailures.get(t);if(a&&a.cooldownUntil>i)return false}let s=this.consensusHeadBlock();return !(s>0&&r.headBlock>0&&i-r.headBlockUpdatedAt<=We&&s-r.headBlock>Zt)}getOrderedNodes(e,t){let r=[],i=[];for(let l of e)this.isNodeHealthy(l,t)?r.push(l):i.push(l);if(r.length<=1)return [...r,...i];let s=Date.now(),a=this.fastestUsableLatency(r,s),c=r.map((l,y)=>({node:l,i:y,score:this.scoreNode(l,a,s)})).sort((l,y)=>l.score-y.score||l.i-y.i).map(l=>l.node),u=this.pickReprobeCandidate(r,s);return u&&c[0]!==u?[u,...c.filter(l=>l!==u),...i]:[...c,...i]}isLatencyUsable(e,t){return !!e&&e.ewmaLatencyMs!==void 0&&e.latencySampleCount>=xe&&t-e.latencyUpdatedAt<=ee}fastestUsableLatency(e,t){let r=1/0;for(let i of e){let s=this.health.get(i);this.isLatencyUsable(s,t)&&(r=Math.min(r,s.ewmaLatencyMs));}return r}scoreNode(e,t,r){let i=this.health.get(e);if(!this.isLatencyUsable(i,r))return Ze;let s=i.ewmaLatencyMs;return tr(e)?t>0&&t!==1/0&&s>rt*t?s:Math.max(s-tt,0):s}pickReprobeCandidate(e,t){let r=t-Qe,i,s=1/0;for(let a of e){let c=this.getOrCreate(a),u=Math.max(c.latencyUpdatedAt,c.lastProbeAt);u<=r&&u<s&&(i=a,s=u);}return i&&(this.getOrCreate(i).lastProbeAt=t),i}},T=new fe,q=new fe,Se=class{constructor(){_(this,"tokens",f.resilience.hedgeBucketCapacity);}trySpend(){return this.clamp(),this.tokens>=1-1e-9?(this.tokens-=1,true):false}refill(){this.clamp(),this.tokens=Math.min(f.resilience.hedgeBucketCapacity,this.tokens+f.resilience.hedgeRefillPerSuccess);}clamp(){this.tokens>f.resilience.hedgeBucketCapacity&&(this.tokens=f.resilience.hedgeBucketCapacity);}get available(){return this.tokens}reset(e=f.resilience.hedgeBucketCapacity){this.tokens=e;}},Ue=new Se;function de(n,e,t,r,i){let s=f.resilience;if(!s.adaptiveTimeout||i)return r;let a=n.getUsableLatencyMs(e,t);return a===void 0?r:Math.ceil(Math.min(r,Math.max(s.adaptiveTimeoutFloorMs,s.adaptiveTimeoutFactor*a)))}function Ee(n,e,t,r){t instanceof J?t.isRateLimit?n.recordRateLimit(e,t.rateLimitMs||void 0):n.recordFailure(e,r):t instanceof D?n.recordFailure(e,r):n.recordFailure(e);}function nt(n,e,t,r){if(!r||typeof r!="object"||!t.includes("get_dynamic_global_properties"))return;let i=r.head_block_number;typeof i=="number"&&n.recordHeadBlock(e,i);}function rr(){if(typeof DOMException<"u")return new DOMException("The operation was aborted due to timeout","TimeoutError");let n=new Error("The operation was aborted due to timeout");return n.name="TimeoutError",n}function it(n){if(n=Math.ceil(n),typeof AbortSignal.timeout=="function")return {signal:AbortSignal.timeout(n),cleanup:()=>{}};let e=new AbortController,t=setTimeout(()=>e.abort(rr()),n);return {signal:e.signal,cleanup:()=>clearTimeout(t)}}function ke(n,e){if(!e)return {signal:n,cleanup:()=>{}};if(typeof AbortSignal.any=="function")return {signal:AbortSignal.any([n,e]),cleanup:()=>{}};let t=new AbortController;if(n.aborted)return t.abort(n.reason),{signal:t.signal,cleanup:()=>{}};if(e.aborted)return t.abort(e.reason),{signal:t.signal,cleanup:()=>{}};let r=()=>t.abort(n.reason),i=()=>t.abort(e.reason);n.addEventListener("abort",r,{once:true}),e.addEventListener("abort",i,{once:true});let s=()=>{n.removeEventListener("abort",r),e.removeEventListener("abort",i);};return {signal:t.signal,cleanup:s}}var te=async(n,e,t,r=f.timeout,i=false,s)=>{let a=Math.floor(Math.random()*1e8),c={jsonrpc:"2.0",method:e,params:t,id:a},{signal:u,cleanup:l}=it(r),{signal:y,cleanup:S}=ke(u,s),U=()=>{l(),S();};try{let g=await fetch(n,{method:"POST",body:JSON.stringify(c),headers:{"Content-Type":"application/json",...Je()},signal:y});if(g.status===429)throw new J(n,"HTTP 429 Rate Limited",{rateLimitMs:Ge(g.headers.get("Retry-After")),isRateLimit:!0});if(g.status>=500&&g.status<600)throw new J(n,`HTTP ${g.status} from ${n}`);let v=await g.json();if(!v||typeof v.id>"u"||v.id!==a||v.jsonrpc!=="2.0")throw new Error("JSONRPC id mismatch");if("result"in v)return v.result;if("error"in v){let N=v.error;throw "message"in N&&"code"in N?new D(N):v.error}throw v}catch(g){if(g instanceof D||g instanceof J||s?.aborted)throw g;if(i)return te(n,e,t,r,false,s);throw g}finally{U();}};function Te(){return Q(50+Math.random()*50)}function nr(n){let{method:e,params:t,api:r,primary:i,hedgePool:s,callerTimeout:a,explicitTimeout:c,deadlineAt:u,externalSignal:l,onHedgeFired:y}=n;return new Promise((S,U)=>{let g=false,v=0,N=false,p=false,ie,z,G=0,X=[],H=I=>{if(!g){g=true,z!==void 0&&(clearTimeout(z),z=void 0);for(let L of X)L.signal.aborted||L.abort();I();}},se=(I,L)=>{v++;let A=new AbortController;X.push(A);let V=ke(A.signal,l),_e=de(T,I,e,a,c),be=Date.now();L||(G=be),te(I,e,t,_e,false,V.signal).then(M=>{V.cleanup(),v--,L||(p=true),!g&&(T.recordSuccess(I,r,Date.now()-be,e),nt(T,I,e,M),L?p||T.recordCensoredLatency(i,Date.now()-G,e):N||Ue.refill(),H(()=>S(M)));}).catch(M=>{if(V.cleanup(),v--,L||(p=true),!g){if(l?.aborted){H(()=>U(M));return}if(M instanceof D&&!Be(M.code,M.message)){H(()=>U(M));return}if(Ee(T,I,M,r),T.recordSlowFailure(I,Date.now()-be,e),ie=M,!L&&!N){H(()=>U(M));return}v===0&&H(()=>U(ie));}});};se(i,false);let ye=T.getUsableLatencyMs(i,e)??0,pe=de(T,i,e,a,c),ge=Math.min(Math.max(f.resilience.hedgeDelayFloorMs,f.resilience.hedgeDelayFactor*ye),.8*pe);z=setTimeout(()=>{if(z=void 0,g||l?.aborted||Date.now()>=u)return;let I=s.filter(A=>T.isNodeHealthy(A,r));if(I.length===0)return;let L=I[Math.floor(Math.random()*I.length)];Ue.trySpend()&&(N=true,y(L),se(L,true));},ge);})}var he=async(n,e=[],t,r=f.retry,i)=>{if(!Array.isArray(f.nodes))throw new Error("config.nodes is not an array");if(f.nodes.length===0)throw new Error("config.nodes is empty");let s=t!==void 0,a=t??f.timeout,c=Xe(n),u=Date.now()+f.resilience.totalBudgetFactor*a,l=new Set,y;for(let S=0;S<=r&&!(S>0&&Date.now()>=u);S++){let U=T.getOrderedNodes(f.nodes,c),g=U.find(p=>!l.has(p));g||(l.clear(),g=U[0]),l.add(g);let v=[];if(f.resilience.hedge&&T.getUsableLatencyMs(g,n)!==void 0&&(v=U.filter(p=>!l.has(p)&&T.isNodeHealthy(p,c)).slice(0,3)),v.length>0)try{return await nr({method:n,params:e,api:c,primary:g,hedgePool:v,callerTimeout:a,explicitTimeout:s,deadlineAt:u,externalSignal:i,onHedgeFired:p=>l.add(p)})}catch(p){if(p instanceof D&&!Be(p.code,p.message)||i?.aborted)throw p;y=p,S<r&&await Te();continue}let N=Date.now();try{let p=await te(g,n,e,de(T,g,n,a,s),!1,i);return T.recordSuccess(g,c,Date.now()-N,n),Ue.refill(),nt(T,g,n,p),p}catch(p){if(p instanceof D&&!Be(p.code,p.message)||i?.aborted)throw p;Ee(T,g,p,c),T.recordSlowFailure(g,Date.now()-N,n),y=p,S<r&&await Te();}}throw y},Pe=async(n,e=[],t=f.broadcastTimeout,r)=>{if(!Array.isArray(f.nodes))throw new Error("config.nodes is not an array");if(f.nodes.length===0)throw new Error("config.nodes is empty");let i=Xe(n),s=new Set,a;for(let c=0;c<f.nodes.length;c++){let l=T.getOrderedNodes(f.nodes,i).find(y=>!s.has(y));if(!l)break;if(s.add(l),r?.aborted)throw new Error("Aborted");try{let y=await te(l,n,e,t,!1,r);return T.recordSuccess(l,i),y}catch(y){if(y instanceof D||r?.aborted||(Ee(T,l,y,i),a=y,!Yt(y)))throw y}}throw a},ir={balance:"/balance-api",hafah:"/hafah-api",hafbe:"/hafbe-api",hivemind:"/hivemind-api",hivesense:"/hivesense-api",reputation:"/reputation-api","nft-tracker":"/nft-tracker-api",hafsql:"/hafsql",status:"/status-api"};async function sr(n,e,t,r,i=f.retry,s){if(!Array.isArray(f.restNodes))throw new Error("config.restNodes is not an array");if(f.restNodes.length===0)throw new Error("config.restNodes is empty");let a=r!==void 0,c=r??f.timeout,u=Date.now()+f.resilience.totalBudgetFactor*c,l=`${n}:${e}`,y=f.restNodesByApi?.[n]?.length?f.restNodesByApi[n]:f.restNodes,S=new Set,U,g=false;for(let v=0;v<=i&&!(v>0&&Date.now()>=u);v++){let N=q.getOrderedNodes(y,n),p=N.find(A=>!S.has(A));p||(S.clear(),p=N[0]),S.add(p);let ie=p+ir[n],z=e,G=t||{},X=new Set;Object.entries(G).forEach(([A,V])=>{z.includes(`{${A}}`)&&(z=z.replace(`{${A}}`,encodeURIComponent(String(V))),X.add(A));});let H=new URL(ie+z);if(Object.entries(G).forEach(([A,V])=>{X.has(A)||(Array.isArray(V)?V.forEach(_e=>H.searchParams.append(A,String(_e))):H.searchParams.set(A,String(V)));}),s?.aborted)throw new Error("Aborted");g=false;let{signal:se,cleanup:ye}=it(de(q,p,l,c,a)),{signal:pe,cleanup:ge}=ke(se,s),I=()=>{ye(),ge();},L=Date.now();try{let A=await fetch(H.toString(),{signal:pe,headers:Je()});if(A.status===404)throw new Error("HTTP 404 - Hint: can happen on wrong params");if(A.status===429)throw q.recordRateLimit(p,Ge(A.headers.get("Retry-After"))||void 0),g=!0,new Error(`HTTP 429 Rate Limited by ${p}`);if(A.status===503)throw q.recordFailure(p,n),g=!0,new Error(`HTTP 503 Service Unavailable from ${p}`);if(!A.ok)throw q.recordFailure(p,n),g=!0,new Error(`HTTP ${A.status} from ${p}`);return q.recordSuccess(p,n,Date.now()-L,l),A.json()}catch(A){if(A?.message?.includes("HTTP 404")||s?.aborted)throw A;g||q.recordFailure(p,n),q.recordSlowFailure(p,Date.now()-L,l),U=A,v<i&&await Te();}finally{I();}}throw U}var or=async(n,e=[],t=2,r)=>{if(!Array.isArray(f.nodes))throw new Error("config.nodes is not an Array");if(t>f.nodes.length)throw new Error("quorum > config.nodes.length");let s=(u=>{let l=[...u];for(let y=l.length-1;y>0;y--){let S=Math.floor(Math.random()*(y+1));[l[y],l[S]]=[l[S],l[y]];}return l})(f.nodes),a=Math.min(t,s.length),c=[];for(;a>0&&s.length>0;){let u=s.splice(0,a),l=[],y=[];for(let U=0;U<u.length;U++)l.push(te(u[U],n,e,void 0,true,r).then(g=>y.push(g)).catch(()=>{}));await Promise.all(l),c.push(...y);let S=ar(c,t);if(S)return S;if(a=Math.min(t,s.length),a===0)throw new Error("No more nodes available.")}throw new Error("Couldn't reach quorum.")};function ar(n,e){let t=new Map;for(let i of n){let s=JSON.stringify(i);t.has(s)||t.set(s,[]),t.get(s).push(i);}let r=Array.from(t.values()).find(i=>i.length>=e);return r?r[0]:null}var ur=hexToBytes(f.chain_id),Ie=class n{constructor(e){_(this,"transaction");_(this,"expiration",6e4);_(this,"txId");_(this,"createTransaction",async e=>{let t=await he("condenser_api.get_dynamic_global_properties",[]),r=hexToBytes(t.head_block_id),i=Number(new Uint32Array(r.buffer,r.byteOffset+4,1)[0]),s=new Date(Date.now()+e).toISOString().slice(0,-5);this.transaction={expiration:s,extensions:[],operations:[],ref_block_num:t.head_block_number&65535,ref_block_prefix:i,signatures:[]};});e?.transaction&&(e.transaction instanceof n?(this.transaction=e.transaction.transaction,this.expiration=e.transaction.expiration):this.transaction=e.transaction,this.transaction&&!Array.isArray(this.transaction.signatures)&&(this.transaction.signatures=[]),this.txId=this.digest().txId),e?.expiration&&(this.expiration=e.expiration);}async addOperation(e,t){this.transaction||await this.createTransaction(this.expiration),this.transaction.operations.push([e,t]);}sign(e){if(!this.transaction)throw new Error("First create a transaction by .addOperation()");if(this.transaction){let{digest:t,txId:r}=this.digest();Array.isArray(e)||(e=[e]);for(let i of e){let s=i.sign(t);this.transaction.signatures.push(s.customToString());}return this.txId=r,this.transaction}else throw new Error("No transaction to sign")}async broadcast(e=false){if(!this.transaction)throw new Error("Attempted to broadcast an empty transaction. Add operations by .addOperation()");if(this.transaction.signatures.length===0)throw new Error("Attempted to broadcast a transaction with no signatures. Sign using .sign(keys)");try{await Pe("condenser_api.broadcast_transaction",[this.transaction]);}catch(s){if(!(s instanceof D&&s.message.includes("Duplicate transaction check failed")))throw s}if(this.txId||(this.txId=this.digest().txId),!e)return {tx_id:this.txId,status:"unknown"};let t=60;await Q(1e3);let r=await this.checkStatus(),i=1;for(;r?.status!=="within_irreversible_block"&&r?.status!=="expired_irreversible"&&r?.status!=="too_old"&&i<t;)await Q(1e3+i*300),r=await this.checkStatus(),i++;return {tx_id:this.txId,status:r?.status??"unknown"}}digest(){if(!this.transaction)throw new Error("First create a transaction by .addOperation()");let e=new w(w.DEFAULT_CAPACITY,w.LITTLE_ENDIAN),t={...this.transaction};try{O.Transaction(e,t);}catch(a){throw new Error("Unable to serialize transaction: "+a)}e.flip();let r=new Uint8Array(e.toBuffer()),i=bytesToHex(sha256(r)).slice(0,40);return {digest:sha256(new Uint8Array([...ur,...r])),txId:i}}addSignature(e){if(!this.transaction)throw new Error("First create a transaction by .create(operations)");if(typeof e!="string")throw new Error("Signature must be string");if(e.length!==130)throw new Error("Signature must be 130 characters long");return this.transaction.signatures.push(e),this.transaction}async checkStatus(){return this.txId||(this.txId=this.digest().txId),he("transaction_status_api.find_transaction",{transaction_id:this.txId,expiration:this.transaction?.expiration})}};var lt=new Uint8Array([128]),ne=class n{constructor(e){_(this,"key");this.key=e;try{secp256k1.getPublicKey(e);}catch{throw new Error("invalid private key")}}static from(e){return typeof e=="string"?n.fromString(e):new n(e)}static fromString(e){return new n(hr(e).subarray(1))}static fromSeed(e){if(typeof e=="string")if(/^[0-9a-fA-F]+$/.test(e))e=hexToBytes(e);else {let r=[];for(let i=0;i<e.length;i++){let s=e.charCodeAt(i);if(s<128)r.push(s);else if(s<2048)r.push(192|s>>6,128|s&63);else if(s>=55296&&s<=56319&&i+1<e.length){let a=e.charCodeAt(++i);s=65536+((s&1023)<<10)+(a&1023),r.push(240|s>>18,128|s>>12&63,128|s>>6&63,128|s&63);}else r.push(224|s>>12,128|s>>6&63,128|s&63);}e=new Uint8Array(r);}return new n(sha256(e))}static fromLogin(e,t,r="active"){let i=e+r+t;return n.fromSeed(i)}sign(e){let t=secp256k1.sign(e,this.key,{extraEntropy:true,format:"recovered",prehash:false}),r=parseInt(bytesToHex(t.subarray(0,1)),16);return Y.from((r+31).toString(16)+bytesToHex(t.subarray(1)))}createPublic(e){return new k(secp256k1.getPublicKey(this.key),e)}toString(){return dr(new Uint8Array([...lt,...this.key]))}inspect(){let e=this.toString();return `PrivateKey: ${e.slice(0,6)}...${e.slice(-6)}`}getSharedSecret(e){let t=secp256k1.getSharedSecret(this.key,e.key);return sha512(t.subarray(1))}static randomKey(){return new n(secp256k1.keygen().secretKey)}},ft=n=>sha256(sha256(n)),dr=n=>{let e=ft(n);return Ke.encode(new Uint8Array([...n,...e.slice(0,4)]))},hr=n=>{let e=Ke.decode(n);if(!ct(e.slice(0,1),lt))throw new Error("Private key network id mismatch");let t=e.slice(-4),r=e.slice(0,-4),i=ft(r).slice(0,4);if(!ct(t,i))throw new Error("Private key checksum mismatch");return r},ct=(n,e)=>{if(n===e)return true;if(n.byteLength!==e.byteLength)return false;let t=n.byteLength,r=0;for(;r<t&&n[r]===e[r];)r++;return r===t};var ht=(n,e,t,r=br())=>yt(n,e,r,t),mt=(n,e,t,r,i)=>yt(n,e,t,r,i).message,yt=(n,e,t,r,i)=>{let s=t,a=n.getSharedSecret(e),c=new w(w.DEFAULT_CAPACITY,w.LITTLE_ENDIAN);c.writeUint64(s),c.append(a),c.flip();let u=sha512(new Uint8Array(c.toBuffer())),l=u.subarray(32,48),y=u.subarray(0,32),S=sha256(u).subarray(0,4),U=new w(w.DEFAULT_CAPACITY,w.LITTLE_ENDIAN);U.append(S),U.flip();let g=U.readUint32();if(i!==void 0){if(g!==i)throw new Error("Invalid key");r=gr(r,y,l);}else r=_r(r,y,l);return {nonce:s,message:r,checksum:g}},gr=(n,e,t)=>{let r=n;return r=cbc(e,t).decrypt(r),r},_r=(n,e,t)=>{let r=n;return r=cbc(e,t).encrypt(r),r},Ne=null,br=()=>{if(Ne===null){let t=secp256k1.utils.randomSecretKey();Ne=t[0]<<8|t[1];}let n=BigInt(Date.now()),e=++Ne%65536;return n=n<<BigInt(16)|BigInt(e),n};var pt=n=>{let e=Sr(n,33);return new k(e)},Ar=n=>n.readUint64(),vr=n=>n.readUint32(),Br=n=>{let e=n.readVarint32(),t=n.copy(n.offset,n.offset+e);return n.skip(e),new Uint8Array(t.toBuffer())},xr=n=>e=>{let t={},r=new w(w.DEFAULT_CAPACITY,w.LITTLE_ENDIAN);r.append(e),r.flip();for(let[i,s]of n)try{t[i]=s(r);}catch(a){throw a.message=`${i}: ${a.message}`,a}return t};function Sr(n,e){if(n){let t=n.copy(n.offset,n.offset+e);return n.skip(e),new Uint8Array(t.toBuffer())}else throw Error("No buffer found on first parameter")}var Ur=xr([["from",pt],["to",pt],["nonce",Ar],["check",vr],["encrypted",Br]]),gt={Memo:Ur};var bt=(n,e,t,r)=>{if(!t.startsWith("#"))return t;t=t.substring(1),At(),n=vt(n),e=Tr(e);let i=new w(w.DEFAULT_CAPACITY,w.LITTLE_ENDIAN);i.writeVString(t);let s=new Uint8Array(i.copy(0,i.offset).toBuffer()),{nonce:a,message:c,checksum:u}=ht(n,e,s,r),l=new w(w.DEFAULT_CAPACITY,w.LITTLE_ENDIAN);O.Memo(l,{check:u,encrypted:c,from:n.createPublic(),nonce:a,to:e}),l.flip();let y=new Uint8Array(l.toBuffer());return "#"+Ke.encode(y)},wt=(n,e)=>{if(!e.startsWith("#"))return e;e=e.substring(1),At(),n=vt(n);let t=gt.Memo(Ke.decode(e)),{from:r,to:i,nonce:s,check:a,encrypted:c}=t,l=n.createPublic().toString()===new k(r.key).toString()?new k(i.key):new k(r.key);t=mt(n,l,s,c,a);let y=new w(w.DEFAULT_CAPACITY,w.LITTLE_ENDIAN);return y.append(t),y.flip(),"#"+y.readVString()},me,At=()=>{if(me===void 0){let n;me=true;try{let e="5JdeC9P7Pbd1uGdFVEsJ41EkEnADbbHGq6p1BwFxm6txNBsQnsw",r=bt(e,"STM8m5UgaFAAYQRuaNejYdS8FVLVp9Ss3K1qAVk5de6F8s3HnVbvA","#memo\u7231");n=wt(e,r);}finally{me=n==="#memo\u7231";}}if(me===false)throw new Error("This environment does not support encryption.")},vt=n=>typeof n=="string"?ne.fromString(n):n,Tr=n=>typeof n=="string"?k.fromString(n):n,Er={decode:wt,encode:bt};var Bt={};St(Bt,{buildWitnessSetProperties:()=>Rr,makeBitMaskFilter:()=>Lr,operations:()=>Ir,validateUsername:()=>Pr});var Pr=n=>{let e="Account name should ";if(!n)return e+"not be empty.";let t=n.length;if(t<3)return e+"be longer.";if(t>16)return e+"be shorter.";/\./.test(n)&&(e="Each account segment should ");let r=n.split("."),i=r.length;for(let s=0;s<i;s++){let a=r[s];if(!/^[a-z]/.test(a))return e+"start with a lowercase letter.";if(!/^[a-z0-9-]*$/.test(a))return e+"have only lowercase letters, digits, or dashes.";if(!/[a-z0-9]$/.test(a))return e+"end with a lowercase letter or digit.";if(a.length<3)return e+"be longer."}return null},Ir={vote:0,comment:1,transfer:2,transfer_to_vesting:3,withdraw_vesting:4,limit_order_create:5,limit_order_cancel:6,feed_publish:7,convert:8,account_create:9,account_update:10,witness_update:11,account_witness_vote:12,account_witness_proxy:13,pow:14,custom:15,report_over_production:16,delete_comment:17,custom_json:18,comment_options:19,set_withdraw_vesting_route:20,limit_order_create2:21,claim_account:22,create_claimed_account:23,request_account_recovery:24,recover_account:25,change_recovery_account:26,escrow_transfer:27,escrow_dispute:28,escrow_release:29,pow2:30,escrow_approve:31,transfer_to_savings:32,transfer_from_savings:33,cancel_transfer_from_savings:34,custom_binary:35,decline_voting_rights:36,reset_account:37,set_reset_account:38,claim_reward_balance:39,delegate_vesting_shares:40,account_create_with_delegation:41,witness_set_properties:42,account_update2:43,create_proposal:44,update_proposal_votes:45,remove_proposal:46,update_proposal:47,collateralized_convert:48,recurrent_transfer:49,fill_convert_request:50,author_reward:51,curation_reward:52,comment_reward:53,liquidity_reward:54,interest:55,fill_vesting_withdraw:56,fill_order:57,shutdown_witness:58,fill_transfer_from_savings:59,hardfork:60,comment_payout_update:61,return_vesting_delegation:62,comment_benefactor_reward:63,producer_reward:64,clear_null_account_balance:65,proposal_pay:66,sps_fund:67,hardfork_hive:68,hardfork_hive_restore:69,delayed_voting:70,consolidate_treasury_balance:71,effective_comment_vote:72,ineffective_delete_comment:73,sps_convert:74,expired_account_notification:75,changed_recovery_account:76,transfer_to_vesting_completed:77,pow_reward:78,vesting_shares_split:79,account_created:80,fill_collateralized_convert_request:81,system_warning:82,fill_recurrent_transfer:83,failed_recurrent_transfer:84,limit_order_cancelled:85,producer_missed:86,proposal_fee:87,collateralized_convert_immediate_conversion:88,escrow_approved:89,escrow_rejected:90,proxy_cleared:91,declined_voting_rights:92},Lr=n=>n.reduce(Nr,[BigInt(0),BigInt(0)]).map(e=>e!==BigInt(0)?e.toString():null),Nr=([n,e],t)=>t<64?[n|BigInt(1)<<BigInt(t),e]:[n,e|BigInt(1)<<BigInt(t-64)],Rr=(n,e)=>{let t={extensions:[],owner:n,props:[]};for(let r of Object.keys(e)){if(e[r]===void 0)continue;let i;switch(r){case "key":case "new_signing_key":i=O.PublicKey;break;case "account_subsidy_budget":case "account_subsidy_decay":case "maximum_block_size":i=O.UInt32;break;case "hbd_interest_rate":i=O.UInt16;break;case "url":i=O.String;break;case "hbd_exchange_rate":i=O.Price;break;case "account_creation_fee":i=O.Asset;break;default:throw new Error(`Unknown witness prop: ${r}`)}t.props.push([r,Dr(i,e[r])]);}return t.props.sort((r,i)=>r[0].localeCompare(i[0])),["witness_set_properties",t]},Dr=(n,e)=>{let t=new w(w.DEFAULT_CAPACITY,w.LITTLE_ENDIAN);return n(t,e),t.flip(),bytesToHex(new Uint8Array(t.toBuffer()))};/**
|
|
1
|
+
import {hexToBytes,bytesToHex}from'@noble/hashes/utils.js';import {ripemd160}from'@noble/hashes/legacy.js';import Ke from'bs58';import {secp256k1}from'@noble/curves/secp256k1.js';import {sha256,sha512}from'@noble/hashes/sha2.js';import {cbc}from'@noble/ciphers/aes.js';var De=Object.defineProperty;var St=(n,e,t)=>e in n?De(n,e,{enumerable:true,configurable:true,writable:true,value:t}):n[e]=t;var Ut=(n,e)=>{for(var t in e)De(n,t,{get:e[t],enumerable:true});};var y=(n,e,t)=>St(n,typeof e!="symbol"?e+"":e,t);var ae=new ArrayBuffer(0),ce=null,ue=null;function Tt(){return ce||(typeof TextEncoder<"u"?ce=new TextEncoder:ce={encode(n){let e=[];for(let t=0;t<n.length;t++){let r=n.charCodeAt(t);if(r<128)e.push(r);else if(r<2048)e.push(192|r>>6,128|r&63);else if(r>=55296&&r<=56319&&t+1<n.length){let i=n.charCodeAt(++t);r=65536+((r&1023)<<10)+(i&1023),e.push(240|r>>18,128|r>>12&63,128|r>>6&63,128|r&63);}else e.push(224|r>>12,128|r>>6&63,128|r&63);}return new Uint8Array(e)}}),ce}function Re(){return ue||(typeof TextDecoder<"u"?ue=new TextDecoder:ue={decode(n){let e=n instanceof ArrayBuffer?new Uint8Array(n):new Uint8Array(n.buffer,n.byteOffset,n.byteLength),t="";for(let r=0;r<e.length;){let i=e[r],o;i<128?(o=i,r+=1):(i&224)===192?(o=(i&31)<<6|e[r+1]&63,r+=2):(i&240)===224?(o=(i&15)<<12|(e[r+1]&63)<<6|e[r+2]&63,r+=3):(o=(i&7)<<18|(e[r+1]&63)<<12|(e[r+2]&63)<<6|e[r+3]&63,r+=4),o<=65535?t+=String.fromCharCode(o):(o-=65536,t+=String.fromCharCode(55296+(o>>10),56320+(o&1023)));}return t}}),ue}var x=class x{constructor(e=x.DEFAULT_CAPACITY,t=x.DEFAULT_ENDIAN){y(this,"buffer");y(this,"view");y(this,"offset");y(this,"markedOffset");y(this,"limit");y(this,"littleEndian");y(this,"readUInt32",this.readUint32);this.buffer=e===0?ae:new ArrayBuffer(e),this.view=e===0?new DataView(ae):new DataView(this.buffer),this.offset=0,this.markedOffset=-1,this.limit=e,this.littleEndian=t;}static allocate(e,t){return new x(e,t)}static concat(e,t){let r=0;for(let u=0;u<e.length;++u){let c=e[u];if(c instanceof x)r+=c.limit-c.offset;else if(c instanceof Uint8Array)r+=c.length;else if(c instanceof ArrayBuffer)r+=c.byteLength;else if(Array.isArray(c))r+=c.length;else throw TypeError("Illegal buffer")}if(r===0)return new x(0,t);let i=new x(r,t),o=new Uint8Array(i.buffer),a=0;for(let u=0;u<e.length;++u){let c=e[u];c instanceof x?(o.set(new Uint8Array(c.buffer,c.offset,c.limit-c.offset),a),a+=c.limit-c.offset):c instanceof Uint8Array?(o.set(c,a),a+=c.length):c instanceof ArrayBuffer?(o.set(new Uint8Array(c),a),a+=c.byteLength):(o.set(c,a),a+=c.length);}return i.limit=i.offset=a,i.offset=0,i}static wrap(e,t){if(e instanceof x){let i=e.clone();return i.markedOffset=-1,i}let r;if(e instanceof Uint8Array)r=new x(0,t),e.length>0&&(r.buffer=e.buffer,r.offset=e.byteOffset,r.limit=e.byteOffset+e.byteLength,r.view=new DataView(e.buffer));else if(e instanceof ArrayBuffer)r=new x(0,t),e.byteLength>0&&(r.buffer=e,r.offset=0,r.limit=e.byteLength,r.view=e.byteLength>0?new DataView(e):new DataView(ae));else if(Array.isArray(e))r=new x(e.length,t),r.limit=e.length,new Uint8Array(r.buffer).set(e);else throw TypeError("Illegal buffer");return r}writeBytes(e,t){return this.append(e,t)}writeInt8(e,t){let r=typeof t>"u";return r?t=this.offset:t=t,t+1>this.buffer.byteLength&&this.resize(t+1),this.view.setInt8(t,e),r&&(this.offset+=1),this}writeByte(e,t){return this.writeInt8(e,t)}writeUint8(e,t){let r=typeof t>"u";return r?t=this.offset:t=t,t+1>this.buffer.byteLength&&this.resize(t+1),this.view.setUint8(t,e),r&&(this.offset+=1),this}writeUInt8(e,t){return this.writeUint8(e,t)}readUint8(e){let t=typeof e>"u";t?e=this.offset:e=e;let r=this.view.getUint8(e);return t&&(this.offset+=1),r}readUInt8(e){return this.readUint8(e)}writeInt16(e,t){let r=typeof t>"u";return r?t=this.offset:t=t,t+2>this.buffer.byteLength&&this.resize(t+2),this.view.setInt16(t,e,this.littleEndian),r&&(this.offset+=2),this}writeShort(e,t){return this.writeInt16(e,t)}writeUint16(e,t){let r=typeof t>"u";return r?t=this.offset:t=t,t+2>this.buffer.byteLength&&this.resize(t+2),this.view.setUint16(t,e,this.littleEndian),r&&(this.offset+=2),this}writeUInt16(e,t){return this.writeUint16(e,t)}writeInt32(e,t){let r=typeof t>"u";return r?t=this.offset:t=t,t+4>this.buffer.byteLength&&this.resize(t+4),this.view.setInt32(t,e,this.littleEndian),r&&(this.offset+=4),this}writeInt(e,t){return this.writeInt32(e,t)}writeUint32(e,t){let r=typeof t>"u";return r?t=this.offset:t=t,t+4>this.buffer.byteLength&&this.resize(t+4),this.view.setUint32(t,e,this.littleEndian),r&&(this.offset+=4),this}writeUInt32(e,t){return this.writeUint32(e,t)}readUint32(e){let t=typeof e>"u";t?e=this.offset:e=e;let r=this.view.getUint32(e,this.littleEndian);return t&&(this.offset+=4),r}append(e,t){let r=typeof t>"u";r?t=this.offset:t=t;let i;return e instanceof x?(i=new Uint8Array(e.buffer,e.offset,e.limit-e.offset),e.offset+=i.length):e instanceof Uint8Array?i=e:e instanceof ArrayBuffer?i=new Uint8Array(e):i=new Uint8Array(e),i.length<=0?this:(t+i.length>this.buffer.byteLength&&this.resize(t+i.length),new Uint8Array(this.buffer).set(i,t),r&&(this.offset+=i.length),this)}clone(e){let t=new x(0,this.littleEndian);return e?(t.buffer=new ArrayBuffer(this.buffer.byteLength),new Uint8Array(t.buffer).set(new Uint8Array(this.buffer)),t.view=new DataView(t.buffer)):(t.buffer=this.buffer,t.view=this.view),t.offset=this.offset,t.markedOffset=this.markedOffset,t.limit=this.limit,t}copy(e,t){if(e===void 0&&(e=this.offset),t===void 0&&(t=this.limit),e===t)return new x(0,this.littleEndian);let r=t-e,i=new x(r,this.littleEndian);return i.offset=0,i.limit=r,new Uint8Array(i.buffer).set(new Uint8Array(this.buffer).subarray(e,t),0),i}copyTo(e,t,r,i){let o=typeof t>"u",a=typeof r>"u";t=o?e.offset:t,r=a?this.offset:r,i=i===void 0?this.limit:i;let u=i-r;return u===0?e:(e.ensureCapacity(t+u),new Uint8Array(e.buffer).set(new Uint8Array(this.buffer).subarray(r,i),t),a&&(this.offset+=u),o&&(e.offset+=u),this)}ensureCapacity(e){let t=this.buffer.byteLength;return t<e?this.resize((t*=2)>e?t:e):this}flip(){return this.limit=this.offset,this.offset=0,this}resize(e){if(this.buffer.byteLength<e){let t=new ArrayBuffer(e);new Uint8Array(t).set(new Uint8Array(this.buffer)),this.buffer=t,this.view=new DataView(t);}return this}skip(e){return this.offset+=e,this}writeInt64(e,t){let r=typeof t>"u";return r?t=this.offset:t=t,typeof e=="number"&&(e=BigInt(e)),t+8>this.buffer.byteLength&&this.resize(t+8),this.view.setBigInt64(t,e,this.littleEndian),r&&(this.offset+=8),this}writeLong(e,t){return this.writeInt64(e,t)}readInt64(e){let t=typeof e>"u";t?e=this.offset:e=e;let r=this.view.getBigInt64(e,this.littleEndian);return t&&(this.offset+=8),r}readLong(e){return this.readInt64(e)}writeUint64(e,t){let r=typeof t>"u";return r?t=this.offset:t=t,typeof e=="number"&&(e=BigInt(e)),t+8>this.buffer.byteLength&&this.resize(t+8),this.view.setBigUint64(t,e,this.littleEndian),r&&(this.offset+=8),this}writeUInt64(e,t){return this.writeUint64(e,t)}readUint64(e){let t=typeof e>"u";t?e=this.offset:e=e;let r=this.view.getBigUint64(e,this.littleEndian);return t&&(this.offset+=8),r}readUInt64(e){return this.readUint64(e)}toBuffer(e){let t=this.offset,r=this.limit;return !e&&t===0&&r===this.buffer.byteLength?this.buffer:t===r?ae:this.buffer.slice(t,r)}toArrayBuffer(e){return this.toBuffer(e)}writeVarint32(e,t){let r=typeof t>"u";r?t=this.offset:t=t;let i=this.calculateVarint32(e);for(t+i>this.buffer.byteLength&&this.resize(t+i),e>>>=0;e>=128;)this.view.setUint8(t++,e&127|128),e>>>=7;return this.view.setUint8(t++,e),r?(this.offset=t,this):i}readVarint32(e){let t=typeof e>"u";typeof e>"u"&&(e=this.offset);let r=0,i=0,o;do o=this.view.getUint8(e++),r<5&&(i|=(o&127)<<7*r),++r;while((o&128)!==0);return i|=0,t?(this.offset=e,i):{value:i,length:r}}calculateVarint32(e){return e=e>>>0,e<128?1:e<16384?2:e<1<<21?3:e<1<<28?4:5}writeVString(e,t){let r=typeof t>"u",i=r?this.offset:t,o=Tt().encode(e),a=o.length,u=this.calculateVarint32(a);return i+u+a>this.buffer.byteLength&&this.resize(i+u+a),this.writeVarint32(a,i),i+=u,new Uint8Array(this.buffer).set(o,i),i+=a,r?(this.offset=i,this):i-(t||0)}readVString(e){let t=typeof e>"u";t?e=this.offset:e=e;let r=e,i=this.readVarint32(e),o=i.value,a=i.length;e+=a;let u=Re().decode(new Uint8Array(this.buffer,e,o));return e+=o,t?(this.offset=e,u):{string:u,length:e-r}}readUTF8String(e,t){let r=typeof t>"u";r?t=this.offset:t=t;let i=Re().decode(new Uint8Array(this.buffer,t,e));return r?(this.offset+=e,i):{string:i,length:e}}};y(x,"LITTLE_ENDIAN",true),y(x,"BIG_ENDIAN",false),y(x,"DEFAULT_CAPACITY",16),y(x,"DEFAULT_ENDIAN",x.BIG_ENDIAN);var v=x;var l={nodes:["https://api.hive.blog","https://api.deathwing.me","https://api.openhive.network","https://techcoderx.com","https://api.syncad.com","https://rpc.mahdiyari.info"],restNodes:["https://api.hive.blog","https://rpc.mahdiyari.info","https://api.syncad.com","https://hiveapi.actifit.io","https://api.c0ff33a.uk"],restNodesByApi:{hivesense:["https://api.hive.blog","https://api.syncad.com"]},userAgent:"ecency-sdk",chain_id:"beeab0de00000000000000000000000000000000000000000000000000000000",address_prefix:"STM",timeout:5e3,broadcastTimeout:15e3,retry:5,resilience:{adaptiveTimeout:true,adaptiveTimeoutFloorMs:2e3,adaptiveTimeoutFactor:4,hedge:false,hedgeDelayFloorMs:750,hedgeDelayFactor:2,hedgeBucketCapacity:10,hedgeRefillPerSuccess:.1,totalBudgetFactor:2}},Ae=n=>Array.isArray(n)?[...new Set(n.filter(e=>typeof e=="string").map(e=>e.trim().replace(/\/+$/,"")).filter(e=>e.length>0&&/^https?:\/\/.+/.test(e)))]:[],Et=n=>{let e=Ae(n);e.length&&(l.nodes=e);},kt=n=>{let e=Ae(n);e.length&&(l.restNodes=e);},Pt=n=>{if(!n||typeof n!="object")return;let e={...l.restNodesByApi};for(let[t,r]of Object.entries(n)){let i=Ae(r);i.length?e[t]=i:delete e[t];}l.restNodesByApi=e;},It=n=>{if(typeof n!="string")return;let e=n.trim();!e||/[\u0000-\u001f\u007f]/.test(e)||(l.userAgent=e);},Lt=n=>{if(!n||typeof n!="object")return;let e=l.resilience,t=i=>typeof i=="boolean",r=i=>typeof i=="number"&&Number.isFinite(i)&&i>0;t(n.adaptiveTimeout)&&(e.adaptiveTimeout=n.adaptiveTimeout),r(n.adaptiveTimeoutFloorMs)&&(e.adaptiveTimeoutFloorMs=Math.max(n.adaptiveTimeoutFloorMs,2e3)),r(n.adaptiveTimeoutFactor)&&(e.adaptiveTimeoutFactor=n.adaptiveTimeoutFactor),t(n.hedge)&&(e.hedge=n.hedge),r(n.hedgeDelayFloorMs)&&(e.hedgeDelayFloorMs=n.hedgeDelayFloorMs),r(n.hedgeDelayFactor)&&(e.hedgeDelayFactor=n.hedgeDelayFactor),r(n.hedgeBucketCapacity)&&(e.hedgeBucketCapacity=n.hedgeBucketCapacity),r(n.hedgeRefillPerSuccess)&&(e.hedgeRefillPerSuccess=Math.min(n.hedgeRefillPerSuccess,1)),r(n.totalBudgetFactor)&&(e.totalBudgetFactor=Math.max(n.totalBudgetFactor,1));};var W=class n{constructor(e,t,r){y(this,"data");y(this,"recovery");y(this,"compressed");this.data=e,this.recovery=t,this.compressed=r??true;}static from(e){if(typeof e=="string"){let t=hexToBytes(e),r=parseInt(bytesToHex(t.subarray(0,1)),16)-31,i=true;r<0&&(i=false,r=r+4);let o=t.subarray(1);return new n(o,r,i)}else throw new Error("Expected string for data")}toBuffer(){let e=new Uint8Array(65).fill(0);return this.compressed?e[0]=this.recovery+31&255:e[0]=this.recovery+27&255,e.set(this.data,1),e}customToString(){return bytesToHex(this.toBuffer())}toString(){return this.customToString()}getPublicKey(e){if(e instanceof Uint8Array&&e.length!==32||typeof e=="string"&&e.length!==64)throw new Error("Expected a valid sha256 hash as message");typeof e=="string"&&(e=hexToBytes(e));let t=secp256k1.Signature.fromBytes(this.data,"compact"),r=new secp256k1.Signature(t.r,t.s,this.recovery);return new L(r.recoverPublicKey(e).toBytes())}};var L=class n{constructor(e,t){y(this,"key");y(this,"prefix");this.key=e,this.prefix=t??l.address_prefix;}static fromString(e){let t=l.address_prefix;if(typeof e!="string"||e.length<=t.length)throw new Error("Invalid public key");let r=e.slice(0,t.length);if(r!==t)throw new Error(`Public key must start with ${t}`);let i;try{i=Ke.decode(e.slice(t.length));}catch{throw new Error("Invalid public key encoding")}if(i.length!==37)throw new Error("Invalid public key length");let o=i.subarray(0,33),a=i.subarray(33,37),u=ripemd160(o).subarray(0,4);if(!Dt(a,u))throw new Error("Public key checksum mismatch");try{secp256k1.Point.fromBytes(o);}catch{throw new Error("Invalid public key")}return new n(o,r)}static from(e){return e instanceof n?e:n.fromString(e)}verify(e,t){return typeof t=="string"&&(t=W.from(t)),secp256k1.verify(t.data,e,this.key,{prehash:false,format:"compact"})}toString(){return Nt(this.key,this.prefix)}toJSON(){return this.toString()}inspect(){return `PublicKey: ${this.toString()}`}},Nt=(n,e)=>{let t=ripemd160(n);return e+Ke.encode(new Uint8Array([...n,...t.subarray(0,4)]))},Dt=(n,e)=>{if(n.byteLength!==e.byteLength)return false;for(let t=0;t<n.byteLength;t++)if(n[t]!==e[t])return false;return true};var le=class n{constructor(e,t){y(this,"amount");y(this,"symbol");this.amount=e,this.symbol=t==="HIVE"?"STEEM":t==="HBD"?"SBD":t;}static fromString(e,t=null){let[r,i]=e.split(" ");if(["STEEM","VESTS","SBD","TESTS","TBD","HIVE","HBD"].indexOf(i)===-1)throw new Error(`Invalid asset symbol: ${i}`);if(t&&i!==t)throw new Error(`Invalid asset, expected symbol: ${t} got: ${i}`);let o=Number.parseFloat(r);if(!Number.isFinite(o))throw new Error(`Invalid asset amount: ${r}`);return new n(o,i)}static from(e,t){if(e instanceof n){if(t&&e.symbol!==t)throw new Error(`Invalid asset, expected symbol: ${t} got: ${e.symbol}`);return e}else {if(typeof e=="number"&&Number.isFinite(e))return new n(e,t||"STEEM");if(typeof e=="string")return n.fromString(e,t);throw new Error(`Invalid asset '${String(e)}'`)}}getPrecision(){switch(this.symbol){case "TESTS":case "TBD":case "STEEM":case "SBD":case "HBD":case "HIVE":return 3;case "VESTS":return 6;default:return 3}}toString(){return `${this.amount.toFixed(this.getPrecision())} ${this.symbol}`}toJSON(){return this.toString()}};var fe=class n{constructor(e){y(this,"buffer");this.buffer=e;}static from(e){return e instanceof n?e:e instanceof Uint8Array?new n(e):typeof e=="string"?new n(hexToBytes(e)):new n(new Uint8Array(e))}toString(){return bytesToHex(this.buffer)}toJSON(){return this.toString()}};var d={vote:0,comment:1,transfer:2,transfer_to_vesting:3,withdraw_vesting:4,limit_order_create:5,limit_order_cancel:6,feed_publish:7,convert:8,account_create:9,account_update:10,witness_update:11,account_witness_vote:12,account_witness_proxy:13,custom:15,delete_comment:17,custom_json:18,comment_options:19,set_withdraw_vesting_route:20,limit_order_create2:21,claim_account:22,create_claimed_account:23,request_account_recovery:24,recover_account:25,change_recovery_account:26,escrow_transfer:27,escrow_dispute:28,escrow_release:29,escrow_approve:31,transfer_to_savings:32,transfer_from_savings:33,cancel_transfer_from_savings:34,decline_voting_rights:36,reset_account:37,set_reset_account:38,claim_reward_balance:39,delegate_vesting_shares:40,account_create_with_delegation:41,witness_set_properties:42,account_update2:43,create_proposal:44,update_proposal_votes:45,remove_proposal:46,update_proposal:47,collateralized_convert:48,recurrent_transfer:49},R=()=>{throw new Error("Void can not be serialized")},s=(n,e)=>{n.writeVString(e);},Mt=(n,e)=>{n.writeInt16(e);},Ve=(n,e)=>{n.writeInt64(e);},He=(n,e)=>{n.writeUint8(e);},M=(n,e)=>{n.writeUint16(e);},N=(n,e)=>{n.writeUint32(e);},$e=(n,e)=>{n.writeUint64(e);},$=(n,e)=>{n.writeByte(e?1:0);},je=n=>(e,t)=>{let[r,i]=t;e.writeVarint32(r),n[r](e,i);},w=(n,e)=>{let t=le.from(e),r=t.getPrecision();n.writeInt64(Math.round(t.amount*Math.pow(10,r))),n.writeUint8(r);for(let i=0;i<7;i++)n.writeUint8(t.symbol.charCodeAt(i)||0);},q=(n,e)=>{n.writeUint32(Math.floor(new Date(e+"Z").getTime()/1e3));},H=(n,e)=>{e===null||typeof e=="string"&&e.slice(-39)==="1111111111111111111111111111111114T1Anm"?n.append(new Uint8Array(33).fill(0)):n.append(L.from(e).key);},qe=(n=null)=>(e,t)=>{t=fe.from(t);let r=t.buffer.length;if(n){if(r!==n)throw new Error(`Unable to serialize binary. Expected ${n} bytes, got ${r}`)}else e.writeVarint32(r);e.append(t.buffer);},Ye=qe(),ve=(n,e)=>(t,r)=>{t.writeVarint32(r.length);for(let[i,o]of r)n(t,i),e(t,o);},S=n=>(e,t)=>{e.writeVarint32(t.length);for(let r of t)n(e,r);},C=n=>(e,t)=>{for(let[r,i]of n)try{i(e,t[r]);}catch(o){throw o.message=`${r}: ${o.message}`,o}},J=n=>(e,t)=>{t!==void 0?(e.writeByte(1),n(e,t)):e.writeByte(0);},k=C([["weight_threshold",N],["account_auths",ve(s,M)],["key_auths",ve(H,M)]]),Ct=C([["account",s],["weight",M]]),Be=C([["base",w],["quote",w]]),Ot=C([["account_creation_fee",w],["maximum_block_size",N],["hbd_interest_rate",M]]),h=(n,e)=>{let t=C(e);return (r,i)=>{r.writeVarint32(n),t(r,i);}},f={};f.account_create=h(d.account_create,[["fee",w],["creator",s],["new_account_name",s],["owner",k],["active",k],["posting",k],["memo_key",H],["json_metadata",s]]);f.account_create_with_delegation=h(d.account_create_with_delegation,[["fee",w],["delegation",w],["creator",s],["new_account_name",s],["owner",k],["active",k],["posting",k],["memo_key",H],["json_metadata",s],["extensions",S(R)]]);f.account_update=h(d.account_update,[["account",s],["owner",J(k)],["active",J(k)],["posting",J(k)],["memo_key",H],["json_metadata",s]]);f.account_witness_proxy=h(d.account_witness_proxy,[["account",s],["proxy",s]]);f.account_witness_vote=h(d.account_witness_vote,[["account",s],["witness",s],["approve",$]]);f.cancel_transfer_from_savings=h(d.cancel_transfer_from_savings,[["from",s],["request_id",N]]);f.change_recovery_account=h(d.change_recovery_account,[["account_to_recover",s],["new_recovery_account",s],["extensions",S(R)]]);f.claim_account=h(d.claim_account,[["creator",s],["fee",w],["extensions",S(R)]]);f.claim_reward_balance=h(d.claim_reward_balance,[["account",s],["reward_hive",w],["reward_hbd",w],["reward_vests",w]]);f.comment=h(d.comment,[["parent_author",s],["parent_permlink",s],["author",s],["permlink",s],["title",s],["body",s],["json_metadata",s]]);f.comment_options=h(d.comment_options,[["author",s],["permlink",s],["max_accepted_payout",w],["percent_hbd",M],["allow_votes",$],["allow_curation_rewards",$],["extensions",S(je([C([["beneficiaries",S(Ct)]])]))]]);f.convert=h(d.convert,[["owner",s],["requestid",N],["amount",w]]);f.create_claimed_account=h(d.create_claimed_account,[["creator",s],["new_account_name",s],["owner",k],["active",k],["posting",k],["memo_key",H],["json_metadata",s],["extensions",S(R)]]);f.custom=h(d.custom,[["required_auths",S(s)],["id",M],["data",Ye]]);f.custom_json=h(d.custom_json,[["required_auths",S(s)],["required_posting_auths",S(s)],["id",s],["json",s]]);f.decline_voting_rights=h(d.decline_voting_rights,[["account",s],["decline",$]]);f.delegate_vesting_shares=h(d.delegate_vesting_shares,[["delegator",s],["delegatee",s],["vesting_shares",w]]);f.delete_comment=h(d.delete_comment,[["author",s],["permlink",s]]);f.escrow_approve=h(d.escrow_approve,[["from",s],["to",s],["agent",s],["who",s],["escrow_id",N],["approve",$]]);f.escrow_dispute=h(d.escrow_dispute,[["from",s],["to",s],["agent",s],["who",s],["escrow_id",N]]);f.escrow_release=h(d.escrow_release,[["from",s],["to",s],["agent",s],["who",s],["receiver",s],["escrow_id",N],["hbd_amount",w],["hive_amount",w]]);f.escrow_transfer=h(d.escrow_transfer,[["from",s],["to",s],["hbd_amount",w],["hive_amount",w],["escrow_id",N],["agent",s],["fee",w],["json_meta",s],["ratification_deadline",q],["escrow_expiration",q]]);f.feed_publish=h(d.feed_publish,[["publisher",s],["exchange_rate",Be]]);f.limit_order_cancel=h(d.limit_order_cancel,[["owner",s],["orderid",N]]);f.limit_order_create=h(d.limit_order_create,[["owner",s],["orderid",N],["amount_to_sell",w],["min_to_receive",w],["fill_or_kill",$],["expiration",q]]);f.limit_order_create2=h(d.limit_order_create2,[["owner",s],["orderid",N],["amount_to_sell",w],["exchange_rate",Be],["fill_or_kill",$],["expiration",q]]);f.recover_account=h(d.recover_account,[["account_to_recover",s],["new_owner_authority",k],["recent_owner_authority",k],["extensions",S(R)]]);f.request_account_recovery=h(d.request_account_recovery,[["recovery_account",s],["account_to_recover",s],["new_owner_authority",k],["extensions",S(R)]]);f.reset_account=h(d.reset_account,[["reset_account",s],["account_to_reset",s],["new_owner_authority",k]]);f.set_reset_account=h(d.set_reset_account,[["account",s],["current_reset_account",s],["reset_account",s]]);f.set_withdraw_vesting_route=h(d.set_withdraw_vesting_route,[["from_account",s],["to_account",s],["percent",M],["auto_vest",$]]);f.transfer=h(d.transfer,[["from",s],["to",s],["amount",w],["memo",s]]);f.transfer_from_savings=h(d.transfer_from_savings,[["from",s],["request_id",N],["to",s],["amount",w],["memo",s]]);f.transfer_to_savings=h(d.transfer_to_savings,[["from",s],["to",s],["amount",w],["memo",s]]);f.transfer_to_vesting=h(d.transfer_to_vesting,[["from",s],["to",s],["amount",w]]);f.vote=h(d.vote,[["voter",s],["author",s],["permlink",s],["weight",Mt]]);f.withdraw_vesting=h(d.withdraw_vesting,[["account",s],["vesting_shares",w]]);f.witness_update=h(d.witness_update,[["owner",s],["url",s],["block_signing_key",H],["props",Ot],["fee",w]]);f.witness_set_properties=h(d.witness_set_properties,[["owner",s],["props",ve(s,Ye)],["extensions",S(R)]]);f.account_update2=h(d.account_update2,[["account",s],["owner",J(k)],["active",J(k)],["posting",J(k)],["memo_key",J(H)],["json_metadata",s],["posting_json_metadata",s],["extensions",S(R)]]);f.create_proposal=h(d.create_proposal,[["creator",s],["receiver",s],["start_date",q],["end_date",q],["daily_pay",w],["subject",s],["permlink",s],["extensions",S(R)]]);f.update_proposal_votes=h(d.update_proposal_votes,[["voter",s],["proposal_ids",S(Ve)],["approve",$],["extensions",S(R)]]);f.remove_proposal=h(d.remove_proposal,[["proposal_owner",s],["proposal_ids",S(Ve)],["extensions",S(R)]]);var zt=C([["end_date",q]]);f.update_proposal=h(d.update_proposal,[["proposal_id",$e],["creator",s],["daily_pay",w],["subject",s],["permlink",s],["extensions",S(je([R,zt]))]]);f.collateralized_convert=h(d.collateralized_convert,[["owner",s],["requestid",N],["amount",w]]);f.recurrent_transfer=h(d.recurrent_transfer,[["from",s],["to",s],["amount",w],["memo",s],["recurrence",M],["executions",M],["extensions",S(C([["type",He],["value",C([["pair_id",He]])]]))]]);var Kt=(n,e)=>{let t=f[e[0]];if(!t)throw new Error(`No serializer for operation: ${e[0]}`);try{t(n,e[1]);}catch(r){throw r.message=`${e[0]}: ${r.message}`,r}},Ht=C([["ref_block_num",M],["ref_block_prefix",N],["expiration",q],["operations",S(Kt)],["extensions",S(s)]]),Vt=C([["from",H],["to",H],["nonce",$e],["check",N],["encrypted",qe()]]),O={Asset:w,Memo:Vt,Price:Be,PublicKey:H,String:s,Transaction:Ht,UInt16:M,UInt32:N};var ee=n=>new Promise(e=>setTimeout(e,n));var $t=(()=>{try{return !(typeof navigator<"u"&&navigator.product==="ReactNative")&&typeof process<"u"&&process.versions!=null&&process.versions.node!=null}catch{return false}})();function Xe(){return $t?{"User-Agent":l.userAgent}:{}}var F=class extends Error{constructor(t){super(t.message);y(this,"name","RPCError");y(this,"data");y(this,"code");y(this,"stack");this.code=t.code,"data"in t&&(this.data=t.data);}},G=class extends Error{constructor(t,r,i={}){super(r);y(this,"node");y(this,"rateLimitMs");y(this,"isRateLimit");this.node=t,this.rateLimitMs=i.rateLimitMs??0,this.isRateLimit=i.isRateLimit??false;}};function Qe(n){if(!n)return 0;let e=Number(n);if(Number.isFinite(e))return e>0?e*1e3:0;let t=Date.parse(n);if(Number.isFinite(t)){let r=t-Date.now();return r>0?r:0}return 0}var jt=["ECONNREFUSED","ENOTFOUND","EHOSTUNREACH","EAI_AGAIN"],qt=["Failed to fetch","NetworkError when attempting to fetch","Load failed","fetch failed"];function Yt(n){if(!n)return "";let e=[String(n.name||""),String(n.message||""),String(n.code||"")],t=n.cause;for(let r=0;t&&r<5;r++)e.push(String(t.code||""),String(t.message||"")),t=t.cause;return e.join(" ")}function Wt(n){if(!n)return false;if(n instanceof G)return true;if(n instanceof F)return false;let e=Yt(n);return !!(jt.some(t=>e.includes(t))||qt.some(t=>e.includes(t))||n instanceof SyntaxError||/Unexpected token|JSON\.parse|Unexpected end of JSON/i.test(e))}function xe(n,e){return !!(n===-32603||n<=-32e3&&n>=-32099||n===-32601||n===-32602&&/unable to parse|endpoint data|internal/i.test(e))}function Ze(n){let e=n.indexOf(".");return e>0?n.slice(0,e):n}var Jt=1e4,Gt=6e4,Xt=12e4,We=2,Je=6e4,Ge=12e4,Qt=30,te=.3,Se=3,re=5*6e4,et=6e4,tt=1e3,rt=2e3,he=class{constructor(){y(this,"health",new Map);}getOrCreate(e){let t=this.health.get(e);return t||(t={consecutiveFailures:0,lastFailureTime:0,rateLimitedUntil:0,rateLimitStreak:0,lastRateLimitAt:0,apiFailures:new Map,headBlock:0,headBlockUpdatedAt:0,ewmaLatencyMs:void 0,latencySampleCount:0,latencyUpdatedAt:0,lastProbeAt:Date.now(),apiLatency:new Map},this.health.set(e,t)),t}recordSuccess(e,t,r,i){let o=this.getOrCreate(e);if(o.consecutiveFailures=0,o.rateLimitStreak=0,t){let a=o.apiFailures.get(t);(!a||!(a.defective&&a.cooldownUntil>Date.now()))&&o.apiFailures.delete(t);}typeof r=="number"&&Number.isFinite(r)&&r>=0&&this.recordLatency(o,r,i??t);}recordSlowFailure(e,t,r){!Number.isFinite(t)||t<rt||this.recordLatency(this.getOrCreate(e),t,r);}getUsableLatencyMs(e,t){let r=this.health.get(e);if(!r)return;let i=Date.now();if(t!==void 0){let o=r.apiLatency.get(t);return o&&o.sampleCount>=Se&&i-o.updatedAt<=re?o.ewmaMs:void 0}return this.isLatencyUsable(r,i)?r.ewmaLatencyMs:void 0}recordCensoredLatency(e,t,r){!Number.isFinite(t)||t<50||this.recordLatency(this.getOrCreate(e),t,r);}recordLatency(e,t,r){let i=Date.now();if(e.latencyUpdatedAt>0&&i-e.latencyUpdatedAt>re&&(e.ewmaLatencyMs=void 0,e.latencySampleCount=0,e.apiLatency.clear()),e.ewmaLatencyMs=e.ewmaLatencyMs===void 0?t:te*t+(1-te)*e.ewmaLatencyMs,e.latencySampleCount++,e.latencyUpdatedAt=i,r!==void 0){let o=e.apiLatency.get(r);!o||i-o.updatedAt>re?e.apiLatency.set(r,{ewmaMs:t,sampleCount:1,updatedAt:i}):(o.ewmaMs=te*t+(1-te)*o.ewmaMs,o.sampleCount++,o.updatedAt=i);}}recordFailure(e,t){let r=this.getOrCreate(e);if(t){let i=Date.now(),o=r.apiFailures.get(t)??{count:0,cooldownUntil:0,lastFailureTime:0};(o.cooldownUntil>0&&o.cooldownUntil<=i||o.lastFailureTime>0&&i-o.lastFailureTime>3e4)&&(o.count=0,o.cooldownUntil=0),o.count++,o.lastFailureTime=i,o.count>=We&&(o.cooldownUntil=i+Je),r.apiFailures.set(t,o);}else r.consecutiveFailures++,r.lastFailureTime=Date.now();}recordDefectiveResponse(e,t){let r=this.getOrCreate(e),i=Date.now(),o=r.apiFailures.get(t)??{count:0,cooldownUntil:0,lastFailureTime:0};o.count=Math.max(o.count+1,We),o.lastFailureTime=i,o.cooldownUntil=i+Je,o.defective=true,r.apiFailures.set(t,o);}recordRateLimit(e,t){let r=this.getOrCreate(e),i=Date.now();r.rateLimitStreak>0&&i-r.lastRateLimitAt>Xt&&(r.rateLimitStreak=0);let o=typeof t=="number"&&Number.isFinite(t)&&t>0,a=o?t:Math.min(Jt*2**r.rateLimitStreak,Gt);o||r.rateLimitStreak++,r.lastRateLimitAt=i,r.rateLimitedUntil=o?i+a:Math.max(r.rateLimitedUntil,i+a),r.consecutiveFailures++,r.lastFailureTime=i;}recordHeadBlock(e,t){if(!t||!Number.isFinite(t))return;let r=this.getOrCreate(e);r.headBlock=t,r.headBlockUpdatedAt=Date.now();}consensusHeadBlock(){let e=Date.now(),t=[];for(let r of this.health.values())r.headBlock>0&&e-r.headBlockUpdatedAt<=Ge&&t.push(r.headBlock);return t.length<2?0:(t.sort((r,i)=>r-i),t[Math.floor((t.length-1)/2)])}isNodeHealthy(e,t){let r=this.health.get(e);if(!r)return true;let i=Date.now();if(r.rateLimitedUntil>i||r.consecutiveFailures>=3&&i-r.lastFailureTime<3e4)return false;if(t){let a=r.apiFailures.get(t);if(a&&a.cooldownUntil>i)return false}let o=this.consensusHeadBlock();return !(o>0&&r.headBlock>0&&i-r.headBlockUpdatedAt<=Ge&&o-r.headBlock>Qt)}getOrderedNodes(e,t){let r=[],i=[];for(let c of e)this.isNodeHealthy(c,t)?r.push(c):i.push(c);if(r.length<=1)return [...r,...i];let o=Date.now(),a=r.map((c,m)=>({node:c,i:m,score:this.scoreNode(c,o)})).sort((c,m)=>c.score-m.score||c.i-m.i).map(c=>c.node),u=this.pickReprobeCandidate(r,o);return u&&a[0]!==u?[u,...a.filter(c=>c!==u),...i]:[...a,...i]}isLatencyUsable(e,t){return !!e&&e.ewmaLatencyMs!==void 0&&e.latencySampleCount>=Se&&t-e.latencyUpdatedAt<=re}scoreNode(e,t){let r=this.health.get(e);return this.isLatencyUsable(r,t)?r.ewmaLatencyMs:tt}pickReprobeCandidate(e,t){let r=t-et,i,o=1/0;for(let a of e){let u=this.getOrCreate(a),c=Math.max(u.latencyUpdatedAt,u.lastProbeAt);c<=r&&c<o&&(i=a,o=c);}return i&&(this.getOrCreate(i).lastProbeAt=t),i}},U=new he,Y=new he,Ue=class{constructor(){y(this,"tokens",l.resilience.hedgeBucketCapacity);}trySpend(){return this.clamp(),this.tokens>=1-1e-9?(this.tokens-=1,true):false}refill(){this.clamp(),this.tokens=Math.min(l.resilience.hedgeBucketCapacity,this.tokens+l.resilience.hedgeRefillPerSuccess);}clamp(){this.tokens>l.resilience.hedgeBucketCapacity&&(this.tokens=l.resilience.hedgeBucketCapacity);}get available(){return this.tokens}reset(e=l.resilience.hedgeBucketCapacity){this.tokens=e;}},Te=new Ue;function me(n,e,t,r,i){let o=l.resilience;if(!o.adaptiveTimeout||i)return r;let a=n.getUsableLatencyMs(e,t);return a===void 0?r:Math.ceil(Math.min(r,Math.max(o.adaptiveTimeoutFloorMs,o.adaptiveTimeoutFactor*a)))}function Ee(n,e,t,r){t instanceof G?t.isRateLimit?n.recordRateLimit(e,t.rateLimitMs||void 0):n.recordFailure(e,r):t instanceof F?n.recordFailure(e,r):n.recordFailure(e);}function nt(n,e,t,r){if(!r||typeof r!="object"||!t.includes("get_dynamic_global_properties"))return;let i=r.head_block_number;typeof i=="number"&&n.recordHeadBlock(e,i);}function Zt(){if(typeof DOMException<"u")return new DOMException("The operation was aborted due to timeout","TimeoutError");let n=new Error("The operation was aborted due to timeout");return n.name="TimeoutError",n}function it(n){if(n=Math.ceil(n),typeof AbortSignal.timeout=="function")return {signal:AbortSignal.timeout(n),cleanup:()=>{}};let e=new AbortController,t=setTimeout(()=>e.abort(Zt()),n);return {signal:e.signal,cleanup:()=>clearTimeout(t)}}function ke(n,e){if(!e)return {signal:n,cleanup:()=>{}};if(typeof AbortSignal.any=="function")return {signal:AbortSignal.any([n,e]),cleanup:()=>{}};let t=new AbortController;if(n.aborted)return t.abort(n.reason),{signal:t.signal,cleanup:()=>{}};if(e.aborted)return t.abort(e.reason),{signal:t.signal,cleanup:()=>{}};let r=()=>t.abort(n.reason),i=()=>t.abort(e.reason);n.addEventListener("abort",r,{once:true}),e.addEventListener("abort",i,{once:true});let o=()=>{n.removeEventListener("abort",r),e.removeEventListener("abort",i);};return {signal:t.signal,cleanup:o}}var ne=async(n,e,t,r=l.timeout,i=false,o)=>{let a=Math.floor(Math.random()*1e8),u={jsonrpc:"2.0",method:e,params:t,id:a},{signal:c,cleanup:m}=it(r),{signal:p,cleanup:T}=ke(c,o),E=()=>{m(),T();};try{let g=await fetch(n,{method:"POST",body:JSON.stringify(u),headers:{"Content-Type":"application/json",...Xe()},signal:p});if(g.status===429)throw new G(n,"HTTP 429 Rate Limited",{rateLimitMs:Qe(g.headers.get("Retry-After")),isRateLimit:!0});if(g.status>=500&&g.status<600)throw new G(n,`HTTP ${g.status} from ${n}`);let b=await g.json();if(!b||typeof b.id>"u"||b.id!==a||b.jsonrpc!=="2.0")throw new Error("JSONRPC id mismatch");if("result"in b)return b.result;if("error"in b){let I=b.error;throw "message"in I&&"code"in I?new F(I):b.error}throw b}catch(g){if(g instanceof F||g instanceof G||o?.aborted)throw g;if(i)return ne(n,e,t,r,false,o);throw g}finally{E();}};function de(){return ee(50+Math.random()*50)}function er(n){let{method:e,params:t,api:r,primary:i,hedgePool:o,callerTimeout:a,explicitTimeout:u,deadlineAt:c,externalSignal:m,onHedgeFired:p,validate:T}=n;return new Promise((E,g)=>{let b=false,I=0,B=false,A=false,z,j,Q=0,X=[],V=P=>{if(!b){b=true,j!==void 0&&(clearTimeout(j),j=void 0);for(let _ of X)_.signal.aborted||_.abort();P();}},se=(P,_)=>{I++;let K=new AbortController;X.push(K);let Z=ke(K.signal,m),xt=me(U,P,e,a,u),we=Date.now();_||(Q=we),ne(P,e,t,xt,false,Z.signal).then(D=>{if(Z.cleanup(),I--,_||(A=true),!b){if(T&&!T(D)){if(U.recordDefectiveResponse(P,r),z=new Error(`[hive-tx] response validation failed for ${e} from ${P}`),!_&&!B){V(()=>g(z));return}I===0&&V(()=>g(z));return}U.recordSuccess(P,r,Date.now()-we,e),nt(U,P,e,D),_?A||U.recordCensoredLatency(i,Date.now()-Q,e):B||Te.refill(),V(()=>E(D));}}).catch(D=>{if(Z.cleanup(),I--,_||(A=true),!b){if(m?.aborted){V(()=>g(D));return}if(D instanceof F&&!xe(D.code,D.message)){V(()=>g(D));return}if(Ee(U,P,D,r),U.recordSlowFailure(P,Date.now()-we,e),z=D,!_&&!B){V(()=>g(D));return}I===0&&V(()=>g(z));}});};se(i,false);let ge=U.getUsableLatencyMs(i,e)??0,be=me(U,i,e,a,u),_e=Math.min(Math.max(l.resilience.hedgeDelayFloorMs,l.resilience.hedgeDelayFactor*ge),.8*be);j=setTimeout(()=>{if(j=void 0,b||m?.aborted||Date.now()>=c)return;let P=o.filter(K=>U.isNodeHealthy(K,r));if(P.length===0)return;let _=P[Math.floor(Math.random()*P.length)];Te.trySpend()&&(B=true,p(_),se(_,true));},_e);})}var pe=async(n,e=[],t,r=l.retry,i,o)=>{if(!Array.isArray(l.nodes))throw new Error("config.nodes is not an array");if(l.nodes.length===0)throw new Error("config.nodes is empty");let a=t!==void 0,u=t??l.timeout,c=Ze(n),m=Date.now()+l.resilience.totalBudgetFactor*u,p=new Set,T;for(let E=0;E<=r&&!(E>0&&Date.now()>=m);E++){let g=U.getOrderedNodes(l.nodes,c),b=g.find(A=>!p.has(A));b||(p.clear(),b=g[0]),p.add(b);let I=[];if(l.resilience.hedge&&U.getUsableLatencyMs(b,n)!==void 0&&(I=g.filter(A=>!p.has(A)&&U.isNodeHealthy(A,c)).slice(0,3)),I.length>0)try{return await er({method:n,params:e,api:c,primary:b,hedgePool:I,callerTimeout:u,explicitTimeout:a,deadlineAt:m,externalSignal:i,onHedgeFired:A=>p.add(A),validate:o})}catch(A){if(A instanceof F&&!xe(A.code,A.message)||i?.aborted)throw A;T=A,E<r&&await de();continue}let B=Date.now();try{let A=await ne(b,n,e,me(U,b,n,u,a),!1,i);if(o&&!o(A)){U.recordDefectiveResponse(b,c),T=new Error(`[hive-tx] response validation failed for ${n} from ${b}`),E<r&&await de();continue}return U.recordSuccess(b,c,Date.now()-B,n),Te.refill(),nt(U,b,n,A),A}catch(A){if(A instanceof F&&!xe(A.code,A.message)||i?.aborted)throw A;Ee(U,b,A,c),U.recordSlowFailure(b,Date.now()-B,n),T=A,E<r&&await de();}}throw T},Pe=async(n,e=[],t=l.broadcastTimeout,r)=>{if(!Array.isArray(l.nodes))throw new Error("config.nodes is not an array");if(l.nodes.length===0)throw new Error("config.nodes is empty");let i=Ze(n),o=new Set,a;for(let u=0;u<l.nodes.length;u++){let m=U.getOrderedNodes(l.nodes,i).find(p=>!o.has(p));if(!m)break;if(o.add(m),r?.aborted)throw new Error("Aborted");try{let p=await ne(m,n,e,t,!1,r);return U.recordSuccess(m,i),p}catch(p){if(p instanceof F||r?.aborted||(Ee(U,m,p,i),a=p,!Wt(p)))throw p}}throw a},tr={balance:"/balance-api",hafah:"/hafah-api",hafbe:"/hafbe-api",hivemind:"/hivemind-api",hivesense:"/hivesense-api",reputation:"/reputation-api","nft-tracker":"/nft-tracker-api",hafsql:"/hafsql",status:"/status-api"};async function rr(n,e,t,r,i=l.retry,o){if(!Array.isArray(l.restNodes))throw new Error("config.restNodes is not an array");if(l.restNodes.length===0)throw new Error("config.restNodes is empty");let a=r!==void 0,u=r??l.timeout,c=Date.now()+l.resilience.totalBudgetFactor*u,m=`${n}:${e}`,p=l.restNodesByApi?.[n]?.length?l.restNodesByApi[n]:l.restNodes,T=new Set,E,g=false;for(let b=0;b<=i&&!(b>0&&Date.now()>=c);b++){let I=Y.getOrderedNodes(p,n),B=I.find(_=>!T.has(_));B||(T.clear(),B=I[0]),T.add(B);let A=B+tr[n],z=e,j=t||{},Q=new Set;Object.entries(j).forEach(([_,K])=>{z.includes(`{${_}}`)&&(z=z.replace(`{${_}}`,encodeURIComponent(String(K))),Q.add(_));});let X=new URL(A+z);if(Object.entries(j).forEach(([_,K])=>{Q.has(_)||(Array.isArray(K)?K.forEach(Z=>X.searchParams.append(_,String(Z))):X.searchParams.set(_,String(K)));}),o?.aborted)throw new Error("Aborted");g=false;let{signal:V,cleanup:se}=it(me(Y,B,m,u,a)),{signal:ge,cleanup:be}=ke(V,o),_e=()=>{se(),be();},P=Date.now();try{let _=await fetch(X.toString(),{signal:ge,headers:Xe()});if(_.status===404)throw new Error("HTTP 404 - Hint: can happen on wrong params");if(_.status===429)throw Y.recordRateLimit(B,Qe(_.headers.get("Retry-After"))||void 0),g=!0,new Error(`HTTP 429 Rate Limited by ${B}`);if(_.status===503)throw Y.recordFailure(B,n),g=!0,new Error(`HTTP 503 Service Unavailable from ${B}`);if(!_.ok)throw Y.recordFailure(B,n),g=!0,new Error(`HTTP ${_.status} from ${B}`);return Y.recordSuccess(B,n,Date.now()-P,m),_.json()}catch(_){if(_?.message?.includes("HTTP 404")||o?.aborted)throw _;g||Y.recordFailure(B,n),Y.recordSlowFailure(B,Date.now()-P,m),E=_,b<i&&await de();}finally{_e();}}throw E}var nr=async(n,e=[],t=2,r)=>{if(!Array.isArray(l.nodes))throw new Error("config.nodes is not an Array");if(t>l.nodes.length)throw new Error("quorum > config.nodes.length");let o=(c=>{let m=[...c];for(let p=m.length-1;p>0;p--){let T=Math.floor(Math.random()*(p+1));[m[p],m[T]]=[m[T],m[p]];}return m})(l.nodes),a=Math.min(t,o.length),u=[];for(;a>0&&o.length>0;){let c=o.splice(0,a),m=[],p=[];for(let E=0;E<c.length;E++)m.push(ne(c[E],n,e,void 0,true,r).then(g=>p.push(g)).catch(()=>{}));await Promise.all(m),u.push(...p);let T=ir(u,t);if(T)return T;if(a=Math.min(t,o.length),a===0)throw new Error("No more nodes available.")}throw new Error("Couldn't reach quorum.")};function ir(n,e){let t=new Map;for(let i of n){let o=JSON.stringify(i);t.has(o)||t.set(o,[]),t.get(o).push(i);}let r=Array.from(t.values()).find(i=>i.length>=e);return r?r[0]:null}var sr=hexToBytes(l.chain_id),Ie=class n{constructor(e){y(this,"transaction");y(this,"expiration",6e4);y(this,"txId");y(this,"createTransaction",async e=>{let t=await pe("condenser_api.get_dynamic_global_properties",[]),r=hexToBytes(t.head_block_id),i=Number(new Uint32Array(r.buffer,r.byteOffset+4,1)[0]),o=new Date(Date.now()+e).toISOString().slice(0,-5);this.transaction={expiration:o,extensions:[],operations:[],ref_block_num:t.head_block_number&65535,ref_block_prefix:i,signatures:[]};});e?.transaction&&(e.transaction instanceof n?(this.transaction=e.transaction.transaction,this.expiration=e.transaction.expiration):this.transaction=e.transaction,this.transaction&&!Array.isArray(this.transaction.signatures)&&(this.transaction.signatures=[]),this.txId=this.digest().txId),e?.expiration&&(this.expiration=e.expiration);}async addOperation(e,t){this.transaction||await this.createTransaction(this.expiration),this.transaction.operations.push([e,t]);}sign(e){if(!this.transaction)throw new Error("First create a transaction by .addOperation()");if(this.transaction){let{digest:t,txId:r}=this.digest();Array.isArray(e)||(e=[e]);for(let i of e){let o=i.sign(t);this.transaction.signatures.push(o.customToString());}return this.txId=r,this.transaction}else throw new Error("No transaction to sign")}async broadcast(e=false){if(!this.transaction)throw new Error("Attempted to broadcast an empty transaction. Add operations by .addOperation()");if(this.transaction.signatures.length===0)throw new Error("Attempted to broadcast a transaction with no signatures. Sign using .sign(keys)");try{await Pe("condenser_api.broadcast_transaction",[this.transaction]);}catch(o){if(!(o instanceof F&&o.message.includes("Duplicate transaction check failed")))throw o}if(this.txId||(this.txId=this.digest().txId),!e)return {tx_id:this.txId,status:"unknown"};let t=60;await ee(1e3);let r=await this.checkStatus(),i=1;for(;r?.status!=="within_irreversible_block"&&r?.status!=="expired_irreversible"&&r?.status!=="too_old"&&i<t;)await ee(1e3+i*300),r=await this.checkStatus(),i++;return {tx_id:this.txId,status:r?.status??"unknown"}}digest(){if(!this.transaction)throw new Error("First create a transaction by .addOperation()");let e=new v(v.DEFAULT_CAPACITY,v.LITTLE_ENDIAN),t={...this.transaction};try{O.Transaction(e,t);}catch(a){throw new Error("Unable to serialize transaction: "+a)}e.flip();let r=new Uint8Array(e.toBuffer()),i=bytesToHex(sha256(r)).slice(0,40);return {digest:sha256(new Uint8Array([...sr,...r])),txId:i}}addSignature(e){if(!this.transaction)throw new Error("First create a transaction by .create(operations)");if(typeof e!="string")throw new Error("Signature must be string");if(e.length!==130)throw new Error("Signature must be 130 characters long");return this.transaction.signatures.push(e),this.transaction}async checkStatus(){return this.txId||(this.txId=this.digest().txId),pe("transaction_status_api.find_transaction",{transaction_id:this.txId,expiration:this.transaction?.expiration})}};var lt=new Uint8Array([128]),oe=class n{constructor(e){y(this,"key");this.key=e;try{secp256k1.getPublicKey(e);}catch{throw new Error("invalid private key")}}static from(e){return typeof e=="string"?n.fromString(e):new n(e)}static fromString(e){return new n(lr(e).subarray(1))}static fromSeed(e){if(typeof e=="string")if(/^[0-9a-fA-F]+$/.test(e))e=hexToBytes(e);else {let r=[];for(let i=0;i<e.length;i++){let o=e.charCodeAt(i);if(o<128)r.push(o);else if(o<2048)r.push(192|o>>6,128|o&63);else if(o>=55296&&o<=56319&&i+1<e.length){let a=e.charCodeAt(++i);o=65536+((o&1023)<<10)+(a&1023),r.push(240|o>>18,128|o>>12&63,128|o>>6&63,128|o&63);}else r.push(224|o>>12,128|o>>6&63,128|o&63);}e=new Uint8Array(r);}return new n(sha256(e))}static fromLogin(e,t,r="active"){let i=e+r+t;return n.fromSeed(i)}sign(e){let t=secp256k1.sign(e,this.key,{extraEntropy:true,format:"recovered",prehash:false}),r=parseInt(bytesToHex(t.subarray(0,1)),16);return W.from((r+31).toString(16)+bytesToHex(t.subarray(1)))}createPublic(e){return new L(secp256k1.getPublicKey(this.key),e)}toString(){return ur(new Uint8Array([...lt,...this.key]))}inspect(){let e=this.toString();return `PrivateKey: ${e.slice(0,6)}...${e.slice(-6)}`}getSharedSecret(e){let t=secp256k1.getSharedSecret(this.key,e.key);return sha512(t.subarray(1))}static randomKey(){return new n(secp256k1.keygen().secretKey)}},ft=n=>sha256(sha256(n)),ur=n=>{let e=ft(n);return Ke.encode(new Uint8Array([...n,...e.slice(0,4)]))},lr=n=>{let e=Ke.decode(n);if(!ct(e.slice(0,1),lt))throw new Error("Private key network id mismatch");let t=e.slice(-4),r=e.slice(0,-4),i=ft(r).slice(0,4);if(!ct(t,i))throw new Error("Private key checksum mismatch");return r},ct=(n,e)=>{if(n===e)return true;if(n.byteLength!==e.byteLength)return false;let t=n.byteLength,r=0;for(;r<t&&n[r]===e[r];)r++;return r===t};var ht=(n,e,t,r=yr())=>pt(n,e,r,t),mt=(n,e,t,r,i)=>pt(n,e,t,r,i).message,pt=(n,e,t,r,i)=>{let o=t,a=n.getSharedSecret(e),u=new v(v.DEFAULT_CAPACITY,v.LITTLE_ENDIAN);u.writeUint64(o),u.append(a),u.flip();let c=sha512(new Uint8Array(u.toBuffer())),m=c.subarray(32,48),p=c.subarray(0,32),T=sha256(c).subarray(0,4),E=new v(v.DEFAULT_CAPACITY,v.LITTLE_ENDIAN);E.append(T),E.flip();let g=E.readUint32();if(i!==void 0){if(g!==i)throw new Error("Invalid key");r=mr(r,p,m);}else r=pr(r,p,m);return {nonce:o,message:r,checksum:g}},mr=(n,e,t)=>{let r=n;return r=cbc(e,t).decrypt(r),r},pr=(n,e,t)=>{let r=n;return r=cbc(e,t).encrypt(r),r},Ne=null,yr=()=>{if(Ne===null){let t=secp256k1.utils.randomSecretKey();Ne=t[0]<<8|t[1];}let n=BigInt(Date.now()),e=++Ne%65536;return n=n<<BigInt(16)|BigInt(e),n};var yt=n=>{let e=vr(n,33);return new L(e)},br=n=>n.readUint64(),_r=n=>n.readUint32(),wr=n=>{let e=n.readVarint32(),t=n.copy(n.offset,n.offset+e);return n.skip(e),new Uint8Array(t.toBuffer())},Ar=n=>e=>{let t={},r=new v(v.DEFAULT_CAPACITY,v.LITTLE_ENDIAN);r.append(e),r.flip();for(let[i,o]of n)try{t[i]=o(r);}catch(a){throw a.message=`${i}: ${a.message}`,a}return t};function vr(n,e){if(n){let t=n.copy(n.offset,n.offset+e);return n.skip(e),new Uint8Array(t.toBuffer())}else throw Error("No buffer found on first parameter")}var Br=Ar([["from",yt],["to",yt],["nonce",br],["check",_r],["encrypted",wr]]),gt={Memo:Br};var _t=(n,e,t,r)=>{if(!t.startsWith("#"))return t;t=t.substring(1),At(),n=vt(n),e=xr(e);let i=new v(v.DEFAULT_CAPACITY,v.LITTLE_ENDIAN);i.writeVString(t);let o=new Uint8Array(i.copy(0,i.offset).toBuffer()),{nonce:a,message:u,checksum:c}=ht(n,e,o,r),m=new v(v.DEFAULT_CAPACITY,v.LITTLE_ENDIAN);O.Memo(m,{check:c,encrypted:u,from:n.createPublic(),nonce:a,to:e}),m.flip();let p=new Uint8Array(m.toBuffer());return "#"+Ke.encode(p)},wt=(n,e)=>{if(!e.startsWith("#"))return e;e=e.substring(1),At(),n=vt(n);let t=gt.Memo(Ke.decode(e)),{from:r,to:i,nonce:o,check:a,encrypted:u}=t,m=n.createPublic().toString()===new L(r.key).toString()?new L(i.key):new L(r.key);t=mt(n,m,o,u,a);let p=new v(v.DEFAULT_CAPACITY,v.LITTLE_ENDIAN);return p.append(t),p.flip(),"#"+p.readVString()},ye,At=()=>{if(ye===void 0){let n;ye=true;try{let e="5JdeC9P7Pbd1uGdFVEsJ41EkEnADbbHGq6p1BwFxm6txNBsQnsw",r=_t(e,"STM8m5UgaFAAYQRuaNejYdS8FVLVp9Ss3K1qAVk5de6F8s3HnVbvA","#memo\u7231");n=wt(e,r);}finally{ye=n==="#memo\u7231";}}if(ye===false)throw new Error("This environment does not support encryption.")},vt=n=>typeof n=="string"?oe.fromString(n):n,xr=n=>typeof n=="string"?L.fromString(n):n,Sr={decode:wt,encode:_t};var Bt={};Ut(Bt,{buildWitnessSetProperties:()=>Ir,makeBitMaskFilter:()=>kr,operations:()=>Er,validateUsername:()=>Tr});var Tr=n=>{let e="Account name should ";if(!n)return e+"not be empty.";let t=n.length;if(t<3)return e+"be longer.";if(t>16)return e+"be shorter.";/\./.test(n)&&(e="Each account segment should ");let r=n.split("."),i=r.length;for(let o=0;o<i;o++){let a=r[o];if(!/^[a-z]/.test(a))return e+"start with a lowercase letter.";if(!/^[a-z0-9-]*$/.test(a))return e+"have only lowercase letters, digits, or dashes.";if(!/[a-z0-9]$/.test(a))return e+"end with a lowercase letter or digit.";if(a.length<3)return e+"be longer."}return null},Er={vote:0,comment:1,transfer:2,transfer_to_vesting:3,withdraw_vesting:4,limit_order_create:5,limit_order_cancel:6,feed_publish:7,convert:8,account_create:9,account_update:10,witness_update:11,account_witness_vote:12,account_witness_proxy:13,pow:14,custom:15,report_over_production:16,delete_comment:17,custom_json:18,comment_options:19,set_withdraw_vesting_route:20,limit_order_create2:21,claim_account:22,create_claimed_account:23,request_account_recovery:24,recover_account:25,change_recovery_account:26,escrow_transfer:27,escrow_dispute:28,escrow_release:29,pow2:30,escrow_approve:31,transfer_to_savings:32,transfer_from_savings:33,cancel_transfer_from_savings:34,custom_binary:35,decline_voting_rights:36,reset_account:37,set_reset_account:38,claim_reward_balance:39,delegate_vesting_shares:40,account_create_with_delegation:41,witness_set_properties:42,account_update2:43,create_proposal:44,update_proposal_votes:45,remove_proposal:46,update_proposal:47,collateralized_convert:48,recurrent_transfer:49,fill_convert_request:50,author_reward:51,curation_reward:52,comment_reward:53,liquidity_reward:54,interest:55,fill_vesting_withdraw:56,fill_order:57,shutdown_witness:58,fill_transfer_from_savings:59,hardfork:60,comment_payout_update:61,return_vesting_delegation:62,comment_benefactor_reward:63,producer_reward:64,clear_null_account_balance:65,proposal_pay:66,sps_fund:67,hardfork_hive:68,hardfork_hive_restore:69,delayed_voting:70,consolidate_treasury_balance:71,effective_comment_vote:72,ineffective_delete_comment:73,sps_convert:74,expired_account_notification:75,changed_recovery_account:76,transfer_to_vesting_completed:77,pow_reward:78,vesting_shares_split:79,account_created:80,fill_collateralized_convert_request:81,system_warning:82,fill_recurrent_transfer:83,failed_recurrent_transfer:84,limit_order_cancelled:85,producer_missed:86,proposal_fee:87,collateralized_convert_immediate_conversion:88,escrow_approved:89,escrow_rejected:90,proxy_cleared:91,declined_voting_rights:92},kr=n=>n.reduce(Pr,[BigInt(0),BigInt(0)]).map(e=>e!==BigInt(0)?e.toString():null),Pr=([n,e],t)=>t<64?[n|BigInt(1)<<BigInt(t),e]:[n,e|BigInt(1)<<BigInt(t-64)],Ir=(n,e)=>{let t={extensions:[],owner:n,props:[]};for(let r of Object.keys(e)){if(e[r]===void 0)continue;let i;switch(r){case "key":case "new_signing_key":i=O.PublicKey;break;case "account_subsidy_budget":case "account_subsidy_decay":case "maximum_block_size":i=O.UInt32;break;case "hbd_interest_rate":i=O.UInt16;break;case "url":i=O.String;break;case "hbd_exchange_rate":i=O.Price;break;case "account_creation_fee":i=O.Asset;break;default:throw new Error(`Unknown witness prop: ${r}`)}t.props.push([r,Lr(i,e[r])]);}return t.props.sort((r,i)=>r[0].localeCompare(i[0])),["witness_set_properties",t]},Lr=(n,e)=>{let t=new v(v.DEFAULT_CAPACITY,v.LITTLE_ENDIAN);return n(t,e),t.flip(),bytesToHex(new Uint8Array(t.toBuffer()))};/**
|
|
2
2
|
* @license bytebuffer.ts (c) 2015 Daniel Wirtz <dcode@dcode.io>
|
|
3
3
|
* Backing buffer: ArrayBuffer, Accessor: DataView
|
|
4
4
|
* Released under the Apache License, Version 2.0
|
|
5
5
|
* see: https://github.com/dcodeIO/bytebuffer.ts for details
|
|
6
6
|
* modified by @xmcl/bytebuffer
|
|
7
7
|
* And customized for hive-tx
|
|
8
|
-
*/export{
|
|
8
|
+
*/export{Sr as Memo,oe as PrivateKey,L as PublicKey,W as Signature,Ie as Transaction,rr as callREST,pe as callRPC,Pe as callRPCBroadcast,nr as callWithQuorum,l as config,Et as setNodes,Lt as setResilience,kt as setRestNodes,Pt as setRestNodesByApi,It as setUserAgent,Bt as utils};//# sourceMappingURL=hive.js.map
|
|
9
9
|
//# sourceMappingURL=hive.js.map
|