🌳
pt0/serverF/ethpayF/peatWalletsBaseF.mts
4import type { HDNodeWallet } from 'ethers'
6export const makePeatWalletGetters = (getWal: () => HDNodeWallet) => {
7 let _registered = false, _wal: HDNodeWallet | undefined, _scratch: HDNodeWallet | null = null, _testfund: HDNodeWallet | null = null
9 const getPeatWal = () => {
10 if (!_registered) {
11 _wal ||= getWal()
12 assertDefined(_wal.address === peatWalAddr && peatWalAddr, {peatWalAddr, actual: _wal.address})
13 registerEthSendAllowlist(_wal.address, [peatScratchAddr])
14 _registered = true
15 }
17 return _wal
18 }
20 const getPeatScratchWallet = () => {
21 if (!_scratch) {
22 const peatWal = getPeatWal()
23 _scratch = peatWal.deriveChild(0)
24 assertDefined(_scratch.address === peatScratchAddr && peatScratchAddr, {peatScratchAddr, actual: _scratch.address})
25 registerEthSendAllowlist(_scratch.address, [peatTestfundAddr])
26 }
27 return _scratch
28 }
30 const getPeatTestfundWallet = () => {
31 if (!_testfund) {
32 getPeatScratchWallet()
33 _testfund = getPeatWal().deriveChild(1)
34 assertDefined(_testfund.address === peatTestfundAddr && peatTestfundAddr, {peatTestfundAddr, actual: _testfund.address})
35 registerEthSendAllowlist(_testfund.address, [peatScratchAddr])
36 }
37 return _testfund
38 }
40 return { getPeatWal, getPeatScratchWallet, getPeatTestfundWallet }