@bronlabs/intents-sdk 1.0.116 → 1.0.118
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.
|
@@ -11,4 +11,6 @@ export declare class CosmosNetwork implements Network {
|
|
|
11
11
|
getDecimals(tokenAddress: string): Promise<number>;
|
|
12
12
|
getTxData(txHash: string, tokenAddress: string): Promise<TransactionData | undefined>;
|
|
13
13
|
transfer(privateKey: string, to: string, value: bigint, tokenAddress: string): Promise<string>;
|
|
14
|
+
private parseEventAttributes;
|
|
15
|
+
private rpcGet;
|
|
14
16
|
}
|
package/dist/networks/cosmos.js
CHANGED
|
@@ -1,34 +1,8 @@
|
|
|
1
1
|
import { log } from '../utils.js';
|
|
2
2
|
import { proxyFetch } from '../proxy.js';
|
|
3
|
-
import {
|
|
4
|
-
import { GasPrice, SigningStargateClient
|
|
3
|
+
import { DirectSecp256k1Wallet } from '@cosmjs/proto-signing';
|
|
4
|
+
import { GasPrice, SigningStargateClient } from '@cosmjs/stargate';
|
|
5
5
|
import { Tendermint37Client } from '@cosmjs/tendermint-rpc';
|
|
6
|
-
import { MsgSend } from 'cosmjs-types/cosmos/bank/v1beta1/tx';
|
|
7
|
-
class ProxyRpcClient {
|
|
8
|
-
constructor(url) {
|
|
9
|
-
this.url = url;
|
|
10
|
-
}
|
|
11
|
-
disconnect() { }
|
|
12
|
-
async execute(request) {
|
|
13
|
-
const response = await proxyFetch(this.url, {
|
|
14
|
-
method: 'POST',
|
|
15
|
-
headers: { 'Content-Type': 'application/json' },
|
|
16
|
-
body: JSON.stringify(request),
|
|
17
|
-
});
|
|
18
|
-
if (!response.ok) {
|
|
19
|
-
const body = await response.text().catch(() => '');
|
|
20
|
-
throw new Error(`Cosmos RPC request to ${this.url} failed: ${response.status} ${response.statusText} - ${body}`);
|
|
21
|
-
}
|
|
22
|
-
const json = await response.json();
|
|
23
|
-
if (json.error) {
|
|
24
|
-
throw new Error(JSON.stringify(json.error));
|
|
25
|
-
}
|
|
26
|
-
return json;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
function createCometClient(rpcUrl) {
|
|
30
|
-
return Tendermint37Client.create(new ProxyRpcClient(rpcUrl));
|
|
31
|
-
}
|
|
32
6
|
export class CosmosNetwork {
|
|
33
7
|
constructor(rpcUrl, nativeDenom, bech32, gasPrice, confirmations = 1) {
|
|
34
8
|
this.retryDelay = 15000;
|
|
@@ -39,13 +13,7 @@ export class CosmosNetwork {
|
|
|
39
13
|
this.bech32 = bech32;
|
|
40
14
|
}
|
|
41
15
|
async ping() {
|
|
42
|
-
|
|
43
|
-
try {
|
|
44
|
-
await client.getHeight();
|
|
45
|
-
}
|
|
46
|
-
finally {
|
|
47
|
-
client.disconnect();
|
|
48
|
-
}
|
|
16
|
+
await this.rpcGet('status');
|
|
49
17
|
}
|
|
50
18
|
async getDecimals(tokenAddress) {
|
|
51
19
|
let denom = tokenAddress;
|
|
@@ -54,27 +22,23 @@ export class CosmosNetwork {
|
|
|
54
22
|
}
|
|
55
23
|
const firstLetter = denom[0];
|
|
56
24
|
if (firstLetter === 'u') {
|
|
57
|
-
// micro
|
|
58
25
|
return 6;
|
|
59
26
|
}
|
|
60
27
|
if (firstLetter === 'a') {
|
|
61
|
-
// atto
|
|
62
28
|
return 18;
|
|
63
29
|
}
|
|
64
30
|
if (firstLetter === 'n') {
|
|
65
|
-
// nano
|
|
66
31
|
return 9;
|
|
67
32
|
}
|
|
68
33
|
return 0;
|
|
69
34
|
}
|
|
70
35
|
async getTxData(txHash, tokenAddress) {
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
if (!resp) {
|
|
36
|
+
const result = await this.rpcGet('tx', { hash: `0x${txHash}`, prove: 'false' });
|
|
37
|
+
if (!result || !result.tx_result) {
|
|
74
38
|
return;
|
|
75
39
|
}
|
|
76
|
-
if (
|
|
77
|
-
log.warn(`Transaction ${txHash} failed on blockchain:
|
|
40
|
+
if (result.tx_result.code !== 0) {
|
|
41
|
+
log.warn(`Transaction ${txHash} failed on blockchain: code=${result.tx_result.code}`);
|
|
78
42
|
return {
|
|
79
43
|
from: "",
|
|
80
44
|
to: "",
|
|
@@ -83,10 +47,10 @@ export class CosmosNetwork {
|
|
|
83
47
|
confirmed: false
|
|
84
48
|
};
|
|
85
49
|
}
|
|
86
|
-
const
|
|
87
|
-
const
|
|
88
|
-
if (!
|
|
89
|
-
log.warn(`Transaction ${txHash} has no
|
|
50
|
+
const events = result.tx_result.events || [];
|
|
51
|
+
const transferEvent = events.find((e) => e.type === 'transfer');
|
|
52
|
+
if (!transferEvent) {
|
|
53
|
+
log.warn(`Transaction ${txHash} has no transfer event`);
|
|
90
54
|
return {
|
|
91
55
|
from: "",
|
|
92
56
|
to: "",
|
|
@@ -95,15 +59,15 @@ export class CosmosNetwork {
|
|
|
95
59
|
confirmed: false
|
|
96
60
|
};
|
|
97
61
|
}
|
|
98
|
-
const
|
|
62
|
+
const attrs = this.parseEventAttributes(transferEvent.attributes);
|
|
99
63
|
let denom = tokenAddress;
|
|
100
|
-
// Native token - specified denom
|
|
101
64
|
if (tokenAddress === "0x0") {
|
|
102
65
|
denom = this.nativeDenom;
|
|
103
66
|
}
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
67
|
+
const amountStr = attrs.amount || '';
|
|
68
|
+
const amountMatch = amountStr.match(new RegExp(`(\\d+)${denom}`));
|
|
69
|
+
if (!amountMatch) {
|
|
70
|
+
log.warn(`Transaction ${txHash} has no amount for denom ${denom}: ${amountStr}`);
|
|
107
71
|
return {
|
|
108
72
|
from: "",
|
|
109
73
|
to: "",
|
|
@@ -112,33 +76,78 @@ export class CosmosNetwork {
|
|
|
112
76
|
confirmed: false
|
|
113
77
|
};
|
|
114
78
|
}
|
|
115
|
-
const
|
|
116
|
-
const currentBlock =
|
|
117
|
-
const txBlock =
|
|
79
|
+
const blockResult = await this.rpcGet('block');
|
|
80
|
+
const currentBlock = parseInt(blockResult.block.header.height);
|
|
81
|
+
const txBlock = parseInt(result.height);
|
|
118
82
|
const confirmed = (currentBlock - txBlock) >= this.confirmations;
|
|
119
83
|
log.info(`Confirmations ${txHash}: ${currentBlock}, confirmed: ${confirmed}`);
|
|
120
84
|
return {
|
|
121
|
-
from:
|
|
122
|
-
to:
|
|
85
|
+
from: attrs.sender || '',
|
|
86
|
+
to: attrs.recipient || '',
|
|
123
87
|
token: tokenAddress,
|
|
124
|
-
amount: BigInt(
|
|
125
|
-
confirmed
|
|
88
|
+
amount: BigInt(amountMatch[1]),
|
|
89
|
+
confirmed
|
|
126
90
|
};
|
|
127
91
|
}
|
|
128
92
|
async transfer(privateKey, to, value, tokenAddress) {
|
|
129
|
-
// 1) Create wallet/signer
|
|
130
93
|
const wallet = await DirectSecp256k1Wallet.fromKey(Buffer.from(privateKey, 'hex'), this.bech32);
|
|
131
94
|
const [account] = await wallet.getAccounts();
|
|
132
95
|
const sender = account.address;
|
|
133
|
-
|
|
96
|
+
const cometClient = await Tendermint37Client.create({
|
|
97
|
+
execute: async (request) => {
|
|
98
|
+
const response = await proxyFetch(this.rpcUrl, {
|
|
99
|
+
method: 'POST',
|
|
100
|
+
headers: { 'Content-Type': 'application/json' },
|
|
101
|
+
body: JSON.stringify(request),
|
|
102
|
+
});
|
|
103
|
+
if (!response.ok) {
|
|
104
|
+
throw new Error(`Cosmos RPC error: ${response.status}`);
|
|
105
|
+
}
|
|
106
|
+
const json = await response.json();
|
|
107
|
+
if (json.error) {
|
|
108
|
+
throw new Error(JSON.stringify(json.error));
|
|
109
|
+
}
|
|
110
|
+
return json;
|
|
111
|
+
},
|
|
112
|
+
disconnect: () => { }
|
|
113
|
+
});
|
|
134
114
|
const gasPrice = GasPrice.fromString(`${this.gasPrice}${this.nativeDenom}`);
|
|
135
|
-
const client = SigningStargateClient.createWithSigner(
|
|
115
|
+
const client = await SigningStargateClient.createWithSigner(cometClient, wallet, { gasPrice });
|
|
136
116
|
const denom = tokenAddress === "0x0" ? this.nativeDenom : tokenAddress;
|
|
137
|
-
// 3) Build amount (in *base* denom)
|
|
138
117
|
const amount = [{ denom, amount: value.toString() }];
|
|
139
|
-
// CosmosJs simulates tx and do transfer
|
|
140
118
|
const resultAuto = await client.sendTokens(sender, to, amount, "auto");
|
|
141
119
|
return resultAuto.transactionHash;
|
|
142
120
|
}
|
|
121
|
+
parseEventAttributes(attributes) {
|
|
122
|
+
const result = {};
|
|
123
|
+
for (const attr of attributes) {
|
|
124
|
+
try {
|
|
125
|
+
const key = Buffer.from(attr.key, 'base64').toString('utf-8');
|
|
126
|
+
const value = attr.value ? Buffer.from(attr.value, 'base64').toString('utf-8') : '';
|
|
127
|
+
result[key] = value;
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
result[attr.key] = attr.value || '';
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
async rpcGet(method, params = {}) {
|
|
136
|
+
const queryString = Object.entries(params)
|
|
137
|
+
.map(([k, v]) => `${k}=${encodeURIComponent(v)}`)
|
|
138
|
+
.join('&');
|
|
139
|
+
const url = queryString
|
|
140
|
+
? `${this.rpcUrl}/${method}?${queryString}`
|
|
141
|
+
: `${this.rpcUrl}/${method}`;
|
|
142
|
+
const resp = await proxyFetch(url);
|
|
143
|
+
if (!resp.ok) {
|
|
144
|
+
throw new Error(`Cosmos RPC error ${resp.status}: ${(await resp.text()).substring(0, 1024)}`);
|
|
145
|
+
}
|
|
146
|
+
const json = await resp.json();
|
|
147
|
+
if (json.error) {
|
|
148
|
+
throw new Error(`Cosmos RPC error: ${JSON.stringify(json.error)}`);
|
|
149
|
+
}
|
|
150
|
+
return json.result;
|
|
151
|
+
}
|
|
143
152
|
}
|
|
144
153
|
//# sourceMappingURL=cosmos.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cosmos.js","sourceRoot":"","sources":["../../src/networks/cosmos.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cosmos.js","sourceRoot":"","sources":["../../src/networks/cosmos.ts"],"names":[],"mappings":"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"}
|
package/dist/networks/ton.js
CHANGED
package/dist/networks/xrp.js
CHANGED
|
@@ -33,8 +33,10 @@ export class XrpNetwork {
|
|
|
33
33
|
log.warn(`XRP issuer ${issuer} has no Domain field, using default decimals ${DEFAULT_ISSUED_CURRENCY_DECIMALS}`);
|
|
34
34
|
return DEFAULT_ISSUED_CURRENCY_DECIMALS;
|
|
35
35
|
}
|
|
36
|
-
const domain = Buffer.from(domainHex, 'hex').toString('utf-8');
|
|
37
|
-
const tomlUrl =
|
|
36
|
+
const domain = Buffer.from(domainHex, 'hex').toString('utf-8').replace(/\/+$/, '');
|
|
37
|
+
const tomlUrl = domain.startsWith('http')
|
|
38
|
+
? `${domain}/.well-known/xrp-ledger.toml`
|
|
39
|
+
: `https://${domain}/.well-known/xrp-ledger.toml`;
|
|
38
40
|
const resp = await proxyFetch(tomlUrl);
|
|
39
41
|
if (!resp.ok) {
|
|
40
42
|
log.warn(`Failed to fetch ${tomlUrl}: ${resp.status}, using default decimals`);
|
|
@@ -155,7 +157,7 @@ export class XrpNetwork {
|
|
|
155
157
|
return signed.hash;
|
|
156
158
|
}
|
|
157
159
|
parseTokenAddress(tokenAddress) {
|
|
158
|
-
const colonIndex = tokenAddress.indexOf('
|
|
160
|
+
const colonIndex = tokenAddress.indexOf('.');
|
|
159
161
|
if (colonIndex === -1) {
|
|
160
162
|
throw new Error(`Invalid XRP token address format: ${tokenAddress}. Expected "currency:issuer"`);
|
|
161
163
|
}
|
package/dist/networks/xrp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xrp.js","sourceRoot":"","sources":["../../src/networks/xrp.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,QAAQ,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAG9B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,gCAAgC,GAAG,EAAE,CAAC;AAE5C,MAAM,OAAO,UAAU;IAOrB,YAAY,MAAc,EAAE,gBAAwB,CAAC;QALpC,gBAAW,GAA2B,EAAE,CAAC;QAEzC,wBAAmB,GAAW,CAAC,CAAC;QACxC,eAAU,GAAW,KAAK,CAAC;QAGlC,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;IACrC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,YAAoB;QACpC,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,mBAAmB,CAAC;QAClC,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAElE,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;YACvG,MAAM,SAAS,GAAG,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC;YAEpD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,GAAG,CAAC,IAAI,CAAC,cAAc,MAAM,gDAAgD,gCAAgC,EAAE,CAAC,CAAC;gBACjH,OAAO,gCAAgC,CAAC;YAC1C,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"xrp.js","sourceRoot":"","sources":["../../src/networks/xrp.ts"],"names":[],"mappings":"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"}
|