@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.
package/dist/networks/trx.d.ts
CHANGED
|
@@ -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
|
}
|
package/dist/networks/trx.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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
|
-
})
|
|
34
|
+
});
|
|
26
35
|
return parseInt(response.constant_result[0], 16);
|
|
27
36
|
}
|
|
28
37
|
async getTxData(txHash, tokenAddress) {
|
|
29
|
-
const currentBlock = await
|
|
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.
|
|
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
|
|
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
|
-
})
|
|
55
|
+
});
|
|
47
56
|
if (!response)
|
|
48
57
|
return;
|
|
49
|
-
const blockNumber = await
|
|
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.
|
|
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
|
|
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
|
-
})
|
|
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
|
package/dist/networks/trx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"trx.js","sourceRoot":"","sources":["../../src/networks/trx.ts"],"names":[],"mappings":"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"}
|
package/dist/orderProcessor.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { EventQueue } from './eventQueue.js';
|
|
2
|
-
|
|
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 {};
|
package/dist/orderProcessor.js
CHANGED
|
@@ -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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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(),
|
|
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;
|
|
1
|
+
{"version":3,"file":"orderProcessor.js","sourceRoot":"","sources":["../src/orderProcessor.ts"],"names":[],"mappings":"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"}
|