@atxp/base 0.2.17 → 0.2.18

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 (39) hide show
  1. package/README.md +6 -0
  2. package/dist/baseAppAccount.d.ts +3 -1
  3. package/dist/baseAppAccount.d.ts.map +1 -1
  4. package/dist/baseAppAccount.ephemeral.test.d.ts +2 -0
  5. package/dist/baseAppAccount.ephemeral.test.d.ts.map +1 -0
  6. package/dist/baseAppAccount.ephemeral.test.js +420 -0
  7. package/dist/baseAppAccount.ephemeral.test.js.map +1 -0
  8. package/dist/baseAppAccount.js +43 -16
  9. package/dist/baseAppAccount.js.map +1 -1
  10. package/dist/baseAppAccount.mainWallet.test.d.ts +2 -0
  11. package/dist/baseAppAccount.mainWallet.test.d.ts.map +1 -0
  12. package/dist/baseAppAccount.mainWallet.test.js +259 -0
  13. package/dist/baseAppAccount.mainWallet.test.js.map +1 -0
  14. package/dist/baseAppPaymentMaker.d.ts.map +1 -1
  15. package/dist/baseAppPaymentMaker.js +4 -3
  16. package/dist/baseAppPaymentMaker.js.map +1 -1
  17. package/dist/baseAppPaymentMaker.test.js +81 -69
  18. package/dist/baseAppPaymentMaker.test.js.map +1 -1
  19. package/dist/index.d.ts +1 -0
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +1 -0
  22. package/dist/index.js.map +1 -1
  23. package/dist/mainWalletPaymentMaker.d.ts +22 -0
  24. package/dist/mainWalletPaymentMaker.d.ts.map +1 -0
  25. package/dist/mainWalletPaymentMaker.js +141 -0
  26. package/dist/mainWalletPaymentMaker.js.map +1 -0
  27. package/dist/mainWalletPaymentMaker.test.d.ts +2 -0
  28. package/dist/mainWalletPaymentMaker.test.d.ts.map +1 -0
  29. package/dist/mainWalletPaymentMaker.test.js +310 -0
  30. package/dist/mainWalletPaymentMaker.test.js.map +1 -0
  31. package/dist/storage.d.ts +1 -0
  32. package/dist/storage.d.ts.map +1 -1
  33. package/dist/storage.js +9 -0
  34. package/dist/storage.js.map +1 -1
  35. package/dist/testHelpers.d.ts +88 -0
  36. package/dist/testHelpers.d.ts.map +1 -0
  37. package/dist/testHelpers.js +202 -0
  38. package/dist/testHelpers.js.map +1 -0
  39. package/package.json +3 -3
@@ -0,0 +1,259 @@
1
+ // Mock all external modules before imports
2
+ vi.mock('@base-org/account', () => ({
3
+ createBaseAccountSDK: vi.fn(() => ({
4
+ getProvider: vi.fn(() => ({
5
+ request: vi.fn()
6
+ }))
7
+ }))
8
+ }));
9
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
10
+ import { BaseAppAccount } from './baseAppAccount.js';
11
+ import { MainWalletPaymentMaker } from './mainWalletPaymentMaker.js';
12
+ import { MemoryStorage } from './storage.js';
13
+ import BigNumber from 'bignumber.js';
14
+ import { USDC_CONTRACT_ADDRESS_BASE } from '@atxp/client';
15
+ import { TEST_API_KEY, TEST_WALLET_ADDRESS, mockProvider, mockBaseAccountSDK, } from './testHelpers.js';
16
+ const { createBaseAccountSDK } = await import('@base-org/account');
17
+ describe('BaseAppAccount - Main Wallet Mode', () => {
18
+ let storage;
19
+ beforeEach(() => {
20
+ vi.clearAllMocks();
21
+ storage = new MemoryStorage();
22
+ });
23
+ afterEach(() => {
24
+ vi.restoreAllMocks();
25
+ });
26
+ describe('initialize with useEphemeralWallet=false', () => {
27
+ it('should initialize without creating ephemeral wallet', async () => {
28
+ const provider = mockProvider();
29
+ const sdk = mockBaseAccountSDK({ provider });
30
+ // @ts-expect-error - mocked function
31
+ createBaseAccountSDK.mockReturnValue(sdk);
32
+ const account = await BaseAppAccount.initialize({
33
+ walletAddress: TEST_WALLET_ADDRESS,
34
+ apiKey: TEST_API_KEY,
35
+ appName: 'test-app',
36
+ useEphemeralWallet: false,
37
+ storage,
38
+ });
39
+ // Should have main wallet address as account ID
40
+ expect(account.accountId).toBe(TEST_WALLET_ADDRESS);
41
+ // Should have main wallet payment maker
42
+ expect(account.paymentMakers['base']).toBeInstanceOf(MainWalletPaymentMaker);
43
+ // Should still connect wallet
44
+ expect(provider.request).toHaveBeenCalledWith({ method: 'wallet_connect' });
45
+ // Should NOT create ephemeral wallet or request spend permission
46
+ expect(createBaseAccountSDK).toHaveBeenCalledTimes(1);
47
+ // Storage should remain empty (no ephemeral wallet data saved)
48
+ const storageKey = `atxp-base-permission-${TEST_WALLET_ADDRESS}`;
49
+ expect(storage.get(storageKey)).toBeNull();
50
+ });
51
+ it('should make correct blockchain calls in main wallet mode', async () => {
52
+ const provider = mockProvider();
53
+ const sdk = mockBaseAccountSDK({ provider });
54
+ // @ts-expect-error - mocked function
55
+ createBaseAccountSDK.mockReturnValue(sdk);
56
+ await BaseAppAccount.initialize({
57
+ walletAddress: TEST_WALLET_ADDRESS,
58
+ apiKey: TEST_API_KEY,
59
+ appName: 'test-app',
60
+ useEphemeralWallet: false,
61
+ storage,
62
+ });
63
+ // Verify SDK initialization
64
+ expect(createBaseAccountSDK).toHaveBeenCalledWith({
65
+ appName: 'test-app',
66
+ appChainIds: [8453], // base.id
67
+ paymasterUrls: {
68
+ 8453: 'https://api.developer.coinbase.com/rpc/v1/base/snPdXqIzOGhRkGNJvEHM5bl9Hm3yRO3m'
69
+ }
70
+ });
71
+ // Verify provider setup
72
+ expect(sdk.getProvider).toHaveBeenCalled();
73
+ // Verify wallet_connect attempt
74
+ expect(provider.request).toHaveBeenCalledWith({ method: 'wallet_connect' });
75
+ // Verify NO ephemeral wallet operations
76
+ expect(provider.request).toHaveBeenCalledTimes(1); // Only wallet_connect
77
+ });
78
+ it('should handle wallet_connect failure gracefully', async () => {
79
+ const provider = mockProvider();
80
+ provider.request.mockRejectedValueOnce(new Error('wallet_connect not supported'));
81
+ const sdk = mockBaseAccountSDK({ provider });
82
+ // @ts-expect-error - mocked function
83
+ createBaseAccountSDK.mockReturnValue(sdk);
84
+ const account = await BaseAppAccount.initialize({
85
+ walletAddress: TEST_WALLET_ADDRESS,
86
+ apiKey: TEST_API_KEY,
87
+ appName: 'test-app',
88
+ useEphemeralWallet: false,
89
+ storage,
90
+ });
91
+ expect(account.accountId).toBe(TEST_WALLET_ADDRESS);
92
+ expect(account.paymentMakers['base']).toBeInstanceOf(MainWalletPaymentMaker);
93
+ });
94
+ it('should not require apiKey in main wallet mode', async () => {
95
+ const provider = mockProvider();
96
+ const sdk = mockBaseAccountSDK({ provider });
97
+ // @ts-expect-error - mocked function
98
+ createBaseAccountSDK.mockReturnValue(sdk);
99
+ // Should not throw without API key when useEphemeralWallet=false
100
+ const account = await BaseAppAccount.initialize({
101
+ walletAddress: TEST_WALLET_ADDRESS,
102
+ apiKey: '', // Empty API key
103
+ appName: 'test-app',
104
+ useEphemeralWallet: false,
105
+ storage,
106
+ });
107
+ expect(account.accountId).toBe(TEST_WALLET_ADDRESS);
108
+ });
109
+ it('should pass the provider to MainWalletPaymentMaker', async () => {
110
+ const provider = mockProvider();
111
+ const sdk = mockBaseAccountSDK({ provider });
112
+ // @ts-expect-error - mocked function
113
+ createBaseAccountSDK.mockReturnValue(sdk);
114
+ const account = await BaseAppAccount.initialize({
115
+ walletAddress: TEST_WALLET_ADDRESS,
116
+ apiKey: TEST_API_KEY,
117
+ appName: 'test-app',
118
+ useEphemeralWallet: false,
119
+ storage,
120
+ });
121
+ // Get the payment maker and verify it has the right properties
122
+ const paymentMaker = account.paymentMakers['base'];
123
+ expect(paymentMaker).toBeInstanceOf(MainWalletPaymentMaker);
124
+ // Test that the payment maker can use the provider
125
+ await paymentMaker.generateJWT({ paymentRequestId: 'test', codeChallenge: 'test' });
126
+ expect(provider.request).toHaveBeenCalledWith({
127
+ method: 'personal_sign',
128
+ params: expect.any(Array)
129
+ });
130
+ });
131
+ it('should not interact with storage in main wallet mode', async () => {
132
+ const provider = mockProvider();
133
+ const sdk = mockBaseAccountSDK({ provider });
134
+ // @ts-expect-error - mocked function
135
+ createBaseAccountSDK.mockReturnValue(sdk);
136
+ // Spy on storage methods
137
+ const getSpy = vi.spyOn(storage, 'get');
138
+ const setSpy = vi.spyOn(storage, 'set');
139
+ const deleteSpy = vi.spyOn(storage, 'delete');
140
+ await BaseAppAccount.initialize({
141
+ walletAddress: TEST_WALLET_ADDRESS,
142
+ apiKey: TEST_API_KEY,
143
+ appName: 'test-app',
144
+ useEphemeralWallet: false,
145
+ storage,
146
+ });
147
+ // Storage should not be accessed in main wallet mode
148
+ expect(getSpy).not.toHaveBeenCalled();
149
+ expect(setSpy).not.toHaveBeenCalled();
150
+ expect(deleteSpy).not.toHaveBeenCalled();
151
+ });
152
+ });
153
+ describe('initialize with useEphemeralWallet not specified', () => {
154
+ it('should default to ephemeral wallet mode for backward compatibility', async () => {
155
+ const provider = mockProvider();
156
+ const sdk = mockBaseAccountSDK({ provider });
157
+ // @ts-expect-error - mocked function
158
+ createBaseAccountSDK.mockReturnValue(sdk);
159
+ // This should throw because apiKey is required for ephemeral wallet mode
160
+ await expect(BaseAppAccount.initialize({
161
+ walletAddress: TEST_WALLET_ADDRESS,
162
+ apiKey: '', // Empty API key
163
+ appName: 'test-app',
164
+ storage,
165
+ // useEphemeralWallet not specified - should default to true
166
+ })).rejects.toThrow('Smart wallet API key is required for ephemeral wallet mode');
167
+ });
168
+ });
169
+ describe('clearAllStoredData in main wallet mode', () => {
170
+ it('should handle clearAllStoredData even though main wallet stores no data', () => {
171
+ const setSpy = vi.spyOn(storage, 'set');
172
+ const deleteSpy = vi.spyOn(storage, 'delete');
173
+ // Should not throw
174
+ BaseAppAccount.clearAllStoredData(TEST_WALLET_ADDRESS, storage);
175
+ // Should attempt to delete even if nothing was stored
176
+ expect(deleteSpy).toHaveBeenCalledWith(`atxp-base-permission-${TEST_WALLET_ADDRESS}`);
177
+ expect(setSpy).not.toHaveBeenCalled();
178
+ });
179
+ });
180
+ describe('payment functionality in main wallet mode', () => {
181
+ it('should make payment using the main wallet', async () => {
182
+ const provider = mockProvider();
183
+ provider.request.mockImplementation(async ({ method }) => {
184
+ if (method === 'wallet_connect')
185
+ return undefined;
186
+ if (method === 'personal_sign')
187
+ return '0xmocksignature';
188
+ if (method === 'eth_sendTransaction')
189
+ return '0xtxhash';
190
+ if (method === 'eth_getTransactionReceipt')
191
+ return { status: '0x1', blockNumber: '0x100' };
192
+ if (method === 'eth_blockNumber')
193
+ return '0x102';
194
+ throw new Error(`Unexpected method: ${method}`);
195
+ });
196
+ const sdk = mockBaseAccountSDK({ provider });
197
+ // @ts-expect-error - mocked function
198
+ createBaseAccountSDK.mockReturnValue(sdk);
199
+ const account = await BaseAppAccount.initialize({
200
+ walletAddress: TEST_WALLET_ADDRESS,
201
+ apiKey: TEST_API_KEY,
202
+ appName: 'test-app',
203
+ useEphemeralWallet: false,
204
+ storage,
205
+ });
206
+ const paymentMaker = account.paymentMakers['base'];
207
+ expect(paymentMaker).toBeDefined();
208
+ // Make a payment
209
+ const txHash = await paymentMaker.makePayment(new BigNumber(1.5), 'USDC', '0x1234567890123456789012345678901234567890', 'Test payment');
210
+ expect(txHash).toBe('0xtxhash');
211
+ // Verify eth_sendTransaction was called (it's the 2nd call after wallet_connect)
212
+ expect(provider.request).toHaveBeenCalledWith({
213
+ method: 'eth_sendTransaction',
214
+ params: [{
215
+ from: TEST_WALLET_ADDRESS,
216
+ to: USDC_CONTRACT_ADDRESS_BASE,
217
+ data: expect.any(String),
218
+ value: '0x0'
219
+ }]
220
+ });
221
+ });
222
+ it('should generate JWT for authentication', async () => {
223
+ const provider = mockProvider();
224
+ provider.request.mockImplementation(async ({ method }) => {
225
+ if (method === 'wallet_connect')
226
+ return undefined;
227
+ if (method === 'personal_sign')
228
+ return '0xmocksignature';
229
+ throw new Error(`Unexpected method: ${method}`);
230
+ });
231
+ const sdk = mockBaseAccountSDK({ provider });
232
+ // @ts-expect-error - mocked function
233
+ createBaseAccountSDK.mockReturnValue(sdk);
234
+ const account = await BaseAppAccount.initialize({
235
+ walletAddress: TEST_WALLET_ADDRESS,
236
+ apiKey: TEST_API_KEY,
237
+ appName: 'test-app',
238
+ useEphemeralWallet: false,
239
+ storage,
240
+ });
241
+ const paymentMaker = account.paymentMakers['base'];
242
+ const jwt = await paymentMaker.generateJWT({
243
+ paymentRequestId: 'test-payment-id',
244
+ codeChallenge: 'test-challenge'
245
+ });
246
+ // JWT should be base64url encoded
247
+ expect(jwt).toMatch(/^[A-Za-z0-9_-]+$/);
248
+ // Verify personal_sign was called
249
+ expect(provider.request).toHaveBeenCalledWith({
250
+ method: 'personal_sign',
251
+ params: [
252
+ expect.stringContaining('PayMCP Authorization Request'),
253
+ TEST_WALLET_ADDRESS
254
+ ]
255
+ });
256
+ });
257
+ });
258
+ });
259
+ //# sourceMappingURL=baseAppAccount.mainWallet.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseAppAccount.mainWallet.test.js","sourceRoot":"","sources":["../src/baseAppAccount.mainWallet.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"baseAppPaymentMaker.d.ts","sourceRoot":"","sources":["../src/baseAppPaymentMaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAiB,MAAM,cAAc,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAsDpE,qBAAa,mBAAoB,YAAW,YAAY;IACtD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAuB;gBAGxC,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,oBAAoB,EACjC,MAAM,CAAC,EAAE,MAAM;IAaX,WAAW,CAAC,EAAC,gBAAgB,EAAE,aAAa,EAAC,EAAE;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAsDlH,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA2D1G"}
1
+ {"version":3,"file":"baseAppPaymentMaker.d.ts","sourceRoot":"","sources":["../src/baseAppPaymentMaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAiB,MAAM,cAAc,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAsDpE,qBAAa,mBAAoB,YAAW,YAAY;IACtD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAuB;gBAGxC,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,oBAAoB,EACjC,MAAM,CAAC,EAAE,MAAM;IAaX,WAAW,CAAC,EAAC,gBAAgB,EAAE,aAAa,EAAC,EAAE;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAsDlH,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA4D1G"}
@@ -1,6 +1,6 @@
1
1
  import { USDC_CONTRACT_ADDRESS_BASE } from '@atxp/client';
2
2
  import { ConsoleLogger } from '@atxp/common';
3
- import { encodeFunctionData } from 'viem';
3
+ import { encodeFunctionData, parseEther } from 'viem';
4
4
  import { prepareSpendCallData } from '@base-org/account/spend-permission';
5
5
  // Helper function to convert to base64url that works in both Node.js and browsers
6
6
  function toBase64Url(data) {
@@ -131,7 +131,8 @@ export class BaseAppPaymentMaker {
131
131
  data: call.data,
132
132
  value: BigInt(call.value || '0x0')
133
133
  };
134
- })
134
+ }),
135
+ maxPriorityFeePerGas: parseEther('0.000000001')
135
136
  });
136
137
  const receipt = await this.smartWallet.client.waitForUserOperationReceipt({ hash });
137
138
  if (!receipt) {
@@ -145,7 +146,7 @@ export class BaseAppPaymentMaker {
145
146
  this.logger.info(`Spend permission executed successfully. UserOp: ${receipt.userOpHash}, TxHash: ${txHash}`);
146
147
  // Wait for additional confirmations to ensure the transaction is well-propagated
147
148
  // This helps avoid the "Transaction receipt could not be found" error
148
- await waitForTransactionConfirmations(this.smartWallet, txHash, 3, this.logger);
149
+ await waitForTransactionConfirmations(this.smartWallet, txHash, 2, this.logger);
149
150
  // Return the actual transaction hash, not the user operation hash
150
151
  // The payment verification system needs the on-chain transaction hash
151
152
  return txHash;
@@ -1 +1 @@
1
- {"version":3,"file":"baseAppPaymentMaker.js","sourceRoot":"","sources":["../src/baseAppPaymentMaker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseAppPaymentMaker.js","sourceRoot":"","sources":["../src/baseAppPaymentMaker.ts"],"names":[],"mappings":"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"}
@@ -1,41 +1,24 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ // Mock all external modules before imports
3
+ vi.mock('@base-org/account/spend-permission', () => ({
4
+ prepareSpendCallData: vi.fn()
5
+ }));
6
+ vi.mock('viem', async () => {
7
+ const actual = await vi.importActual('viem');
8
+ return {
9
+ ...actual,
10
+ encodeFunctionData: vi.fn(() => '0xmockencodeddata')
11
+ };
12
+ });
3
13
  import { BaseAppPaymentMaker } from './baseAppPaymentMaker.js';
14
+ import { USDC_CONTRACT_ADDRESS_BASE } from '@atxp/client';
15
+ import BigNumber from 'bignumber.js';
16
+ import { setupPaymentMocks, mockSpendPermission, mockEphemeralSmartWallet, mockBundlerClient, mockFailedBundlerClient, mockSpendCalls, TEST_RECEIVER_ADDRESS } from './testHelpers.js';
4
17
  describe('basePaymentMaker.generateJWT', () => {
5
18
  it('should generate EIP-1271 auth data with default payload', async () => {
6
- const privateKey = generatePrivateKey();
7
- const account = privateKeyToAccount(privateKey);
8
- // Create mock SpendPermission
9
- const mockSpendPermission = {
10
- signature: '0xmocksignature',
11
- permission: {
12
- account: account.address,
13
- spender: '0xspender',
14
- token: '0xtoken',
15
- allowance: '1000000',
16
- period: 86400,
17
- start: Math.floor(Date.now() / 1000),
18
- end: Math.floor(Date.now() / 1000) + 86400,
19
- salt: '1',
20
- extraData: '0x'
21
- }
22
- };
23
- // Create mock EphemeralSmartWallet
24
- const mockSmartWallet = {
25
- address: account.address,
26
- account: {
27
- address: account.address,
28
- signMessage: async (_message) => '0xmocksignature'
29
- },
30
- signer: {
31
- address: account.address,
32
- signMessage: async (_message) => '0xmocksignature',
33
- signTypedData: async (_params) => '0xmocksignature',
34
- signTransaction: async (_tx) => '0xmocksignature',
35
- getAddress: async () => account.address
36
- }
37
- };
38
- const paymentMaker = new BaseAppPaymentMaker(mockSpendPermission, mockSmartWallet);
19
+ const permission = mockSpendPermission();
20
+ const smartWallet = mockEphemeralSmartWallet();
21
+ const paymentMaker = new BaseAppPaymentMaker(permission, smartWallet);
39
22
  const authData = await paymentMaker.generateJWT({ paymentRequestId: '', codeChallenge: 'testCodeChallenge' });
40
23
  // Should return base64-encoded EIP-1271 auth data
41
24
  expect(authData).toBeDefined();
@@ -43,7 +26,7 @@ describe('basePaymentMaker.generateJWT', () => {
43
26
  // Decode and verify the auth data
44
27
  const decoded = JSON.parse(Buffer.from(authData, 'base64').toString('utf-8'));
45
28
  expect(decoded.type).toBe('EIP1271_AUTH');
46
- expect(decoded.walletAddress).toBe(account.address);
29
+ expect(decoded.walletAddress).toBe(smartWallet.address);
47
30
  expect(decoded.message).toContain('PayMCP Authorization Request');
48
31
  expect(decoded.signature).toBeDefined();
49
32
  expect(decoded.timestamp).toBeDefined();
@@ -51,39 +34,9 @@ describe('basePaymentMaker.generateJWT', () => {
51
34
  expect(decoded.code_challenge).toBe('testCodeChallenge');
52
35
  });
53
36
  it('should include payment request id if provided', async () => {
54
- const privateKey = generatePrivateKey();
55
- const account = privateKeyToAccount(privateKey);
56
- // Create mock SpendPermission
57
- const mockSpendPermission = {
58
- signature: '0xmocksignature',
59
- permission: {
60
- account: account.address,
61
- spender: '0xspender',
62
- token: '0xtoken',
63
- allowance: '1000000',
64
- period: 86400,
65
- start: Math.floor(Date.now() / 1000),
66
- end: Math.floor(Date.now() / 1000) + 86400,
67
- salt: '1',
68
- extraData: '0x'
69
- }
70
- };
71
- // Create mock EphemeralSmartWallet
72
- const mockSmartWallet = {
73
- address: account.address,
74
- account: {
75
- address: account.address,
76
- signMessage: async (_message) => '0xmocksignature'
77
- },
78
- signer: {
79
- address: account.address,
80
- signMessage: async (_message) => '0xmocksignature',
81
- signTypedData: async (_params) => '0xmocksignature',
82
- signTransaction: async (_tx) => '0xmocksignature',
83
- getAddress: async () => account.address
84
- }
85
- };
86
- const paymentMaker = new BaseAppPaymentMaker(mockSpendPermission, mockSmartWallet);
37
+ const permission = mockSpendPermission();
38
+ const smartWallet = mockEphemeralSmartWallet();
39
+ const paymentMaker = new BaseAppPaymentMaker(permission, smartWallet);
87
40
  const paymentRequestId = 'id1';
88
41
  const authData = await paymentMaker.generateJWT({ paymentRequestId, codeChallenge: '' });
89
42
  // Decode and verify the auth data includes payment request ID
@@ -92,4 +45,63 @@ describe('basePaymentMaker.generateJWT', () => {
92
45
  expect(decoded.message).toContain(`Payment Request ID: ${paymentRequestId}`);
93
46
  });
94
47
  });
48
+ describe('baseAppPaymentMaker.makePayment', () => {
49
+ it('should successfully make a USDC payment', async () => {
50
+ const permission = mockSpendPermission();
51
+ const bundlerClient = mockBundlerClient();
52
+ const smartWallet = mockEphemeralSmartWallet({ client: bundlerClient });
53
+ const spendCalls = mockSpendCalls();
54
+ const { prepareSpendCallData } = await setupPaymentMocks({ spendCalls });
55
+ const paymentMaker = new BaseAppPaymentMaker(permission, smartWallet);
56
+ const amount = new BigNumber(1.5); // 1.5 USDC
57
+ const txHash = await paymentMaker.makePayment(amount, 'USDC', TEST_RECEIVER_ADDRESS, 'test payment');
58
+ // Verify the transaction hash
59
+ expect(txHash).toBe('0xtxhash');
60
+ // Verify prepareSpendCallData was called with correct amount
61
+ expect(prepareSpendCallData).toHaveBeenCalledWith(permission, 1500000n); // 1.5 USDC = 1,500,000 in smallest units
62
+ // Verify sendUserOperation was called with correct parameters
63
+ expect(bundlerClient.sendUserOperation).toHaveBeenCalledWith({
64
+ account: smartWallet.account,
65
+ calls: [
66
+ // Spend permission calls
67
+ { to: '0xcontract1', data: '0xdata1', value: 0n },
68
+ { to: '0xcontract2', data: '0xdata2', value: 0n },
69
+ // Transfer call
70
+ {
71
+ to: USDC_CONTRACT_ADDRESS_BASE,
72
+ data: expect.any(String), // Encoded transfer function
73
+ value: 0n
74
+ }
75
+ ],
76
+ maxPriorityFeePerGas: expect.any(BigInt)
77
+ });
78
+ // Verify waitForUserOperationReceipt was called
79
+ expect(bundlerClient.waitForUserOperationReceipt).toHaveBeenCalledWith({ hash: '0xoperationhash' });
80
+ });
81
+ it('should throw error for non-USDC currency', async () => {
82
+ const permission = mockSpendPermission();
83
+ const smartWallet = mockEphemeralSmartWallet();
84
+ const paymentMaker = new BaseAppPaymentMaker(permission, smartWallet);
85
+ const amount = new BigNumber(1.5);
86
+ await expect(paymentMaker.makePayment(amount, 'ETH', TEST_RECEIVER_ADDRESS, 'test payment')).rejects.toThrow('Only usdc currency is supported');
87
+ });
88
+ it('should throw error if user operation fails', async () => {
89
+ const permission = mockSpendPermission();
90
+ const bundlerClient = mockFailedBundlerClient({ failureType: 'receipt' });
91
+ const smartWallet = mockEphemeralSmartWallet({ client: bundlerClient });
92
+ await setupPaymentMocks({ spendCalls: [] });
93
+ const paymentMaker = new BaseAppPaymentMaker(permission, smartWallet);
94
+ const amount = new BigNumber(1.5);
95
+ await expect(paymentMaker.makePayment(amount, 'USDC', TEST_RECEIVER_ADDRESS, 'test payment')).rejects.toThrow('User operation failed');
96
+ });
97
+ it('should throw error if transaction hash is not returned', async () => {
98
+ const permission = mockSpendPermission();
99
+ const bundlerClient = mockFailedBundlerClient({ failureType: 'noTxHash' });
100
+ const smartWallet = mockEphemeralSmartWallet({ client: bundlerClient });
101
+ await setupPaymentMocks({ spendCalls: [] });
102
+ const paymentMaker = new BaseAppPaymentMaker(permission, smartWallet);
103
+ const amount = new BigNumber(1.5);
104
+ await expect(paymentMaker.makePayment(amount, 'USDC', TEST_RECEIVER_ADDRESS, 'test payment')).rejects.toThrow('User operation was executed but no transaction hash was returned');
105
+ });
106
+ });
95
107
  //# sourceMappingURL=baseAppPaymentMaker.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"baseAppPaymentMaker.test.js","sourceRoot":"","sources":["../src/baseAppPaymentMaker.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseAppPaymentMaker.test.js","sourceRoot":"","sources":["../src/baseAppPaymentMaker.test.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { BaseAppAccount } from './baseAppAccount.js';
2
2
  export { BaseAppPaymentMaker } from './baseAppPaymentMaker.js';
3
+ export { MainWalletPaymentMaker, type MainWalletProvider } from './mainWalletPaymentMaker.js';
3
4
  export type { SpendPermission } from './types.js';
4
5
  export { type IStorage, type Intermediary as StoredPermissionData, IntermediaryStorage as PermissionStorage, BrowserStorage, MemoryStorage } from './storage.js';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,YAAY,IAAI,oBAAoB,EACzC,mBAAmB,IAAI,iBAAiB,EACxC,cAAc,EACd,aAAa,EACd,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC9F,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,YAAY,IAAI,oBAAoB,EACzC,mBAAmB,IAAI,iBAAiB,EACxC,cAAc,EACd,aAAa,EACd,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { BaseAppAccount } from './baseAppAccount.js';
2
2
  export { BaseAppPaymentMaker } from './baseAppPaymentMaker.js';
3
+ export { MainWalletPaymentMaker } from './mainWalletPaymentMaker.js';
3
4
  export { IntermediaryStorage as PermissionStorage, BrowserStorage, MemoryStorage } from './storage.js';
4
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAGL,mBAAmB,IAAI,iBAAiB,EACxC,cAAc,EACd,aAAa,EACd,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAA2B,MAAM,6BAA6B,CAAC;AAE9F,OAAO,EAGL,mBAAmB,IAAI,iBAAiB,EACxC,cAAc,EACd,aAAa,EACd,MAAM,cAAc,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { PaymentMaker } from '@atxp/client';
2
+ import BigNumber from 'bignumber.js';
3
+ import { Logger, Currency } from '@atxp/common';
4
+ export type MainWalletProvider = {
5
+ request: (params: {
6
+ method: string;
7
+ params?: any[];
8
+ }) => Promise<any>;
9
+ };
10
+ export declare class MainWalletPaymentMaker implements PaymentMaker {
11
+ private walletAddress;
12
+ private provider;
13
+ private logger;
14
+ constructor(walletAddress: string, provider: MainWalletProvider, logger?: Logger);
15
+ generateJWT(payload: {
16
+ paymentRequestId: string;
17
+ codeChallenge: string;
18
+ }): Promise<string>;
19
+ makePayment(amount: BigNumber, currency: Currency, receiver: string, _reason: string): Promise<string>;
20
+ private waitForTransactionConfirmations;
21
+ }
22
+ //# sourceMappingURL=mainWalletPaymentMaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mainWalletPaymentMaker.d.ts","sourceRoot":"","sources":["../src/mainWalletPaymentMaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAiB,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAiB/D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,CAAC,MAAM,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;KAChB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACpB,CAAC;AAEF,qBAAa,sBAAuB,YAAW,YAAY;IAIvD,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,QAAQ;IAJlB,OAAO,CAAC,MAAM,CAAS;gBAGb,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,kBAAkB,EACpC,MAAM,CAAC,EAAE,MAAM;IAKX,WAAW,CAAC,OAAO,EAAE;QACzB,gBAAgB,EAAE,MAAM,CAAC;QACzB,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,MAAM,CAAC;IAsDb,WAAW,CACf,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;YA6CJ,+BAA+B;CA2C9C"}