@switch-win/sdk 1.0.6 → 1.0.7
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/README.md +7 -2
- package/package.json +1 -1
- package/src/constants.ts +11 -4
package/README.md
CHANGED
|
@@ -86,7 +86,8 @@ curl -H "x-api-key: YOUR_KEY" \
|
|
|
86
86
|
# 2. Approve the SwitchRouter to spend your input token (ERC-20 only, skip for native PLS)
|
|
87
87
|
|
|
88
88
|
# 3. Send the transaction using the `tx` object from the response:
|
|
89
|
-
# { to: "
|
|
89
|
+
# { to: "0x0305...", data: "0x...", value: "0" }
|
|
90
|
+
# ⚠️ Always use tx.to — do NOT hardcode the router address
|
|
90
91
|
```
|
|
91
92
|
|
|
92
93
|
### Using the SDK types (TypeScript)
|
|
@@ -106,10 +107,12 @@ const quote: BestPathResponse = await res.json();
|
|
|
106
107
|
const token = new ethers.Contract(fromToken, ["function approve(address,uint256)"], signer);
|
|
107
108
|
await (await token.approve(SWITCH_ROUTER, amount)).wait();
|
|
108
109
|
|
|
109
|
-
// 3. Send the swap
|
|
110
|
+
// 3. Send the swap — always use quote.tx which includes the correct router address
|
|
110
111
|
await signer.sendTransaction(quote.tx);
|
|
111
112
|
```
|
|
112
113
|
|
|
114
|
+
> **⚠️ Always use `tx.to` from the quote response** when sending swap transactions. Do NOT hardcode the router address — the contract may be redeployed.
|
|
115
|
+
|
|
113
116
|
For a production integration with tax token handling, adapter filtering, and fee mode selection, see [Swap Integration Flow](#swap-integration-flow) and the [full examples](examples/).
|
|
114
117
|
|
|
115
118
|
---
|
|
@@ -297,6 +300,8 @@ console.log("Swap confirmed:", receipt.hash);
|
|
|
297
300
|
|
|
298
301
|
That's it. The `tx.data` already encodes the correct `goSwitch()` call with your routes, slippage protection, fee, and partner address.
|
|
299
302
|
|
|
303
|
+
> **⚠️ Always use `tx.to` from the response** — do NOT hardcode the router address. The `SWITCH_ROUTER` constant is provided for **token approvals only**. The router contract may be redeployed; `tx.to` always points to the current production router.
|
|
304
|
+
|
|
300
305
|
The `tx` object does not include a `gas` field. Most wallet libraries (ethers.js, web3.py, MetaMask) auto-estimate gas when `gas` is omitted. For multi-hop split swaps, `500,000`–`1,000,000` gas is typically sufficient:
|
|
301
306
|
|
|
302
307
|
```js
|
package/package.json
CHANGED
package/src/constants.ts
CHANGED
|
@@ -32,8 +32,15 @@ export const CHAIN_ID = 369;
|
|
|
32
32
|
|
|
33
33
|
// ── Contract addresses --
|
|
34
34
|
|
|
35
|
-
/**
|
|
36
|
-
|
|
35
|
+
/**
|
|
36
|
+
* SwitchRouter contract — approval target for swap transactions.
|
|
37
|
+
*
|
|
38
|
+
* **Important:** Do NOT hardcode this address as the `to` field when sending
|
|
39
|
+
* swap transactions. Always use `tx.to` from the quote response — the router
|
|
40
|
+
* contract may be redeployed. This constant is safe for **approvals only**
|
|
41
|
+
* (the new router honours legacy allowances).
|
|
42
|
+
*/
|
|
43
|
+
export const SWITCH_ROUTER = "0x0305fcb5dA680EA6fd1B01A96C1949175B99d406";
|
|
37
44
|
|
|
38
45
|
/**
|
|
39
46
|
* Native PLS sentinel address.
|
|
@@ -47,11 +54,11 @@ export const WPLS = "0xA1077a294dDE1B09bB078844df40758a5D0f9a27";
|
|
|
47
54
|
// ── Limit Order contract ────────────────────────────────────────────────
|
|
48
55
|
|
|
49
56
|
/**
|
|
50
|
-
* SwitchLimitOrder contract address on PulseChain.
|
|
57
|
+
* SwitchLimitOrder contract address on PulseChain (V4).
|
|
51
58
|
*
|
|
52
59
|
* The EIP-712 domain `verifyingContract` MUST match this address.
|
|
53
60
|
*/
|
|
54
|
-
export const SWITCH_LIMIT_ORDER = "
|
|
61
|
+
export const SWITCH_LIMIT_ORDER = "0x8e3881bdF81Fc0211383B2e576076B654F7aFD86";
|
|
55
62
|
|
|
56
63
|
/**
|
|
57
64
|
* SwitchPLSFlow contract address on PulseChain.
|