kokio-sdk 3.4.0 → 3.5.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/README.md +8 -4
- package/dist/esm/abis/DeviceWallet.js +29 -0
- package/dist/esm/abis/ESIMWallet.js +55 -0
- package/dist/esm/abis/PaymentAdapter.js +53 -0
- package/dist/esm/abis/ProtocolAdmin.js +48 -0
- package/dist/esm/abis/Registry.js +55 -0
- package/dist/esm/abis/RegistryHelper.js +13 -0
- package/dist/esm/admin/config-admin.js +1 -1
- package/dist/esm/admin/interface/eSIMWalletClass.js +4 -1
- package/dist/esm/admin/interface/paymentAdapterClass.js +4 -1
- package/dist/esm/admin/interface/protocolAdminClass.js +7 -1
- package/dist/esm/admin/interface/registryClass.js +4 -1
- package/dist/esm/interface/deviceWalletClass.js +6 -3
- package/dist/esm/interface/eSIMWalletClass.js +7 -1
- package/dist/esm/interface/registryClass.js +4 -1
- package/dist/esm/logic/admin/eSIMWallet.eoa.js +9 -1
- package/dist/esm/logic/admin/paymentAdapter.eoa.js +16 -0
- package/dist/esm/logic/admin/protocolAdmin.eoa.js +34 -0
- package/dist/esm/logic/admin/reads/eSIMWallet.reads.js +12 -0
- package/dist/esm/logic/admin/reads/registry.reads.js +12 -0
- package/dist/esm/logic/constants.js +11 -14
- package/dist/esm/logic/deviceWallet.js +19 -6
- package/dist/esm/logic/eSIMWallet.js +36 -0
- package/dist/esm/logic/errors.js +14 -0
- package/dist/esm/logic/registry.js +12 -0
- package/dist/types/abis/DeviceWallet.d.ts +22 -0
- package/dist/types/abis/ESIMWallet.d.ts +42 -0
- package/dist/types/abis/PaymentAdapter.d.ts +42 -0
- package/dist/types/abis/ProtocolAdmin.d.ts +37 -0
- package/dist/types/abis/Registry.d.ts +42 -0
- package/dist/types/abis/RegistryHelper.d.ts +10 -0
- package/dist/types/admin/config-admin.d.ts +1 -1
- package/dist/types/admin/interface/eSIMWalletClass.d.ts +1 -0
- package/dist/types/admin/interface/paymentAdapterClass.d.ts +1 -0
- package/dist/types/admin/interface/protocolAdminClass.d.ts +2 -0
- package/dist/types/admin/interface/registryClass.d.ts +1 -0
- package/dist/types/interface/deviceWalletClass.d.ts +2 -1
- package/dist/types/interface/eSIMWalletClass.d.ts +2 -0
- package/dist/types/interface/registryClass.d.ts +1 -0
- package/dist/types/logic/admin/eSIMWallet.eoa.d.ts +3 -0
- package/dist/types/logic/admin/paymentAdapter.eoa.d.ts +6 -0
- package/dist/types/logic/admin/protocolAdmin.eoa.d.ts +14 -0
- package/dist/types/logic/admin/reads/eSIMWallet.reads.d.ts +5 -0
- package/dist/types/logic/admin/reads/registry.reads.d.ts +2 -0
- package/dist/types/logic/deviceWallet.d.ts +11 -5
- package/dist/types/logic/eSIMWallet.d.ts +14 -0
- package/dist/types/logic/errors.d.ts +10 -0
- package/dist/types/logic/registry.d.ts +2 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -249,10 +249,14 @@ const { factoryAddresses, chain, rpcURL } = await kokio.constants;
|
|
|
249
249
|
```
|
|
250
250
|
|
|
251
251
|
The SDK resolves these from the wallet client's connected chain id, so you do not
|
|
252
|
-
pass addresses yourself.
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
252
|
+
pass addresses yourself.
|
|
253
|
+
|
|
254
|
+
| Chain | Chain id | EntryPoint |
|
|
255
|
+
|---|---|---|
|
|
256
|
+
| Base mainnet | `8453` | v0.8, `0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108` |
|
|
257
|
+
| Base Sepolia | `84532` | v0.8, `0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108` |
|
|
258
|
+
|
|
259
|
+
Any other chain id throws `UnsupportedChainError`. The contract addresses for each chain are in `src/logic/constants.ts`, taken from the deployment records in `smart-contract-suite/deployments/`.
|
|
256
260
|
|
|
257
261
|
## Testing
|
|
258
262
|
|
|
@@ -453,6 +453,25 @@ const DeviceWallet = [
|
|
|
453
453
|
"outputs": [],
|
|
454
454
|
"stateMutability": "nonpayable"
|
|
455
455
|
},
|
|
456
|
+
{
|
|
457
|
+
"type": "function",
|
|
458
|
+
"name": "rotationChallenge",
|
|
459
|
+
"inputs": [
|
|
460
|
+
{
|
|
461
|
+
"name": "newOwner",
|
|
462
|
+
"type": "bytes32[2]",
|
|
463
|
+
"internalType": "bytes32[2]"
|
|
464
|
+
}
|
|
465
|
+
],
|
|
466
|
+
"outputs": [
|
|
467
|
+
{
|
|
468
|
+
"name": "",
|
|
469
|
+
"type": "bytes",
|
|
470
|
+
"internalType": "bytes"
|
|
471
|
+
}
|
|
472
|
+
],
|
|
473
|
+
"stateMutability": "view"
|
|
474
|
+
},
|
|
456
475
|
{
|
|
457
476
|
"type": "function",
|
|
458
477
|
"name": "supportsInterface",
|
|
@@ -498,6 +517,11 @@ const DeviceWallet = [
|
|
|
498
517
|
"name": "newOwner",
|
|
499
518
|
"type": "bytes32[2]",
|
|
500
519
|
"internalType": "bytes32[2]"
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
"name": "newOwnerSignature",
|
|
523
|
+
"type": "bytes",
|
|
524
|
+
"internalType": "bytes"
|
|
501
525
|
}
|
|
502
526
|
],
|
|
503
527
|
"outputs": [
|
|
@@ -838,6 +862,11 @@ const DeviceWallet = [
|
|
|
838
862
|
"name": "InvalidInitialization",
|
|
839
863
|
"inputs": []
|
|
840
864
|
},
|
|
865
|
+
{
|
|
866
|
+
"type": "error",
|
|
867
|
+
"name": "NewOwnerKeyCannotSign",
|
|
868
|
+
"inputs": []
|
|
869
|
+
},
|
|
841
870
|
{
|
|
842
871
|
"type": "error",
|
|
843
872
|
"name": "NotInitializing",
|
|
@@ -10,6 +10,19 @@ const ESIMWallet = [
|
|
|
10
10
|
"outputs": [],
|
|
11
11
|
"stateMutability": "nonpayable"
|
|
12
12
|
},
|
|
13
|
+
{
|
|
14
|
+
"type": "function",
|
|
15
|
+
"name": "adminAllowanceUSDCents",
|
|
16
|
+
"inputs": [],
|
|
17
|
+
"outputs": [
|
|
18
|
+
{
|
|
19
|
+
"name": "",
|
|
20
|
+
"type": "uint64",
|
|
21
|
+
"internalType": "uint64"
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"stateMutability": "view"
|
|
25
|
+
},
|
|
13
26
|
{
|
|
14
27
|
"type": "function",
|
|
15
28
|
"name": "buyDataBundleWithToken",
|
|
@@ -286,6 +299,19 @@ const ESIMWallet = [
|
|
|
286
299
|
],
|
|
287
300
|
"stateMutability": "nonpayable"
|
|
288
301
|
},
|
|
302
|
+
{
|
|
303
|
+
"type": "function",
|
|
304
|
+
"name": "setAdminAllowanceUSDCents",
|
|
305
|
+
"inputs": [
|
|
306
|
+
{
|
|
307
|
+
"name": "_allowance",
|
|
308
|
+
"type": "uint64",
|
|
309
|
+
"internalType": "uint64"
|
|
310
|
+
}
|
|
311
|
+
],
|
|
312
|
+
"outputs": [],
|
|
313
|
+
"stateMutability": "nonpayable"
|
|
314
|
+
},
|
|
289
315
|
{
|
|
290
316
|
"type": "function",
|
|
291
317
|
"name": "setESIMUniqueIdentifier",
|
|
@@ -354,6 +380,19 @@ const ESIMWallet = [
|
|
|
354
380
|
"outputs": [],
|
|
355
381
|
"stateMutability": "pure"
|
|
356
382
|
},
|
|
383
|
+
{
|
|
384
|
+
"type": "event",
|
|
385
|
+
"name": "AdminAllowanceUSDCentsUpdated",
|
|
386
|
+
"inputs": [
|
|
387
|
+
{
|
|
388
|
+
"name": "_allowance",
|
|
389
|
+
"type": "uint64",
|
|
390
|
+
"indexed": false,
|
|
391
|
+
"internalType": "uint64"
|
|
392
|
+
}
|
|
393
|
+
],
|
|
394
|
+
"anonymous": false
|
|
395
|
+
},
|
|
357
396
|
{
|
|
358
397
|
"type": "event",
|
|
359
398
|
"name": "DataBundleBoughtWithToken",
|
|
@@ -623,6 +662,22 @@ const ESIMWallet = [
|
|
|
623
662
|
],
|
|
624
663
|
"anonymous": false
|
|
625
664
|
},
|
|
665
|
+
{
|
|
666
|
+
"type": "error",
|
|
667
|
+
"name": "AdminAllowanceExceeded",
|
|
668
|
+
"inputs": [
|
|
669
|
+
{
|
|
670
|
+
"name": "priceUSDCents",
|
|
671
|
+
"type": "uint64",
|
|
672
|
+
"internalType": "uint64"
|
|
673
|
+
},
|
|
674
|
+
{
|
|
675
|
+
"name": "remaining",
|
|
676
|
+
"type": "uint64",
|
|
677
|
+
"internalType": "uint64"
|
|
678
|
+
}
|
|
679
|
+
]
|
|
680
|
+
},
|
|
626
681
|
{
|
|
627
682
|
"type": "error",
|
|
628
683
|
"name": "AssetNotTransferable",
|
|
@@ -152,6 +152,29 @@ const PaymentAdapter = [
|
|
|
152
152
|
],
|
|
153
153
|
"stateMutability": "view"
|
|
154
154
|
},
|
|
155
|
+
{
|
|
156
|
+
"type": "function",
|
|
157
|
+
"name": "recoverTokens",
|
|
158
|
+
"inputs": [
|
|
159
|
+
{
|
|
160
|
+
"name": "_token",
|
|
161
|
+
"type": "address",
|
|
162
|
+
"internalType": "address"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"name": "_to",
|
|
166
|
+
"type": "address",
|
|
167
|
+
"internalType": "address"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"name": "_amount",
|
|
171
|
+
"type": "uint256",
|
|
172
|
+
"internalType": "uint256"
|
|
173
|
+
}
|
|
174
|
+
],
|
|
175
|
+
"outputs": [],
|
|
176
|
+
"stateMutability": "nonpayable"
|
|
177
|
+
},
|
|
155
178
|
{
|
|
156
179
|
"type": "function",
|
|
157
180
|
"name": "registerAsset",
|
|
@@ -571,6 +594,31 @@ const PaymentAdapter = [
|
|
|
571
594
|
],
|
|
572
595
|
"anonymous": false
|
|
573
596
|
},
|
|
597
|
+
{
|
|
598
|
+
"type": "event",
|
|
599
|
+
"name": "TokensRecovered",
|
|
600
|
+
"inputs": [
|
|
601
|
+
{
|
|
602
|
+
"name": "_token",
|
|
603
|
+
"type": "address",
|
|
604
|
+
"indexed": true,
|
|
605
|
+
"internalType": "address"
|
|
606
|
+
},
|
|
607
|
+
{
|
|
608
|
+
"name": "_to",
|
|
609
|
+
"type": "address",
|
|
610
|
+
"indexed": true,
|
|
611
|
+
"internalType": "address"
|
|
612
|
+
},
|
|
613
|
+
{
|
|
614
|
+
"name": "_amount",
|
|
615
|
+
"type": "uint256",
|
|
616
|
+
"indexed": false,
|
|
617
|
+
"internalType": "uint256"
|
|
618
|
+
}
|
|
619
|
+
],
|
|
620
|
+
"anonymous": false
|
|
621
|
+
},
|
|
574
622
|
{
|
|
575
623
|
"type": "event",
|
|
576
624
|
"name": "Upgraded",
|
|
@@ -852,6 +900,11 @@ const PaymentAdapter = [
|
|
|
852
900
|
}
|
|
853
901
|
]
|
|
854
902
|
},
|
|
903
|
+
{
|
|
904
|
+
"type": "error",
|
|
905
|
+
"name": "ZeroAmount",
|
|
906
|
+
"inputs": []
|
|
907
|
+
},
|
|
855
908
|
{
|
|
856
909
|
"type": "error",
|
|
857
910
|
"name": "ZeroDataBundlePrice",
|
|
@@ -582,6 +582,19 @@ const ProtocolAdmin = [
|
|
|
582
582
|
],
|
|
583
583
|
"stateMutability": "nonpayable"
|
|
584
584
|
},
|
|
585
|
+
{
|
|
586
|
+
"type": "function",
|
|
587
|
+
"name": "pauseInstantly",
|
|
588
|
+
"inputs": [
|
|
589
|
+
{
|
|
590
|
+
"name": "target",
|
|
591
|
+
"type": "address",
|
|
592
|
+
"internalType": "address"
|
|
593
|
+
}
|
|
594
|
+
],
|
|
595
|
+
"outputs": [],
|
|
596
|
+
"stateMutability": "nonpayable"
|
|
597
|
+
},
|
|
585
598
|
{
|
|
586
599
|
"type": "function",
|
|
587
600
|
"name": "renounceRole",
|
|
@@ -959,6 +972,25 @@ const ProtocolAdmin = [
|
|
|
959
972
|
],
|
|
960
973
|
"anonymous": false
|
|
961
974
|
},
|
|
975
|
+
{
|
|
976
|
+
"type": "event",
|
|
977
|
+
"name": "PauseRaised",
|
|
978
|
+
"inputs": [
|
|
979
|
+
{
|
|
980
|
+
"name": "target",
|
|
981
|
+
"type": "address",
|
|
982
|
+
"indexed": true,
|
|
983
|
+
"internalType": "address"
|
|
984
|
+
},
|
|
985
|
+
{
|
|
986
|
+
"name": "guardian",
|
|
987
|
+
"type": "address",
|
|
988
|
+
"indexed": true,
|
|
989
|
+
"internalType": "address"
|
|
990
|
+
}
|
|
991
|
+
],
|
|
992
|
+
"anonymous": false
|
|
993
|
+
},
|
|
962
994
|
{
|
|
963
995
|
"type": "event",
|
|
964
996
|
"name": "PauseReleased",
|
|
@@ -1105,6 +1137,22 @@ const ProtocolAdmin = [
|
|
|
1105
1137
|
"name": "NoProposers",
|
|
1106
1138
|
"inputs": []
|
|
1107
1139
|
},
|
|
1140
|
+
{
|
|
1141
|
+
"type": "error",
|
|
1142
|
+
"name": "NomineeIsTheIncumbent",
|
|
1143
|
+
"inputs": [
|
|
1144
|
+
{
|
|
1145
|
+
"name": "target",
|
|
1146
|
+
"type": "address",
|
|
1147
|
+
"internalType": "address"
|
|
1148
|
+
},
|
|
1149
|
+
{
|
|
1150
|
+
"name": "admin",
|
|
1151
|
+
"type": "address",
|
|
1152
|
+
"internalType": "address"
|
|
1153
|
+
}
|
|
1154
|
+
]
|
|
1155
|
+
},
|
|
1108
1156
|
{
|
|
1109
1157
|
"type": "error",
|
|
1110
1158
|
"name": "NotACanceller",
|
|
@@ -151,6 +151,19 @@ const Registry = [
|
|
|
151
151
|
"outputs": [],
|
|
152
152
|
"stateMutability": "nonpayable"
|
|
153
153
|
},
|
|
154
|
+
{
|
|
155
|
+
"type": "function",
|
|
156
|
+
"name": "defaultAdminAllowanceUSDCents",
|
|
157
|
+
"inputs": [],
|
|
158
|
+
"outputs": [
|
|
159
|
+
{
|
|
160
|
+
"name": "",
|
|
161
|
+
"type": "uint64",
|
|
162
|
+
"internalType": "uint64"
|
|
163
|
+
}
|
|
164
|
+
],
|
|
165
|
+
"stateMutability": "view"
|
|
166
|
+
},
|
|
154
167
|
{
|
|
155
168
|
"type": "function",
|
|
156
169
|
"name": "defaultPriceCapUSDCents",
|
|
@@ -394,6 +407,11 @@ const Registry = [
|
|
|
394
407
|
"name": "_defaultPriceCapUSDCents",
|
|
395
408
|
"type": "uint64",
|
|
396
409
|
"internalType": "uint64"
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
"name": "_defaultAdminAllowanceUSDCents",
|
|
413
|
+
"type": "uint64",
|
|
414
|
+
"internalType": "uint64"
|
|
397
415
|
}
|
|
398
416
|
],
|
|
399
417
|
"outputs": [],
|
|
@@ -749,6 +767,19 @@ const Registry = [
|
|
|
749
767
|
"outputs": [],
|
|
750
768
|
"stateMutability": "view"
|
|
751
769
|
},
|
|
770
|
+
{
|
|
771
|
+
"type": "function",
|
|
772
|
+
"name": "setDefaultAdminAllowanceUSDCents",
|
|
773
|
+
"inputs": [
|
|
774
|
+
{
|
|
775
|
+
"name": "_allowance",
|
|
776
|
+
"type": "uint64",
|
|
777
|
+
"internalType": "uint64"
|
|
778
|
+
}
|
|
779
|
+
],
|
|
780
|
+
"outputs": [],
|
|
781
|
+
"stateMutability": "nonpayable"
|
|
782
|
+
},
|
|
752
783
|
{
|
|
753
784
|
"type": "function",
|
|
754
785
|
"name": "setDefaultPriceCapUSDCents",
|
|
@@ -1094,6 +1125,19 @@ const Registry = [
|
|
|
1094
1125
|
],
|
|
1095
1126
|
"anonymous": false
|
|
1096
1127
|
},
|
|
1128
|
+
{
|
|
1129
|
+
"type": "event",
|
|
1130
|
+
"name": "DefaultAdminAllowanceUSDCentsUpdated",
|
|
1131
|
+
"inputs": [
|
|
1132
|
+
{
|
|
1133
|
+
"name": "_allowance",
|
|
1134
|
+
"type": "uint64",
|
|
1135
|
+
"indexed": false,
|
|
1136
|
+
"internalType": "uint64"
|
|
1137
|
+
}
|
|
1138
|
+
],
|
|
1139
|
+
"anonymous": false
|
|
1140
|
+
},
|
|
1097
1141
|
{
|
|
1098
1142
|
"type": "event",
|
|
1099
1143
|
"name": "DefaultPriceCapUSDCentsUpdated",
|
|
@@ -1719,6 +1763,17 @@ const Registry = [
|
|
|
1719
1763
|
}
|
|
1720
1764
|
]
|
|
1721
1765
|
},
|
|
1766
|
+
{
|
|
1767
|
+
"type": "error",
|
|
1768
|
+
"name": "OwnerKeyNotHeldByWallet",
|
|
1769
|
+
"inputs": [
|
|
1770
|
+
{
|
|
1771
|
+
"name": "deviceWallet",
|
|
1772
|
+
"type": "address",
|
|
1773
|
+
"internalType": "address"
|
|
1774
|
+
}
|
|
1775
|
+
]
|
|
1776
|
+
},
|
|
1722
1777
|
{
|
|
1723
1778
|
"type": "error",
|
|
1724
1779
|
"name": "OwnershipCannotBeRenounced",
|
|
@@ -495,6 +495,19 @@ const RegistryHelper = [
|
|
|
495
495
|
],
|
|
496
496
|
"anonymous": false
|
|
497
497
|
},
|
|
498
|
+
{
|
|
499
|
+
"type": "event",
|
|
500
|
+
"name": "DefaultAdminAllowanceUSDCentsUpdated",
|
|
501
|
+
"inputs": [
|
|
502
|
+
{
|
|
503
|
+
"name": "_allowance",
|
|
504
|
+
"type": "uint64",
|
|
505
|
+
"indexed": false,
|
|
506
|
+
"internalType": "uint64"
|
|
507
|
+
}
|
|
508
|
+
],
|
|
509
|
+
"anonymous": false
|
|
510
|
+
},
|
|
498
511
|
{
|
|
499
512
|
"type": "event",
|
|
500
513
|
"name": "DefaultPriceCapUSDCentsUpdated",
|
|
@@ -12,7 +12,7 @@ import { AdminUtilsSubPackage } from "./interface/utilsClass.js";
|
|
|
12
12
|
// Re-export the typed error surface so backend consumers can `instanceof
|
|
13
13
|
// KokioError` (or a subclass) and decode reverts without reaching into internal
|
|
14
14
|
// module paths - mirroring `config.ts`.
|
|
15
|
-
export { KokioError, NullOrUndefinedValueError, MissingSmartWalletError, MissingEOAWalletError, InvalidClientError, UnsupportedChainError, UnconfiguredChainError, CounterfactualMismatchError, BatchSizeOutOfRangeError, DepositOnResumeError, ESIMWalletNotLazyDeployedError, MissingBatchEventError, StalledBatchError, InvalidAddressError, InvalidSymbolError, TokenNotAcceptedError, NotAProtocolESIMWalletError, UnknownTransactionError, TransactionRevertedError, ReceiptNotCanonicalError, NotAnERC20TokenError, UnmatchedPaymentEventsError, PriceOutOfRangeError, InvalidPaymentReferenceError, CouponSplitOutOfRangeError, ContractRevertError, decodeContractRevert, } from "../logic/errors.js";
|
|
15
|
+
export { KokioError, NullOrUndefinedValueError, MissingSmartWalletError, MissingEOAWalletError, InvalidClientError, UnsupportedChainError, UnconfiguredChainError, CounterfactualMismatchError, BatchSizeOutOfRangeError, DepositOnResumeError, ESIMWalletNotLazyDeployedError, MissingBatchEventError, StalledBatchError, InvalidAddressError, InvalidSymbolError, TokenNotAcceptedError, NotAProtocolESIMWalletError, UnknownTransactionError, TransactionRevertedError, ReceiptNotCanonicalError, NotAnERC20TokenError, UnmatchedPaymentEventsError, PriceOutOfRangeError, AdminAllowanceExceededError, InvalidPaymentReferenceError, CouponSplitOutOfRangeError, ContractRevertError, decodeContractRevert, } from "../logic/errors.js";
|
|
16
16
|
// `getOperationState` answers with this, and comparing against it needs the enum
|
|
17
17
|
// at runtime rather than only in the types.
|
|
18
18
|
export { OperationState } from "../logic/admin/reads/protocolAdmin.reads.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { _buyDataBundleWithToken } from "../../logic/admin/eSIMWallet.eoa.js";
|
|
2
|
-
import { _eSIMWalletFactory, _eSIMUniqueIdentifier, _newRequestedOwner, _owner, _priceCapUSDCents, _deviceWallet, _transactionHistory, } from "../../logic/admin/reads/eSIMWallet.reads.js";
|
|
2
|
+
import { _adminAllowanceUSDCents, _eSIMWalletFactory, _eSIMUniqueIdentifier, _newRequestedOwner, _owner, _priceCapUSDCents, _deviceWallet, _transactionHistory, } from "../../logic/admin/reads/eSIMWallet.reads.js";
|
|
3
3
|
/**
|
|
4
4
|
* Thin EOA wrapper around a specific `ESIMWallet` instance. The instance address
|
|
5
5
|
* is bound at construction; `KokioAdmin.setESIMWalletAddress` swaps it by
|
|
@@ -31,6 +31,9 @@ export class AdminESIMWalletSubPackage {
|
|
|
31
31
|
priceCapUSDCents() {
|
|
32
32
|
return _priceCapUSDCents(this.walletClient, this.eSIMWalletAddress);
|
|
33
33
|
}
|
|
34
|
+
adminAllowanceUSDCents() {
|
|
35
|
+
return _adminAllowanceUSDCents(this.walletClient, this.eSIMWalletAddress);
|
|
36
|
+
}
|
|
34
37
|
deviceWallet() {
|
|
35
38
|
return _deviceWallet(this.walletClient, this.eSIMWalletAddress);
|
|
36
39
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { _registry, _settlementToken, _assets, _resolveAsset, _quote, _usedReferences, _upgradeManager } from "../../logic/admin/reads/paymentAdapter.reads.js";
|
|
2
|
-
import { _registerAsset, _updateAsset, _registerAssetCall, _updateAssetCall, _transferOwnershipCall, _upgradeCall, _acceptOwnership } from "../../logic/admin/paymentAdapter.eoa.js";
|
|
2
|
+
import { _registerAsset, _updateAsset, _registerAssetCall, _updateAssetCall, _recoverTokensCall, _transferOwnershipCall, _upgradeCall, _acceptOwnership } from "../../logic/admin/paymentAdapter.eoa.js";
|
|
3
3
|
export class AdminPaymentAdapterSubPackage {
|
|
4
4
|
walletClient;
|
|
5
5
|
constructor(walletClient) {
|
|
@@ -42,6 +42,9 @@ export class AdminPaymentAdapterSubPackage {
|
|
|
42
42
|
registerAssetCall(symbol, asset) {
|
|
43
43
|
return _registerAssetCall(this.walletClient, symbol, asset);
|
|
44
44
|
}
|
|
45
|
+
recoverTokensCall(token, to, amount) {
|
|
46
|
+
return _recoverTokensCall(this.walletClient, token, to, amount);
|
|
47
|
+
}
|
|
45
48
|
updateAssetCall(symbol, asset) {
|
|
46
49
|
return _updateAssetCall(this.walletClient, symbol, asset);
|
|
47
50
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _operationId, _operationIdBatch, _operationIdRaw, _operationIdBatchRaw, _schedule, _scheduleBatch, _scheduleRaw, _execute, _executeBatch, _executeRaw, _cancel, _unpauseInstantly, _revokeCancellersInstantly, _disableAdminInstantly, _acceptOwnershipBatch, _renounceRole, _grantRoleCall, _revokeRoleCall, _updateDelayCall, _disableAndNominateCall, _disableAdminCall, _enableAdminCall, _unpauseCall, _setDefaultPriceCapUSDCentsCall, _setPaymentAdapterCall, } from "../../logic/admin/protocolAdmin.eoa.js";
|
|
1
|
+
import { _operationId, _operationIdBatch, _operationIdRaw, _operationIdBatchRaw, _schedule, _scheduleBatch, _scheduleRaw, _execute, _executeBatch, _executeRaw, _cancel, _pauseInstantly, _unpauseInstantly, _revokeCancellersInstantly, _disableAdminInstantly, _acceptOwnershipBatch, _renounceRole, _grantRoleCall, _revokeRoleCall, _updateDelayCall, _disableAndNominateCall, _disableAdminCall, _enableAdminCall, _unpauseCall, _setDefaultPriceCapUSDCentsCall, _setDefaultAdminAllowanceUSDCentsCall, _setPaymentAdapterCall, } from "../../logic/admin/protocolAdmin.eoa.js";
|
|
2
2
|
import { _getMinDelay, _minDelayFloor, _getOperationState, _getTimestamp, _isOperation, _isOperationPending, _isOperationReady, _isOperationDone, _hasRole, _getRoleAdmin, _defaultAdminRole, _proposerRole, _cancellerRole, _executorRole, _guardianRole, } from "../../logic/admin/reads/protocolAdmin.reads.js";
|
|
3
3
|
/** Schedules operations. Needs an EOA holding `PROPOSER_ROLE`. */
|
|
4
4
|
export class ProtocolAdminProposerSubPackage {
|
|
@@ -55,6 +55,9 @@ export class ProtocolAdminGuardianSubPackage {
|
|
|
55
55
|
constructor(walletClient) {
|
|
56
56
|
this.walletClient = walletClient;
|
|
57
57
|
}
|
|
58
|
+
pauseInstantly(target) {
|
|
59
|
+
return _pauseInstantly(this.walletClient, target);
|
|
60
|
+
}
|
|
58
61
|
unpauseInstantly(target) {
|
|
59
62
|
return _unpauseInstantly(this.walletClient, target);
|
|
60
63
|
}
|
|
@@ -132,6 +135,9 @@ export class AdminProtocolAdminSubPackage {
|
|
|
132
135
|
setDefaultPriceCapUSDCentsCall(cap, target) {
|
|
133
136
|
return _setDefaultPriceCapUSDCentsCall(this.walletClient, cap, target);
|
|
134
137
|
}
|
|
138
|
+
setDefaultAdminAllowanceUSDCentsCall(allowance, target) {
|
|
139
|
+
return _setDefaultAdminAllowanceUSDCentsCall(this.walletClient, allowance, target);
|
|
140
|
+
}
|
|
135
141
|
setPaymentAdapterCall(paymentAdapter, target) {
|
|
136
142
|
return _setPaymentAdapterCall(this.walletClient, paymentAdapter, target);
|
|
137
143
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { _addOrUpdateLazyWalletRegistryAddress, _updateVaultAddress, _requestAdminUpdate, _disableAdmin, _enableAdmin, _acceptAdminUpdate, _assignESIMIdentifier, _recordSettledPurchase, _pause, _unpause, _setDefaultPriceCapUSDCents, _acceptOwnership, _transferOwnershipCall, _upgradeCall, } from "../../logic/admin/registry.eoa.js";
|
|
2
|
-
import { _owner, _eSIMWalletAdmin, _adminOfRecord, _adminDisabled, _newRequestedAdmin, _vault, _upgradeManager, _lazyWalletRegistry, _uniqueIdentifierToDeviceWallet, _deviceWalletToOwner, _registeredP256Keys, _isDeviceWalletValid, _isESIMWalletValid, _isESIMWalletOnStandby, _paused, _defaultPriceCapUSDCents, _paymentAdapter, _usedPaymentReferences, _isDeviceIdentifierAlreadyUsed, _isESIMIdentifierClaimed, _eSIMWalletForIdentifier, _claimedESIMIdentifiers, _requireDeviceIdentifierNotReserved, _pendingOwner, _deviceWalletFactory, _eSIMWalletFactory, _entryPoint, _requireNotPaused, _proxiableUUID, _upgradeInterfaceVersion, } from "../../logic/admin/reads/registry.reads.js";
|
|
2
|
+
import { _owner, _eSIMWalletAdmin, _adminOfRecord, _adminDisabled, _newRequestedAdmin, _vault, _upgradeManager, _lazyWalletRegistry, _uniqueIdentifierToDeviceWallet, _deviceWalletToOwner, _registeredP256Keys, _isDeviceWalletValid, _isESIMWalletValid, _isESIMWalletOnStandby, _paused, _defaultPriceCapUSDCents, _defaultAdminAllowanceUSDCents, _paymentAdapter, _usedPaymentReferences, _isDeviceIdentifierAlreadyUsed, _isESIMIdentifierClaimed, _eSIMWalletForIdentifier, _claimedESIMIdentifiers, _requireDeviceIdentifierNotReserved, _pendingOwner, _deviceWalletFactory, _eSIMWalletFactory, _entryPoint, _requireNotPaused, _proxiableUUID, _upgradeInterfaceVersion, } from "../../logic/admin/reads/registry.reads.js";
|
|
3
3
|
/** Thin EOA (owner) wrapper around `Registry`. */
|
|
4
4
|
export class AdminRegistrySubPackage {
|
|
5
5
|
walletClient;
|
|
@@ -98,6 +98,9 @@ export class AdminRegistrySubPackage {
|
|
|
98
98
|
defaultPriceCapUSDCents() {
|
|
99
99
|
return _defaultPriceCapUSDCents(this.walletClient);
|
|
100
100
|
}
|
|
101
|
+
defaultAdminAllowanceUSDCents() {
|
|
102
|
+
return _defaultAdminAllowanceUSDCents(this.walletClient);
|
|
103
|
+
}
|
|
101
104
|
paymentAdapter() {
|
|
102
105
|
return _paymentAdapter(this.walletClient);
|
|
103
106
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _addDeposit, _addESIMWallet, _canPullFunds, _deployAndBindESIMWallet, _deviceUniqueIdentifier, _entryPoint, _eSIMWalletFactory, _getDeposit, _getOwner, _getVaultAddress, _isValidESIMWallet, _isValidSignature, _registry, _removeESIMWallet, _sendUserOperation, _toggleAccessToFunds, _transferOwnership, _verifier, _withdrawDepositTo } from "../logic/deviceWallet.js";
|
|
1
|
+
import { _addDeposit, _addESIMWallet, _canPullFunds, _deployAndBindESIMWallet, _deviceUniqueIdentifier, _entryPoint, _eSIMWalletFactory, _getDeposit, _getOwner, _getVaultAddress, _isValidESIMWallet, _isValidSignature, _registry, _removeESIMWallet, _rotationChallenge, _sendUserOperation, _toggleAccessToFunds, _transferOwnership, _verifier, _withdrawDepositTo } from "../logic/deviceWallet.js";
|
|
2
2
|
export class DeviceWalletSubPackage {
|
|
3
3
|
smartAccountClient;
|
|
4
4
|
walletClient;
|
|
@@ -35,8 +35,8 @@ export class DeviceWalletSubPackage {
|
|
|
35
35
|
toggleAccessToFunds(eSIMWalletAddress, hasAccessToFunds) {
|
|
36
36
|
return _toggleAccessToFunds(this.smartAccountClient, this.address, eSIMWalletAddress, hasAccessToFunds);
|
|
37
37
|
}
|
|
38
|
-
transferOwnership(newOwner) {
|
|
39
|
-
return _transferOwnership(this.smartAccountClient, this.address, newOwner);
|
|
38
|
+
transferOwnership(newOwner, newOwnerSignature) {
|
|
39
|
+
return _transferOwnership(this.smartAccountClient, this.address, newOwner, newOwnerSignature);
|
|
40
40
|
}
|
|
41
41
|
withdrawDepositTo(withdrawAddress, amount) {
|
|
42
42
|
return _withdrawDepositTo(this.smartAccountClient, this.address, withdrawAddress, amount);
|
|
@@ -69,6 +69,9 @@ export class DeviceWalletSubPackage {
|
|
|
69
69
|
registry() {
|
|
70
70
|
return _registry(this.smartAccountClient, this.address);
|
|
71
71
|
}
|
|
72
|
+
rotationChallenge(newOwner) {
|
|
73
|
+
return _rotationChallenge(this.smartAccountClient, this.address, newOwner);
|
|
74
|
+
}
|
|
72
75
|
verifier() {
|
|
73
76
|
return _verifier(this.smartAccountClient, this.address);
|
|
74
77
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _acceptAndBindESIMWallet, _acceptOwnershipTransfer, _buyDataBundleWithToken, _buyDataBundleWithTransfer, _priceCapUSDCents, _deviceWallet, _owner, _requestTransferOwnership, _sendETHToDeviceWallet, _sendTokenToDeviceWallet, _setPriceCapUSDCents, _transactionHistory } from "../logic/eSIMWallet.js";
|
|
1
|
+
import { _acceptAndBindESIMWallet, _acceptOwnershipTransfer, _adminAllowanceUSDCents, _buyDataBundleWithToken, _buyDataBundleWithTransfer, _priceCapUSDCents, _deviceWallet, _owner, _requestTransferOwnership, _sendETHToDeviceWallet, _sendTokenToDeviceWallet, _setAdminAllowanceUSDCents, _setPriceCapUSDCents, _transactionHistory } from "../logic/eSIMWallet.js";
|
|
2
2
|
export class ESIMWalletSubPackage {
|
|
3
3
|
client;
|
|
4
4
|
address;
|
|
@@ -31,6 +31,12 @@ export class ESIMWalletSubPackage {
|
|
|
31
31
|
priceCapUSDCents() {
|
|
32
32
|
return _priceCapUSDCents(this.client, this.address);
|
|
33
33
|
}
|
|
34
|
+
adminAllowanceUSDCents() {
|
|
35
|
+
return _adminAllowanceUSDCents(this.client, this.address);
|
|
36
|
+
}
|
|
37
|
+
setAdminAllowanceUSDCents(allowance) {
|
|
38
|
+
return _setAdminAllowanceUSDCents(this.client, this.address, allowance);
|
|
39
|
+
}
|
|
34
40
|
deviceWallet() {
|
|
35
41
|
return _deviceWallet(this.client, this.address);
|
|
36
42
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _bindESIMWallet, _toggleESIMWalletStandbyStatus, _isDeviceIdentifierAlreadyUsed, _paused, _requireNotPaused, _isESIMWalletValid, _isESIMWalletOnStandby, _isDeviceWalletValid, _uniqueIdentifierToDeviceWallet, _isESIMIdentifierClaimed, _eSIMWalletForIdentifier, _defaultPriceCapUSDCents, _paymentAdapter, _usedPaymentReferences, _requireLazyHistoryCopied, _requireDeviceIdentifierNotReserved } from "../logic/registry.js";
|
|
1
|
+
import { _bindESIMWallet, _toggleESIMWalletStandbyStatus, _isDeviceIdentifierAlreadyUsed, _paused, _requireNotPaused, _isESIMWalletValid, _isESIMWalletOnStandby, _isDeviceWalletValid, _uniqueIdentifierToDeviceWallet, _isESIMIdentifierClaimed, _eSIMWalletForIdentifier, _defaultPriceCapUSDCents, _defaultAdminAllowanceUSDCents, _paymentAdapter, _usedPaymentReferences, _requireLazyHistoryCopied, _requireDeviceIdentifierNotReserved } from "../logic/registry.js";
|
|
2
2
|
export class RegistrySubPackage {
|
|
3
3
|
client;
|
|
4
4
|
constructor(client) {
|
|
@@ -49,6 +49,9 @@ export class RegistrySubPackage {
|
|
|
49
49
|
defaultPriceCapUSDCents() {
|
|
50
50
|
return _defaultPriceCapUSDCents(this.client);
|
|
51
51
|
}
|
|
52
|
+
defaultAdminAllowanceUSDCents() {
|
|
53
|
+
return _defaultAdminAllowanceUSDCents(this.client);
|
|
54
|
+
}
|
|
52
55
|
paymentAdapter() {
|
|
53
56
|
return _paymentAdapter(this.client);
|
|
54
57
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { _chainId, _getChainSpecificConstants } from "../constants.js";
|
|
2
|
-
import { MissingEOAWalletError, writeContractOrThrow } from "../errors.js";
|
|
2
|
+
import { AdminAllowanceExceededError, MissingEOAWalletError, writeContractOrThrow } from "../errors.js";
|
|
3
3
|
import { ESIMWallet } from "../../abis/index.js";
|
|
4
|
+
import { _adminAllowanceUSDCents } from "./reads/eSIMWallet.reads.js";
|
|
4
5
|
// Admin-EOA logic targeting a specific `ESIMWallet` instance (address passed in).
|
|
5
6
|
// `buyDataBundleWithToken` is `onlyDeviceWalletOrESIMWalletAdmin`, so the admin
|
|
6
7
|
// EOA can call it directly.
|
|
@@ -12,6 +13,9 @@ import { ESIMWallet } from "../../abis/index.js";
|
|
|
12
13
|
* unit - read it from `paymentAdapter.quote(asset, dataBundleDetails.priceUSDCents)`
|
|
13
14
|
* first. `paymentReference` ties this purchase to its offchain order and is
|
|
14
15
|
* spendable once per eSIM wallet.
|
|
16
|
+
*
|
|
17
|
+
* Throws `AdminAllowanceExceededError` without sending when the price is above
|
|
18
|
+
* what the wallet's owner still allows the admin to charge.
|
|
15
19
|
*/
|
|
16
20
|
export const _buyDataBundleWithToken = async (client, eSIMWalletAddress, dataBundleDetails, asset, maxAmountIn, paymentReference) => {
|
|
17
21
|
const chainID = await _chainId(client);
|
|
@@ -19,6 +23,10 @@ export const _buyDataBundleWithToken = async (client, eSIMWalletAddress, dataBun
|
|
|
19
23
|
const values = _getChainSpecificConstants(chainID, rpcURL);
|
|
20
24
|
if (!client.account)
|
|
21
25
|
throw new MissingEOAWalletError();
|
|
26
|
+
const remaining = await _adminAllowanceUSDCents(client, eSIMWalletAddress);
|
|
27
|
+
if (dataBundleDetails.priceUSDCents > remaining) {
|
|
28
|
+
throw new AdminAllowanceExceededError(dataBundleDetails.priceUSDCents, remaining);
|
|
29
|
+
}
|
|
22
30
|
return writeContractOrThrow(client, {
|
|
23
31
|
address: eSIMWalletAddress,
|
|
24
32
|
chain: values.chain,
|
|
@@ -57,6 +57,22 @@ export const _registerAssetCall = async (client, symbol, asset) => {
|
|
|
57
57
|
args: [symbol, asset],
|
|
58
58
|
};
|
|
59
59
|
};
|
|
60
|
+
/**
|
|
61
|
+
* Send back `amount` of `token` someone sent to the adapter by mistake. Pass the
|
|
62
|
+
* result to `schedule`. Purchases never leave tokens in the adapter, so anything
|
|
63
|
+
* it holds arrived by mistake.
|
|
64
|
+
*/
|
|
65
|
+
export const _recoverTokensCall = async (client, token, to, amount) => {
|
|
66
|
+
const chainID = await _chainId(client);
|
|
67
|
+
const rpcURL = client.transport.url;
|
|
68
|
+
const values = _getChainSpecificConstants(chainID, rpcURL);
|
|
69
|
+
return {
|
|
70
|
+
address: values.factoryAddresses.PAYMENT_ADAPTER,
|
|
71
|
+
abi: PaymentAdapter,
|
|
72
|
+
functionName: 'recoverTokens',
|
|
73
|
+
args: [token, to, amount],
|
|
74
|
+
};
|
|
75
|
+
};
|
|
60
76
|
/** Change a currency already in the table, scheduled through the timelock. Pass the result to `schedule`. */
|
|
61
77
|
export const _updateAssetCall = async (client, symbol, asset) => {
|
|
62
78
|
const chainID = await _chainId(client);
|
|
@@ -271,6 +271,25 @@ export const _cancel = async (client, id) => {
|
|
|
271
271
|
// ---------------------------------------------------------------------------
|
|
272
272
|
// Guardian powers - GUARDIAN_ROLE, no delay
|
|
273
273
|
// ---------------------------------------------------------------------------
|
|
274
|
+
/**
|
|
275
|
+
* Pause a protocol contract straight away. `GUARDIAN_ROLE`.
|
|
276
|
+
*
|
|
277
|
+
* Only stops the contract, which the admin key could already do, and a guardian
|
|
278
|
+
* can release it at once with `_unpauseInstantly`.
|
|
279
|
+
*/
|
|
280
|
+
export const _pauseInstantly = async (client, target) => {
|
|
281
|
+
const values = await _resolve(client);
|
|
282
|
+
if (!client.account)
|
|
283
|
+
throw new MissingEOAWalletError();
|
|
284
|
+
return writeContractOrThrow(client, {
|
|
285
|
+
address: values.factoryAddresses.PROTOCOL_ADMIN,
|
|
286
|
+
chain: values.chain,
|
|
287
|
+
account: client.account,
|
|
288
|
+
abi: ProtocolAdmin,
|
|
289
|
+
functionName: 'pauseInstantly',
|
|
290
|
+
args: [target]
|
|
291
|
+
});
|
|
292
|
+
};
|
|
274
293
|
/**
|
|
275
294
|
* Release a pause on a protocol contract straight away. `GUARDIAN_ROLE`.
|
|
276
295
|
*
|
|
@@ -472,6 +491,21 @@ export const _setDefaultPriceCapUSDCentsCall = async (client, cap, target) => {
|
|
|
472
491
|
args: [cap],
|
|
473
492
|
};
|
|
474
493
|
};
|
|
494
|
+
/**
|
|
495
|
+
* Set what the admin key may charge each newly created eSIM wallet, in USD
|
|
496
|
+
* cents. Pass the result to `schedule`. Existing wallets keep their own figure.
|
|
497
|
+
*
|
|
498
|
+
* `target` defaults to the registry.
|
|
499
|
+
*/
|
|
500
|
+
export const _setDefaultAdminAllowanceUSDCentsCall = async (client, allowance, target) => {
|
|
501
|
+
const values = await _resolve(client);
|
|
502
|
+
return {
|
|
503
|
+
address: target ?? values.factoryAddresses.REGISTRY,
|
|
504
|
+
abi: Registry,
|
|
505
|
+
functionName: 'setDefaultAdminAllowanceUSDCents',
|
|
506
|
+
args: [allowance],
|
|
507
|
+
};
|
|
508
|
+
};
|
|
475
509
|
/**
|
|
476
510
|
* Point the registry at a new payment adapter. Pass the result to `schedule`.
|
|
477
511
|
*
|