@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 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, senderAddress);
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, senderAddress);
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.7",
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, senderAddress)
296
+ const quoteRequest = this.buildQuoteRequest(request, recipientAddress, refundAddress)
275
297
 
276
298
  return {
277
299
  request,