@rhinestone/shared-configs 2.32.0 → 2.34.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.
@@ -80,10 +80,35 @@
80
80
  "sessionCapable": true,
81
81
  "settlementConfig": {
82
82
  "cctp": {
83
- "domain": 0
83
+ "domain": 0,
84
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
85
+ },
86
+ "eco": {
87
+ "provers": [
88
+ "0xE3e4e6F284f1c8E17bafE4268EB98c36886B4d8B",
89
+ "0xEC08fb4647f3f50d1162a578d481266687C60fc5",
90
+ "0xceBB7cDDBA4734C7130BF114a37C2dA4C5f3c473",
91
+ "0xec004Ab4870c4e177c66949329dCdb503CE41022"
92
+ ],
93
+ "stablecoins": [
94
+ "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
95
+ "0xdac17f958d2ee523a2206206994597c13d831ec7"
96
+ ]
84
97
  },
85
98
  "lz": {
86
- "chainKey": "ethereum"
99
+ "cctp": {
100
+ "domain": 0,
101
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
102
+ "token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
103
+ },
104
+ "chainKey": "ethereum",
105
+ "multiCall": "0xAcdDAC6C77318B615f7F6fB9bb67c6833e9c05f1",
106
+ "stargateUsdc": {
107
+ "eid": 30101,
108
+ "pool": "0xc026395860Db2d07ee33e05fE50ed7bD583189C7",
109
+ "token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
110
+ },
111
+ "transferDelegate": "0x72fAEbF58A62e33C044c37D8D973a961633ea294"
87
112
  },
88
113
  "near": {
89
114
  "prefix": "eth"
@@ -234,10 +259,34 @@
234
259
  "sessionCapable": true,
235
260
  "settlementConfig": {
236
261
  "cctp": {
237
- "domain": 2
262
+ "domain": 2,
263
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
264
+ },
265
+ "eco": {
266
+ "provers": [
267
+ "0xE3e4e6F284f1c8E17bafE4268EB98c36886B4d8B",
268
+ "0xEC08fb4647f3f50d1162a578d481266687C60fc5",
269
+ "0xec004Ab4870c4e177c66949329dCdb503CE41022"
270
+ ],
271
+ "stablecoins": [
272
+ "0x0b2c639c533813f4aa9d7837caf62653d097ff85",
273
+ "0x01bFF41798a0BcF287b996046Ca68b395DbC1071"
274
+ ]
238
275
  },
239
276
  "lz": {
240
- "chainKey": "optimism"
277
+ "cctp": {
278
+ "domain": 2,
279
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
280
+ "token": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85"
281
+ },
282
+ "chainKey": "optimism",
283
+ "multiCall": "0x5528Cf58fEB8fbfcE94f43B33240FFFB1312bDe3",
284
+ "stargateUsdc": {
285
+ "eid": 30111,
286
+ "pool": "0xcE8CcA271Ebc0533920C83d39F417ED6A0abB7D0",
287
+ "token": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85"
288
+ },
289
+ "transferDelegate": "0xFBea79D13E6F795a0e1E4B99090f1165a01C7B03"
241
290
  },
242
291
  "near": {
243
292
  "prefix": "op"
@@ -597,10 +646,28 @@
597
646
  "sessionCapable": true,
598
647
  "settlementConfig": {
599
648
  "cctp": {
600
- "domain": 10
649
+ "domain": 10,
650
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
651
+ },
652
+ "eco": {
653
+ "provers": [
654
+ "0xEC08fb4647f3f50d1162a578d481266687C60fc5",
655
+ "0xec004Ab4870c4e177c66949329dCdb503CE41022"
656
+ ],
657
+ "stablecoins": [
658
+ "0x078d782b760474a361dda0af3839290b0ef57ad6",
659
+ "0x9151434b16b9763660705744891fA906F660EcC5"
660
+ ]
601
661
  },
602
662
  "lz": {
603
- "chainKey": "unichain"
663
+ "cctp": {
664
+ "domain": 10,
665
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
666
+ "token": "0x078D782b760474a361dDA0AF3839290b0EF57AD6"
667
+ },
668
+ "chainKey": "unichain",
669
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
670
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
604
671
  },
605
672
  "oft": {
606
673
  "adapter": "0xc07bE8994D035631c36fb4a89C918CeFB2f03EC3",
@@ -743,10 +810,33 @@
743
810
  "sessionCapable": true,
744
811
  "settlementConfig": {
745
812
  "cctp": {
746
- "domain": 7
813
+ "domain": 7,
814
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
815
+ },
816
+ "eco": {
817
+ "provers": [
818
+ "0xE3e4e6F284f1c8E17bafE4268EB98c36886B4d8B",
819
+ "0xec004Ab4870c4e177c66949329dCdb503CE41022"
820
+ ],
821
+ "stablecoins": [
822
+ "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",
823
+ "0xc2132d05d31c914a87c6611c10748aeb04b58e8f"
824
+ ]
747
825
  },
748
826
  "lz": {
749
- "chainKey": "polygon"
827
+ "cctp": {
828
+ "domain": 7,
829
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
830
+ "token": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"
831
+ },
832
+ "chainKey": "polygon",
833
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
834
+ "stargateUsdc": {
835
+ "eid": 30109,
836
+ "pool": "0x9Aa02D4Fae7F58b8E8f34c66E756cC734DAc7fe4",
837
+ "token": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"
838
+ },
839
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
750
840
  },
751
841
  "near": {
752
842
  "prefix": "pol"
@@ -890,10 +980,18 @@
890
980
  "sessionCapable": true,
891
981
  "settlementConfig": {
892
982
  "cctp": {
893
- "domain": 15
983
+ "domain": 15,
984
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
894
985
  },
895
986
  "lz": {
896
- "chainKey": "monad"
987
+ "cctp": {
988
+ "domain": 15,
989
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
990
+ "token": "0x754704Bc059F8C67012fEd69BC8A327a5aafb603"
991
+ },
992
+ "chainKey": "monad",
993
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
994
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
897
995
  }
898
996
  },
899
997
  "settlementLayers": [
@@ -1017,10 +1115,23 @@
1017
1115
  "sessionCapable": true,
1018
1116
  "settlementConfig": {
1019
1117
  "cctp": {
1020
- "domain": 13
1118
+ "domain": 13,
1119
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
1021
1120
  },
1022
1121
  "lz": {
1023
- "chainKey": "sonic"
1122
+ "cctp": {
1123
+ "domain": 13,
1124
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
1125
+ "token": "0x29219dd400f2Bf60E5a23d13Be72B486D4038894"
1126
+ },
1127
+ "chainKey": "sonic",
1128
+ "multiCall": "0x6336eD39c2Eb15a8cFea73542600eFf31EA83353",
1129
+ "stargateUsdc": {
1130
+ "eid": 30332,
1131
+ "pool": "0xA272fFe20cFfe769CdFc4b63088DCD2C82a2D8F9",
1132
+ "token": "0x29219dd400f2Bf60E5a23d13Be72B486D4038894"
1133
+ },
1134
+ "transferDelegate": "0x420C2efa26c972308A543305217399ff65CbDb13"
1024
1135
  }
1025
1136
  },
1026
1137
  "settlementLayers": [
@@ -1205,6 +1316,14 @@
1205
1316
  "settlementConfig": {
1206
1317
  "cctp": {
1207
1318
  "domain": 14
1319
+ },
1320
+ "eco": {
1321
+ "provers": [
1322
+ "0xEC08fb4647f3f50d1162a578d481266687C60fc5"
1323
+ ],
1324
+ "stablecoins": [
1325
+ "0x79A02482A880bCE3F13e09Da970dC34db4CD24d1"
1326
+ ]
1208
1327
  }
1209
1328
  },
1210
1329
  "settlementLayers": [
@@ -1297,10 +1416,28 @@
1297
1416
  "sessionCapable": true,
1298
1417
  "settlementConfig": {
1299
1418
  "cctp": {
1300
- "domain": 19
1419
+ "domain": 19,
1420
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
1421
+ },
1422
+ "eco": {
1423
+ "provers": [
1424
+ "0xEC08fb4647f3f50d1162a578d481266687C60fc5",
1425
+ "0xec004Ab4870c4e177c66949329dCdb503CE41022"
1426
+ ],
1427
+ "stablecoins": [
1428
+ "0xb88339CB7199b77E23DB6E890353E22632Ba630f",
1429
+ "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb"
1430
+ ]
1301
1431
  },
1302
1432
  "lz": {
1303
- "chainKey": "hyperliquid"
1433
+ "cctp": {
1434
+ "domain": 19,
1435
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
1436
+ "token": "0xb88339CB7199b77E23DB6E890353E22632Ba630f"
1437
+ },
1438
+ "chainKey": "hyperliquid",
1439
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
1440
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
1304
1441
  },
1305
1442
  "rhino": {
1306
1443
  "bridgeContract": "0x5e023c31e1d3dcd08a1b3e8c96f6ef8aa8fcacd1",
@@ -1411,7 +1548,14 @@
1411
1548
  "sessionCapable": true,
1412
1549
  "settlementConfig": {
1413
1550
  "lz": {
1414
- "chainKey": "soneium"
1551
+ "chainKey": "soneium",
1552
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
1553
+ "stargateUsdc": {
1554
+ "eid": 30340,
1555
+ "pool": "0x45f1A95A4D3f3836523F5c83673c797f4d4d263B",
1556
+ "token": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369"
1557
+ },
1558
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
1415
1559
  }
1416
1560
  },
1417
1561
  "settlementLayers": [
@@ -1516,6 +1660,16 @@
1516
1660
  },
1517
1661
  "publicRpcUrl": "https://api.roninchain.com/rpc",
1518
1662
  "sessionCapable": true,
1663
+ "settlementConfig": {
1664
+ "eco": {
1665
+ "provers": [
1666
+ "0xceBB7cDDBA4734C7130BF114a37C2dA4C5f3c473"
1667
+ ],
1668
+ "stablecoins": [
1669
+ "0x0b7007c13325c48911f73a2dad5fa5dcbf808adc"
1670
+ ]
1671
+ }
1672
+ },
1519
1673
  "settlementLayers": [
1520
1674
  "ECO",
1521
1675
  "RELAY"
@@ -1693,7 +1847,8 @@
1693
1847
  "sessionCapable": true,
1694
1848
  "settlementConfig": {
1695
1849
  "cctp": {
1696
- "domain": 26
1850
+ "domain": 26,
1851
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
1697
1852
  },
1698
1853
  "rhino": {
1699
1854
  "bridgeContract": "0x5e023c31e1d3dcd08a1b3e8c96f6ef8aa8fcacd1",
@@ -1769,10 +1924,34 @@
1769
1924
  "sessionCapable": true,
1770
1925
  "settlementConfig": {
1771
1926
  "cctp": {
1772
- "domain": 6
1927
+ "domain": 6,
1928
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
1929
+ },
1930
+ "eco": {
1931
+ "provers": [
1932
+ "0xE3e4e6F284f1c8E17bafE4268EB98c36886B4d8B",
1933
+ "0xEC08fb4647f3f50d1162a578d481266687C60fc5",
1934
+ "0xceBB7cDDBA4734C7130BF114a37C2dA4C5f3c473",
1935
+ "0xec004Ab4870c4e177c66949329dCdb503CE41022"
1936
+ ],
1937
+ "stablecoins": [
1938
+ "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
1939
+ ]
1773
1940
  },
1774
1941
  "lz": {
1775
- "chainKey": "base"
1942
+ "cctp": {
1943
+ "domain": 6,
1944
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
1945
+ "token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
1946
+ },
1947
+ "chainKey": "base",
1948
+ "multiCall": "0x7e07A9148E9149e430C6412b79A675028595Ff1f",
1949
+ "stargateUsdc": {
1950
+ "eid": 30184,
1951
+ "pool": "0x27a16dc786820B16E5c9028b75B99F6f604b5d26",
1952
+ "token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
1953
+ },
1954
+ "transferDelegate": "0x8EcA03175fd5aC62fb6F4EcbB9A95D13dCDCB4F8"
1776
1955
  },
1777
1956
  "near": {
1778
1957
  "prefix": "base"
@@ -1889,8 +2068,25 @@
1889
2068
  "publicRpcUrl": "https://rpc.plasma.to",
1890
2069
  "sessionCapable": true,
1891
2070
  "settlementConfig": {
2071
+ "eco": {
2072
+ "provers": [
2073
+ "0xEC08fb4647f3f50d1162a578d481266687C60fc5",
2074
+ "0xec004Ab4870c4e177c66949329dCdb503CE41022"
2075
+ ],
2076
+ "stablecoins": [
2077
+ "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb"
2078
+ ]
2079
+ },
1892
2080
  "lz": {
1893
- "chainKey": "plasma"
2081
+ "cctp": {
2082
+ "domain": 33,
2083
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
2084
+ "feeless": true,
2085
+ "token": "0x2d661C89D812261039AF9764eceaAee884f5F67F"
2086
+ },
2087
+ "chainKey": "plasma",
2088
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
2089
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
1894
2090
  },
1895
2091
  "oft": {
1896
2092
  "adapter": "0x02ca37966753bDdDf11216B73B16C1dE756A7CF9",
@@ -2074,10 +2270,34 @@
2074
2270
  "sessionCapable": true,
2075
2271
  "settlementConfig": {
2076
2272
  "cctp": {
2077
- "domain": 3
2273
+ "domain": 3,
2274
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
2275
+ },
2276
+ "eco": {
2277
+ "provers": [
2278
+ "0xE3e4e6F284f1c8E17bafE4268EB98c36886B4d8B",
2279
+ "0xEC08fb4647f3f50d1162a578d481266687C60fc5",
2280
+ "0xec004Ab4870c4e177c66949329dCdb503CE41022"
2281
+ ],
2282
+ "stablecoins": [
2283
+ "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
2284
+ "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9"
2285
+ ]
2078
2286
  },
2079
2287
  "lz": {
2080
- "chainKey": "arbitrum"
2288
+ "cctp": {
2289
+ "domain": 3,
2290
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
2291
+ "token": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"
2292
+ },
2293
+ "chainKey": "arbitrum",
2294
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
2295
+ "stargateUsdc": {
2296
+ "eid": 30110,
2297
+ "pool": "0xe8CDF27AcD73a434D661C84887215F7598e7d0d3",
2298
+ "token": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"
2299
+ },
2300
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
2081
2301
  },
2082
2302
  "near": {
2083
2303
  "prefix": "arb"
@@ -2247,10 +2467,23 @@
2247
2467
  "sessionCapable": true,
2248
2468
  "settlementConfig": {
2249
2469
  "cctp": {
2250
- "domain": 1
2470
+ "domain": 1,
2471
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
2251
2472
  },
2252
2473
  "lz": {
2253
- "chainKey": "avalanche"
2474
+ "cctp": {
2475
+ "domain": 1,
2476
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
2477
+ "token": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"
2478
+ },
2479
+ "chainKey": "avalanche",
2480
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
2481
+ "stargateUsdc": {
2482
+ "eid": 30106,
2483
+ "pool": "0x5634c4a5FEd09819E3c46D86A965Dd9447d86e47",
2484
+ "token": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"
2485
+ },
2486
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
2254
2487
  },
2255
2488
  "near": {
2256
2489
  "prefix": "avax"
@@ -2397,10 +2630,18 @@
2397
2630
  "sessionCapable": true,
2398
2631
  "settlementConfig": {
2399
2632
  "cctp": {
2400
- "domain": 21
2633
+ "domain": 21,
2634
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
2401
2635
  },
2402
2636
  "lz": {
2403
- "chainKey": "ink"
2637
+ "cctp": {
2638
+ "domain": 21,
2639
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
2640
+ "token": "0x2D270e6886d130D724215A266106e6832161EAEd"
2641
+ },
2642
+ "chainKey": "ink",
2643
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
2644
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
2404
2645
  },
2405
2646
  "oft": {
2406
2647
  "adapter": "0x1cB6De532588fCA4a21B7209DE7C456AF8434A65",
@@ -2512,7 +2753,8 @@
2512
2753
  "sessionCapable": false,
2513
2754
  "settlementConfig": {
2514
2755
  "cctp": {
2515
- "domain": 6
2756
+ "domain": 6,
2757
+ "tokenMessenger": "0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA"
2516
2758
  }
2517
2759
  },
2518
2760
  "settlementLayers": [
@@ -2636,7 +2878,8 @@
2636
2878
  "sessionCapable": false,
2637
2879
  "settlementConfig": {
2638
2880
  "cctp": {
2639
- "domain": 3
2881
+ "domain": 3,
2882
+ "tokenMessenger": "0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA"
2640
2883
  }
2641
2884
  },
2642
2885
  "settlementLayers": [
@@ -3028,7 +3271,8 @@
3028
3271
  "sessionCapable": false,
3029
3272
  "settlementConfig": {
3030
3273
  "cctp": {
3031
- "domain": 0
3274
+ "domain": 0,
3275
+ "tokenMessenger": "0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA"
3032
3276
  }
3033
3277
  },
3034
3278
  "settlementLayers": [
@@ -3165,6 +3409,30 @@
3165
3409
  "priceSymbol": "USDC",
3166
3410
  "symbol": "ensUSDC3",
3167
3411
  "unpriced": true
3412
+ },
3413
+ {
3414
+ "address": "0x240b0316Df57887DBBE58b586508b19e633a14aa",
3415
+ "approvalSlot": 1,
3416
+ "authorization": {
3417
+ "domain": {
3418
+ "chainId": 11155111,
3419
+ "name": "USDC",
3420
+ "verifyingContract": "0x240b0316Df57887DBBE58b586508b19e633a14aa",
3421
+ "version": "1"
3422
+ },
3423
+ "domainSeparator": "0x4716452745b2f9314e4d915567917289d964866652ce973d2fabad2dbe207074",
3424
+ "eoaOnly": true,
3425
+ "standards": [
3426
+ "erc2612"
3427
+ ]
3428
+ },
3429
+ "balanceSlot": 0,
3430
+ "decimals": 6,
3431
+ "gasRefund": true,
3432
+ "pegGroup": "USD",
3433
+ "priceSymbol": "USDC",
3434
+ "symbol": "ensUSDC4",
3435
+ "unpriced": true
3168
3436
  }
3169
3437
  ],
3170
3438
  "vmType": "evm",
@@ -3197,7 +3465,8 @@
3197
3465
  "sessionCapable": false,
3198
3466
  "settlementConfig": {
3199
3467
  "cctp": {
3200
- "domain": 2
3468
+ "domain": 2,
3469
+ "tokenMessenger": "0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA"
3201
3470
  }
3202
3471
  },
3203
3472
  "settlementLayers": [
@@ -96,6 +96,7 @@ function errorsFor(chain) {
96
96
  ["11155111:0x768f42455a2d082e23ceef7d51e5787c82d67a39", permitOnly],
97
97
  ["11155111:0xcbfd80f74375c54e545af34788ff465f96f66f05", permitOnly],
98
98
  ["11155111:0x16f95d91dba7da3aca778ec053df0ff6c6a8aa8e", permitOnly],
99
+ ["11155111:0x240b0316df57887dbbe58b586508b19e633a14aa", permitOnly],
99
100
  ["11155420:0x5fd84259d66cd46123540766be93dfe6d43130d7", both],
100
101
  ]);
101
102
  const configured = new Map(Object.entries(index_1.chainRegistry).flatMap(([chainId, entry]) => entry.tokens.flatMap((token) => {
@@ -499,6 +500,77 @@ function errorsFor(chain) {
499
500
  (0, bun_test_1.expect)(errors).toHaveLength(1);
500
501
  (0, bun_test_1.expect)(errors[0].message).toContain("CCTP is not in settlementLayers");
501
502
  });
503
+ const ADDR = "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e";
504
+ const USDC = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
505
+ const withUsdc = (overrides) => {
506
+ const chain = validChain(overrides);
507
+ const [native] = chain.tokens;
508
+ return {
509
+ ...chain,
510
+ tokens: [
511
+ native,
512
+ { ...native, symbol: "USDC", name: "USD Coin", address: USDC, decimals: 6 },
513
+ ],
514
+ };
515
+ };
516
+ const pinned = (lz, cctp = { domain: 6, tokenMessenger: ADDR }) => withUsdc({
517
+ settlementLayers: ["RELAY", "CCTP", "ECO", "LZ"],
518
+ settlementConfig: {
519
+ cctp,
520
+ eco: { provers: [ADDR], stablecoins: [USDC] },
521
+ lz: { chainKey: "base", ...lz },
522
+ },
523
+ });
524
+ const lzFull = {
525
+ multiCall: ADDR,
526
+ transferDelegate: ADDR,
527
+ stargateUsdc: { pool: ADDR, token: USDC, eid: 30184 },
528
+ cctp: { domain: 6, token: USDC, feeReceiver: ADDR, feeless: true },
529
+ };
530
+ (0, bun_test_1.it)("accepts the settlement addresses sessions pin", () => {
531
+ (0, bun_test_1.expect)(errorsFor(pinned(lzFull))).toEqual([]);
532
+ });
533
+ bun_test_1.it.each([
534
+ ["CCTP", { cctp: { domain: 6, tokenMessenger: "0xabc" } }, "cctp.tokenMessenger"],
535
+ // A mixed-case address with a broken EIP-55 checksum is a typo.
536
+ ["CCTP", { cctp: { domain: 6, tokenMessenger: "0x8e60b7b64b63cD56b18ebcECADcb79B04919286E" } }, "cctp.tokenMessenger"],
537
+ ["CCTP", { cctp: { domain: 6, tokenMessenger: `0x${"0".repeat(40)}` } }, "cctp.tokenMessenger"],
538
+ ["ECO", { eco: { provers: [] } }, "eco.provers"],
539
+ ["ECO", { eco: { stablecoins: ["base"] } }, "eco.stablecoins"],
540
+ ["LZ", { lz: { chainKey: "base", multiCall: "0x1" } }, "lz.multiCall"],
541
+ ["LZ", { lz: { chainKey: "base", transferDelegate: "0x1" } }, "lz.transferDelegate"],
542
+ ["LZ", { lz: { chainKey: "base", stargateUsdc: { pool: ADDR, token: ADDR } } }, "lz.stargateUsdc"],
543
+ ["LZ", { lz: { chainKey: "base", stargateUsdc: { pool: ADDR, token: ADDR, eid: -1 } } }, "lz.stargateUsdc"],
544
+ ["LZ", { lz: { chainKey: "base", cctp: { domain: 6, token: USDC, feeReceiver: ADDR, feeless: false } } }, "lz.cctp"],
545
+ ["LZ", { lz: { chainKey: "base", cctp: { domain: 6 } } }, "lz.cctp"],
546
+ ])("rejects a malformed %s settlement address", (layer, config, field) => {
547
+ const errors = errorsFor(withLayer(layer, config));
548
+ (0, bun_test_1.expect)(errors.some((e) => e.message.includes(field))).toBe(true);
549
+ });
550
+ (0, bun_test_1.it)("rejects a Stargate token that is not a 6-decimal registry token", () => {
551
+ const errors = errorsFor(pinned({ ...lzFull, stargateUsdc: { pool: ADDR, token: ADDR, eid: 30184 } }));
552
+ (0, bun_test_1.expect)(errors.some((e) => e.message.includes("stargateUsdc.token"))).toBe(true);
553
+ });
554
+ (0, bun_test_1.it)("rejects a Stargate eid that differs from the chain's OFT eid", () => {
555
+ const chain = pinned(lzFull);
556
+ const errors = errorsFor({
557
+ ...chain,
558
+ settlementLayers: [...chain.settlementLayers, "OFT"],
559
+ settlementConfig: {
560
+ ...chain.settlementConfig,
561
+ oft: { adapter: ADDR, layerZeroEid: 30110, chainKey: "base" },
562
+ },
563
+ });
564
+ (0, bun_test_1.expect)(errors.some((e) => e.message.includes("stargateUsdc.eid"))).toBe(true);
565
+ });
566
+ (0, bun_test_1.it)("rejects an LZ CCTP token that is not a 6-decimal registry token", () => {
567
+ const errors = errorsFor(pinned({ ...lzFull, cctp: { domain: 6, token: ADDR, feeReceiver: ADDR } }));
568
+ (0, bun_test_1.expect)(errors.some((e) => e.message.includes("lz.cctp.token"))).toBe(true);
569
+ });
570
+ (0, bun_test_1.it)("rejects an LZ CCTP domain that differs from the CCTP layer's", () => {
571
+ const errors = errorsFor(pinned({ ...lzFull, cctp: { domain: 3, token: USDC, feeReceiver: ADDR } }));
572
+ (0, bun_test_1.expect)(errors.some((e) => e.message.includes("lz.cctp.domain"))).toBe(true);
573
+ });
502
574
  (0, bun_test_1.it)("rejects an unknown layer key", () => {
503
575
  const errors = errorsFor(validChain({ settlementConfig: { hop: {} } }));
504
576
  (0, bun_test_1.expect)(errors).toHaveLength(1);
@@ -180,7 +180,8 @@ function renderChains(chainRegistry, mainnets, testnets) {
180
180
  " paymentTokens?: PaymentToken[];",
181
181
  " settlementLayers: SettlementLayer[];",
182
182
  " /** Per-vendor addressing for the enabled layers that need it (Rhino chain",
183
- " * name, CCTP domain, NEAR prefix, OFT adapter). Third-party addresses —",
183
+ " * name, CCTP domain and TokenMessenger, NEAR prefix, OFT adapter, Eco",
184
+ " * provers, LayerZero Value Transfer contracts). Third-party addresses —",
184
185
  " * never the contracts block, which is read as Rhinestone-deployed. */",
185
186
  " settlementConfig?: SettlementConfig;",
186
187
  " /** What the deposit-ingestion vendors call this chain. `null` means the",
@@ -103,6 +103,21 @@ const CAIP2 = /^[-a-z0-9]{3,16}:[-_a-zA-Z0-9]{1,32}$/;
103
103
  const isObject = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
104
104
  const isNonEmptyString = (v) => typeof v === 'string' && v.length > 0;
105
105
  const isNonNegativeInt = (v) => typeof v === 'number' && Number.isInteger(v) && v >= 0;
106
+ // Strict: a mixed-case address must carry a valid EIP-55 checksum, so a typo in
107
+ // an authored address fails the build rather than publishing.
108
+ const isEvmAddress = (v) => typeof v === 'string' &&
109
+ (0, viem_1.isAddress)(v, { strict: true }) &&
110
+ !/^0x0{40}$/.test(v);
111
+ const isEvmAddressList = (v) => Array.isArray(v) && v.length > 0 && v.every(isEvmAddress);
112
+ const isLzCctp = (v) => isObject(v) &&
113
+ isNonNegativeInt(v.domain) &&
114
+ isEvmAddress(v.token) &&
115
+ isEvmAddress(v.feeReceiver) &&
116
+ (v.feeless === undefined || v.feeless === true);
117
+ const isStargatePool = (v) => isObject(v) &&
118
+ isEvmAddress(v.pool) &&
119
+ isEvmAddress(v.token) &&
120
+ isNonNegativeInt(v.eid);
106
121
  const isAbsentOr = (v, check) => v === undefined || check(v);
107
122
  const BASE58_ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
108
123
  /**
@@ -169,12 +184,23 @@ const SETTLEMENT_CONFIG_SCHEMA = {
169
184
  // absent for a destination-only chain, which nothing originates from.
170
185
  const SETTLEMENT_CONFIG_OPTIONAL = {
171
186
  rhino: { bridgeContract: isNonEmptyString },
172
- eco: { portal: isNonEmptyString },
187
+ cctp: { tokenMessenger: isEvmAddress },
188
+ eco: {
189
+ portal: isNonEmptyString,
190
+ provers: isEvmAddressList,
191
+ stablecoins: isEvmAddressList,
192
+ },
193
+ lz: {
194
+ multiCall: isEvmAddress,
195
+ transferDelegate: isEvmAddress,
196
+ stargateUsdc: isStargatePool,
197
+ cctp: isLzCctp,
198
+ },
173
199
  };
174
200
  // Layers whose whole payload is optional: only some chains need addressing, so
175
- // its absence is not a missing address. ECO's Portal reaches consumers through
176
- // the contracts block on every EVM chain and appears here only where that
177
- // block's shape rules the address out.
201
+ // its absence is not a missing address. ECO carries a non-EVM Portal, or EVM
202
+ // provers and stablecoins, only where they are known; the EVM Portal is in the
203
+ // contracts block.
178
204
  const SETTLEMENT_CONFIG_PAYLOAD_OPTIONAL = {
179
205
  ECO: 'eco',
180
206
  };
@@ -245,6 +271,35 @@ function settlementConfigProblems(chain) {
245
271
  }
246
272
  }
247
273
  }
274
+ // Tokens a session pins must be 6-decimal registry tokens on this chain.
275
+ const tokens = Array.isArray(chain.tokens) ? chain.tokens : [];
276
+ const isRegistryUsd6 = (address) => typeof address === 'string' &&
277
+ tokens.some((t) => isObject(t) &&
278
+ typeof t.address === 'string' &&
279
+ t.address.toLowerCase() === address.toLowerCase() &&
280
+ t.decimals === 6);
281
+ // The Stargate pool's endpoint id is the chain's LayerZero eid wherever the OFT
282
+ // layer states one.
283
+ const lz = isObject(cfg.lz) ? cfg.lz : undefined;
284
+ const stargate = isObject(lz?.stargateUsdc) ? lz.stargateUsdc : undefined;
285
+ if (stargate) {
286
+ if (!isRegistryUsd6(stargate.token)) {
287
+ problems.push(`settlementConfig.lz.stargateUsdc.token ${JSON.stringify(stargate.token)} is not a 6-decimal registry token on this chain`);
288
+ }
289
+ const oft = isObject(cfg.oft) ? cfg.oft : undefined;
290
+ if (oft && oft.layerZeroEid !== stargate.eid) {
291
+ problems.push(`settlementConfig.lz.stargateUsdc.eid ${JSON.stringify(stargate.eid)} does not match settlementConfig.oft.layerZeroEid ${JSON.stringify(oft.layerZeroEid)}`);
292
+ }
293
+ }
294
+ // A chain has one Circle domain, whichever layer states it.
295
+ const lzCctp = isObject(lz?.cctp) ? lz.cctp : undefined;
296
+ const cctp = isObject(cfg.cctp) ? cfg.cctp : undefined;
297
+ if (lzCctp && !isRegistryUsd6(lzCctp.token)) {
298
+ problems.push(`settlementConfig.lz.cctp.token ${JSON.stringify(lzCctp.token)} is not a 6-decimal registry token on this chain`);
299
+ }
300
+ if (lzCctp && cctp && lzCctp.domain !== cctp.domain) {
301
+ problems.push(`settlementConfig.lz.cctp.domain ${JSON.stringify(lzCctp.domain)} does not match settlementConfig.cctp.domain ${JSON.stringify(cctp.domain)}`);
302
+ }
248
303
  // A non-EVM chain's 1Click asset ids are not derivable from the on-chain
249
304
  // address, so every token on one has to carry its own. Missing it is not a
250
305
  // degraded route: `toNearAssetId` throws mid-plan.
@@ -186,7 +186,10 @@ async function collectCctp(registry, providers, env) {
186
186
  const contracts = registry[String(chainId)]?.network === "testnet"
187
187
  ? identity_1.CCTP_CONTRACTS.testnet
188
188
  : identity_1.CCTP_CONTRACTS.mainnet;
189
- return probeChain(chainId, contracts.tokenMessenger, rpcCandidates(chainId, registry, providers, env));
189
+ // The authored address where the chain has one, so a wrong entry shows up
190
+ // as not deployed; the canonical one for a chain CCTP is not on yet.
191
+ const authored = registry[String(chainId)]?.settlementConfig?.cctp?.tokenMessenger;
192
+ return probeChain(chainId, authored ?? contracts.tokenMessenger, rpcCandidates(chainId, registry, providers, env));
190
193
  }))));
191
194
  }
192
195
  return probes;
@@ -19,6 +19,7 @@ const NOT_ACCEPTED_AS_PAYMENT = new Set([
19
19
  "11155111:ensUSDC",
20
20
  "11155111:ensUSDC2",
21
21
  "11155111:ensUSDC3",
22
+ "11155111:ensUSDC4",
22
23
  "84532:USDC_TEST",
23
24
  ]);
24
25
  (0, bun_test_1.describe)("payment-token eligibility", () => {
@@ -93,7 +93,10 @@ const SOLANA_ID = 792_703_809;
93
93
  const baseSepolia = index_1.chainRegistry[String(BASE_SEPOLIA_ID)];
94
94
  const devnet = index_1.chainRegistry[String(DEVNET_ID)];
95
95
  (0, bun_test_1.expect)(baseSepolia.settlementLayers).toContain('CCTP');
96
- (0, bun_test_1.expect)(baseSepolia.settlementConfig?.cctp).toEqual({ domain: 6 });
96
+ (0, bun_test_1.expect)(baseSepolia.settlementConfig?.cctp).toEqual({
97
+ domain: 6,
98
+ tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
99
+ });
97
100
  (0, bun_test_1.expect)(baseSepolia.tokens.some((token) => token.symbol === 'USDC' && token.address === BASE_SEPOLIA_USDC)).toBe(true);
98
101
  (0, bun_test_1.expect)(devnet.tokens.some((token) => token.symbol === 'USDC' && token.address === DEVNET_USDC)).toBe(true);
99
102
  // Circle assigns domains per blockchain, not per network, so a testnet
@@ -104,6 +107,7 @@ const SOLANA_ID = 792_703_809;
104
107
  (0, bun_test_1.expect)(devnet.network).toBe('testnet');
105
108
  (0, bun_test_1.expect)(index_1.chainRegistry[String(BASE_ID)].settlementConfig?.cctp).toEqual({
106
109
  domain: 6,
110
+ tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
107
111
  });
108
112
  (0, bun_test_1.expect)(index_1.chainRegistry[String(SOLANA_ID)].settlementConfig?.cctp).toEqual({
109
113
  domain: 5,
@@ -87,7 +87,8 @@ interface Chain {
87
87
  paymentTokens?: PaymentToken[];
88
88
  settlementLayers: SettlementLayer[];
89
89
  /** Per-vendor addressing for the enabled layers that need it (Rhino chain
90
- * name, CCTP domain, NEAR prefix, OFT adapter). Third-party addresses —
90
+ * name, CCTP domain and TokenMessenger, NEAR prefix, OFT adapter, Eco
91
+ * provers, LayerZero Value Transfer contracts). Third-party addresses —
91
92
  * never the contracts block, which is read as Rhinestone-deployed. */
92
93
  settlementConfig?: SettlementConfig;
93
94
  /** What the deposit-ingestion vendors call this chain. `null` means the
@@ -83,10 +83,35 @@ const chains = {
83
83
  "sessionCapable": true,
84
84
  "settlementConfig": {
85
85
  "cctp": {
86
- "domain": 0
86
+ "domain": 0,
87
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
88
+ },
89
+ "eco": {
90
+ "provers": [
91
+ "0xE3e4e6F284f1c8E17bafE4268EB98c36886B4d8B",
92
+ "0xEC08fb4647f3f50d1162a578d481266687C60fc5",
93
+ "0xceBB7cDDBA4734C7130BF114a37C2dA4C5f3c473",
94
+ "0xec004Ab4870c4e177c66949329dCdb503CE41022"
95
+ ],
96
+ "stablecoins": [
97
+ "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
98
+ "0xdac17f958d2ee523a2206206994597c13d831ec7"
99
+ ]
87
100
  },
88
101
  "lz": {
89
- "chainKey": "ethereum"
102
+ "cctp": {
103
+ "domain": 0,
104
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
105
+ "token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
106
+ },
107
+ "chainKey": "ethereum",
108
+ "multiCall": "0xAcdDAC6C77318B615f7F6fB9bb67c6833e9c05f1",
109
+ "stargateUsdc": {
110
+ "eid": 30101,
111
+ "pool": "0xc026395860Db2d07ee33e05fE50ed7bD583189C7",
112
+ "token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
113
+ },
114
+ "transferDelegate": "0x72fAEbF58A62e33C044c37D8D973a961633ea294"
90
115
  },
91
116
  "near": {
92
117
  "prefix": "eth"
@@ -241,10 +266,34 @@ const chains = {
241
266
  "sessionCapable": true,
242
267
  "settlementConfig": {
243
268
  "cctp": {
244
- "domain": 2
269
+ "domain": 2,
270
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
271
+ },
272
+ "eco": {
273
+ "provers": [
274
+ "0xE3e4e6F284f1c8E17bafE4268EB98c36886B4d8B",
275
+ "0xEC08fb4647f3f50d1162a578d481266687C60fc5",
276
+ "0xec004Ab4870c4e177c66949329dCdb503CE41022"
277
+ ],
278
+ "stablecoins": [
279
+ "0x0b2c639c533813f4aa9d7837caf62653d097ff85",
280
+ "0x01bFF41798a0BcF287b996046Ca68b395DbC1071"
281
+ ]
245
282
  },
246
283
  "lz": {
247
- "chainKey": "optimism"
284
+ "cctp": {
285
+ "domain": 2,
286
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
287
+ "token": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85"
288
+ },
289
+ "chainKey": "optimism",
290
+ "multiCall": "0x5528Cf58fEB8fbfcE94f43B33240FFFB1312bDe3",
291
+ "stargateUsdc": {
292
+ "eid": 30111,
293
+ "pool": "0xcE8CcA271Ebc0533920C83d39F417ED6A0abB7D0",
294
+ "token": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85"
295
+ },
296
+ "transferDelegate": "0xFBea79D13E6F795a0e1E4B99090f1165a01C7B03"
248
297
  },
249
298
  "near": {
250
299
  "prefix": "op"
@@ -617,10 +666,28 @@ const chains = {
617
666
  "sessionCapable": true,
618
667
  "settlementConfig": {
619
668
  "cctp": {
620
- "domain": 10
669
+ "domain": 10,
670
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
671
+ },
672
+ "eco": {
673
+ "provers": [
674
+ "0xEC08fb4647f3f50d1162a578d481266687C60fc5",
675
+ "0xec004Ab4870c4e177c66949329dCdb503CE41022"
676
+ ],
677
+ "stablecoins": [
678
+ "0x078d782b760474a361dda0af3839290b0ef57ad6",
679
+ "0x9151434b16b9763660705744891fA906F660EcC5"
680
+ ]
621
681
  },
622
682
  "lz": {
623
- "chainKey": "unichain"
683
+ "cctp": {
684
+ "domain": 10,
685
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
686
+ "token": "0x078D782b760474a361dDA0AF3839290b0EF57AD6"
687
+ },
688
+ "chainKey": "unichain",
689
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
690
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
624
691
  },
625
692
  "oft": {
626
693
  "adapter": "0xc07bE8994D035631c36fb4a89C918CeFB2f03EC3",
@@ -767,10 +834,33 @@ const chains = {
767
834
  "sessionCapable": true,
768
835
  "settlementConfig": {
769
836
  "cctp": {
770
- "domain": 7
837
+ "domain": 7,
838
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
839
+ },
840
+ "eco": {
841
+ "provers": [
842
+ "0xE3e4e6F284f1c8E17bafE4268EB98c36886B4d8B",
843
+ "0xec004Ab4870c4e177c66949329dCdb503CE41022"
844
+ ],
845
+ "stablecoins": [
846
+ "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",
847
+ "0xc2132d05d31c914a87c6611c10748aeb04b58e8f"
848
+ ]
771
849
  },
772
850
  "lz": {
773
- "chainKey": "polygon"
851
+ "cctp": {
852
+ "domain": 7,
853
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
854
+ "token": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"
855
+ },
856
+ "chainKey": "polygon",
857
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
858
+ "stargateUsdc": {
859
+ "eid": 30109,
860
+ "pool": "0x9Aa02D4Fae7F58b8E8f34c66E756cC734DAc7fe4",
861
+ "token": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"
862
+ },
863
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
774
864
  },
775
865
  "near": {
776
866
  "prefix": "pol"
@@ -918,10 +1008,18 @@ const chains = {
918
1008
  "sessionCapable": true,
919
1009
  "settlementConfig": {
920
1010
  "cctp": {
921
- "domain": 15
1011
+ "domain": 15,
1012
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
922
1013
  },
923
1014
  "lz": {
924
- "chainKey": "monad"
1015
+ "cctp": {
1016
+ "domain": 15,
1017
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
1018
+ "token": "0x754704Bc059F8C67012fEd69BC8A327a5aafb603"
1019
+ },
1020
+ "chainKey": "monad",
1021
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
1022
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
925
1023
  }
926
1024
  },
927
1025
  "settlementLayers": [
@@ -1049,10 +1147,23 @@ const chains = {
1049
1147
  "sessionCapable": true,
1050
1148
  "settlementConfig": {
1051
1149
  "cctp": {
1052
- "domain": 13
1150
+ "domain": 13,
1151
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
1053
1152
  },
1054
1153
  "lz": {
1055
- "chainKey": "sonic"
1154
+ "cctp": {
1155
+ "domain": 13,
1156
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
1157
+ "token": "0x29219dd400f2Bf60E5a23d13Be72B486D4038894"
1158
+ },
1159
+ "chainKey": "sonic",
1160
+ "multiCall": "0x6336eD39c2Eb15a8cFea73542600eFf31EA83353",
1161
+ "stargateUsdc": {
1162
+ "eid": 30332,
1163
+ "pool": "0xA272fFe20cFfe769CdFc4b63088DCD2C82a2D8F9",
1164
+ "token": "0x29219dd400f2Bf60E5a23d13Be72B486D4038894"
1165
+ },
1166
+ "transferDelegate": "0x420C2efa26c972308A543305217399ff65CbDb13"
1056
1167
  }
1057
1168
  },
1058
1169
  "settlementLayers": [
@@ -1245,6 +1356,14 @@ const chains = {
1245
1356
  "settlementConfig": {
1246
1357
  "cctp": {
1247
1358
  "domain": 14
1359
+ },
1360
+ "eco": {
1361
+ "provers": [
1362
+ "0xEC08fb4647f3f50d1162a578d481266687C60fc5"
1363
+ ],
1364
+ "stablecoins": [
1365
+ "0x79A02482A880bCE3F13e09Da970dC34db4CD24d1"
1366
+ ]
1248
1367
  }
1249
1368
  },
1250
1369
  "settlementLayers": [
@@ -1341,10 +1460,28 @@ const chains = {
1341
1460
  "sessionCapable": true,
1342
1461
  "settlementConfig": {
1343
1462
  "cctp": {
1344
- "domain": 19
1463
+ "domain": 19,
1464
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
1465
+ },
1466
+ "eco": {
1467
+ "provers": [
1468
+ "0xEC08fb4647f3f50d1162a578d481266687C60fc5",
1469
+ "0xec004Ab4870c4e177c66949329dCdb503CE41022"
1470
+ ],
1471
+ "stablecoins": [
1472
+ "0xb88339CB7199b77E23DB6E890353E22632Ba630f",
1473
+ "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb"
1474
+ ]
1345
1475
  },
1346
1476
  "lz": {
1347
- "chainKey": "hyperliquid"
1477
+ "cctp": {
1478
+ "domain": 19,
1479
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
1480
+ "token": "0xb88339CB7199b77E23DB6E890353E22632Ba630f"
1481
+ },
1482
+ "chainKey": "hyperliquid",
1483
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
1484
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
1348
1485
  },
1349
1486
  "rhino": {
1350
1487
  "bridgeContract": "0x5e023c31e1d3dcd08a1b3e8c96f6ef8aa8fcacd1",
@@ -1460,7 +1597,14 @@ const chains = {
1460
1597
  "sessionCapable": true,
1461
1598
  "settlementConfig": {
1462
1599
  "lz": {
1463
- "chainKey": "soneium"
1600
+ "chainKey": "soneium",
1601
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
1602
+ "stargateUsdc": {
1603
+ "eid": 30340,
1604
+ "pool": "0x45f1A95A4D3f3836523F5c83673c797f4d4d263B",
1605
+ "token": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369"
1606
+ },
1607
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
1464
1608
  }
1465
1609
  },
1466
1610
  "settlementLayers": [
@@ -1569,6 +1713,16 @@ const chains = {
1569
1713
  },
1570
1714
  "publicRpcUrl": "https://api.roninchain.com/rpc",
1571
1715
  "sessionCapable": true,
1716
+ "settlementConfig": {
1717
+ "eco": {
1718
+ "provers": [
1719
+ "0xceBB7cDDBA4734C7130BF114a37C2dA4C5f3c473"
1720
+ ],
1721
+ "stablecoins": [
1722
+ "0x0b7007c13325c48911f73a2dad5fa5dcbf808adc"
1723
+ ]
1724
+ }
1725
+ },
1572
1726
  "settlementLayers": [
1573
1727
  "ECO",
1574
1728
  "RELAY"
@@ -1754,7 +1908,8 @@ const chains = {
1754
1908
  "sessionCapable": true,
1755
1909
  "settlementConfig": {
1756
1910
  "cctp": {
1757
- "domain": 26
1911
+ "domain": 26,
1912
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
1758
1913
  },
1759
1914
  "rhino": {
1760
1915
  "bridgeContract": "0x5e023c31e1d3dcd08a1b3e8c96f6ef8aa8fcacd1",
@@ -1835,10 +1990,34 @@ const chains = {
1835
1990
  "sessionCapable": true,
1836
1991
  "settlementConfig": {
1837
1992
  "cctp": {
1838
- "domain": 6
1993
+ "domain": 6,
1994
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
1995
+ },
1996
+ "eco": {
1997
+ "provers": [
1998
+ "0xE3e4e6F284f1c8E17bafE4268EB98c36886B4d8B",
1999
+ "0xEC08fb4647f3f50d1162a578d481266687C60fc5",
2000
+ "0xceBB7cDDBA4734C7130BF114a37C2dA4C5f3c473",
2001
+ "0xec004Ab4870c4e177c66949329dCdb503CE41022"
2002
+ ],
2003
+ "stablecoins": [
2004
+ "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
2005
+ ]
1839
2006
  },
1840
2007
  "lz": {
1841
- "chainKey": "base"
2008
+ "cctp": {
2009
+ "domain": 6,
2010
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
2011
+ "token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
2012
+ },
2013
+ "chainKey": "base",
2014
+ "multiCall": "0x7e07A9148E9149e430C6412b79A675028595Ff1f",
2015
+ "stargateUsdc": {
2016
+ "eid": 30184,
2017
+ "pool": "0x27a16dc786820B16E5c9028b75B99F6f604b5d26",
2018
+ "token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
2019
+ },
2020
+ "transferDelegate": "0x8EcA03175fd5aC62fb6F4EcbB9A95D13dCDCB4F8"
1842
2021
  },
1843
2022
  "near": {
1844
2023
  "prefix": "base"
@@ -1959,8 +2138,25 @@ const chains = {
1959
2138
  "publicRpcUrl": "https://rpc.plasma.to",
1960
2139
  "sessionCapable": true,
1961
2140
  "settlementConfig": {
2141
+ "eco": {
2142
+ "provers": [
2143
+ "0xEC08fb4647f3f50d1162a578d481266687C60fc5",
2144
+ "0xec004Ab4870c4e177c66949329dCdb503CE41022"
2145
+ ],
2146
+ "stablecoins": [
2147
+ "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb"
2148
+ ]
2149
+ },
1962
2150
  "lz": {
1963
- "chainKey": "plasma"
2151
+ "cctp": {
2152
+ "domain": 33,
2153
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
2154
+ "feeless": true,
2155
+ "token": "0x2d661C89D812261039AF9764eceaAee884f5F67F"
2156
+ },
2157
+ "chainKey": "plasma",
2158
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
2159
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
1964
2160
  },
1965
2161
  "oft": {
1966
2162
  "adapter": "0x02ca37966753bDdDf11216B73B16C1dE756A7CF9",
@@ -2154,10 +2350,34 @@ const chains = {
2154
2350
  "sessionCapable": true,
2155
2351
  "settlementConfig": {
2156
2352
  "cctp": {
2157
- "domain": 3
2353
+ "domain": 3,
2354
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
2355
+ },
2356
+ "eco": {
2357
+ "provers": [
2358
+ "0xE3e4e6F284f1c8E17bafE4268EB98c36886B4d8B",
2359
+ "0xEC08fb4647f3f50d1162a578d481266687C60fc5",
2360
+ "0xec004Ab4870c4e177c66949329dCdb503CE41022"
2361
+ ],
2362
+ "stablecoins": [
2363
+ "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
2364
+ "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9"
2365
+ ]
2158
2366
  },
2159
2367
  "lz": {
2160
- "chainKey": "arbitrum"
2368
+ "cctp": {
2369
+ "domain": 3,
2370
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
2371
+ "token": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"
2372
+ },
2373
+ "chainKey": "arbitrum",
2374
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
2375
+ "stargateUsdc": {
2376
+ "eid": 30110,
2377
+ "pool": "0xe8CDF27AcD73a434D661C84887215F7598e7d0d3",
2378
+ "token": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"
2379
+ },
2380
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
2161
2381
  },
2162
2382
  "near": {
2163
2383
  "prefix": "arb"
@@ -2331,10 +2551,23 @@ const chains = {
2331
2551
  "sessionCapable": true,
2332
2552
  "settlementConfig": {
2333
2553
  "cctp": {
2334
- "domain": 1
2554
+ "domain": 1,
2555
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
2335
2556
  },
2336
2557
  "lz": {
2337
- "chainKey": "avalanche"
2558
+ "cctp": {
2559
+ "domain": 1,
2560
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
2561
+ "token": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"
2562
+ },
2563
+ "chainKey": "avalanche",
2564
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
2565
+ "stargateUsdc": {
2566
+ "eid": 30106,
2567
+ "pool": "0x5634c4a5FEd09819E3c46D86A965Dd9447d86e47",
2568
+ "token": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"
2569
+ },
2570
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
2338
2571
  },
2339
2572
  "near": {
2340
2573
  "prefix": "avax"
@@ -2485,10 +2718,18 @@ const chains = {
2485
2718
  "sessionCapable": true,
2486
2719
  "settlementConfig": {
2487
2720
  "cctp": {
2488
- "domain": 21
2721
+ "domain": 21,
2722
+ "tokenMessenger": "0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"
2489
2723
  },
2490
2724
  "lz": {
2491
- "chainKey": "ink"
2725
+ "cctp": {
2726
+ "domain": 21,
2727
+ "feeReceiver": "0xB324De4ADd083B74856082Ed2EA0B8b6F3864827",
2728
+ "token": "0x2D270e6886d130D724215A266106e6832161EAEd"
2729
+ },
2730
+ "chainKey": "ink",
2731
+ "multiCall": "0x8E60b7b64b63cD56b18ebcECADcb79B04919286e",
2732
+ "transferDelegate": "0x60FccB9b58d5E806ca5Cb8BFCe721c2274609dE4"
2492
2733
  },
2493
2734
  "oft": {
2494
2735
  "adapter": "0x1cB6De532588fCA4a21B7209DE7C456AF8434A65",
@@ -2604,7 +2845,8 @@ const chains = {
2604
2845
  "sessionCapable": false,
2605
2846
  "settlementConfig": {
2606
2847
  "cctp": {
2607
- "domain": 6
2848
+ "domain": 6,
2849
+ "tokenMessenger": "0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA"
2608
2850
  }
2609
2851
  },
2610
2852
  "settlementLayers": [
@@ -2732,7 +2974,8 @@ const chains = {
2732
2974
  "sessionCapable": false,
2733
2975
  "settlementConfig": {
2734
2976
  "cctp": {
2735
- "domain": 3
2977
+ "domain": 3,
2978
+ "tokenMessenger": "0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA"
2736
2979
  }
2737
2980
  },
2738
2981
  "settlementLayers": [
@@ -3135,7 +3378,8 @@ const chains = {
3135
3378
  "sessionCapable": false,
3136
3379
  "settlementConfig": {
3137
3380
  "cctp": {
3138
- "domain": 0
3381
+ "domain": 0,
3382
+ "tokenMessenger": "0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA"
3139
3383
  }
3140
3384
  },
3141
3385
  "settlementLayers": [
@@ -3272,6 +3516,30 @@ const chains = {
3272
3516
  "priceSymbol": "USDC",
3273
3517
  "symbol": "ensUSDC3",
3274
3518
  "unpriced": true
3519
+ },
3520
+ {
3521
+ "address": "0x240b0316Df57887DBBE58b586508b19e633a14aa",
3522
+ "approvalSlot": 1,
3523
+ "authorization": {
3524
+ "domain": {
3525
+ "chainId": 11155111,
3526
+ "name": "USDC",
3527
+ "verifyingContract": "0x240b0316Df57887DBBE58b586508b19e633a14aa",
3528
+ "version": "1"
3529
+ },
3530
+ "domainSeparator": "0x4716452745b2f9314e4d915567917289d964866652ce973d2fabad2dbe207074",
3531
+ "eoaOnly": true,
3532
+ "standards": [
3533
+ "erc2612"
3534
+ ]
3535
+ },
3536
+ "balanceSlot": 0,
3537
+ "decimals": 6,
3538
+ "gasRefund": true,
3539
+ "pegGroup": "USD",
3540
+ "priceSymbol": "USDC",
3541
+ "symbol": "ensUSDC4",
3542
+ "unpriced": true
3275
3543
  }
3276
3544
  ],
3277
3545
  "vmType": "evm",
@@ -3308,7 +3576,8 @@ const chains = {
3308
3576
  "sessionCapable": false,
3309
3577
  "settlementConfig": {
3310
3578
  "cctp": {
3311
- "domain": 2
3579
+ "domain": 2,
3580
+ "tokenMessenger": "0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA"
3312
3581
  }
3313
3582
  },
3314
3583
  "settlementLayers": [
@@ -1,2 +1,2 @@
1
- declare const PACKAGE_VERSION = "2.32.0";
1
+ declare const PACKAGE_VERSION = "2.34.0";
2
2
  export { PACKAGE_VERSION };
@@ -2,5 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PACKAGE_VERSION = void 0;
4
4
  // Auto-generated by scripts/generate.ts. Do not edit manually.
5
- const PACKAGE_VERSION = "2.32.0";
5
+ const PACKAGE_VERSION = "2.34.0";
6
6
  exports.PACKAGE_VERSION = PACKAGE_VERSION;
@@ -201,19 +201,25 @@ interface RhinoChainConfig {
201
201
  }
202
202
  /** Circle CCTP's domain id for this chain. `0` is Ethereum, not "unset". */
203
203
  /**
204
- * Where Eco's Portal lives on a chain the contracts block cannot express.
205
- *
206
- * Absent on every EVM chain, whose Portal reaches consumers as `ecoPortal`
207
- * there. Present only where that block's shape rules the address out — a base58
208
- * program id — and where something calls the Portal directly rather than
209
- * reading it off a quote.
204
+ * Eco addressing the contracts block cannot carry: a non-EVM Portal (a base58
205
+ * program id), or on EVM the provers and stablecoins a settlement-scoped session
206
+ * pins. An EVM chain's Portal stays in the contracts block as `ecoPortal`.
210
207
  */
211
208
  interface EcoChainConfig {
212
- /** The Portal program `fund` and `publish` are called on, base58. */
213
- portal: string;
209
+ /**
210
+ * The Portal program `fund` and `publish` are called on, base58. Non-EVM only;
211
+ * an EVM chain's Portal is the contracts block's `ecoPortal`.
212
+ */
213
+ portal?: string;
214
+ /** EVM: the provers live Eco quotes name that are deployed on this chain. */
215
+ provers?: string[];
216
+ /** EVM: the 6-decimal USD stablecoins Eco settles on this chain. */
217
+ stablecoins?: string[];
214
218
  }
215
219
  interface CctpChainConfig {
216
220
  domain: number;
221
+ /** Circle's TokenMessengerV2 (EVM only). */
222
+ tokenMessenger?: string;
217
223
  }
218
224
  /** NEAR 1Click's per-chain asset prefix (`eth`, `arb`, `sol`). */
219
225
  interface NearChainConfig {
@@ -248,6 +254,30 @@ interface LzChainConfig {
248
254
  * VMs (`999` is both HyperEVM and HyperCore).
249
255
  */
250
256
  chainKey: string;
257
+ /**
258
+ * The contracts the Value Transfer API calls from this chain, where its routes
259
+ * are known: `approve(transferDelegate)`, then `multiCall.execute(...)`.
260
+ */
261
+ multiCall?: string;
262
+ transferDelegate?: string;
263
+ /** The Stargate V2 pool moving this chain's registry USDC. */
264
+ stargateUsdc?: {
265
+ pool: string;
266
+ token: string;
267
+ eid: number;
268
+ };
269
+ /**
270
+ * Where the API bridges USDC over CCTP from or to this chain, which our own
271
+ * CCTP layer need not cover: its Circle domain, the native USDC it burns and
272
+ * mints, who receives its relay fee when this chain is the origin, and
273
+ * `feeless` when it delivers here without one.
274
+ */
275
+ cctp?: {
276
+ domain: number;
277
+ token: string;
278
+ feeReceiver: string;
279
+ feeless?: true;
280
+ };
251
281
  }
252
282
  /**
253
283
  * Per-vendor addressing for the settlement layers this chain has enabled, one
@@ -263,8 +293,8 @@ interface LzChainConfig {
263
293
  * which these third-party addresses would corrupt.
264
294
  *
265
295
  * Absent, or a layer's key absent, means that layer needs no addressing here —
266
- * `across` and `relay` never appear, and `eco` only where the contracts block
267
- * cannot express its Portal. A key present for a layer NOT in
296
+ * `across` and `relay` never appear, and `eco` only where it carries a non-EVM
297
+ * Portal or EVM provers and stablecoins. A key present for a layer NOT in
268
298
  * `settlementLayers` should not occur; consumers gate on `settlementLayers`.
269
299
  */
270
300
  interface SettlementConfig {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rhinestone/shared-configs",
3
- "version": "2.32.0",
3
+ "version": "2.34.0",
4
4
  "description": "Reusable configuration files for Rhinestone services",
5
5
  "author": {
6
6
  "name": "Rhinestone",