@pafi-dev/core 0.3.0-beta.1 → 0.3.0-beta.11

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.
Files changed (86) hide show
  1. package/README.md +99 -1118
  2. package/dist/abi/index.cjs +2 -6
  3. package/dist/abi/index.cjs.map +1 -1
  4. package/dist/abi/index.d.cts +1 -286
  5. package/dist/abi/index.d.ts +1 -286
  6. package/dist/abi/index.js +1 -5
  7. package/dist/{chunk-R4L66ZR5.js → chunk-73CQTNLB.js} +10 -1
  8. package/dist/chunk-73CQTNLB.js.map +1 -0
  9. package/dist/{chunk-5YH4D7QF.js → chunk-7UBO7DY5.js} +1 -1
  10. package/dist/{chunk-FGKLDKJK.cjs → chunk-ALCWYDVG.cjs} +1 -1
  11. package/dist/{chunk-FGKLDKJK.cjs.map → chunk-ALCWYDVG.cjs.map} +1 -1
  12. package/dist/{chunk-X3I5XWAR.cjs → chunk-CQCSQPWG.cjs} +2 -15
  13. package/dist/chunk-CQCSQPWG.cjs.map +1 -0
  14. package/dist/{chunk-CWP4PFOP.cjs → chunk-DMW67WBU.cjs} +11 -2
  15. package/dist/chunk-DMW67WBU.cjs.map +1 -0
  16. package/dist/{chunk-C4ZDYG4D.js → chunk-DUY7Z2AI.js} +48 -6
  17. package/dist/chunk-DUY7Z2AI.js.map +1 -0
  18. package/dist/{chunk-CXFUP2YK.cjs → chunk-EDR5SFJN.cjs} +46 -6
  19. package/dist/chunk-EDR5SFJN.cjs.map +1 -0
  20. package/dist/{chunk-FIKTQR7H.js → chunk-I2P3TIP7.js} +2 -2
  21. package/dist/{chunk-BNTVOKYT.cjs → chunk-KJKDLD7N.cjs} +51 -9
  22. package/dist/chunk-KJKDLD7N.cjs.map +1 -0
  23. package/dist/{chunk-VQSRCMMK.js → chunk-QGO6X6LG.js} +2 -15
  24. package/dist/chunk-QGO6X6LG.js.map +1 -0
  25. package/dist/{chunk-IK4UK7KT.js → chunk-W23EJNYG.js} +44 -4
  26. package/dist/chunk-W23EJNYG.js.map +1 -0
  27. package/dist/{chunk-CAE2BVKI.cjs → chunk-Z2V525IS.cjs} +6 -6
  28. package/dist/{chunk-CAE2BVKI.cjs.map → chunk-Z2V525IS.cjs.map} +1 -1
  29. package/dist/contract/index.cjs +2 -5
  30. package/dist/contract/index.cjs.map +1 -1
  31. package/dist/contract/index.d.cts +2 -4
  32. package/dist/contract/index.d.ts +2 -4
  33. package/dist/contract/index.js +1 -4
  34. package/dist/eip712/index.cjs +9 -3
  35. package/dist/eip712/index.cjs.map +1 -1
  36. package/dist/eip712/index.d.cts +44 -2
  37. package/dist/eip712/index.d.ts +44 -2
  38. package/dist/eip712/index.js +8 -2
  39. package/dist/{index-CNALKsH1.d.ts → index-B06IJlHe.d.ts} +1 -1
  40. package/dist/{index-BpUYHGu3.d.cts → index-B7pGBych.d.cts} +1 -1
  41. package/dist/index.cjs +434 -247
  42. package/dist/index.cjs.map +1 -1
  43. package/dist/index.d.cts +905 -411
  44. package/dist/index.d.ts +905 -411
  45. package/dist/index.js +447 -260
  46. package/dist/index.js.map +1 -1
  47. package/dist/quoting/index.cjs +3 -3
  48. package/dist/quoting/index.d.cts +1 -1
  49. package/dist/quoting/index.d.ts +1 -1
  50. package/dist/quoting/index.js +2 -2
  51. package/dist/swap/index.cjs +2 -3
  52. package/dist/swap/index.cjs.map +1 -1
  53. package/dist/swap/index.d.cts +2 -2
  54. package/dist/swap/index.d.ts +2 -2
  55. package/dist/swap/index.js +1 -2
  56. package/dist/{types-BDOnH5Le.d.cts → types-b5_Tokjl.d.cts} +8 -17
  57. package/dist/{types-BDOnH5Le.d.ts → types-b5_Tokjl.d.ts} +8 -17
  58. package/package.json +1 -1
  59. package/dist/chunk-27V32VNM.cjs +0 -370
  60. package/dist/chunk-27V32VNM.cjs.map +0 -1
  61. package/dist/chunk-4RYBJLF3.js +0 -370
  62. package/dist/chunk-4RYBJLF3.js.map +0 -1
  63. package/dist/chunk-5QJZT7VB.cjs +0 -46
  64. package/dist/chunk-5QJZT7VB.cjs.map +0 -1
  65. package/dist/chunk-BNTVOKYT.cjs.map +0 -1
  66. package/dist/chunk-C4ZDYG4D.js.map +0 -1
  67. package/dist/chunk-CWP4PFOP.cjs.map +0 -1
  68. package/dist/chunk-CXFUP2YK.cjs.map +0 -1
  69. package/dist/chunk-IK4UK7KT.js.map +0 -1
  70. package/dist/chunk-L74CZAVQ.cjs +0 -99
  71. package/dist/chunk-L74CZAVQ.cjs.map +0 -1
  72. package/dist/chunk-P56TUGTS.js +0 -46
  73. package/dist/chunk-P56TUGTS.js.map +0 -1
  74. package/dist/chunk-R4L66ZR5.js.map +0 -1
  75. package/dist/chunk-VQSRCMMK.js.map +0 -1
  76. package/dist/chunk-X3I5XWAR.cjs.map +0 -1
  77. package/dist/chunk-X4IXUTTD.js +0 -99
  78. package/dist/chunk-X4IXUTTD.js.map +0 -1
  79. package/dist/relay/index.cjs +0 -19
  80. package/dist/relay/index.cjs.map +0 -1
  81. package/dist/relay/index.d.cts +0 -75
  82. package/dist/relay/index.d.ts +0 -75
  83. package/dist/relay/index.js +0 -19
  84. package/dist/relay/index.js.map +0 -1
  85. /package/dist/{chunk-5YH4D7QF.js.map → chunk-7UBO7DY5.js.map} +0 -0
  86. /package/dist/{chunk-FIKTQR7H.js.map → chunk-I2P3TIP7.js.map} +0 -0
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkFGKLDKJKcjs = require('./chunk-FGKLDKJK.cjs');
3
+ var _chunkALCWYDVGcjs = require('./chunk-ALCWYDVG.cjs');
4
4
 
5
5
 
6
6
 
@@ -17,8 +17,7 @@ var _chunkGWLEEXM4cjs = require('./chunk-GWLEEXM4.cjs');
17
17
 
18
18
 
19
19
 
20
-
21
- var _chunkX3I5XWARcjs = require('./chunk-X3I5XWAR.cjs');
20
+ var _chunkCQCSQPWGcjs = require('./chunk-CQCSQPWG.cjs');
22
21
 
23
22
 
24
23
 
@@ -32,39 +31,37 @@ var _chunkS2XRFFP3cjs = require('./chunk-S2XRFFP3.cjs');
32
31
 
33
32
 
34
33
 
35
- var _chunkBNTVOKYTcjs = require('./chunk-BNTVOKYT.cjs');
36
34
 
37
35
 
38
36
 
37
+ var _chunkKJKDLD7Ncjs = require('./chunk-KJKDLD7N.cjs');
39
38
 
40
39
 
41
40
 
42
41
 
43
- var _chunkCAE2BVKIcjs = require('./chunk-CAE2BVKI.cjs');
44
42
 
45
43
 
46
- var _chunkCL3QSI4Ocjs = require('./chunk-CL3QSI4O.cjs');
47
44
 
45
+ var _chunkZ2V525IScjs = require('./chunk-Z2V525IS.cjs');
48
46
 
49
47
 
48
+ var _chunkCL3QSI4Ocjs = require('./chunk-CL3QSI4O.cjs');
50
49
 
51
50
 
52
51
 
53
52
 
54
53
 
55
54
 
56
- var _chunkCWP4PFOPcjs = require('./chunk-CWP4PFOP.cjs');
57
55
 
58
56
 
59
57
 
60
58
 
59
+ var _chunkDMW67WBUcjs = require('./chunk-DMW67WBU.cjs');
61
60
 
62
61
 
63
62
 
64
- var _chunkL74CZAVQcjs = require('./chunk-L74CZAVQ.cjs');
65
63
 
66
64
 
67
- var _chunk27V32VNMcjs = require('./chunk-27V32VNM.cjs');
68
65
 
69
66
 
70
67
 
@@ -86,22 +83,155 @@ var _chunk27V32VNMcjs = require('./chunk-27V32VNM.cjs');
86
83
 
87
84
 
88
85
 
89
- var _chunkCXFUP2YKcjs = require('./chunk-CXFUP2YK.cjs');
86
+ var _chunkEDR5SFJNcjs = require('./chunk-EDR5SFJN.cjs');
90
87
 
91
88
 
92
89
 
93
90
 
94
91
  var _chunkIPXARZ6Fcjs = require('./chunk-IPXARZ6F.cjs');
95
92
 
93
+ // src/index.ts
94
+ var _viem = require('viem');
96
95
 
96
+ // src/perp/buildPerpDepositWithGasDeduction.ts
97
97
 
98
98
 
99
+ // src/contracts/real/orderlyVault.ts
99
100
 
100
-
101
- var _chunk5QJZT7VBcjs = require('./chunk-5QJZT7VB.cjs');
102
-
103
- // src/index.ts
104
- var _viem = require('viem');
101
+ var ORDERLY_VAULT_BASE_MAINNET = "0xDe5cE5DD048596e46Ff671b13317aCC3C5B59b01";
102
+ var ORDERLY_VAULT_ADDRESSES = {
103
+ 8453: ORDERLY_VAULT_BASE_MAINNET
104
+ };
105
+ var BROKER_HASHES = {
106
+ /** Default partner broker on Base — most commonly whitelisted. */
107
+ woofi_pro: _viem.keccak256.call(void 0, _viem.encodePacked.call(void 0, ["string"], ["woofi_pro"])),
108
+ /** Orderly's own white-label broker. */
109
+ orderly: _viem.keccak256.call(void 0, _viem.encodePacked.call(void 0, ["string"], ["orderly"])),
110
+ /** LogX. */
111
+ logx: _viem.keccak256.call(void 0, _viem.encodePacked.call(void 0, ["string"], ["logx"]))
112
+ };
113
+ var TOKEN_HASHES = {
114
+ USDC: _viem.keccak256.call(void 0, _viem.encodePacked.call(void 0, ["string"], ["USDC"]))
115
+ };
116
+ function computeAccountId(user, brokerHash) {
117
+ return _viem.keccak256.call(void 0,
118
+ _viem.encodeAbiParameters.call(void 0,
119
+ [
120
+ { type: "address" },
121
+ { type: "bytes32" }
122
+ ],
123
+ [user, brokerHash]
124
+ )
125
+ );
126
+ }
127
+ var ORDERLY_VAULT_ABI = [
128
+ // Deposit USDC into Orderly perp account. Emits LayerZero message
129
+ // to the Orderly chain. `msg.value` MUST equal `getDepositFee(...)`.
130
+ {
131
+ type: "function",
132
+ name: "deposit",
133
+ stateMutability: "payable",
134
+ inputs: [
135
+ {
136
+ name: "data",
137
+ type: "tuple",
138
+ components: [
139
+ { name: "accountId", type: "bytes32" },
140
+ { name: "brokerHash", type: "bytes32" },
141
+ { name: "tokenHash", type: "bytes32" },
142
+ { name: "tokenAmount", type: "uint128" }
143
+ ]
144
+ }
145
+ ],
146
+ outputs: []
147
+ },
148
+ // Quote the LayerZero fee for a deposit message. Pass the same
149
+ // VaultDepositFE struct you intend to send.
150
+ {
151
+ type: "function",
152
+ name: "getDepositFee",
153
+ stateMutability: "view",
154
+ inputs: [
155
+ { name: "user", type: "address" },
156
+ {
157
+ name: "data",
158
+ type: "tuple",
159
+ components: [
160
+ { name: "accountId", type: "bytes32" },
161
+ { name: "brokerHash", type: "bytes32" },
162
+ { name: "tokenHash", type: "bytes32" },
163
+ { name: "tokenAmount", type: "uint128" }
164
+ ]
165
+ }
166
+ ],
167
+ outputs: [{ name: "", type: "uint256" }]
168
+ },
169
+ // Pre-flight check — is this brokerId whitelisted on this Vault?
170
+ {
171
+ type: "function",
172
+ name: "getAllowedBroker",
173
+ stateMutability: "view",
174
+ inputs: [{ name: "brokerHash", type: "bytes32" }],
175
+ outputs: [{ name: "", type: "bool" }]
176
+ },
177
+ // Pre-flight check — what ERC-20 address does this token symbol
178
+ // resolve to on this Vault?
179
+ {
180
+ type: "function",
181
+ name: "getAllowedToken",
182
+ stateMutability: "view",
183
+ inputs: [{ name: "tokenHash", type: "bytes32" }],
184
+ outputs: [{ name: "", type: "address" }]
185
+ }
186
+ ];
187
+
188
+ // src/perp/buildPerpDepositWithGasDeduction.ts
189
+ function buildPerpDepositWithGasDeduction(params) {
190
+ if (params.amount <= 0n) {
191
+ throw new Error("buildPerpDepositWithGasDeduction: amount must be positive");
192
+ }
193
+ if (params.layerZeroFee < 0n) {
194
+ throw new Error(
195
+ "buildPerpDepositWithGasDeduction: layerZeroFee cannot be negative"
196
+ );
197
+ }
198
+ if (params.depositData.tokenAmount !== params.amount) {
199
+ throw new Error(
200
+ `buildPerpDepositWithGasDeduction: depositData.tokenAmount (${params.depositData.tokenAmount}) must equal amount (${params.amount})`
201
+ );
202
+ }
203
+ const vault = _nullishCoalesce(params.vaultAddress, () => ( ORDERLY_VAULT_ADDRESSES[params.chainId]));
204
+ if (!vault) {
205
+ throw new Error(
206
+ `buildPerpDepositWithGasDeduction: no Orderly Vault address for chainId ${params.chainId}`
207
+ );
208
+ }
209
+ const depositCallData = _viem.encodeFunctionData.call(void 0, {
210
+ abi: ORDERLY_VAULT_ABI,
211
+ functionName: "deposit",
212
+ args: [params.depositData]
213
+ });
214
+ const operations = [
215
+ _chunkEDR5SFJNcjs.erc20ApproveOp.call(void 0, params.usdcAddress, vault, params.amount),
216
+ {
217
+ ..._chunkEDR5SFJNcjs.rawCallOp.call(void 0, vault, depositCallData),
218
+ // BatchExecutor passes `value` from the inner call along; this
219
+ // becomes the LayerZero fee. The aggregated `msg.value` for the
220
+ // top-level UserOp must equal the sum of inner `value`s.
221
+ value: params.layerZeroFee
222
+ }
223
+ ];
224
+ return _chunkEDR5SFJNcjs.buildPartialUserOperation.call(void 0, {
225
+ sender: params.userAddress,
226
+ nonce: params.aaNonce,
227
+ operations,
228
+ gasLimits: {
229
+ callGasLimit: _nullishCoalesce(_optionalChain([params, 'access', _ => _.gasLimits, 'optionalAccess', _2 => _2.callGasLimit]), () => ( 800000n)),
230
+ verificationGasLimit: _nullishCoalesce(_optionalChain([params, 'access', _3 => _3.gasLimits, 'optionalAccess', _4 => _4.verificationGasLimit]), () => ( 150000n)),
231
+ preVerificationGas: _nullishCoalesce(_optionalChain([params, 'access', _5 => _5.gasLimits, 'optionalAccess', _6 => _6.preVerificationGas]), () => ( 50000n))
232
+ }
233
+ });
234
+ }
105
235
 
106
236
  // src/userop/types.ts
107
237
  var ENTRY_POINT_V07 = "0x0000000071727De22E5E9d8BAf0edAc6f37da032";
@@ -150,174 +280,290 @@ async function checkEthAndBranch(params) {
150
280
  return balance >= required ? "normal" : "paymaster";
151
281
  }
152
282
 
153
- // src/contracts/mocks/relayerV2.mock.ts
283
+ // src/delegation/checkDelegation.ts
284
+ var EIP7702_MAGIC = "0xef0100";
285
+ function parseEip7702DelegatedAddress(code) {
286
+ if (!code || code === "0x" || code === "0x0") return null;
287
+ const normalized = code.toLowerCase();
288
+ const magic = EIP7702_MAGIC.toLowerCase();
289
+ const idx = normalized.indexOf(magic);
290
+ if (idx === -1) return null;
291
+ const raw = normalized.slice(idx + magic.length, idx + magic.length + 40);
292
+ if (raw.length !== 40) return null;
293
+ return `0x${raw}`;
294
+ }
295
+ async function checkDelegation(client, address) {
296
+ const code = await client.getCode({ address });
297
+ return parseEip7702DelegatedAddress(code);
298
+ }
299
+ async function isDelegatedTo(client, address, target) {
300
+ const impl = await checkDelegation(client, address);
301
+ if (!impl) return false;
302
+ return impl.toLowerCase() === target.toLowerCase();
303
+ }
154
304
 
155
- var MOCK_RELAYER_V2_ABI = _viem.parseAbi.call(void 0, [
156
- "function mint((address to, uint256 amount, uint256 feeAmount, address feeRecipient, uint256 nonce, uint256 deadline, bytes extData) request, (uint8 v, bytes32 r, bytes32 s) userSig, (uint8 v, bytes32 r, bytes32 s) issuerSig) external",
157
- // View functions we'll likely want (nonce getter is standard)
158
- "function mintRequestNonce(address user) external view returns (uint256)",
159
- "event Minted(address indexed user, uint256 amount, uint256 feeAmount, address indexed feeRecipient, bytes32 requestHash)"
160
- ]);
161
- var MOCK_RELAYER_V2_MINT_SELECTOR = "0xMOCKED__";
162
-
163
- // src/contracts/mocks/pointTokenV2.mock.ts
164
-
165
- var MOCK_POINT_TOKEN_V2_ABI = _viem.parseAbi.call(void 0, [
166
- // Variant A
167
- "function burn(uint256 amount) external",
168
- // Variant B
169
- "function burnWithSig((address user, address pointToken, uint256 amount, uint256 nonce, uint256 deadline) consent, (uint8 v, bytes32 r, bytes32 s) sig) external",
170
- // Standard reads we always need
171
- "function balanceOf(address user) external view returns (uint256)",
172
- "function burnNonce(address user) external view returns (uint256)",
173
- // ERC-20 Transfer event (inherited) BurnIndexer filters `to = 0x0`
174
- "event Transfer(address indexed from, address indexed to, uint256 value)"
175
- ]);
305
+ // src/delegation/buildDelegationUserOp.ts
306
+ function buildDelegationUserOp(params) {
307
+ return _chunkEDR5SFJNcjs.buildPartialUserOperation.call(void 0, {
308
+ sender: params.userAddress,
309
+ nonce: params.aaNonce,
310
+ operations: [
311
+ {
312
+ // Self-call with no data — triggers EIP-7702 delegation without
313
+ // executing any inner logic. The BatchExecutor.execute([]) call with
314
+ // an empty array would revert, so we target the EOA itself (which
315
+ // forwards to BatchExecutor that then no-ops on empty input).
316
+ target: params.userAddress,
317
+ value: 0n,
318
+ data: "0x"
319
+ }
320
+ ],
321
+ gasLimits: {
322
+ callGasLimit: _nullishCoalesce(_optionalChain([params, 'access', _7 => _7.gasLimits, 'optionalAccess', _8 => _8.callGasLimit]), () => ( 50000n)),
323
+ verificationGasLimit: _nullishCoalesce(_optionalChain([params, 'access', _9 => _9.gasLimits, 'optionalAccess', _10 => _10.verificationGasLimit]), () => ( 150000n)),
324
+ preVerificationGas: _nullishCoalesce(_optionalChain([params, 'access', _11 => _11.gasLimits, 'optionalAccess', _12 => _12.preVerificationGas]), () => ( 50000n))
325
+ }
326
+ });
327
+ }
328
+ async function getAaNonce(client, userAddress) {
329
+ const ENTRY_POINT = "0x0000000071727De22E5E9d8BAf0edAc6f37da032";
330
+ const NONCE_ABI = [
331
+ {
332
+ inputs: [
333
+ { name: "sender", type: "address" },
334
+ { name: "key", type: "uint192" }
335
+ ],
336
+ name: "getNonce",
337
+ outputs: [{ name: "nonce", type: "uint256" }],
338
+ stateMutability: "view",
339
+ type: "function"
340
+ }
341
+ ];
342
+ return client.readContract({
343
+ address: ENTRY_POINT,
344
+ abi: NONCE_ABI,
345
+ functionName: "getNonce",
346
+ args: [userAddress, 0n]
347
+ });
348
+ }
176
349
 
177
- // src/contracts/mocks/batchExecutor.mock.ts
178
- var MOCK_BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA = "0x000000000000000000000000000000000000DE01";
179
- var MOCK_BATCH_EXECUTOR_ADDRESS_BASE_MAINNET = "0x000000000000000000000000000000000000DE02";
350
+ // src/contracts/real/pointToken.ts
351
+
352
+ var POINT_TOKEN_ABI = _viem.parseAbi.call(void 0, [
353
+ // --- Mint paths ---
354
+ "function mint(address to, uint256 amount) external",
355
+ "function mint(address to, uint256 amount, uint256 deadline, bytes minterSig) external",
356
+ // --- Burn paths ---
357
+ "function burn(address from, uint256 amount) external",
358
+ "function burn(address from, uint256 amount, uint256 deadline, bytes burnerSig) external",
359
+ // --- Authorization reads ---
360
+ "function minters(address account) external view returns (bool)",
361
+ "function burners(address account) external view returns (bool)",
362
+ // --- Authorization writes (owner-only; used by provisioning scripts) ---
363
+ "function addMinter(address minter) external",
364
+ "function removeMinter(address minter) external",
365
+ "function addBurner(address burner) external",
366
+ "function removeBurner(address burner) external",
367
+ // --- Nonces (sig-gated paths) ---
368
+ "function mintRequestNonces(address receiver) external view returns (uint256)",
369
+ "function burnRequestNonces(address from) external view returns (uint256)",
370
+ // --- Oracle ---
371
+ "function mintingOracle() external view returns (address)",
372
+ "function setMintingOracle(address _mintingOracle) external",
373
+ // --- Issuer ---
374
+ "function issuer() external view returns (address)",
375
+ // --- Standard ERC-20 reads ---
376
+ "function balanceOf(address account) external view returns (uint256)",
377
+ "function totalSupply() external view returns (uint256)",
378
+ "function name() external view returns (string)",
379
+ "function symbol() external view returns (string)",
380
+ "function decimals() external view returns (uint8)",
381
+ // --- EIP-712 domain (for off-chain sig verification) ---
382
+ "function DOMAIN_SEPARATOR() external view returns (bytes32)",
383
+ "function eip712Domain() external view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)",
384
+ // --- Events ---
385
+ // PointIndexer filters Transfer(from=0x0) for mints
386
+ // BurnIndexer filters Transfer(to=0x0) for burns
387
+ "event Transfer(address indexed from, address indexed to, uint256 value)",
388
+ "event MinterAdded(address indexed minter)",
389
+ "event MinterRemoved(address indexed minter)",
390
+ "event BurnerAdded(address indexed burner)",
391
+ "event BurnerRemoved(address indexed burner)",
392
+ "event MintingOracleUpdated(address indexed mintingOracle)"
393
+ ]);
180
394
 
181
- // src/contracts/mocks/addresses.mock.ts
182
- var MOCK_PLACEHOLDER = (suffix) => `0x000000000000000000000000000000000000${suffix.toLowerCase().padStart(4, "0")}`;
183
- var MOCK_ADDRESSES = {
184
- // Base Sepolia — safe targets for integration tests (MockRelayer
185
- // fixtures deployed by Hardhat will override these at test time)
186
- 84532: {
187
- relayerV2: MOCK_PLACEHOLDER("de10"),
188
- pointToken: MOCK_PLACEHOLDER("de11"),
189
- batchExecutor: MOCK_PLACEHOLDER("de01"),
190
- usdt: MOCK_PLACEHOLDER("de12"),
191
- issuerRegistry: MOCK_PLACEHOLDER("de13"),
192
- mintingOracle: MOCK_PLACEHOLDER("de14")
193
- },
194
- // Base mainnet — intentionally left as placeholder. Do NOT ship to
195
- // prod without swapping.
395
+ // src/contracts/real/batchExecutor.ts
396
+ var BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA = "0x000000000000000000000000000000000000DE01";
397
+ var BATCH_EXECUTOR_ADDRESS_BASE_MAINNET = "0x7702cb554e6bFb442cb743A7dF23154544a7176C";
398
+
399
+ // src/contracts/real/addresses.ts
400
+ var PLACEHOLDER_DEAD = (suffix) => `0x000000000000000000000000000000000000${suffix.toLowerCase().padStart(4, "0")}`;
401
+ var CONTRACT_ADDRESSES = {
402
+ // Base mainnet — SC-delivered (2026-04-21, 2026-04-22)
403
+ // registry: IssuerRegistry 0xda2D3338CF70F462Ac175F5f2edfa45660CA4f31
404
+ // factory: PointTokenFactory 0x36c0BAb2faBE45EfA6d13001143e43A266Af673B
405
+ // oracle: MintingOracle 0xD85165939C700E51c8a45099316C6482634C2Ab9
406
+ // tokenImpl: PointToken (impl) 0x2e6FB1B0C1A51abb83eC974890126a64eC02E995
407
+ // mockUsdt: MockERC20 0x5d313485Ba59C3bb91e1A9C0C11782F0b83d5dcd
408
+ // POINT: PointToken instance 0x7d25E7156E51F865D522fd3ef257a6B5DD41b97e
409
+ // batchExecutor: Coinbase SW v2 0x7702cb554e6bFb442cb743A7dF23154544a7176C
410
+ // pafiHook: PAFIHook (V4, 10%) 0x870cAF9882d3160602AaC1769C2B264A2d8EC044
196
411
  8453: {
197
- relayerV2: MOCK_PLACEHOLDER("dead"),
198
- pointToken: MOCK_PLACEHOLDER("dead"),
199
- batchExecutor: MOCK_PLACEHOLDER("dead"),
200
- usdt: MOCK_PLACEHOLDER("dead"),
201
- issuerRegistry: MOCK_PLACEHOLDER("dead"),
202
- mintingOracle: MOCK_PLACEHOLDER("dead")
412
+ pointToken: "0x7d25E7156E51F865D522fd3ef257a6B5DD41b97e",
413
+ batchExecutor: "0x7702cb554e6bFb442cb743A7dF23154544a7176C",
414
+ usdt: "0x5d313485Ba59C3bb91e1A9C0C11782F0b83d5dcd",
415
+ issuerRegistry: "0xda2D3338CF70F462Ac175F5f2edfa45660CA4f31",
416
+ mintingOracle: "0xD85165939C700E51c8a45099316C6482634C2Ab9",
417
+ pafiHook: "0x870cAF9882d3160602AaC1769C2B264A2d8EC044"
418
+ },
419
+ // Base Sepolia — not in active use; placeholders kept so the map
420
+ // compiles for tooling that enumerates chains.
421
+ 84532: {
422
+ pointToken: PLACEHOLDER_DEAD("dead"),
423
+ batchExecutor: PLACEHOLDER_DEAD("de01"),
424
+ usdt: PLACEHOLDER_DEAD("dead"),
425
+ issuerRegistry: PLACEHOLDER_DEAD("dead"),
426
+ mintingOracle: PLACEHOLDER_DEAD("dead"),
427
+ pafiHook: PLACEHOLDER_DEAD("dead")
203
428
  }
204
429
  };
205
- function getMockAddresses(chainId) {
206
- const addrs = MOCK_ADDRESSES[chainId];
430
+ var POINT_TOKEN_FACTORY_ADDRESSES = {
431
+ 8453: "0x36c0BAb2faBE45EfA6d13001143e43A266Af673B",
432
+ 84532: PLACEHOLDER_DEAD("dead")
433
+ };
434
+ var POINT_TOKEN_IMPL_ADDRESSES = {
435
+ 8453: "0x2e6FB1B0C1A51abb83eC974890126a64eC02E995",
436
+ 84532: PLACEHOLDER_DEAD("dead")
437
+ };
438
+ function getContractAddresses(chainId) {
439
+ const addrs = CONTRACT_ADDRESSES[chainId];
207
440
  if (!addrs) {
208
441
  throw new Error(
209
- `getMockAddresses: no mock addresses for chainId ${chainId}. Supported: ${Object.keys(MOCK_ADDRESSES).join(", ")}`
442
+ `getContractAddresses: no addresses for chainId ${chainId}. Supported: ${Object.keys(CONTRACT_ADDRESSES).join(", ")}`
210
443
  );
211
444
  }
212
445
  return addrs;
213
446
  }
214
447
 
215
- // src/contracts/mocks/eip712/mintRequestV2.mock.ts
216
-
217
-
218
-
219
-
220
- var MOCK_MINT_REQUEST_V2_TYPES = {
221
- MintRequest: [
222
- { name: "to", type: "address" },
223
- { name: "amount", type: "uint256" },
224
- { name: "feeAmount", type: "uint256" },
225
- { name: "feeRecipient", type: "address" },
226
- { name: "nonce", type: "uint256" },
227
- { name: "deadline", type: "uint256" },
228
- { name: "extData", type: "bytes" }
229
- ]
230
- };
231
- function buildMockMintRequestV2TypedData(domain, message) {
232
- return {
233
- domain: _chunkBNTVOKYTcjs.buildDomain.call(void 0, domain),
234
- types: MOCK_MINT_REQUEST_V2_TYPES,
235
- primaryType: "MintRequest",
236
- message
237
- };
238
- }
239
- async function signMockMintRequestV2(walletClient, domain, message) {
240
- const serialized = await walletClient.signTypedData({
241
- account: walletClient.account,
242
- domain: _chunkBNTVOKYTcjs.buildDomain.call(void 0, domain),
243
- types: MOCK_MINT_REQUEST_V2_TYPES,
244
- primaryType: "MintRequest",
245
- message
246
- });
247
- const { v, r, s } = _viem.parseSignature.call(void 0, serialized);
248
- return {
249
- v: Number(v),
250
- r,
251
- s,
252
- serialized
448
+ // src/web-handoff/webPopup.ts
449
+ var DEFAULT_WIDTH = 900;
450
+ var DEFAULT_HEIGHT = 700;
451
+ var DEFAULT_NAME = "pafi-web";
452
+ function openWebPopup(url, options = {}) {
453
+ if (typeof window === "undefined" || typeof window.open !== "function") {
454
+ throw new Error(
455
+ "openWebPopup: `window.open` is not available in this runtime. Register a platform adapter via setPafiWebModalAdapter() instead."
456
+ );
457
+ }
458
+ const width = _nullishCoalesce(options.width, () => ( DEFAULT_WIDTH));
459
+ const height = _nullishCoalesce(options.height, () => ( DEFAULT_HEIGHT));
460
+ const name = _nullishCoalesce(options.windowName, () => ( DEFAULT_NAME));
461
+ const screenW = _nullishCoalesce(_optionalChain([window, 'access', _13 => _13.screen, 'optionalAccess', _14 => _14.availWidth]), () => ( window.innerWidth));
462
+ const screenH = _nullishCoalesce(_optionalChain([window, 'access', _15 => _15.screen, 'optionalAccess', _16 => _16.availHeight]), () => ( window.innerHeight));
463
+ const left = Math.max(0, Math.floor((screenW - width) / 2));
464
+ const top = Math.max(0, Math.floor((screenH - height) / 2));
465
+ const features = [
466
+ `width=${width}`,
467
+ `height=${height}`,
468
+ `left=${left}`,
469
+ `top=${top}`,
470
+ "resizable=yes",
471
+ "scrollbars=yes",
472
+ "noopener=no"
473
+ // we need opener.postMessage to work
474
+ ].join(",");
475
+ const popup = window.open(url, name, features);
476
+ if (!popup) {
477
+ throw new Error(
478
+ "openWebPopup: popup was blocked. Ensure this call runs inside a user gesture (click handler)."
479
+ );
480
+ }
481
+ let closed = false;
482
+ let pollId = null;
483
+ let messageListener = null;
484
+ const dispose = () => {
485
+ if (closed) return;
486
+ closed = true;
487
+ if (pollId !== null) {
488
+ clearInterval(pollId);
489
+ pollId = null;
490
+ }
491
+ if (messageListener) {
492
+ window.removeEventListener("message", messageListener);
493
+ messageListener = null;
494
+ }
495
+ _optionalChain([options, 'access', _17 => _17.onClose, 'optionalCall', _18 => _18()]);
253
496
  };
254
- }
255
- async function verifyMockMintRequestV2(domain, message, signature, expectedSigner) {
256
- const recoveredAddress = await _viem.recoverTypedDataAddress.call(void 0, {
257
- domain: _chunkBNTVOKYTcjs.buildDomain.call(void 0, domain),
258
- types: MOCK_MINT_REQUEST_V2_TYPES,
259
- primaryType: "MintRequest",
260
- message,
261
- signature
262
- });
263
- const isValid = recoveredAddress.toLowerCase() === expectedSigner.toLowerCase();
497
+ pollId = setInterval(() => {
498
+ if (popup.closed) {
499
+ dispose();
500
+ }
501
+ }, 500);
502
+ if (options.onMessage) {
503
+ const allowed = _nullishCoalesce(options.allowedOrigins, () => ( []));
504
+ const onMessage = options.onMessage;
505
+ messageListener = (event) => {
506
+ if (event.source !== popup) return;
507
+ if (!allowed.includes(event.origin)) return;
508
+ onMessage(event.data, event.origin);
509
+ };
510
+ window.addEventListener("message", messageListener);
511
+ }
264
512
  return {
265
- isValid,
266
- recoveredAddress
513
+ get isOpen() {
514
+ return !closed && !popup.closed;
515
+ },
516
+ close() {
517
+ if (closed) return;
518
+ try {
519
+ popup.close();
520
+ } catch (e) {
521
+ }
522
+ dispose();
523
+ },
524
+ focus() {
525
+ if (closed || popup.closed) return;
526
+ try {
527
+ popup.focus();
528
+ } catch (e2) {
529
+ }
530
+ },
531
+ postMessage(data) {
532
+ if (closed || popup.closed) return;
533
+ try {
534
+ popup.postMessage(data, "*");
535
+ } catch (e3) {
536
+ }
537
+ }
267
538
  };
268
539
  }
269
-
270
- // src/contracts/mocks/eip712/burnConsent.mock.ts
271
-
272
-
273
-
274
-
275
- var MOCK_BURN_CONSENT_TYPES = {
276
- BurnConsent: [
277
- { name: "user", type: "address" },
278
- { name: "pointToken", type: "address" },
279
- { name: "amount", type: "uint256" },
280
- { name: "nonce", type: "uint256" },
281
- { name: "deadline", type: "uint256" }
282
- ]
540
+ var webPopupAdapter = {
541
+ open(url, options) {
542
+ return openWebPopup(url, options);
543
+ }
283
544
  };
284
- function buildMockBurnConsentTypedData(domain, message) {
285
- return {
286
- domain: _chunkBNTVOKYTcjs.buildDomain.call(void 0, domain),
287
- types: MOCK_BURN_CONSENT_TYPES,
288
- primaryType: "BurnConsent",
289
- message
290
- };
545
+
546
+ // src/web-handoff/index.ts
547
+ var registeredAdapter = null;
548
+ function setPafiWebModalAdapter(adapter) {
549
+ registeredAdapter = adapter;
291
550
  }
292
- async function signMockBurnConsent(walletClient, domain, message) {
293
- const serialized = await walletClient.signTypedData({
294
- account: walletClient.account,
295
- domain: _chunkBNTVOKYTcjs.buildDomain.call(void 0, domain),
296
- types: MOCK_BURN_CONSENT_TYPES,
297
- primaryType: "BurnConsent",
298
- message
299
- });
300
- const { v, r, s } = _viem.parseSignature.call(void 0, serialized);
301
- return {
302
- v: Number(v),
303
- r,
304
- s,
305
- serialized
306
- };
551
+ function getPafiWebModalAdapter() {
552
+ return registeredAdapter;
307
553
  }
308
- async function verifyMockBurnConsent(domain, message, signature, expectedUser) {
309
- const recoveredAddress = await _viem.recoverTypedDataAddress.call(void 0, {
310
- domain: _chunkBNTVOKYTcjs.buildDomain.call(void 0, domain),
311
- types: MOCK_BURN_CONSENT_TYPES,
312
- primaryType: "BurnConsent",
313
- message,
314
- signature
315
- });
316
- const isValid = recoveredAddress.toLowerCase() === expectedUser.toLowerCase();
317
- return {
318
- isValid,
319
- recoveredAddress
320
- };
554
+ async function openPafiWebModal(url, options = {}) {
555
+ if (!url || typeof url !== "string") {
556
+ throw new Error("openPafiWebModal: `url` is required");
557
+ }
558
+ if (registeredAdapter) {
559
+ return Promise.resolve(registeredAdapter.open(url, options));
560
+ }
561
+ if (typeof window !== "undefined" && typeof window.open === "function") {
562
+ return openWebPopup(url, options);
563
+ }
564
+ throw new Error(
565
+ "openPafiWebModal: no adapter registered and `window.open` is unavailable. Call `setPafiWebModalAdapter()` with a platform-specific adapter (e.g. SFSafariViewController on iOS) during app boot."
566
+ );
321
567
  }
322
568
 
323
569
  // src/index.ts
@@ -326,10 +572,8 @@ var PafiSDK = class {
326
572
 
327
573
 
328
574
 
329
-
330
575
  constructor(config) {
331
576
  this._pointTokenAddress = config.pointTokenAddress;
332
- this._relayContractAddress = config.relayContractAddress;
333
577
  this._signer = config.signer;
334
578
  this._chainId = config.chainId;
335
579
  if (config.provider) {
@@ -346,9 +590,6 @@ var PafiSDK = class {
346
590
  setPointTokenAddress(address) {
347
591
  this._pointTokenAddress = address;
348
592
  }
349
- setRelayContractAddress(address) {
350
- this._relayContractAddress = address;
351
- }
352
593
  setSigner(signer) {
353
594
  this._signer = signer;
354
595
  }
@@ -360,25 +601,25 @@ var PafiSDK = class {
360
601
  // -------------------------------------------------------------------------
361
602
  requirePointToken() {
362
603
  if (!this._pointTokenAddress) {
363
- throw new (0, _chunk5QJZT7VBcjs.ConfigurationError)("pointTokenAddress not set");
604
+ throw new (0, _chunkEDR5SFJNcjs.ConfigurationError)("pointTokenAddress not set");
364
605
  }
365
606
  return this._pointTokenAddress;
366
607
  }
367
608
  requireProvider() {
368
609
  if (!this._provider) {
369
- throw new (0, _chunk5QJZT7VBcjs.ConfigurationError)("provider not set");
610
+ throw new (0, _chunkEDR5SFJNcjs.ConfigurationError)("provider not set");
370
611
  }
371
612
  return this._provider;
372
613
  }
373
614
  requireSigner() {
374
615
  if (!this._signer) {
375
- throw new (0, _chunk5QJZT7VBcjs.ConfigurationError)("signer not set");
616
+ throw new (0, _chunkEDR5SFJNcjs.ConfigurationError)("signer not set");
376
617
  }
377
618
  return this._signer;
378
619
  }
379
620
  requireChainId() {
380
621
  if (this._chainId === void 0) {
381
- throw new (0, _chunk5QJZT7VBcjs.ConfigurationError)("chainId not set");
622
+ throw new (0, _chunkEDR5SFJNcjs.ConfigurationError)("chainId not set");
382
623
  }
383
624
  return this._chainId;
384
625
  }
@@ -389,71 +630,54 @@ var PafiSDK = class {
389
630
  const provider = this.requireProvider();
390
631
  const pointToken = this.requirePointToken();
391
632
  const chainId = this.requireChainId();
392
- const name = await _chunkX3I5XWARcjs.getTokenName.call(void 0, provider, pointToken);
633
+ const name = await _chunkCQCSQPWGcjs.getTokenName.call(void 0, provider, pointToken);
393
634
  return { name, verifyingContract: pointToken, chainId };
394
635
  }
395
636
  // -------------------------------------------------------------------------
396
637
  // EIP-712 — delegates to pure functions
397
638
  // -------------------------------------------------------------------------
398
- /**
399
- * Build the EIP-712 typed data for a MintRequest.
400
- * Pass the result to any external signer (Privy, WalletConnect, etc.).
401
- */
402
639
  async buildMintRequestTypedData(message) {
403
640
  const domain = await this.getDomain();
404
- return _chunkBNTVOKYTcjs.buildMintRequestTypedData.call(void 0, domain, message);
641
+ return _chunkKJKDLD7Ncjs.buildMintRequestTypedData.call(void 0, domain, message);
405
642
  }
406
- /**
407
- * Build the EIP-712 typed data for a ReceiverConsent.
408
- * Pass the result to any external signer (Privy, WalletConnect, etc.).
409
- */
410
643
  async buildReceiverConsentTypedData(message) {
411
644
  const domain = await this.getDomain();
412
- return _chunkBNTVOKYTcjs.buildReceiverConsentTypedData.call(void 0, domain, message);
645
+ return _chunkKJKDLD7Ncjs.buildReceiverConsentTypedData.call(void 0, domain, message);
413
646
  }
414
647
  async signMintRequest(message) {
415
648
  const domain = await this.getDomain();
416
- return _chunkBNTVOKYTcjs.signMintRequest.call(void 0, this.requireSigner(), domain, message);
649
+ return _chunkKJKDLD7Ncjs.signMintRequest.call(void 0, this.requireSigner(), domain, message);
417
650
  }
418
651
  async verifyMintRequest(message, signature, expectedMinter) {
419
652
  const domain = await this.getDomain();
420
- return _chunkBNTVOKYTcjs.verifyMintRequest.call(void 0, domain, message, signature, expectedMinter);
653
+ return _chunkKJKDLD7Ncjs.verifyMintRequest.call(void 0, domain, message, signature, expectedMinter);
421
654
  }
422
655
  async signReceiverConsent(message) {
423
656
  const domain = await this.getDomain();
424
- return _chunkBNTVOKYTcjs.signReceiverConsent.call(void 0, this.requireSigner(), domain, message);
657
+ return _chunkKJKDLD7Ncjs.signReceiverConsent.call(void 0, this.requireSigner(), domain, message);
425
658
  }
426
659
  async verifyReceiverConsent(message, signature, expectedReceiver) {
427
660
  const domain = await this.getDomain();
428
- return _chunkBNTVOKYTcjs.verifyReceiverConsent.call(void 0, domain, message, signature, expectedReceiver);
661
+ return _chunkKJKDLD7Ncjs.verifyReceiverConsent.call(void 0, domain, message, signature, expectedReceiver);
429
662
  }
430
663
  // -------------------------------------------------------------------------
431
664
  // Contract reads
432
665
  // -------------------------------------------------------------------------
433
666
  async getMintRequestNonce(receiver) {
434
- return _chunkX3I5XWARcjs.getMintRequestNonce.call(void 0,
667
+ return _chunkCQCSQPWGcjs.getMintRequestNonce.call(void 0,
435
668
  this.requireProvider(),
436
669
  this.requirePointToken(),
437
670
  receiver
438
671
  );
439
672
  }
440
673
  async getReceiverConsentNonce(receiver) {
441
- return _chunkX3I5XWARcjs.getReceiverConsentNonce.call(void 0,
674
+ return _chunkCQCSQPWGcjs.getReceiverConsentNonce.call(void 0,
442
675
  this.requireProvider(),
443
676
  this.requirePointToken(),
444
677
  receiver
445
678
  );
446
679
  }
447
680
  // -------------------------------------------------------------------------
448
- // Relay calldata — delegates to pure functions
449
- // -------------------------------------------------------------------------
450
- encodeMintAndSwap(mint, swap) {
451
- return _chunkL74CZAVQcjs.encodeMintAndSwap.call(void 0, mint, swap);
452
- }
453
- decodeMintAndSwap(calldata) {
454
- return _chunkL74CZAVQcjs.decodeMintAndSwap.call(void 0, calldata);
455
- }
456
- // -------------------------------------------------------------------------
457
681
  // Quoting — delegates to pure functions
458
682
  // -------------------------------------------------------------------------
459
683
  /**
@@ -462,7 +686,7 @@ var PafiSDK = class {
462
686
  * paths, and quotes via a single multicall RPC call.
463
687
  */
464
688
  async findBestQuote(tokenIn, tokenOut, exactAmount, pools = [], quoterAddress, maxHops) {
465
- return _chunkCAE2BVKIcjs.findBestQuote.call(void 0,
689
+ return _chunkZ2V525IScjs.findBestQuote.call(void 0,
466
690
  this.requireProvider(),
467
691
  this.requireChainId(),
468
692
  tokenIn,
@@ -481,43 +705,11 @@ var PafiSDK = class {
481
705
  * The caller provides `minAmountOut` after applying their own slippage.
482
706
  */
483
707
  buildSwapFromQuote(params) {
484
- return _chunkCXFUP2YKcjs.buildSwapFromQuote.call(void 0, params);
485
- }
486
- /**
487
- * Build Relay SwapParams + extData from a quote result.
488
- * Returns ready-to-use args for `Relay.mintAndSwap`.
489
- */
490
- buildRelaySwapParams(params) {
491
- return _chunkL74CZAVQcjs.buildRelaySwapParams.call(void 0, params);
492
- }
493
- /**
494
- * Encode extData for ReceiverConsent and MintParams.
495
- * extData = abi.encode(minAmountOut, feeInUsdt)
496
- */
497
- encodeExtData(minAmountOut, feeInUsdt) {
498
- return _chunkL74CZAVQcjs.encodeExtData.call(void 0, minAmountOut, feeInUsdt);
708
+ return _chunkEDR5SFJNcjs.buildSwapFromQuote.call(void 0, params);
499
709
  }
500
710
  // -------------------------------------------------------------------------
501
711
  // Simulation — dry-run via eth_call (no gas spent)
502
712
  // -------------------------------------------------------------------------
503
- /**
504
- * Simulate a Relay.mintAndSwap call. Catches reverts (bad signatures,
505
- * expired deadlines, insufficient mint cap, pool errors) before submitting.
506
- *
507
- * @param relayAddress - Relay contract address
508
- * @param mint - MintParams with real signatures
509
- * @param swap - SwapParams (path + deadline)
510
- * @param from - Relayer address that will submit the tx
511
- */
512
- async simulateMintAndSwap(relayAddress, mint, swap, from) {
513
- return _chunkL74CZAVQcjs.simulateMintAndSwap.call(void 0,
514
- this.requireProvider(),
515
- relayAddress,
516
- mint,
517
- swap,
518
- from
519
- );
520
- }
521
713
  /**
522
714
  * Simulate a UniversalRouter.execute swap call. Catches reverts (bad
523
715
  * approvals, insufficient balance, pool errors) before submitting.
@@ -529,7 +721,7 @@ var PafiSDK = class {
529
721
  * @param from - Address that will execute the swap
530
722
  */
531
723
  async simulateSwap(routerAddress, commands, inputs, deadline, from) {
532
- return _chunkCXFUP2YKcjs.simulateSwap.call(void 0,
724
+ return _chunkEDR5SFJNcjs.simulateSwap.call(void 0,
533
725
  this.requireProvider(),
534
726
  routerAddress,
535
727
  commands,
@@ -540,23 +732,13 @@ var PafiSDK = class {
540
732
  }
541
733
  // -------------------------------------------------------------------------
542
734
  // Auth — EIP-4361 login helpers (offline, stateless)
543
- //
544
- // These are convenience wrappers around the pure functions in
545
- // `./auth/loginMessage.ts`. They do NOT hit the network — the caller is
546
- // responsible for fetching the nonce, POSTing the signed message, and
547
- // storing the JWT returned by the issuer backend.
548
735
  // -------------------------------------------------------------------------
549
- /**
550
- * Build an EIP-4361 login message for the current signer + chain. The
551
- * caller supplies the issuer-specific fields (domain, nonce, uri); the SDK
552
- * fills in the wallet address and chain id from its own config.
553
- */
554
736
  async createLoginMessage(params) {
555
737
  const signer = this.requireSigner();
556
738
  const chainId = this.requireChainId();
557
739
  const account = signer.account;
558
740
  if (!account) {
559
- throw new (0, _chunk5QJZT7VBcjs.ConfigurationError)("signer has no account attached");
741
+ throw new (0, _chunkEDR5SFJNcjs.ConfigurationError)("signer has no account attached");
560
742
  }
561
743
  return _chunkGWLEEXM4cjs.createLoginMessage.call(void 0, { ...params, address: account.address, chainId });
562
744
  }
@@ -565,7 +747,7 @@ var PafiSDK = class {
565
747
  const signer = this.requireSigner();
566
748
  const account = signer.account;
567
749
  if (!account) {
568
- throw new (0, _chunk5QJZT7VBcjs.ConfigurationError)("signer has no account attached");
750
+ throw new (0, _chunkEDR5SFJNcjs.ConfigurationError)("signer has no account attached");
569
751
  }
570
752
  return signer.signMessage({ account, message });
571
753
  }
@@ -669,5 +851,10 @@ var PafiSDK = class {
669
851
 
670
852
 
671
853
 
672
- exports.ApiError = _chunk5QJZT7VBcjs.ApiError; exports.BATCH_EXECUTOR_ABI = _chunkCXFUP2YKcjs.BATCH_EXECUTOR_ABI; exports.BATCH_EXECUTOR_ADDRESS_BASE_MAINNET = MOCK_BATCH_EXECUTOR_ADDRESS_BASE_MAINNET; exports.BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA = MOCK_BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA; exports.BURN_CONSENT_TYPES = MOCK_BURN_CONSENT_TYPES; exports.COMMON_POOLS = _chunkCWP4PFOPcjs.COMMON_POOLS; exports.COMMON_TOKENS = _chunkCWP4PFOPcjs.COMMON_TOKENS; exports.CONTRACT_ADDRESSES = MOCK_ADDRESSES; exports.ConfigurationError = _chunk5QJZT7VBcjs.ConfigurationError; exports.ENTRY_POINT_V07 = ENTRY_POINT_V07; exports.MINT_REQUEST_V2_TYPES = MOCK_MINT_REQUEST_V2_TYPES; exports.POINT_TOKEN_POOLS = _chunkCWP4PFOPcjs.POINT_TOKEN_POOLS; exports.POINT_TOKEN_V2_ABI = MOCK_POINT_TOKEN_V2_ABI; exports.PafiSDK = PafiSDK; exports.PafiSDKError = _chunk5QJZT7VBcjs.PafiSDKError; exports.RELAYER_V2_ABI = MOCK_RELAYER_V2_ABI; exports.RELAYER_V2_MINT_SELECTOR = MOCK_RELAYER_V2_MINT_SELECTOR; exports.SETTLE_ALL = _chunkCXFUP2YKcjs.SETTLE_ALL; exports.SUPPORTED_CHAINS = _chunkCWP4PFOPcjs.SUPPORTED_CHAINS; exports.SWAP_EXACT_IN = _chunkCXFUP2YKcjs.SWAP_EXACT_IN; exports.SigningError = _chunk5QJZT7VBcjs.SigningError; exports.SimulationError = _chunk5QJZT7VBcjs.SimulationError; exports.TAKE_ALL = _chunkCXFUP2YKcjs.TAKE_ALL; exports.UNIVERSAL_ROUTER_ADDRESSES = _chunkCWP4PFOPcjs.UNIVERSAL_ROUTER_ADDRESSES; exports.V4_QUOTER_ADDRESSES = _chunkCWP4PFOPcjs.V4_QUOTER_ADDRESSES; exports.V4_SWAP = _chunkCXFUP2YKcjs.V4_SWAP; exports.ZERO_VALUE = ZERO_VALUE; exports._resetPaymasterConfigForTests = _resetPaymasterConfigForTests; exports.assembleUserOperation = _chunkCXFUP2YKcjs.assembleUserOperation; exports.buildAllPaths = _chunkCAE2BVKIcjs.buildAllPaths; exports.buildBurnConsentTypedData = buildMockBurnConsentTypedData; exports.buildDomain = _chunkBNTVOKYTcjs.buildDomain; exports.buildErc20ApprovalCalldata = _chunkCXFUP2YKcjs.buildErc20ApprovalCalldata; exports.buildMintRequestTypedData = _chunkBNTVOKYTcjs.buildMintRequestTypedData; exports.buildMintRequestV2TypedData = buildMockMintRequestV2TypedData; exports.buildPartialUserOperation = _chunkCXFUP2YKcjs.buildPartialUserOperation; exports.buildPermit2ApprovalCalldata = _chunkCXFUP2YKcjs.buildPermit2ApprovalCalldata; exports.buildReceiverConsentTypedData = _chunkBNTVOKYTcjs.buildReceiverConsentTypedData; exports.buildRelaySwapParams = _chunkL74CZAVQcjs.buildRelaySwapParams; exports.buildSwapFromQuote = _chunkCXFUP2YKcjs.buildSwapFromQuote; exports.buildSwapWithGasDeduction = _chunkCXFUP2YKcjs.buildSwapWithGasDeduction; exports.buildUniversalRouterExecuteArgs = _chunkCXFUP2YKcjs.buildUniversalRouterExecuteArgs; exports.buildV4SwapInput = _chunkCXFUP2YKcjs.buildV4SwapInput; exports.checkAllowance = _chunkCXFUP2YKcjs.checkAllowance; exports.checkEthAndBranch = checkEthAndBranch; exports.combineRoutes = _chunkCAE2BVKIcjs.combineRoutes; exports.createLoginMessage = _chunkGWLEEXM4cjs.createLoginMessage; exports.decodeExtData = _chunkL74CZAVQcjs.decodeExtData; exports.decodeMintAndSwap = _chunkL74CZAVQcjs.decodeMintAndSwap; exports.encodeBatchExecute = _chunkCXFUP2YKcjs.encodeBatchExecute; exports.encodeExtData = _chunkL74CZAVQcjs.encodeExtData; exports.encodeMintAndSwap = _chunkL74CZAVQcjs.encodeMintAndSwap; exports.erc20Abi = _chunkIPXARZ6Fcjs.erc20Abi; exports.erc20ApproveOp = _chunkCXFUP2YKcjs.erc20ApproveOp; exports.erc20BurnOp = _chunkCXFUP2YKcjs.erc20BurnOp; exports.erc20TransferOp = _chunkCXFUP2YKcjs.erc20TransferOp; exports.findBestQuote = _chunkCAE2BVKIcjs.findBestQuote; exports.getContractAddresses = getMockAddresses; exports.getIssuer = _chunkX3I5XWARcjs.getIssuer2; exports.getMintRequestNonce = _chunkX3I5XWARcjs.getMintRequestNonce; exports.getPaymasterConfig = getPaymasterConfig; exports.getPointTokenBalance = _chunkX3I5XWARcjs.getPointTokenBalance; exports.getPointTokenIssuer = _chunkX3I5XWARcjs.getPointTokenIssuer; exports.getPointTokenIssuerAddress = _chunkX3I5XWARcjs.getIssuer; exports.getReceiverConsentNonce = _chunkX3I5XWARcjs.getReceiverConsentNonce; exports.getTokenName = _chunkX3I5XWARcjs.getTokenName; exports.getUsdt = _chunkX3I5XWARcjs.getUsdt; exports.isActiveIssuer = _chunkX3I5XWARcjs.isActiveIssuer; exports.isMinter = _chunkX3I5XWARcjs.isMinter; exports.isPaymasterConfigured = isPaymasterConfigured; exports.issuerRegistryAbi = _chunkS2XRFFP3cjs.issuerRegistryAbi; exports.mintRequestTypes = _chunkCWP4PFOPcjs.mintRequestTypes; exports.mintingOracleAbi = _chunkS2XRFFP3cjs.mintingOracleAbi; exports.parseLoginMessage = _chunkGWLEEXM4cjs.parseLoginMessage; exports.permit2Abi = _chunkIPXARZ6Fcjs.permit2Abi; exports.pointTokenAbi = _chunkS2XRFFP3cjs.pointTokenAbi; exports.pointTokenFactoryAbi = _chunkFGKLDKJKcjs.pointTokenFactoryAbi; exports.quoteBestRoute = _chunkCAE2BVKIcjs.quoteBestRoute; exports.quoteExactInput = _chunkCAE2BVKIcjs.quoteExactInput; exports.quoteExactInputSingle = _chunkCAE2BVKIcjs.quoteExactInputSingle; exports.rawCallOp = _chunkCXFUP2YKcjs.rawCallOp; exports.receiverConsentTypes = _chunkCWP4PFOPcjs.receiverConsentTypes; exports.relayAbi = _chunk27V32VNMcjs.relayAbi; exports.setPaymasterConfig = setPaymasterConfig; exports.signBurnConsent = signMockBurnConsent; exports.signMintRequest = _chunkBNTVOKYTcjs.signMintRequest; exports.signMintRequestV2 = signMockMintRequestV2; exports.signReceiverConsent = _chunkBNTVOKYTcjs.signReceiverConsent; exports.simulateMintAndSwap = _chunkL74CZAVQcjs.simulateMintAndSwap; exports.simulateSwap = _chunkCXFUP2YKcjs.simulateSwap; exports.universalRouterAbi = _chunkIPXARZ6Fcjs.universalRouterAbi; exports.v4QuoterAbi = _chunkCL3QSI4Ocjs.v4QuoterAbi; exports.verifyBurnConsent = verifyMockBurnConsent; exports.verifyLoginMessage = _chunkGWLEEXM4cjs.verifyLoginMessage; exports.verifyMintCap = _chunkX3I5XWARcjs.verifyMintCap; exports.verifyMintRequest = _chunkBNTVOKYTcjs.verifyMintRequest; exports.verifyMintRequestV2 = verifyMockMintRequestV2; exports.verifyReceiverConsent = _chunkBNTVOKYTcjs.verifyReceiverConsent;
854
+
855
+
856
+
857
+
858
+
859
+ exports.ApiError = _chunkEDR5SFJNcjs.ApiError; exports.BATCH_EXECUTOR_ABI = _chunkEDR5SFJNcjs.BATCH_EXECUTOR_ABI; exports.BATCH_EXECUTOR_ADDRESS_BASE_MAINNET = BATCH_EXECUTOR_ADDRESS_BASE_MAINNET; exports.BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA = BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA; exports.BROKER_HASHES = BROKER_HASHES; exports.COMMON_POOLS = _chunkDMW67WBUcjs.COMMON_POOLS; exports.COMMON_TOKENS = _chunkDMW67WBUcjs.COMMON_TOKENS; exports.CONTRACT_ADDRESSES = CONTRACT_ADDRESSES; exports.ConfigurationError = _chunkEDR5SFJNcjs.ConfigurationError; exports.ENTRY_POINT_V07 = ENTRY_POINT_V07; exports.ORDERLY_VAULT_ABI = ORDERLY_VAULT_ABI; exports.ORDERLY_VAULT_ADDRESSES = ORDERLY_VAULT_ADDRESSES; exports.ORDERLY_VAULT_BASE_MAINNET = ORDERLY_VAULT_BASE_MAINNET; exports.POINT_TOKEN_FACTORY_ADDRESSES = POINT_TOKEN_FACTORY_ADDRESSES; exports.POINT_TOKEN_IMPL_ADDRESSES = POINT_TOKEN_IMPL_ADDRESSES; exports.POINT_TOKEN_POOLS = _chunkDMW67WBUcjs.POINT_TOKEN_POOLS; exports.POINT_TOKEN_V2_ABI = POINT_TOKEN_ABI; exports.PafiSDK = PafiSDK; exports.PafiSDKError = _chunkEDR5SFJNcjs.PafiSDKError; exports.SETTLE_ALL = _chunkEDR5SFJNcjs.SETTLE_ALL; exports.SUPPORTED_CHAINS = _chunkDMW67WBUcjs.SUPPORTED_CHAINS; exports.SWAP_EXACT_IN = _chunkEDR5SFJNcjs.SWAP_EXACT_IN; exports.SigningError = _chunkEDR5SFJNcjs.SigningError; exports.SimulationError = _chunkEDR5SFJNcjs.SimulationError; exports.TAKE_ALL = _chunkEDR5SFJNcjs.TAKE_ALL; exports.TOKEN_HASHES = TOKEN_HASHES; exports.UNIVERSAL_ROUTER_ADDRESSES = _chunkDMW67WBUcjs.UNIVERSAL_ROUTER_ADDRESSES; exports.V4_QUOTER_ADDRESSES = _chunkDMW67WBUcjs.V4_QUOTER_ADDRESSES; exports.V4_SWAP = _chunkEDR5SFJNcjs.V4_SWAP; exports.ZERO_VALUE = ZERO_VALUE; exports._resetPaymasterConfigForTests = _resetPaymasterConfigForTests; exports.assembleUserOperation = _chunkEDR5SFJNcjs.assembleUserOperation; exports.buildAllPaths = _chunkZ2V525IScjs.buildAllPaths; exports.buildBurnRequestTypedData = _chunkKJKDLD7Ncjs.buildBurnRequestTypedData; exports.buildDelegationUserOp = buildDelegationUserOp; exports.buildDomain = _chunkKJKDLD7Ncjs.buildDomain; exports.buildErc20ApprovalCalldata = _chunkEDR5SFJNcjs.buildErc20ApprovalCalldata; exports.buildMintRequestTypedData = _chunkKJKDLD7Ncjs.buildMintRequestTypedData; exports.buildPartialUserOperation = _chunkEDR5SFJNcjs.buildPartialUserOperation; exports.buildPermit2ApprovalCalldata = _chunkEDR5SFJNcjs.buildPermit2ApprovalCalldata; exports.buildPerpDepositWithGasDeduction = buildPerpDepositWithGasDeduction; exports.buildReceiverConsentTypedData = _chunkKJKDLD7Ncjs.buildReceiverConsentTypedData; exports.buildSwapFromQuote = _chunkEDR5SFJNcjs.buildSwapFromQuote; exports.buildSwapWithGasDeduction = _chunkEDR5SFJNcjs.buildSwapWithGasDeduction; exports.buildUniversalRouterExecuteArgs = _chunkEDR5SFJNcjs.buildUniversalRouterExecuteArgs; exports.buildV4SwapInput = _chunkEDR5SFJNcjs.buildV4SwapInput; exports.burnRequestTypes = _chunkDMW67WBUcjs.burnRequestTypes; exports.checkAllowance = _chunkEDR5SFJNcjs.checkAllowance; exports.checkDelegation = checkDelegation; exports.checkEthAndBranch = checkEthAndBranch; exports.combineRoutes = _chunkZ2V525IScjs.combineRoutes; exports.computeAccountId = computeAccountId; exports.createLoginMessage = _chunkGWLEEXM4cjs.createLoginMessage; exports.encodeBatchExecute = _chunkEDR5SFJNcjs.encodeBatchExecute; exports.erc20Abi = _chunkIPXARZ6Fcjs.erc20Abi; exports.erc20ApproveOp = _chunkEDR5SFJNcjs.erc20ApproveOp; exports.erc20BurnOp = _chunkEDR5SFJNcjs.erc20BurnOp; exports.erc20TransferOp = _chunkEDR5SFJNcjs.erc20TransferOp; exports.findBestQuote = _chunkZ2V525IScjs.findBestQuote; exports.getAaNonce = getAaNonce; exports.getContractAddresses = getContractAddresses; exports.getIssuer = _chunkCQCSQPWGcjs.getIssuer2; exports.getMintRequestNonce = _chunkCQCSQPWGcjs.getMintRequestNonce; exports.getPafiWebModalAdapter = getPafiWebModalAdapter; exports.getPaymasterConfig = getPaymasterConfig; exports.getPointTokenBalance = _chunkCQCSQPWGcjs.getPointTokenBalance; exports.getPointTokenIssuer = _chunkCQCSQPWGcjs.getPointTokenIssuer; exports.getPointTokenIssuerAddress = _chunkCQCSQPWGcjs.getIssuer; exports.getReceiverConsentNonce = _chunkCQCSQPWGcjs.getReceiverConsentNonce; exports.getTokenName = _chunkCQCSQPWGcjs.getTokenName; exports.isActiveIssuer = _chunkCQCSQPWGcjs.isActiveIssuer; exports.isDelegatedTo = isDelegatedTo; exports.isMinter = _chunkCQCSQPWGcjs.isMinter; exports.isPaymasterConfigured = isPaymasterConfigured; exports.issuerRegistryAbi = _chunkS2XRFFP3cjs.issuerRegistryAbi; exports.mintRequestTypes = _chunkDMW67WBUcjs.mintRequestTypes; exports.mintingOracleAbi = _chunkS2XRFFP3cjs.mintingOracleAbi; exports.openPafiWebModal = openPafiWebModal; exports.openWebPopup = openWebPopup; exports.parseEip7702DelegatedAddress = parseEip7702DelegatedAddress; exports.parseLoginMessage = _chunkGWLEEXM4cjs.parseLoginMessage; exports.permit2Abi = _chunkIPXARZ6Fcjs.permit2Abi; exports.pointTokenAbi = _chunkS2XRFFP3cjs.pointTokenAbi; exports.pointTokenFactoryAbi = _chunkALCWYDVGcjs.pointTokenFactoryAbi; exports.quoteBestRoute = _chunkZ2V525IScjs.quoteBestRoute; exports.quoteExactInput = _chunkZ2V525IScjs.quoteExactInput; exports.quoteExactInputSingle = _chunkZ2V525IScjs.quoteExactInputSingle; exports.rawCallOp = _chunkEDR5SFJNcjs.rawCallOp; exports.receiverConsentTypes = _chunkDMW67WBUcjs.receiverConsentTypes; exports.setPafiWebModalAdapter = setPafiWebModalAdapter; exports.setPaymasterConfig = setPaymasterConfig; exports.signBurnRequest = _chunkKJKDLD7Ncjs.signBurnRequest; exports.signMintRequest = _chunkKJKDLD7Ncjs.signMintRequest; exports.signReceiverConsent = _chunkKJKDLD7Ncjs.signReceiverConsent; exports.simulateSwap = _chunkEDR5SFJNcjs.simulateSwap; exports.universalRouterAbi = _chunkIPXARZ6Fcjs.universalRouterAbi; exports.v4QuoterAbi = _chunkCL3QSI4Ocjs.v4QuoterAbi; exports.verifyBurnRequest = _chunkKJKDLD7Ncjs.verifyBurnRequest; exports.verifyLoginMessage = _chunkGWLEEXM4cjs.verifyLoginMessage; exports.verifyMintCap = _chunkCQCSQPWGcjs.verifyMintCap; exports.verifyMintRequest = _chunkKJKDLD7Ncjs.verifyMintRequest; exports.verifyReceiverConsent = _chunkKJKDLD7Ncjs.verifyReceiverConsent; exports.webPopupAdapter = webPopupAdapter;
673
860
  //# sourceMappingURL=index.cjs.map