@bronlabs/intents-sdk 1.0.44 → 1.0.46

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.
@@ -1,6 +1,7 @@
1
1
  import { Network, TransactionData } from "./index.js";
2
2
  export declare class TrxNetwork implements Network {
3
3
  private readonly rpcUrl;
4
+ private readonly authHeaders;
4
5
  private readonly confirmations;
5
6
  private readonly nativeAssetDecimals;
6
7
  readonly retryDelay: number;
@@ -9,4 +10,5 @@ export declare class TrxNetwork implements Network {
9
10
  getDecimals(tokenAddress: string): Promise<number>;
10
11
  getTxData(txHash: string, tokenAddress: string): Promise<TransactionData | undefined>;
11
12
  transfer(privateKey: string, to: string, value: bigint, tokenAddress: string): Promise<string>;
13
+ private request;
12
14
  }
@@ -3,57 +3,66 @@ import { TronWeb } from "tronweb";
3
3
  import { log } from "../utils.js";
4
4
  export class TrxNetwork {
5
5
  constructor(rpcUrl, confirmations = 20) {
6
+ this.authHeaders = {};
6
7
  this.nativeAssetDecimals = 6;
7
8
  this.retryDelay = 5000;
8
- this.rpcUrl = rpcUrl;
9
+ if (rpcUrl.includes('@')) {
10
+ const [rpcUrlPart, apiKey] = rpcUrl.split('@', 2);
11
+ this.rpcUrl = rpcUrlPart;
12
+ this.authHeaders = { 'x-api-key': apiKey };
13
+ }
14
+ else {
15
+ this.rpcUrl = rpcUrl;
16
+ }
9
17
  this.confirmations = confirmations;
10
18
  this.tronWeb = new TronWeb({
11
- fullHost: rpcUrl
19
+ fullHost: rpcUrl,
20
+ headers: this.authHeaders
12
21
  });
13
22
  }
14
23
  async getDecimals(tokenAddress) {
15
24
  if (tokenAddress === "0x0") {
16
25
  return this.nativeAssetDecimals;
17
26
  }
18
- const response = await fetch(`${this.rpcUrl}/wallet/triggerconstantcontract`, {
27
+ const response = await this.request(`/wallet/triggerconstantcontract`, {
19
28
  method: "POST",
20
29
  headers: {
21
30
  accept: "application/json",
22
31
  "content-type": "application/json"
23
32
  },
24
33
  body: JSON.stringify({ owner_address: tokenAddress, contract_address: tokenAddress, function_selector: "decimals()", parameter: "", visible: true })
25
- }).then((res) => res.json());
34
+ });
26
35
  return parseInt(response.constant_result[0], 16);
27
36
  }
28
37
  async getTxData(txHash, tokenAddress) {
29
- const currentBlock = await fetch(`${this.rpcUrl}/wallet/getblockbylatestnum`, {
38
+ const currentBlock = await this.request(`/wallet/getblockbylatestnum`, {
30
39
  method: "POST",
31
40
  headers: {
32
41
  accept: "application/json",
33
42
  "content-type": "application/json"
34
43
  },
35
44
  body: JSON.stringify({ num: 1 })
36
- }).then((res) => res.json()).then((res) => res.block[0].block_header.raw_data.number);
45
+ }).then((res) => res.block[0].block_header.raw_data.number);
37
46
  // Native token - TRX
38
47
  if (tokenAddress === "0x0") {
39
- const response = await fetch(`${this.rpcUrl}/wallet/gettransactionbyid`, {
48
+ const response = await this.request(`/wallet/gettransactionbyid`, {
40
49
  method: "POST",
41
50
  headers: {
42
51
  accept: "application/json",
43
52
  "content-type": "application/json"
44
53
  },
45
54
  body: JSON.stringify({ value: txHash })
46
- }).then((res) => res.json());
55
+ });
47
56
  if (!response)
48
57
  return;
49
- const blockNumber = await fetch(`${this.rpcUrl}/wallet/gettransactioninfobyid`, {
58
+ const blockNumber = await this.request(`/wallet/gettransactioninfobyid`, {
50
59
  method: "POST",
51
60
  headers: {
52
61
  accept: "application/json",
53
62
  "content-type": "application/json"
54
63
  },
55
64
  body: JSON.stringify({ value: txHash })
56
- }).then((res) => res.json()).then((res) => res.blockNumber);
65
+ }).then((res) => res.blockNumber);
57
66
  const confirmed = currentBlock - blockNumber >= this.confirmations;
58
67
  if (response.ret[0].contractRet != "SUCCESS") {
59
68
  log.warn(`Transaction ${txHash} failed on blockchain: ${response}`);
@@ -73,15 +82,15 @@ export class TrxNetwork {
73
82
  };
74
83
  }
75
84
  // ERC20 token
76
- const response = await fetch(`${this.rpcUrl}/wallet/gettransactioninfobyid`, {
85
+ const response = await this.request(`/wallet/gettransactioninfobyid`, {
77
86
  method: "POST",
78
87
  headers: {
79
88
  accept: "application/json",
80
89
  "content-type": "application/json"
81
90
  },
82
91
  body: JSON.stringify({ value: txHash })
83
- }).then((res) => res.json());
84
- if (!response)
92
+ });
93
+ if (!response || !response.receipt)
85
94
  return;
86
95
  const confirmed = currentBlock - response.blockNumber >= this.confirmations;
87
96
  if (response.receipt.result != "SUCCESS") {
@@ -113,5 +122,21 @@ export class TrxNetwork {
113
122
  const contract = this.tronWeb.contract(abi.entrys, tokenAddress);
114
123
  return await contract.methods.transfer(to, Number(value)).send();
115
124
  }
125
+ async request(url, options) {
126
+ const resp = await fetch(this.rpcUrl + url, {
127
+ ...(options || {}),
128
+ headers: { ...this.authHeaders, ...(options?.headers || {}) }
129
+ });
130
+ if (!resp.ok) {
131
+ throw new Error(`Request error ${resp.status}: ${(await resp.text()).substring(0, 1024)}`);
132
+ }
133
+ try {
134
+ return resp.json();
135
+ }
136
+ catch (err) {
137
+ const text = await resp.text();
138
+ throw new Error(`Invalid json response ${resp.status}: ${text.substring(0, 1024)}...`);
139
+ }
140
+ }
116
141
  }
117
142
  //# sourceMappingURL=trx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"trx.js","sourceRoot":"","sources":["../../src/networks/trx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trx.js","sourceRoot":"","sources":["../../src/networks/trx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,MAAM,OAAO,UAAU;IAQrB,YAAY,MAAc,EAAE,gBAAwB,EAAE;QANrC,gBAAW,GAA2B,EAAE,CAAC;QAEzC,wBAAmB,GAAW,CAAC,CAAC;QACxC,eAAU,GAAW,IAAI,CAAC;QAIjC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAElD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC;YACzB,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,IAAI,CAAC,WAAW;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,YAAoB;QACpC,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,mBAAmB,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iCAAiC,EAAE;YACrE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;SACrJ,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAAS,CACb,MAAc,EACd,YAAoB;QAEpB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,EAAE;YACrE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;SACjC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE5D,qBAAqB;QACrB,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE;gBAChE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,MAAM,EAAE,kBAAkB;oBAC1B,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;aACxC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAEtB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CACpC,gCAAgC,EAChC;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,MAAM,EAAE,kBAAkB;oBAC1B,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;aACxC,CACF,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAEjC,MAAM,SAAS,GAAG,YAAY,GAAG,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC;YAEnE,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,SAAS,EAAE,CAAC;gBAC7C,GAAG,CAAC,IAAI,CAAC,eAAe,MAAM,0BAA0B,QAAQ,EAAE,CAAC,CAAC;gBAEpE,OAAO;oBACL,EAAE,EAAE,EAAE;oBACN,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,EAAE;oBACV,SAAS;iBACV,CAAC;YACJ,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,iBAAiB,MAAM,KAAK,YAAY,GAAG,WAAW,EAAE,CAAC,CAAC;YAEnE,OAAO;gBACL,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC;gBACrE,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;gBACpE,SAAS;aACV,CAAC;QACJ,CAAC;QAED,cAAc;QACd,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CACjC,gCAAgC,EAChC;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;SACxC,CACF,CAAC;QAEF,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAO;QAE3C,MAAM,SAAS,GAAG,YAAY,GAAG,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC;QAE5E,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;YACzC,GAAG,CAAC,IAAI,CAAC,eAAe,MAAM,0BAA0B,QAAQ,EAAE,CAAC,CAAC;YAEpE,OAAO;gBACL,EAAE,EAAE,EAAE;gBACN,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;gBACV,SAAS;aACV,CAAC;QACJ,CAAC;QAED,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACzC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClD,SAAS;SACV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,UAAkB,EAAE,EAAU,EAAE,KAAa,EAAE,YAAoB;QAChF,kBAAkB;QAClB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAEvC,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;YAC3B,0BAA0B;YAC1B,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACrE,OAAO,EAAE,CAAC,IAAI,CAAC;QACjB,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;QAEhE,kCAAkC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACjE,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,OAAqB;QACtD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE;YAC1C,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;YAClB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE;SAC9D,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,MAAM,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7F,CAAC;QAED,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;CACF"}
@@ -1,8 +1,10 @@
1
1
  import { EventQueue } from './eventQueue.js';
2
- interface OrderEvent {
2
+ type OrderEvent = {
3
3
  orderId: string;
4
4
  status: bigint;
5
- }
5
+ attempts?: number;
6
+ nextAttemptAt?: number;
7
+ };
6
8
  export declare abstract class OrderProcessor {
7
9
  protected isRunning: boolean;
8
10
  protected delayedQueue: EventQueue<OrderEvent>;
@@ -10,5 +12,6 @@ export declare abstract class OrderProcessor {
10
12
  abstract process(orderId: string, status: bigint): Promise<void>;
11
13
  stop(): Promise<void>;
12
14
  private processDelayedQueue;
15
+ private backoffMs;
13
16
  }
14
17
  export {};
@@ -17,20 +17,40 @@ export class OrderProcessor {
17
17
  log.info('Order processor stopped.');
18
18
  }
19
19
  async processDelayedQueue() {
20
+ const start = this.delayedQueue.peek();
21
+ let looped = false;
20
22
  while (!this.delayedQueue.isEmpty() && this.isRunning) {
21
23
  const event = this.delayedQueue.peek();
22
- if (event) {
23
- try {
24
- await this.process(event.orderId, event.status);
25
- this.delayedQueue.remove();
26
- }
27
- catch (error) {
28
- log.error(`Error processing delayed event:`, error);
29
- await sleep(7000);
24
+ if (!event)
25
+ break;
26
+ event.attempts = event.attempts ?? 0;
27
+ event.nextAttemptAt = event.nextAttemptAt ?? 0;
28
+ if (event.nextAttemptAt > Date.now()) {
29
+ this.delayedQueue.remove();
30
+ this.delayedQueue.add(event);
31
+ if (start && event.orderId === start.orderId) {
32
+ if (looped)
33
+ break;
34
+ looped = true;
30
35
  }
36
+ continue;
37
+ }
38
+ try {
39
+ await this.process(event.orderId, event.status);
40
+ this.delayedQueue.remove();
41
+ }
42
+ catch (error) {
43
+ log.error(`Error processing delayed event ${event.orderId} ${event.status}: ${error instanceof Error ? (error.stack ?? error.message) : String(error)}`);
44
+ event.attempts += 1;
45
+ event.nextAttemptAt = Date.now() + this.backoffMs(event.attempts);
46
+ this.delayedQueue.remove();
47
+ this.delayedQueue.add(event);
31
48
  }
32
49
  }
33
- setTimeout(async () => await this.processDelayedQueue(), 5000);
50
+ setTimeout(async () => await this.processDelayedQueue(), 1000);
51
+ }
52
+ backoffMs(attempts) {
53
+ return Math.min(60000, 3000 * 2 ** Math.max(0, attempts - 1));
34
54
  }
35
55
  }
36
56
  //# sourceMappingURL=orderProcessor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"orderProcessor.js","sourceRoot":"","sources":["../src/orderProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAOxC,MAAM,OAAgB,cAAc;IAIlC;QAHU,cAAS,GAAY,IAAI,CAAC;QAIlC,IAAI,CAAC,YAAY,GAAG,IAAI,UAAU,EAAc,CAAC;QAEjD,IAAI,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAID,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAExC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAElB,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACvC,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAEvC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;oBAEhD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;gBAC7B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,GAAG,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;oBACpD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QAED,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;CACF"}
1
+ {"version":3,"file":"orderProcessor.js","sourceRoot":"","sources":["../src/orderProcessor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bronlabs/intents-sdk",
3
- "version": "1.0.44",
3
+ "version": "1.0.46",
4
4
  "description": "SDK for Intents DeFi smart contracts",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",