@sip-protocol/sdk 0.1.7 → 0.1.8
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.js +15 -1
- package/dist/index.mjs +15 -1
- package/package.json +1 -1
- package/src/adapters/near-intents.ts +24 -2
package/dist/index.js
CHANGED
|
@@ -1970,6 +1970,7 @@ var NEARIntentsAdapter = class {
|
|
|
1970
1970
|
async prepareSwap(request, recipientMetaAddress, senderAddress) {
|
|
1971
1971
|
this.validateRequest(request);
|
|
1972
1972
|
let recipientAddress;
|
|
1973
|
+
let refundAddress = senderAddress;
|
|
1973
1974
|
let stealthData;
|
|
1974
1975
|
let sharedSecret;
|
|
1975
1976
|
if (request.privacyLevel !== import_types3.PrivacyLevel.TRANSPARENT) {
|
|
@@ -1989,6 +1990,19 @@ var NEARIntentsAdapter = class {
|
|
|
1989
1990
|
}
|
|
1990
1991
|
stealthData = stealthAddress;
|
|
1991
1992
|
sharedSecret = secret;
|
|
1993
|
+
if (!senderAddress) {
|
|
1994
|
+
const inputChainType = CHAIN_BLOCKCHAIN_MAP[request.inputAsset.chain];
|
|
1995
|
+
if (inputChainType === "evm") {
|
|
1996
|
+
const refundStealth = generateStealthAddress(metaAddr);
|
|
1997
|
+
refundAddress = publicKeyToEthAddress(refundStealth.stealthAddress.address);
|
|
1998
|
+
} else {
|
|
1999
|
+
throw new ValidationError(
|
|
2000
|
+
`senderAddress is required for refunds on ${request.inputAsset.chain}. Stealth addresses are only supported for EVM-compatible chains. Please connect a wallet or provide a sender address.`,
|
|
2001
|
+
"senderAddress",
|
|
2002
|
+
{ inputChain: request.inputAsset.chain, inputChainType }
|
|
2003
|
+
);
|
|
2004
|
+
}
|
|
2005
|
+
}
|
|
1992
2006
|
} else {
|
|
1993
2007
|
if (!senderAddress) {
|
|
1994
2008
|
throw new ValidationError(
|
|
@@ -1998,7 +2012,7 @@ var NEARIntentsAdapter = class {
|
|
|
1998
2012
|
}
|
|
1999
2013
|
recipientAddress = senderAddress;
|
|
2000
2014
|
}
|
|
2001
|
-
const quoteRequest = this.buildQuoteRequest(request, recipientAddress,
|
|
2015
|
+
const quoteRequest = this.buildQuoteRequest(request, recipientAddress, refundAddress);
|
|
2002
2016
|
return {
|
|
2003
2017
|
request,
|
|
2004
2018
|
quoteRequest,
|
package/dist/index.mjs
CHANGED
|
@@ -1779,6 +1779,7 @@ var NEARIntentsAdapter = class {
|
|
|
1779
1779
|
async prepareSwap(request, recipientMetaAddress, senderAddress) {
|
|
1780
1780
|
this.validateRequest(request);
|
|
1781
1781
|
let recipientAddress;
|
|
1782
|
+
let refundAddress = senderAddress;
|
|
1782
1783
|
let stealthData;
|
|
1783
1784
|
let sharedSecret;
|
|
1784
1785
|
if (request.privacyLevel !== PrivacyLevel.TRANSPARENT) {
|
|
@@ -1798,6 +1799,19 @@ var NEARIntentsAdapter = class {
|
|
|
1798
1799
|
}
|
|
1799
1800
|
stealthData = stealthAddress;
|
|
1800
1801
|
sharedSecret = secret;
|
|
1802
|
+
if (!senderAddress) {
|
|
1803
|
+
const inputChainType = CHAIN_BLOCKCHAIN_MAP[request.inputAsset.chain];
|
|
1804
|
+
if (inputChainType === "evm") {
|
|
1805
|
+
const refundStealth = generateStealthAddress(metaAddr);
|
|
1806
|
+
refundAddress = publicKeyToEthAddress(refundStealth.stealthAddress.address);
|
|
1807
|
+
} else {
|
|
1808
|
+
throw new ValidationError(
|
|
1809
|
+
`senderAddress is required for refunds on ${request.inputAsset.chain}. Stealth addresses are only supported for EVM-compatible chains. Please connect a wallet or provide a sender address.`,
|
|
1810
|
+
"senderAddress",
|
|
1811
|
+
{ inputChain: request.inputAsset.chain, inputChainType }
|
|
1812
|
+
);
|
|
1813
|
+
}
|
|
1814
|
+
}
|
|
1801
1815
|
} else {
|
|
1802
1816
|
if (!senderAddress) {
|
|
1803
1817
|
throw new ValidationError(
|
|
@@ -1807,7 +1821,7 @@ var NEARIntentsAdapter = class {
|
|
|
1807
1821
|
}
|
|
1808
1822
|
recipientAddress = senderAddress;
|
|
1809
1823
|
}
|
|
1810
|
-
const quoteRequest = this.buildQuoteRequest(request, recipientAddress,
|
|
1824
|
+
const quoteRequest = this.buildQuoteRequest(request, recipientAddress, refundAddress);
|
|
1811
1825
|
return {
|
|
1812
1826
|
request,
|
|
1813
1827
|
quoteRequest,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sip-protocol/sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "Core SDK for Shielded Intents Protocol - Privacy layer for cross-chain transactions",
|
|
5
5
|
"author": "SIP Protocol <hello@sip-protocol.org>",
|
|
6
6
|
"homepage": "https://sip-protocol.org",
|
|
@@ -229,6 +229,7 @@ export class NEARIntentsAdapter {
|
|
|
229
229
|
|
|
230
230
|
// Determine recipient address
|
|
231
231
|
let recipientAddress: string
|
|
232
|
+
let refundAddress: string | undefined = senderAddress
|
|
232
233
|
let stealthData: PreparedSwap['stealthAddress']
|
|
233
234
|
let sharedSecret: HexString | undefined
|
|
234
235
|
|
|
@@ -246,7 +247,7 @@ export class NEARIntentsAdapter {
|
|
|
246
247
|
? decodeStealthMetaAddress(recipientMetaAddress)
|
|
247
248
|
: recipientMetaAddress
|
|
248
249
|
|
|
249
|
-
// Generate stealth address
|
|
250
|
+
// Generate stealth address for recipient (output chain)
|
|
250
251
|
const { stealthAddress, sharedSecret: secret } = generateStealthAddress(metaAddr)
|
|
251
252
|
|
|
252
253
|
// For EVM chains, convert stealth public key to ETH address format
|
|
@@ -259,6 +260,27 @@ export class NEARIntentsAdapter {
|
|
|
259
260
|
}
|
|
260
261
|
stealthData = stealthAddress
|
|
261
262
|
sharedSecret = secret
|
|
263
|
+
|
|
264
|
+
// Generate refund address for input chain (if no sender address provided)
|
|
265
|
+
if (!senderAddress) {
|
|
266
|
+
const inputChainType = CHAIN_BLOCKCHAIN_MAP[request.inputAsset.chain]
|
|
267
|
+
if (inputChainType === 'evm') {
|
|
268
|
+
// For EVM input chains, generate a stealth address and convert to ETH address
|
|
269
|
+
const refundStealth = generateStealthAddress(metaAddr)
|
|
270
|
+
refundAddress = publicKeyToEthAddress(refundStealth.stealthAddress.address)
|
|
271
|
+
} else {
|
|
272
|
+
// For non-EVM input chains (Solana, Bitcoin, etc.), we cannot generate
|
|
273
|
+
// valid stealth addresses because they use different cryptographic schemes.
|
|
274
|
+
// Require sender address for refunds on these chains.
|
|
275
|
+
throw new ValidationError(
|
|
276
|
+
`senderAddress is required for refunds on ${request.inputAsset.chain}. ` +
|
|
277
|
+
`Stealth addresses are only supported for EVM-compatible chains. ` +
|
|
278
|
+
`Please connect a wallet or provide a sender address.`,
|
|
279
|
+
'senderAddress',
|
|
280
|
+
{ inputChain: request.inputAsset.chain, inputChainType }
|
|
281
|
+
)
|
|
282
|
+
}
|
|
283
|
+
}
|
|
262
284
|
} else {
|
|
263
285
|
// Transparent mode uses direct address
|
|
264
286
|
if (!senderAddress) {
|
|
@@ -271,7 +293,7 @@ export class NEARIntentsAdapter {
|
|
|
271
293
|
}
|
|
272
294
|
|
|
273
295
|
// Build quote request
|
|
274
|
-
const quoteRequest = this.buildQuoteRequest(request, recipientAddress,
|
|
296
|
+
const quoteRequest = this.buildQuoteRequest(request, recipientAddress, refundAddress)
|
|
275
297
|
|
|
276
298
|
return {
|
|
277
299
|
request,
|