@eth-optimism/actions-sdk 0.6.0 → 0.7.0
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/actions/lend/core/LendProvider.js +2 -2
- package/dist/actions/lend/core/LendProvider.js.map +1 -1
- package/dist/actions/shared/morpho/contracts.d.ts +1 -1
- package/dist/actions/shared/morpho/contracts.js +1 -1
- package/dist/actions/swap/core/SwapProvider.d.ts.map +1 -1
- package/dist/actions/swap/core/SwapProvider.js +4 -4
- package/dist/actions/swap/core/SwapProvider.js.map +1 -1
- package/dist/actions/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -1
- package/dist/actions/swap/namespaces/WalletSwapNamespace.js +5 -2
- package/dist/actions/swap/namespaces/WalletSwapNamespace.js.map +1 -1
- package/dist/constants/supportedChains.d.ts +5790 -2
- package/dist/constants/supportedChains.d.ts.map +1 -1
- package/dist/constants/supportedChains.js +66 -20
- package/dist/constants/supportedChains.js.map +1 -1
- package/dist/core/error/errors.d.ts +24 -0
- package/dist/core/error/errors.d.ts.map +1 -1
- package/dist/core/error/errors.js +28 -0
- package/dist/core/error/errors.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/services/ChainManager.d.ts.map +1 -1
- package/dist/services/ChainManager.js +16 -0
- package/dist/services/ChainManager.js.map +1 -1
- package/dist/types/actions.d.ts +12 -7
- package/dist/types/actions.d.ts.map +1 -1
- package/dist/types/actions.js +22 -1
- package/dist/types/actions.js.map +1 -1
- package/dist/types/providers.d.ts +20 -6
- package/dist/types/providers.d.ts.map +1 -1
- package/dist/types/providers.js +12 -1
- package/dist/types/providers.js.map +1 -1
- package/dist/utils/__tests__/lendConfig.test.d.ts +2 -0
- package/dist/utils/__tests__/lendConfig.test.d.ts.map +1 -0
- package/dist/utils/__tests__/lendConfig.test.js +44 -0
- package/dist/utils/__tests__/lendConfig.test.js.map +1 -0
- package/dist/utils/lendConfig.d.ts +9 -0
- package/dist/utils/lendConfig.d.ts.map +1 -0
- package/dist/utils/lendConfig.js +12 -0
- package/dist/utils/lendConfig.js.map +1 -0
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts +9 -0
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.js +11 -0
- package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +13 -0
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
- package/dist/wallet/core/wallets/eoa/EOAWallet.d.ts +12 -4
- package/dist/wallet/core/wallets/eoa/EOAWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/eoa/EOAWallet.js +17 -12
- package/dist/wallet/core/wallets/eoa/EOAWallet.js.map +1 -1
- package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js +37 -20
- package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +4 -1
- package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -1
- package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
- package/dist/wallet/node/wallets/local/__tests__/LocalWallet.spec.js +2 -1
- package/dist/wallet/node/wallets/local/__tests__/LocalWallet.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js +2 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +2 -1
- package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -1
- package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
- package/package.json +1 -1
- package/src/actions/lend/core/LendProvider.ts +2 -2
- package/src/actions/shared/morpho/contracts.ts +1 -1
- package/src/actions/swap/core/SwapProvider.ts +4 -5
- package/src/actions/swap/namespaces/WalletSwapNamespace.ts +5 -4
- package/src/constants/supportedChains.ts +81 -21
- package/src/core/error/errors.ts +37 -0
- package/src/index.ts +13 -1
- package/src/services/ChainManager.ts +19 -0
- package/src/types/actions.ts +25 -10
- package/src/types/providers.ts +24 -6
- package/src/utils/__tests__/lendConfig.test.ts +52 -0
- package/src/utils/lendConfig.ts +17 -0
- package/src/wallet/core/wallets/abstract/Wallet.ts +12 -0
- package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +15 -0
- package/src/wallet/core/wallets/eoa/EOAWallet.ts +17 -12
- package/src/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.ts +43 -24
- package/src/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +4 -1
- package/src/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -1
- package/src/wallet/node/wallets/local/__tests__/LocalWallet.spec.ts +2 -1
- package/src/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.ts +2 -1
- package/src/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +2 -1
- package/src/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -1
|
@@ -120,10 +120,44 @@ describe('EOAWallet', () => {
|
|
|
120
120
|
|
|
121
121
|
expect(createWalletClient).toHaveBeenCalledOnce()
|
|
122
122
|
const callArgs = vi.mocked(createWalletClient).mock.calls[0][0]
|
|
123
|
-
expect(callArgs.account).
|
|
123
|
+
expect(callArgs.account).toMatchObject({
|
|
124
|
+
address: mockLocalAccount.address,
|
|
125
|
+
})
|
|
124
126
|
expect(callArgs.chain).toBe(unichain)
|
|
125
127
|
expect(walletClient).toBe(mockWalletClient)
|
|
126
128
|
})
|
|
129
|
+
|
|
130
|
+
it('attaches a nonce manager so back-to-back sends get sequential nonces', async () => {
|
|
131
|
+
await wallet.walletClient(unichain.id)
|
|
132
|
+
|
|
133
|
+
const callArgs = vi.mocked(createWalletClient).mock.calls[0][0]
|
|
134
|
+
const account = callArgs.account as { nonceManager?: unknown }
|
|
135
|
+
expect(account.nonceManager).toMatchObject({
|
|
136
|
+
consume: expect.any(Function),
|
|
137
|
+
increment: expect.any(Function),
|
|
138
|
+
get: expect.any(Function),
|
|
139
|
+
reset: expect.any(Function),
|
|
140
|
+
})
|
|
141
|
+
})
|
|
142
|
+
|
|
143
|
+
it('respects a nonce manager already set on the signer', async () => {
|
|
144
|
+
const customNonceManager = {
|
|
145
|
+
consume: vi.fn(),
|
|
146
|
+
increment: vi.fn(),
|
|
147
|
+
get: vi.fn(),
|
|
148
|
+
reset: vi.fn(),
|
|
149
|
+
}
|
|
150
|
+
;(mockLocalAccount as LocalAccount).nonceManager =
|
|
151
|
+
customNonceManager as unknown as LocalAccount['nonceManager']
|
|
152
|
+
|
|
153
|
+
await wallet.walletClient(unichain.id)
|
|
154
|
+
|
|
155
|
+
const callArgs = vi.mocked(createWalletClient).mock.calls[0][0]
|
|
156
|
+
const account = callArgs.account as { nonceManager?: unknown }
|
|
157
|
+
expect(account.nonceManager).toBe(customNonceManager)
|
|
158
|
+
|
|
159
|
+
delete (mockLocalAccount as LocalAccount).nonceManager
|
|
160
|
+
})
|
|
127
161
|
})
|
|
128
162
|
|
|
129
163
|
describe('send', () => {
|
|
@@ -191,13 +225,12 @@ describe('EOAWallet', () => {
|
|
|
191
225
|
.mockResolvedValueOnce(mockReceipt2.transactionHash)
|
|
192
226
|
.mockResolvedValueOnce(mockReceipt3.transactionHash)
|
|
193
227
|
|
|
228
|
+
// sendBatch performs exactly one inclusion wait per transaction (the
|
|
229
|
+
// wait inside `send()`). One mock per tx.
|
|
194
230
|
vi.mocked(mockPublicClient.waitForTransactionReceipt)
|
|
195
231
|
.mockResolvedValueOnce(mockReceipt)
|
|
196
|
-
.mockResolvedValueOnce(mockReceipt)
|
|
197
|
-
.mockResolvedValueOnce(mockReceipt2)
|
|
198
232
|
.mockResolvedValueOnce(mockReceipt2)
|
|
199
233
|
.mockResolvedValueOnce(mockReceipt3)
|
|
200
|
-
.mockResolvedValueOnce(mockReceipt3)
|
|
201
234
|
})
|
|
202
235
|
|
|
203
236
|
it('should send multiple transactions sequentially', async () => {
|
|
@@ -226,33 +259,19 @@ describe('EOAWallet', () => {
|
|
|
226
259
|
)
|
|
227
260
|
})
|
|
228
261
|
|
|
229
|
-
it('
|
|
262
|
+
it('waits for exactly one confirmation per transaction', async () => {
|
|
230
263
|
await wallet.sendBatch(
|
|
231
264
|
[mockTransactionData1, mockTransactionData2],
|
|
232
265
|
unichain.id,
|
|
233
266
|
)
|
|
234
267
|
|
|
235
|
-
//
|
|
236
|
-
// 1. Initial wait in send()
|
|
237
|
-
// 2. Extra confirmation wait (confirmations: 2) in sendBatch()
|
|
268
|
+
// One inclusion wait per tx, via `send()`.
|
|
238
269
|
expect(mockPublicClient.waitForTransactionReceipt).toHaveBeenCalledTimes(
|
|
239
|
-
|
|
270
|
+
2,
|
|
240
271
|
)
|
|
241
|
-
|
|
242
|
-
// Check that extra confirmation wait was called with confirmations: 2
|
|
243
272
|
expect(
|
|
244
273
|
mockPublicClient.waitForTransactionReceipt,
|
|
245
|
-
).
|
|
246
|
-
hash: mockReceipt.transactionHash,
|
|
247
|
-
confirmations: 2,
|
|
248
|
-
})
|
|
249
|
-
|
|
250
|
-
expect(
|
|
251
|
-
mockPublicClient.waitForTransactionReceipt,
|
|
252
|
-
).toHaveBeenNthCalledWith(4, {
|
|
253
|
-
hash: mockReceipt2.transactionHash,
|
|
254
|
-
confirmations: 2,
|
|
255
|
-
})
|
|
274
|
+
).not.toHaveBeenCalledWith(expect.objectContaining({ confirmations: 2 }))
|
|
256
275
|
})
|
|
257
276
|
|
|
258
277
|
it('should get public client for each transaction', async () => {
|
|
@@ -261,8 +280,8 @@ describe('EOAWallet', () => {
|
|
|
261
280
|
unichain.id,
|
|
262
281
|
)
|
|
263
282
|
|
|
264
|
-
//
|
|
265
|
-
expect(mockChainManager.getPublicClient).toHaveBeenCalledTimes(
|
|
283
|
+
// One getPublicClient call per transaction (via send()).
|
|
284
|
+
expect(mockChainManager.getPublicClient).toHaveBeenCalledTimes(2)
|
|
266
285
|
expect(mockChainManager.getPublicClient).toHaveBeenCalledWith(unichain.id)
|
|
267
286
|
})
|
|
268
287
|
|
|
@@ -115,7 +115,10 @@ describe('PrivyWallet', () => {
|
|
|
115
115
|
|
|
116
116
|
expect(createWalletClient).toHaveBeenCalledOnce()
|
|
117
117
|
const callArgs = vi.mocked(createWalletClient).mock.calls[0][0]
|
|
118
|
-
expect(callArgs.account).
|
|
118
|
+
expect(callArgs.account).toMatchObject({
|
|
119
|
+
address: mockLocalAccount.address,
|
|
120
|
+
})
|
|
121
|
+
expect(callArgs.account).toHaveProperty('nonceManager')
|
|
119
122
|
expect(callArgs.chain).toBe(mockChainManager.getChain(unichain.id))
|
|
120
123
|
expect(walletClient).toBe(mockWalletClient)
|
|
121
124
|
})
|
|
@@ -97,7 +97,8 @@ describe('TurnkeyWallet', () => {
|
|
|
97
97
|
|
|
98
98
|
expect(createWalletClient).toHaveBeenCalledOnce()
|
|
99
99
|
const args = vi.mocked(createWalletClient).mock.calls[0][0]
|
|
100
|
-
expect(args.account).
|
|
100
|
+
expect(args.account).toMatchObject({ address: mockLocalAccount.address })
|
|
101
|
+
expect(args.account).toHaveProperty('nonceManager')
|
|
101
102
|
expect(args.chain).toBe(mockChainManager.getChain(unichain.id))
|
|
102
103
|
expect(walletClient).toBe(mockWalletClient)
|
|
103
104
|
})
|
|
@@ -57,7 +57,8 @@ describe('LocalWallet', () => {
|
|
|
57
57
|
|
|
58
58
|
expect(createWalletClient).toHaveBeenCalledOnce()
|
|
59
59
|
const args = vi.mocked(createWalletClient).mock.calls[0][0]
|
|
60
|
-
expect(args.account).
|
|
60
|
+
expect(args.account).toMatchObject({ address: mockAccount.address })
|
|
61
|
+
expect(args.account).toHaveProperty('nonceManager')
|
|
61
62
|
expect(args.chain).toBe(mockChainManager.getChain(unichain.id))
|
|
62
63
|
expect(walletClient).toBe(mockWalletClient)
|
|
63
64
|
})
|
|
@@ -123,7 +123,8 @@ describe('DynamicWallet', () => {
|
|
|
123
123
|
|
|
124
124
|
expect(createWalletClient).toHaveBeenCalledOnce()
|
|
125
125
|
const args = vi.mocked(createWalletClient).mock.calls[0][0]
|
|
126
|
-
expect(args.account).
|
|
126
|
+
expect(args.account).toMatchObject({ address: mockLocalAccount.address })
|
|
127
|
+
expect(args.account).toHaveProperty('nonceManager')
|
|
127
128
|
expect(args.chain).toBe(mockChainManager.getChain(unichain.id))
|
|
128
129
|
expect(walletClient).toBe(mockWalletClient)
|
|
129
130
|
})
|
|
@@ -102,7 +102,8 @@ describe('PrivyWallet (React)', () => {
|
|
|
102
102
|
|
|
103
103
|
expect(createWalletClient).toHaveBeenCalledOnce()
|
|
104
104
|
const args = vi.mocked(createWalletClient).mock.calls[0][0]
|
|
105
|
-
expect(args.account).
|
|
105
|
+
expect(args.account).toMatchObject({ address: mockLocalAccount.address })
|
|
106
|
+
expect(args.account).toHaveProperty('nonceManager')
|
|
106
107
|
expect(args.chain).toBe(mockChainManager.getChain(unichain.id))
|
|
107
108
|
expect(walletClient).toBe(mockWalletClient)
|
|
108
109
|
})
|
|
@@ -92,7 +92,8 @@ describe('TurnkeyWallet', () => {
|
|
|
92
92
|
|
|
93
93
|
expect(createWalletClient).toHaveBeenCalledOnce()
|
|
94
94
|
const args = vi.mocked(createWalletClient).mock.calls[0][0]
|
|
95
|
-
expect(args.account).
|
|
95
|
+
expect(args.account).toMatchObject({ address: mockLocalAccount.address })
|
|
96
|
+
expect(args.account).toHaveProperty('nonceManager')
|
|
96
97
|
expect(args.chain).toBe(mockChainManager.getChain(unichain.id))
|
|
97
98
|
expect(walletClient).toBe(mockWalletClient)
|
|
98
99
|
})
|