@bronlabs/intents-sdk 1.0.139 → 1.0.140

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/index.d.ts CHANGED
@@ -9,3 +9,4 @@ export { configureProxy, getProxyAgentForUrl, proxyFetch } from './proxy.js';
9
9
  export { initNetworks } from './networks/index.js';
10
10
  export type { Network, TransactionData } from './networks/index.js';
11
11
  export * from './attestation.js';
12
+ export * from './token.js';
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ export * from './utils.js';
8
8
  export { configureProxy, getProxyAgentForUrl, proxyFetch } from './proxy.js';
9
9
  export { initNetworks } from './networks/index.js';
10
10
  export * from './attestation.js';
11
+ export * from './token.js';
11
12
  // Monkey-patch BigInt.prototype.toJSON
12
13
  BigInt.prototype.toJSON = function () {
13
14
  return this.toString();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,cAAc,kBAAkB,CAAC;AAEjC,uCAAuC;AACtC,MAAM,CAAC,SAAiB,CAAC,MAAM,GAAG;IACjC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAE3B,uCAAuC;AACtC,MAAM,CAAC,SAAiB,CAAC,MAAM,GAAG;IACjC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzB,CAAC,CAAC"}
@@ -11,8 +11,10 @@ export declare class EvmNetwork implements Network, AttestationCapable {
11
11
  ping(): Promise<void>;
12
12
  addressFromPublicKey(publicKey: string): string;
13
13
  verifyAttestation(publicKey: string, signature: string, preimage: Uint8Array): boolean;
14
- getDecimals(tokenAddress: string): Promise<number>;
15
- getTxData(txHash: string, tokenAddress: string, recipientAddress: string): Promise<TransactionData | undefined>;
14
+ supportsInterface(tokenAddress: string, interfaceId: string): Promise<boolean>;
15
+ isErc6909(tokenAddress: string): Promise<boolean>;
16
+ getDecimals(tokenAddress: string, tokenId?: bigint): Promise<number>;
17
+ getTxData(txHash: string, tokenAddress: string, recipientAddress: string, tokenId?: bigint): Promise<TransactionData | undefined>;
16
18
  /**
17
19
  * @deprecated Signs from a raw private key — do not use in production. Kept for local tooling/tests.
18
20
  */
@@ -1,8 +1,13 @@
1
1
  import { ethers } from 'ethers';
2
2
  import { SignatureScheme, verifySecp256k1 } from '../attestation.js';
3
+ import { decodeErc6909TransferAmount } from '../token.js';
3
4
  import { log, memoize } from '../utils.js';
4
5
  import { proxyFetch } from '../proxy.js';
5
6
  const ERC20_TRANSFER_TOPIC = ethers.id('Transfer(address,address,uint256)');
7
+ const ERC6909_TRANSFER_TOPIC = ethers.id('Transfer(address,address,address,uint256,uint256)');
8
+ const ERC6909_DECIMALS_SELECTOR = '0x3f47e662';
9
+ const ERC165_SUPPORTS_INTERFACE_SELECTOR = '0x01ffc9a7';
10
+ const ERC6909_INTERFACE_ID = '0x0f632fb3';
6
11
  export class EvmNetwork {
7
12
  constructor(rpcUrl, confirmations = 6) {
8
13
  this.nativeAssetDecimals = 18;
@@ -21,11 +26,40 @@ export class EvmNetwork {
21
26
  verifyAttestation(publicKey, signature, preimage) {
22
27
  return verifySecp256k1(publicKey, signature, preimage);
23
28
  }
24
- async getDecimals(tokenAddress) {
29
+ async supportsInterface(tokenAddress, interfaceId) {
30
+ return memoize(`supports-interface-${this.rpcUrl}-${tokenAddress}-${interfaceId}`, 86400 * 1000, async () => {
31
+ const { result } = await proxyFetch(this.rpcUrl, {
32
+ method: 'POST',
33
+ body: JSON.stringify({
34
+ id: 1,
35
+ jsonrpc: "2.0",
36
+ method: "eth_call",
37
+ params: [
38
+ {
39
+ to: tokenAddress,
40
+ data: ERC165_SUPPORTS_INTERFACE_SELECTOR + interfaceId.slice(2).padStart(8, '0').padEnd(64, '0')
41
+ },
42
+ "latest"
43
+ ]
44
+ })
45
+ }).then((res) => res.json());
46
+ return !!result && result !== "0x" && BigInt(result) !== 0n;
47
+ });
48
+ }
49
+ async isErc6909(tokenAddress) {
50
+ return this.supportsInterface(tokenAddress, ERC6909_INTERFACE_ID);
51
+ }
52
+ async getDecimals(tokenAddress, tokenId) {
25
53
  if (tokenAddress === "0x0") {
26
54
  return this.nativeAssetDecimals;
27
55
  }
28
- return memoize(`decimals-${this.rpcUrl}-${tokenAddress}`, 86400 * 1000, async () => {
56
+ if (tokenId !== undefined && !(await this.isErc6909(tokenAddress))) {
57
+ throw new Error(`Token ${tokenAddress} carries tokenId ${tokenId} but does not support the ERC6909 interface`);
58
+ }
59
+ const callData = tokenId !== undefined
60
+ ? ERC6909_DECIMALS_SELECTOR + tokenId.toString(16).padStart(64, '0')
61
+ : "0x313ce567";
62
+ return memoize(`decimals-${this.rpcUrl}-${tokenAddress}-${tokenId ?? ''}`, 86400 * 1000, async () => {
29
63
  const { result } = await proxyFetch(this.rpcUrl, {
30
64
  method: 'POST',
31
65
  body: JSON.stringify({
@@ -35,16 +69,19 @@ export class EvmNetwork {
35
69
  params: [
36
70
  {
37
71
  to: tokenAddress,
38
- data: "0x313ce567"
72
+ data: callData
39
73
  },
40
74
  "latest"
41
75
  ]
42
76
  })
43
77
  }).then((res) => res.json());
78
+ if (!result || result === "0x") {
79
+ throw new Error(`No on-chain decimals for ${tokenAddress}${tokenId !== undefined ? ` id ${tokenId}` : ''}`);
80
+ }
44
81
  return parseInt(result, 16);
45
82
  });
46
83
  }
47
- async getTxData(txHash, tokenAddress, recipientAddress) {
84
+ async getTxData(txHash, tokenAddress, recipientAddress, tokenId) {
48
85
  const currentBlock = await this.provider.getBlockNumber();
49
86
  const { result: receiptResult } = await proxyFetch(this.rpcUrl, {
50
87
  method: 'POST',
@@ -93,6 +130,37 @@ export class EvmNetwork {
93
130
  confirmed
94
131
  };
95
132
  }
133
+ // ERC6909 multi-token — match the 4-topic Transfer(caller, sender, receiver, id, amount) of the
134
+ // expected id; amount is the 2nd 32-byte data word (1st is caller), NOT BigInt(data).
135
+ if (tokenId !== undefined) {
136
+ if (!(await this.isErc6909(tokenAddress))) {
137
+ throw new Error(`Token ${tokenAddress} carries tokenId ${tokenId} but does not support the ERC6909 interface`);
138
+ }
139
+ const idHex = '0x' + tokenId.toString(16).padStart(64, '0');
140
+ const erc6909Log = receipt.logs.find(l => l.address?.toLowerCase() === tokenAddress.toLowerCase() &&
141
+ l.topics[0]?.toLowerCase() === ERC6909_TRANSFER_TOPIC.toLowerCase() &&
142
+ l.topics.length === 4 &&
143
+ ('0x' + l.topics[2].slice(26)).toLowerCase() === recipientAddress.toLowerCase() &&
144
+ l.topics[3]?.toLowerCase() === idHex.toLowerCase());
145
+ if (!erc6909Log) {
146
+ log.warn(`Transaction ${txHash} has no ERC6909 Transfer of ${tokenAddress} id ${tokenId} to ${recipientAddress}`);
147
+ return {
148
+ from: "",
149
+ to: "",
150
+ token: "",
151
+ amount: 0n,
152
+ confirmed
153
+ };
154
+ }
155
+ return {
156
+ from: '0x' + erc6909Log.topics[1].slice(26),
157
+ to: '0x' + erc6909Log.topics[2].slice(26),
158
+ token: erc6909Log.address,
159
+ tokenId: BigInt(erc6909Log.topics[3]),
160
+ amount: decodeErc6909TransferAmount(erc6909Log.data),
161
+ confirmed
162
+ };
163
+ }
96
164
  // ERC20 token — trust only a Transfer emitted by the token contract itself, to the expected
97
165
  // recipient. Reading logs[0] blindly lets approve() / events from other contracts satisfy
98
166
  // validation with no real transfer.
@@ -1 +1 @@
1
- {"version":3,"file":"evm.js","sourceRoot":"","sources":["../../src/networks/evm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evm.js","sourceRoot":"","sources":["../../src/networks/evm.ts"],"names":[],"mappings":"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"}
@@ -3,13 +3,14 @@ export interface TransactionData {
3
3
  from: string;
4
4
  to: string;
5
5
  token: string;
6
+ tokenId?: bigint;
6
7
  amount: bigint;
7
8
  confirmed: boolean;
8
9
  }
9
10
  export interface Network {
10
11
  ping(): Promise<void>;
11
- getDecimals(tokenAddress: string): Promise<number>;
12
- getTxData(txHash: string, tokenAddress: string, recipientAddress: string): Promise<TransactionData | undefined>;
12
+ getDecimals(tokenAddress: string, tokenId?: bigint): Promise<number>;
13
+ getTxData(txHash: string, tokenAddress: string, recipientAddress: string, tokenId?: bigint): Promise<TransactionData | undefined>;
13
14
  /**
14
15
  * @deprecated Signs from a raw private key — do not use in production. Kept for local tooling/tests.
15
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/networks/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/networks/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA+BtC,MAAM,eAAe,GAAG;IACtB,SAAS,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,SAAS,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,QAAQ,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;IAC9D,SAAS,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;IAC/D,SAAS,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;IAC/D,QAAQ,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC;IAC/K,SAAS,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,SAAS,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAEvF,KAAK,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1D,KAAK,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1D,IAAI,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;IAC1D,KAAK,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;IAC3D,MAAM,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3D,KAAK,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;IAC3D,KAAK,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1D,UAAU,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,KAAK,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;IAC3D,KAAK,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;IAC3D,KAAK,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;IAC3D,IAAI,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC;IAC3K,KAAK,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACnF,KAAK,EAAE,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;CAC3D,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAyC,EAAE,MAAwC,EAAE,EAAE,CAClH,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE;IACrE,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,GAAG,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;QAChD,GAAG,CAAC,WAAW,CAAC,CAAC,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,iBAAiB,CAAC;QAC5E,GAAG,CAAC,WAAW,CAAC,CAAC,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC;IACpF,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC,EAAE,EAA6B,CAAC,CAAA"}
@@ -0,0 +1,17 @@
1
+ export type ParsedToken = {
2
+ kind: "issuer";
3
+ issuer: string;
4
+ address: string;
5
+ } | {
6
+ kind: "plain";
7
+ address: string;
8
+ } | {
9
+ kind: "nft";
10
+ address: string;
11
+ tokenId: bigint;
12
+ };
13
+ export declare function parseTokenAddress(networkId: string, token: string): ParsedToken;
14
+ export declare function encodeTokenId(address: string, tokenId: string): string;
15
+ export declare function parseTokenId(raw: string): bigint;
16
+ export declare function canonicalTokenId(raw: string): string;
17
+ export declare function decodeErc6909TransferAmount(data: string): bigint;
package/dist/token.js ADDED
@@ -0,0 +1,36 @@
1
+ const MULTI_TOKEN_SEPARATOR = ":::";
2
+ const ISSUER_FIRST_NETWORKS = new Set(["CC", "testCC"]);
3
+ const MAX_UINT256 = (1n << 256n) - 1n;
4
+ export function parseTokenAddress(networkId, token) {
5
+ if (token === "0x0" || !token.includes(MULTI_TOKEN_SEPARATOR)) {
6
+ return { kind: "plain", address: token };
7
+ }
8
+ const sepIndex = token.indexOf(MULTI_TOKEN_SEPARATOR);
9
+ const left = token.slice(0, sepIndex);
10
+ const right = token.slice(sepIndex + MULTI_TOKEN_SEPARATOR.length);
11
+ if (ISSUER_FIRST_NETWORKS.has(networkId)) {
12
+ return { kind: "issuer", issuer: left, address: right };
13
+ }
14
+ return { kind: "nft", address: left, tokenId: parseTokenId(right) };
15
+ }
16
+ export function encodeTokenId(address, tokenId) {
17
+ return `${address}${MULTI_TOKEN_SEPARATOR}${canonicalTokenId(tokenId)}`;
18
+ }
19
+ export function parseTokenId(raw) {
20
+ if (!/^[0-9]+$/.test(raw)) {
21
+ throw new Error(`Invalid tokenId, expected a base-10 uint256: ${raw}`);
22
+ }
23
+ const value = BigInt(raw);
24
+ if (value > MAX_UINT256) {
25
+ throw new Error(`tokenId out of uint256 range: ${raw}`);
26
+ }
27
+ return value;
28
+ }
29
+ export function canonicalTokenId(raw) {
30
+ return parseTokenId(raw).toString(10);
31
+ }
32
+ export function decodeErc6909TransferAmount(data) {
33
+ const hex = data.startsWith("0x") ? data.slice(2) : data;
34
+ return BigInt("0x" + hex.slice(64, 128));
35
+ }
36
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AAAA,MAAM,qBAAqB,GAAG,KAAK,CAAC;AACpC,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxD,MAAM,WAAW,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AAOtC,MAAM,UAAU,iBAAiB,CAAC,SAAiB,EAAE,KAAa;IAChE,IAAI,KAAK,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC9D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAEnE,IAAI,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC1D,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,OAAe;IAC5D,OAAO,GAAG,OAAO,GAAG,qBAAqB,GAAG,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,gDAAgD,GAAG,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAE1B,IAAI,KAAK,GAAG,WAAW,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,OAAO,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bronlabs/intents-sdk",
3
- "version": "1.0.139",
3
+ "version": "1.0.140",
4
4
  "description": "SDK for Intents DeFi smart contracts",
5
5
  "keywords": [
6
6
  "defi",
@@ -66,7 +66,8 @@
66
66
  "@types/node-fetch": "^2.6.12",
67
67
  "@types/ws": "^8.18.1",
68
68
  "rimraf": "^6.0.1",
69
- "typescript": "^5.8.3"
69
+ "typescript": "^5.8.3",
70
+ "vitest": "^4.0.15"
70
71
  },
71
72
  "engines": {
72
73
  "node": ">=22.0.0"
@@ -78,6 +79,6 @@
78
79
  "scripts": {
79
80
  "build": "pnpm run clean && tsc",
80
81
  "clean": "rimraf dist",
81
- "test": "pnpm run build && node --test"
82
+ "test": "vitest run"
82
83
  }
83
84
  }