@gvnrdao/dh-sdk 0.0.301 → 0.0.304

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.
@@ -33,6 +33,8 @@ export interface DeploymentContracts {
33
33
  PositionDelegateRegistry?: string;
34
34
  /** BitcoinWithdrawalAddressRegistry — per-wallet allowlist of approved BTC withdrawal destinations (24h time-lock). */
35
35
  BitcoinWithdrawalAddressRegistry?: string;
36
+ /** CarryAgentRegistry — on-chain attestation / kill-switch for the Carry product: per-position agent registration with permitted-asset allow-list. */
37
+ CarryAgentRegistry?: string;
36
38
  PriceFeedConsumer?: string;
37
39
  OperationAuthorizationRegistry?: string;
38
40
  PKPValidation?: string;
@@ -34,6 +34,8 @@ export interface NetworkConfig {
34
34
  positionDelegateRegistry?: string;
35
35
  /** BitcoinWithdrawalAddressRegistry proxy; per-wallet allowlist gating borrower-initiated BTC withdrawal destinations (24h time-lock). */
36
36
  bitcoinWithdrawalAddressRegistry?: string;
37
+ /** CarryAgentRegistry proxy; on-chain attestation / kill-switch for the Carry product (per-position agent registration + permitted-asset allow-list). */
38
+ carryAgentRegistry?: string;
37
39
  mockUsdcToken?: string;
38
40
  mockUsdtToken?: string;
39
41
  mockUsdcOwner?: string;
@@ -62,7 +62,8 @@ var SEPOLIA_DEPLOYMENT = {
62
62
  mockUsdtToken: "0xF8b7fB38b17a310960E47805Be9adba0b0e0394D",
63
63
  PositionDelegateRegistry: "0x482369De283622E7b05731875ec137d4E3D208F9",
64
64
  FeeRecipientRegistry: "0x95795F8403DDb629E8527B2934C4e71f5fC0C374",
65
- BitcoinWithdrawalAddressRegistry: "0x6376D392097F0A81e51BD83960A97EA20eaf1dbe"
65
+ BitcoinWithdrawalAddressRegistry: "0x6376D392097F0A81e51BD83960A97EA20eaf1dbe",
66
+ CarryAgentRegistry: "0x5595CB538D44E6Cf179D20364fD631D0477e69f7"
66
67
  },
67
68
  upgraded: {
68
69
  PositionManager: {
@@ -324,7 +325,9 @@ var SEPOLIA_DEPLOYMENT = {
324
325
  FEE_RECIPIENT_REGISTRY_IMPL: "0xd08513a7cB2dd354B26cDDf549616F12054c34c9",
325
326
  OPERATION_AUTHORIZATION_REGISTRY_IMPL: "0xe0D981B60351f0f8fFDA2b50C8180Fb37CeF3883",
326
327
  BITCOIN_WITHDRAWAL_ADDRESS_REGISTRY: "0x6376D392097F0A81e51BD83960A97EA20eaf1dbe",
327
- BITCOIN_WITHDRAWAL_ADDRESS_REGISTRY_IMPL: "0xFF270BC4470dBA80430Bd1a3a66EB691599354fA"
328
+ BITCOIN_WITHDRAWAL_ADDRESS_REGISTRY_IMPL: "0xFF270BC4470dBA80430Bd1a3a66EB691599354fA",
329
+ CARRY_AGENT_REGISTRY: "0x5595CB538D44E6Cf179D20364fD631D0477e69f7",
330
+ CARRY_AGENT_REGISTRY_IMPL: "0x1b11a3D5e46F3672E643c997f0d569DFf0b64a01"
328
331
  }
329
332
  };
330
333
  var SEPOLIA_CONTRACTS = {
@@ -352,7 +355,8 @@ var SEPOLIA_CONTRACTS = {
352
355
  mockUsdtToken: "0xF8b7fB38b17a310960E47805Be9adba0b0e0394D",
353
356
  PositionDelegateRegistry: "0x482369De283622E7b05731875ec137d4E3D208F9",
354
357
  FeeRecipientRegistry: "0x95795F8403DDb629E8527B2934C4e71f5fC0C374",
355
- BitcoinWithdrawalAddressRegistry: "0x6376D392097F0A81e51BD83960A97EA20eaf1dbe"
358
+ BitcoinWithdrawalAddressRegistry: "0x6376D392097F0A81e51BD83960A97EA20eaf1dbe",
359
+ CarryAgentRegistry: "0x5595CB538D44E6Cf179D20364fD631D0477e69f7"
356
360
  };
357
361
  var MAINNET_DEPLOYMENT = {
358
362
  network: "mainnet",
@@ -387,10 +391,12 @@ var MAINNET_DEPLOYMENT = {
387
391
  upgraded: {
388
392
  SimplePSMV2: {
389
393
  previousImplementation: "0x1a555FB8D6EDdF755a4575E541651EdB8B49a15A",
390
- newImplementation: "0x1a555FB8D6EDdF755a4575E541651EdB8B49a15A",
391
- upgradedAt: "2026-06-16T17:53:24.979Z",
392
- upgradedBy: "0xEba7BfAeB35ee18408b424Ee0BB45AdDf776589f",
393
- reason: "Initial PSM deploy / artifact sync"
394
+ newImplementation: "0x8717761444b1822c2E6916aB5bD9ac96c91b6DF5",
395
+ upgradedAt: "2026-07-06T10:41:35.000Z",
396
+ upgradedBy: "AdminModule/Safe audit-batch upgradeToAndCall; executed by 0xEba7BfAeB35ee18408b424Ee0BB45AdDf776589f in tx 0x5052d1559d56b8e178699183e56c4fd84a163e987365c5af9c8d669a723c35d6 (block 25472960)",
397
+ reason: "Reconciled from chain \u2014 mainnet audit rollout batch (cross-ref onchain-auth/.safe-batches/mainnet-audit-execute.json)",
398
+ executeTx: "0x5052d1559d56b8e178699183e56c4fd84a163e987365c5af9c8d669a723c35d6",
399
+ block: 25472960
394
400
  },
395
401
  CollateralManagerModule: {
396
402
  previousImplementation: "0x1919860e528Cd2AbbD31a17858c986b8aCc8C185",
@@ -405,6 +411,65 @@ var MAINNET_DEPLOYMENT = {
405
411
  upgradedAt: "2026-07-08T20:33:59Z",
406
412
  upgradedBy: "AdminModule generic-op 0x2603a486c0f34554b864cc1d909b325c7e105331da10ec0fd7e0b9373fa76207 (3-of-5 ADMIN_ROLE Safes, 24h timelock; executed by 0xfb3B8cbeFB7D666A6Af34C53e189EdC31862a7be in tx 0x430c8e450f12d3d9359cde356ac5e2ef39661d7a89884b5674a596c1090f6cff)",
407
413
  reason: "Validator gas fix (#420): BitcoinAddressValidator packed-table lookups; VERSION 1.0.0 -> 1.0.1"
414
+ },
415
+ UCDController: {
416
+ newImplementation: "0x28B8cAB89D89B3F83581FD2290de2Ce84535bd0A",
417
+ upgradedBy: "Reconciled from chain \u2014 Upgraded event log unavailable; provenance omitted (never fabricated)",
418
+ reason: "Reconciled from chain \u2014 mainnet audit rollout batch (cross-ref onchain-auth/.safe-batches/mainnet-audit-execute.json)"
419
+ },
420
+ PositionManagerCoreModule: {
421
+ previousImplementation: "0x6C8b0FB93F8d0239254aefaC24d4264cA2F8AAeB",
422
+ newImplementation: "0x5067Ea1d40b2Aaf4ad693bD9b6e7463C1A29E849",
423
+ upgradedAt: "2026-07-06T08:02:35.000Z",
424
+ upgradedBy: "AdminModule/Safe audit-batch upgradeToAndCall; executed by 0x2002827d34A781883Ec4c83c36ECC140c3911F2B in tx 0xeb2bfe77d46394b6d0afd46beb0a80cd9beb91f6771ccb59ff9fba27d4af4f3d (block 25472167)",
425
+ reason: "Reconciled from chain \u2014 mainnet audit rollout batch (cross-ref onchain-auth/.safe-batches/mainnet-audit-execute.json)",
426
+ executeTx: "0xeb2bfe77d46394b6d0afd46beb0a80cd9beb91f6771ccb59ff9fba27d4af4f3d",
427
+ block: 25472167
428
+ },
429
+ LiquidationManagerModule: {
430
+ previousImplementation: "0xc2f4517eeD7c4c516939a64c7938a6ab432D99c4",
431
+ newImplementation: "0xe7444C1d9652dAb31BaAdBE4C7c7e7Df3515dA46",
432
+ upgradedAt: "2026-07-06T10:40:47.000Z",
433
+ upgradedBy: "AdminModule/Safe audit-batch upgradeToAndCall; executed by 0xEba7BfAeB35ee18408b424Ee0BB45AdDf776589f in tx 0xc173b97af68cc9172ea0ddc91a2c90bf02eac1505e749d92aa044aa69891f48c (block 25472956)",
434
+ reason: "Reconciled from chain \u2014 mainnet audit rollout batch (cross-ref onchain-auth/.safe-batches/mainnet-audit-execute.json)",
435
+ executeTx: "0xc173b97af68cc9172ea0ddc91a2c90bf02eac1505e749d92aa044aa69891f48c",
436
+ block: 25472956
437
+ },
438
+ BTCSpendAuthorizer: {
439
+ previousImplementation: "0xb003ed89F695E8819a85513fE17260b805B3c478",
440
+ newImplementation: "0x40c9e8C46C65E0A57BB63da5368868A9E8Df81A5",
441
+ upgradedAt: "2026-07-06T10:40:59.000Z",
442
+ upgradedBy: "AdminModule/Safe audit-batch upgradeToAndCall; executed by 0xEba7BfAeB35ee18408b424Ee0BB45AdDf776589f in tx 0xe1b1884a7e76c7fd569522545a04e49d5128d83d27b3892cda59f143b53b5281 (block 25472957)",
443
+ reason: "Reconciled from chain \u2014 mainnet audit rollout batch (cross-ref onchain-auth/.safe-batches/mainnet-audit-execute.json)",
444
+ executeTx: "0xe1b1884a7e76c7fd569522545a04e49d5128d83d27b3892cda59f143b53b5281",
445
+ block: 25472957
446
+ },
447
+ PositionManager: {
448
+ previousImplementation: "0x9f52BaBB40FbFC5863e45B1A4014cB433950c684",
449
+ newImplementation: "0x600Dc0D1C2c0F94882B6Bc09172f8650047Ad5B1",
450
+ upgradedAt: "2026-07-06T08:42:47.000Z",
451
+ upgradedBy: "AdminModule/Safe audit-batch upgradeToAndCall; executed by 0x2002827d34A781883Ec4c83c36ECC140c3911F2B in tx 0xa1fbe31cb71736514a868e681573dff22c9fab91d69cec157a24a30e29eadbe6 (block 25472368)",
452
+ reason: "Reconciled from chain \u2014 mainnet audit rollout batch (cross-ref onchain-auth/.safe-batches/mainnet-audit-execute.json)",
453
+ executeTx: "0xa1fbe31cb71736514a868e681573dff22c9fab91d69cec157a24a30e29eadbe6",
454
+ block: 25472368
455
+ },
456
+ LoanOperationsManagerModule: {
457
+ previousImplementation: "0x56671D671e492Dae625413d463D47605Cf54edf6",
458
+ newImplementation: "0x7d90aAB4466f59BA9aC9C7a9BF14dC53734336e7",
459
+ upgradedAt: "2026-07-06T10:41:23.000Z",
460
+ upgradedBy: "AdminModule/Safe audit-batch upgradeToAndCall; executed by 0xEba7BfAeB35ee18408b424Ee0BB45AdDf776589f in tx 0x327ae9f7a3917788d22dfe95611e1afcd18583f210b03a119d9f04eca50b9e7a (block 25472959)",
461
+ reason: "Reconciled from chain \u2014 mainnet audit rollout batch (cross-ref onchain-auth/.safe-batches/mainnet-audit-execute.json)",
462
+ executeTx: "0x327ae9f7a3917788d22dfe95611e1afcd18583f210b03a119d9f04eca50b9e7a",
463
+ block: 25472959
464
+ },
465
+ OperationAuthorizationRegistry: {
466
+ previousImplementation: "0x327662917Ac8EEda47851d74AF6A151348636fCe",
467
+ newImplementation: "0x493118746840EDB2D396E71632D2E774CA14070e",
468
+ upgradedAt: "2026-07-06T10:41:47.000Z",
469
+ upgradedBy: "AdminModule/Safe audit-batch upgradeToAndCall; executed by 0xEba7BfAeB35ee18408b424Ee0BB45AdDf776589f in tx 0x9820e259700865a281b8376e248044048ba2fed1d17c811ac66ac54d36711a5b (block 25472961)",
470
+ reason: "Reconciled from chain \u2014 mainnet audit rollout batch (cross-ref onchain-auth/.safe-batches/mainnet-audit-execute.json)",
471
+ executeTx: "0x9820e259700865a281b8376e248044048ba2fed1d17c811ac66ac54d36711a5b",
472
+ block: 25472961
408
473
  }
409
474
  },
410
475
  latestEnv: {
@@ -417,9 +482,37 @@ var MAINNET_DEPLOYMENT = {
417
482
  BITCOIN_PROVIDER_REGISTRY: "0x4ab3Fb96e02893Ed6FAa61bad1918390c8DbbFFC",
418
483
  BITCOIN_PROVIDER_REGISTRY_IMPL: "0x7Bc9473E45fb3EA594e8b13992F57D0444902ddB",
419
484
  BITCOIN_WITHDRAWAL_ADDRESS_REGISTRY: "0xf667f77FDba7458345f227eB6Bfe4148243E7270",
420
- BITCOIN_WITHDRAWAL_ADDRESS_REGISTRY_IMPL: "0x11731bFEC3068F2cc19D016381dfEA3B93013b1C",
485
+ BITCOIN_WITHDRAWAL_ADDRESS_REGISTRY_IMPL: "0x190c08300Ae650fb88ed8156445BBeb13bE9E8a3",
421
486
  SIMPLE_PSM_V2: "0xfE0C14B4E614f40Bf58845b4B04CeD17fd116532",
422
- SIMPLE_PSM_V2_IMPL: "0x1a555FB8D6EDdF755a4575E541651EdB8B49a15A"
487
+ SIMPLE_PSM_V2_IMPL: "0x8717761444b1822c2E6916aB5bD9ac96c91b6DF5",
488
+ UCD_CONTROLLER: "0x4b4f8063048bCD59D469219E3f07C6aaDF4f6157",
489
+ UCD_CONTROLLER_IMPL: "0x28B8cAB89D89B3F83581FD2290de2Ce84535bd0A",
490
+ UCD_TOKEN: "0xaAaB6B05E5EecB015898483d4e6703d7F218850b",
491
+ UCD_TOKEN_IMPL: "0x5f09C660036021D7e916DF47234C24a2536C3A72",
492
+ POSITION_MANAGER_CORE_MODULE: "0xd895B685914c1BE4e1c7aab9f89a90c203DE8d22",
493
+ POSITION_MANAGER_CORE_MODULE_IMPL: "0x5067Ea1d40b2Aaf4ad693bD9b6e7463C1A29E849",
494
+ TERM_MANAGER_MODULE: "0xDB99CdF883ffa38acD099bC39F8d1f4508c9239E",
495
+ TERM_MANAGER_MODULE_IMPL: "0x971f63f92990e59270E971612dd399fF2C63B0c3",
496
+ COLLATERAL_MANAGER_MODULE: "0x2Eb74FEc478218f5C260aAc78Bb8eC297F9d7135",
497
+ COLLATERAL_MANAGER_MODULE_IMPL: "0x55110B9dd6B2c9f812564e7a1ef42b3c76E1A3Bb",
498
+ LIQUIDATION_MANAGER_MODULE: "0x74B28695352E7bf736D6c9F76ccb7B4439477De9",
499
+ LIQUIDATION_MANAGER_MODULE_IMPL: "0xe7444C1d9652dAb31BaAdBE4C7c7e7Df3515dA46",
500
+ CIRCUIT_BREAKER_MODULE: "0xF7b545d3a4Ee056D06909AB367E2F7bFFE3cB1BC",
501
+ CIRCUIT_BREAKER_MODULE_IMPL: "0x40e8328D61342C6ADC51dfdC723296c908f95038",
502
+ ADMIN_MODULE: "0x0023B71B586795eE5fa4E83E384345C1EC8Bb946",
503
+ ADMIN_MODULE_IMPL: "0xb4C5C7E051A1e672F014B25CB5D55B225Aa0D512",
504
+ BTC_SPEND_AUTHORIZER: "0xfBbF108486fa07F1B06a811C5b66ed68DD9c508a",
505
+ BTC_SPEND_AUTHORIZER_IMPL: "0x40c9e8C46C65E0A57BB63da5368868A9E8Df81A5",
506
+ POSITION_MANAGER_VIEWS: "0x9225647a30bbACA4Acc0491B786869036914242e",
507
+ POSITION_MANAGER_VIEWS_IMPL: "0x9225647a30bbACA4Acc0491B786869036914242e",
508
+ POSITION_MANAGER: "0x12A1836e56139ccaD8722B89519d84233efc224B",
509
+ POSITION_MANAGER_IMPL: "0x600Dc0D1C2c0F94882B6Bc09172f8650047Ad5B1",
510
+ LOAN_OPERATIONS_MANAGER_MODULE: "0x2561974A40F1AEed1251d0A090A83cF8536FB9E9",
511
+ LOAN_OPERATIONS_MANAGER_MODULE_IMPL: "0x7d90aAB4466f59BA9aC9C7a9BF14dC53734336e7",
512
+ UPGRADE_VALIDATOR: "0xC46Ae71F22e3741A6CF46E399aE914C4868fEbed",
513
+ UPGRADE_VALIDATOR_IMPL: "0x4f835e77D1211299a1cbb8Aa2b42d9B390cC95CA",
514
+ OPERATION_AUTHORIZATION_REGISTRY: "0xD4505645b724754f5170a2027804a4265e860d44",
515
+ OPERATION_AUTHORIZATION_REGISTRY_IMPL: "0x493118746840EDB2D396E71632D2E774CA14070e"
423
516
  }
424
517
  };
425
518
  var MAINNET_CONTRACTS = {
@@ -450,44 +543,44 @@ var MAINNET_CONTRACTS = {
450
543
  var LOCALHOST_DEPLOYMENT = {
451
544
  network: "localhost",
452
545
  chainId: 31337,
453
- timestamp: "2026-03-23T15:33:34.068Z",
546
+ timestamp: "2026-06-11T12:30:59.589Z",
454
547
  deployer: "",
455
548
  contracts: {
456
- MessageHashBuilder: "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E",
457
- UpgradeValidator: "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318",
549
+ MessageHashBuilder: "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8",
550
+ UpgradeValidator: "0x610178dA211FEF7D417bC0e6FeD39F05609AD788",
458
551
  UCDToken: "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512",
459
552
  UCDController: "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9",
460
- PositionManagerCoreModule: "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e",
461
- TermManagerModule: "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82",
462
- LoanOperationsManagerModule: "0x68B1D87F95878fE05B998F19b66F4baba5De1aed",
553
+ PositionManagerCoreModule: "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0",
554
+ TermManagerModule: "0x9A676e781A523b5d0C0e43731313A708CB607508",
555
+ LoanOperationsManagerModule: "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c",
463
556
  BTCSpendAuthorizer: "0x59b670e9fA9D0A427751Af201D676719a970857b",
464
557
  CollateralManagerModule: "0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f",
465
558
  LiquidationManagerModule: "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F",
466
- CircuitBreakerModule: "0x0B306BF915C4d645ff596e518fAf3F9669b97016",
559
+ CircuitBreakerModule: "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1",
467
560
  AdminModule: "0xc5a5C42992dECbae36851359345FE25997F5C42d",
468
- PositionManagerViews: "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1",
469
- PositionManager: "0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB",
470
- OperationAuthorizationRegistry: "0x7969c5eD335650692Bc04293B07F5BF2e7A673C0",
471
- PKPValidation: "0xcbEAF3BDe82155F56486Fb5a1072cb8baAf547cc"
561
+ PositionManagerViews: "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE",
562
+ PositionManager: "0xf5059a5D33d5853360D16C683c16e67980206f36",
563
+ OperationAuthorizationRegistry: "0xF8e31cb472bc70500f08Cd84917E5A1912Ec8397",
564
+ PKPValidation: "0xc0F115A19107322cFBf1cDBC7ea011C19EbDB4F8"
472
565
  }
473
566
  };
474
567
  var LOCALHOST_CONTRACTS = {
475
- MessageHashBuilder: "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E",
476
- UpgradeValidator: "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318",
568
+ MessageHashBuilder: "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8",
569
+ UpgradeValidator: "0x610178dA211FEF7D417bC0e6FeD39F05609AD788",
477
570
  UCDToken: "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512",
478
571
  UCDController: "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9",
479
- PositionManagerCoreModule: "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e",
480
- TermManagerModule: "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82",
481
- LoanOperationsManagerModule: "0x68B1D87F95878fE05B998F19b66F4baba5De1aed",
572
+ PositionManagerCoreModule: "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0",
573
+ TermManagerModule: "0x9A676e781A523b5d0C0e43731313A708CB607508",
574
+ LoanOperationsManagerModule: "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c",
482
575
  BTCSpendAuthorizer: "0x59b670e9fA9D0A427751Af201D676719a970857b",
483
576
  CollateralManagerModule: "0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f",
484
577
  LiquidationManagerModule: "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F",
485
- CircuitBreakerModule: "0x0B306BF915C4d645ff596e518fAf3F9669b97016",
578
+ CircuitBreakerModule: "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1",
486
579
  AdminModule: "0xc5a5C42992dECbae36851359345FE25997F5C42d",
487
- PositionManagerViews: "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1",
488
- PositionManager: "0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB",
489
- OperationAuthorizationRegistry: "0x7969c5eD335650692Bc04293B07F5BF2e7A673C0",
490
- PKPValidation: "0xcbEAF3BDe82155F56486Fb5a1072cb8baAf547cc"
580
+ PositionManagerViews: "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE",
581
+ PositionManager: "0xf5059a5D33d5853360D16C683c16e67980206f36",
582
+ OperationAuthorizationRegistry: "0xF8e31cb472bc70500f08Cd84917E5A1912Ec8397",
583
+ PKPValidation: "0xc0F115A19107322cFBf1cDBC7ea011C19EbDB4F8"
491
584
  };
492
585
  var ALL_DEPLOYMENTS = {
493
586
  sepolia: SEPOLIA_DEPLOYMENT,
@@ -29,7 +29,8 @@ var SEPOLIA_DEPLOYMENT = {
29
29
  mockUsdtToken: "0xF8b7fB38b17a310960E47805Be9adba0b0e0394D",
30
30
  PositionDelegateRegistry: "0x482369De283622E7b05731875ec137d4E3D208F9",
31
31
  FeeRecipientRegistry: "0x95795F8403DDb629E8527B2934C4e71f5fC0C374",
32
- BitcoinWithdrawalAddressRegistry: "0x6376D392097F0A81e51BD83960A97EA20eaf1dbe"
32
+ BitcoinWithdrawalAddressRegistry: "0x6376D392097F0A81e51BD83960A97EA20eaf1dbe",
33
+ CarryAgentRegistry: "0x5595CB538D44E6Cf179D20364fD631D0477e69f7"
33
34
  },
34
35
  upgraded: {
35
36
  PositionManager: {
@@ -291,7 +292,9 @@ var SEPOLIA_DEPLOYMENT = {
291
292
  FEE_RECIPIENT_REGISTRY_IMPL: "0xd08513a7cB2dd354B26cDDf549616F12054c34c9",
292
293
  OPERATION_AUTHORIZATION_REGISTRY_IMPL: "0xe0D981B60351f0f8fFDA2b50C8180Fb37CeF3883",
293
294
  BITCOIN_WITHDRAWAL_ADDRESS_REGISTRY: "0x6376D392097F0A81e51BD83960A97EA20eaf1dbe",
294
- BITCOIN_WITHDRAWAL_ADDRESS_REGISTRY_IMPL: "0xFF270BC4470dBA80430Bd1a3a66EB691599354fA"
295
+ BITCOIN_WITHDRAWAL_ADDRESS_REGISTRY_IMPL: "0xFF270BC4470dBA80430Bd1a3a66EB691599354fA",
296
+ CARRY_AGENT_REGISTRY: "0x5595CB538D44E6Cf179D20364fD631D0477e69f7",
297
+ CARRY_AGENT_REGISTRY_IMPL: "0x1b11a3D5e46F3672E643c997f0d569DFf0b64a01"
295
298
  }
296
299
  };
297
300
  var SEPOLIA_CONTRACTS = {
@@ -319,7 +322,8 @@ var SEPOLIA_CONTRACTS = {
319
322
  mockUsdtToken: "0xF8b7fB38b17a310960E47805Be9adba0b0e0394D",
320
323
  PositionDelegateRegistry: "0x482369De283622E7b05731875ec137d4E3D208F9",
321
324
  FeeRecipientRegistry: "0x95795F8403DDb629E8527B2934C4e71f5fC0C374",
322
- BitcoinWithdrawalAddressRegistry: "0x6376D392097F0A81e51BD83960A97EA20eaf1dbe"
325
+ BitcoinWithdrawalAddressRegistry: "0x6376D392097F0A81e51BD83960A97EA20eaf1dbe",
326
+ CarryAgentRegistry: "0x5595CB538D44E6Cf179D20364fD631D0477e69f7"
323
327
  };
324
328
  var MAINNET_DEPLOYMENT = {
325
329
  network: "mainnet",
@@ -354,10 +358,12 @@ var MAINNET_DEPLOYMENT = {
354
358
  upgraded: {
355
359
  SimplePSMV2: {
356
360
  previousImplementation: "0x1a555FB8D6EDdF755a4575E541651EdB8B49a15A",
357
- newImplementation: "0x1a555FB8D6EDdF755a4575E541651EdB8B49a15A",
358
- upgradedAt: "2026-06-16T17:53:24.979Z",
359
- upgradedBy: "0xEba7BfAeB35ee18408b424Ee0BB45AdDf776589f",
360
- reason: "Initial PSM deploy / artifact sync"
361
+ newImplementation: "0x8717761444b1822c2E6916aB5bD9ac96c91b6DF5",
362
+ upgradedAt: "2026-07-06T10:41:35.000Z",
363
+ upgradedBy: "AdminModule/Safe audit-batch upgradeToAndCall; executed by 0xEba7BfAeB35ee18408b424Ee0BB45AdDf776589f in tx 0x5052d1559d56b8e178699183e56c4fd84a163e987365c5af9c8d669a723c35d6 (block 25472960)",
364
+ reason: "Reconciled from chain \u2014 mainnet audit rollout batch (cross-ref onchain-auth/.safe-batches/mainnet-audit-execute.json)",
365
+ executeTx: "0x5052d1559d56b8e178699183e56c4fd84a163e987365c5af9c8d669a723c35d6",
366
+ block: 25472960
361
367
  },
362
368
  CollateralManagerModule: {
363
369
  previousImplementation: "0x1919860e528Cd2AbbD31a17858c986b8aCc8C185",
@@ -372,6 +378,65 @@ var MAINNET_DEPLOYMENT = {
372
378
  upgradedAt: "2026-07-08T20:33:59Z",
373
379
  upgradedBy: "AdminModule generic-op 0x2603a486c0f34554b864cc1d909b325c7e105331da10ec0fd7e0b9373fa76207 (3-of-5 ADMIN_ROLE Safes, 24h timelock; executed by 0xfb3B8cbeFB7D666A6Af34C53e189EdC31862a7be in tx 0x430c8e450f12d3d9359cde356ac5e2ef39661d7a89884b5674a596c1090f6cff)",
374
380
  reason: "Validator gas fix (#420): BitcoinAddressValidator packed-table lookups; VERSION 1.0.0 -> 1.0.1"
381
+ },
382
+ UCDController: {
383
+ newImplementation: "0x28B8cAB89D89B3F83581FD2290de2Ce84535bd0A",
384
+ upgradedBy: "Reconciled from chain \u2014 Upgraded event log unavailable; provenance omitted (never fabricated)",
385
+ reason: "Reconciled from chain \u2014 mainnet audit rollout batch (cross-ref onchain-auth/.safe-batches/mainnet-audit-execute.json)"
386
+ },
387
+ PositionManagerCoreModule: {
388
+ previousImplementation: "0x6C8b0FB93F8d0239254aefaC24d4264cA2F8AAeB",
389
+ newImplementation: "0x5067Ea1d40b2Aaf4ad693bD9b6e7463C1A29E849",
390
+ upgradedAt: "2026-07-06T08:02:35.000Z",
391
+ upgradedBy: "AdminModule/Safe audit-batch upgradeToAndCall; executed by 0x2002827d34A781883Ec4c83c36ECC140c3911F2B in tx 0xeb2bfe77d46394b6d0afd46beb0a80cd9beb91f6771ccb59ff9fba27d4af4f3d (block 25472167)",
392
+ reason: "Reconciled from chain \u2014 mainnet audit rollout batch (cross-ref onchain-auth/.safe-batches/mainnet-audit-execute.json)",
393
+ executeTx: "0xeb2bfe77d46394b6d0afd46beb0a80cd9beb91f6771ccb59ff9fba27d4af4f3d",
394
+ block: 25472167
395
+ },
396
+ LiquidationManagerModule: {
397
+ previousImplementation: "0xc2f4517eeD7c4c516939a64c7938a6ab432D99c4",
398
+ newImplementation: "0xe7444C1d9652dAb31BaAdBE4C7c7e7Df3515dA46",
399
+ upgradedAt: "2026-07-06T10:40:47.000Z",
400
+ upgradedBy: "AdminModule/Safe audit-batch upgradeToAndCall; executed by 0xEba7BfAeB35ee18408b424Ee0BB45AdDf776589f in tx 0xc173b97af68cc9172ea0ddc91a2c90bf02eac1505e749d92aa044aa69891f48c (block 25472956)",
401
+ reason: "Reconciled from chain \u2014 mainnet audit rollout batch (cross-ref onchain-auth/.safe-batches/mainnet-audit-execute.json)",
402
+ executeTx: "0xc173b97af68cc9172ea0ddc91a2c90bf02eac1505e749d92aa044aa69891f48c",
403
+ block: 25472956
404
+ },
405
+ BTCSpendAuthorizer: {
406
+ previousImplementation: "0xb003ed89F695E8819a85513fE17260b805B3c478",
407
+ newImplementation: "0x40c9e8C46C65E0A57BB63da5368868A9E8Df81A5",
408
+ upgradedAt: "2026-07-06T10:40:59.000Z",
409
+ upgradedBy: "AdminModule/Safe audit-batch upgradeToAndCall; executed by 0xEba7BfAeB35ee18408b424Ee0BB45AdDf776589f in tx 0xe1b1884a7e76c7fd569522545a04e49d5128d83d27b3892cda59f143b53b5281 (block 25472957)",
410
+ reason: "Reconciled from chain \u2014 mainnet audit rollout batch (cross-ref onchain-auth/.safe-batches/mainnet-audit-execute.json)",
411
+ executeTx: "0xe1b1884a7e76c7fd569522545a04e49d5128d83d27b3892cda59f143b53b5281",
412
+ block: 25472957
413
+ },
414
+ PositionManager: {
415
+ previousImplementation: "0x9f52BaBB40FbFC5863e45B1A4014cB433950c684",
416
+ newImplementation: "0x600Dc0D1C2c0F94882B6Bc09172f8650047Ad5B1",
417
+ upgradedAt: "2026-07-06T08:42:47.000Z",
418
+ upgradedBy: "AdminModule/Safe audit-batch upgradeToAndCall; executed by 0x2002827d34A781883Ec4c83c36ECC140c3911F2B in tx 0xa1fbe31cb71736514a868e681573dff22c9fab91d69cec157a24a30e29eadbe6 (block 25472368)",
419
+ reason: "Reconciled from chain \u2014 mainnet audit rollout batch (cross-ref onchain-auth/.safe-batches/mainnet-audit-execute.json)",
420
+ executeTx: "0xa1fbe31cb71736514a868e681573dff22c9fab91d69cec157a24a30e29eadbe6",
421
+ block: 25472368
422
+ },
423
+ LoanOperationsManagerModule: {
424
+ previousImplementation: "0x56671D671e492Dae625413d463D47605Cf54edf6",
425
+ newImplementation: "0x7d90aAB4466f59BA9aC9C7a9BF14dC53734336e7",
426
+ upgradedAt: "2026-07-06T10:41:23.000Z",
427
+ upgradedBy: "AdminModule/Safe audit-batch upgradeToAndCall; executed by 0xEba7BfAeB35ee18408b424Ee0BB45AdDf776589f in tx 0x327ae9f7a3917788d22dfe95611e1afcd18583f210b03a119d9f04eca50b9e7a (block 25472959)",
428
+ reason: "Reconciled from chain \u2014 mainnet audit rollout batch (cross-ref onchain-auth/.safe-batches/mainnet-audit-execute.json)",
429
+ executeTx: "0x327ae9f7a3917788d22dfe95611e1afcd18583f210b03a119d9f04eca50b9e7a",
430
+ block: 25472959
431
+ },
432
+ OperationAuthorizationRegistry: {
433
+ previousImplementation: "0x327662917Ac8EEda47851d74AF6A151348636fCe",
434
+ newImplementation: "0x493118746840EDB2D396E71632D2E774CA14070e",
435
+ upgradedAt: "2026-07-06T10:41:47.000Z",
436
+ upgradedBy: "AdminModule/Safe audit-batch upgradeToAndCall; executed by 0xEba7BfAeB35ee18408b424Ee0BB45AdDf776589f in tx 0x9820e259700865a281b8376e248044048ba2fed1d17c811ac66ac54d36711a5b (block 25472961)",
437
+ reason: "Reconciled from chain \u2014 mainnet audit rollout batch (cross-ref onchain-auth/.safe-batches/mainnet-audit-execute.json)",
438
+ executeTx: "0x9820e259700865a281b8376e248044048ba2fed1d17c811ac66ac54d36711a5b",
439
+ block: 25472961
375
440
  }
376
441
  },
377
442
  latestEnv: {
@@ -384,9 +449,37 @@ var MAINNET_DEPLOYMENT = {
384
449
  BITCOIN_PROVIDER_REGISTRY: "0x4ab3Fb96e02893Ed6FAa61bad1918390c8DbbFFC",
385
450
  BITCOIN_PROVIDER_REGISTRY_IMPL: "0x7Bc9473E45fb3EA594e8b13992F57D0444902ddB",
386
451
  BITCOIN_WITHDRAWAL_ADDRESS_REGISTRY: "0xf667f77FDba7458345f227eB6Bfe4148243E7270",
387
- BITCOIN_WITHDRAWAL_ADDRESS_REGISTRY_IMPL: "0x11731bFEC3068F2cc19D016381dfEA3B93013b1C",
452
+ BITCOIN_WITHDRAWAL_ADDRESS_REGISTRY_IMPL: "0x190c08300Ae650fb88ed8156445BBeb13bE9E8a3",
388
453
  SIMPLE_PSM_V2: "0xfE0C14B4E614f40Bf58845b4B04CeD17fd116532",
389
- SIMPLE_PSM_V2_IMPL: "0x1a555FB8D6EDdF755a4575E541651EdB8B49a15A"
454
+ SIMPLE_PSM_V2_IMPL: "0x8717761444b1822c2E6916aB5bD9ac96c91b6DF5",
455
+ UCD_CONTROLLER: "0x4b4f8063048bCD59D469219E3f07C6aaDF4f6157",
456
+ UCD_CONTROLLER_IMPL: "0x28B8cAB89D89B3F83581FD2290de2Ce84535bd0A",
457
+ UCD_TOKEN: "0xaAaB6B05E5EecB015898483d4e6703d7F218850b",
458
+ UCD_TOKEN_IMPL: "0x5f09C660036021D7e916DF47234C24a2536C3A72",
459
+ POSITION_MANAGER_CORE_MODULE: "0xd895B685914c1BE4e1c7aab9f89a90c203DE8d22",
460
+ POSITION_MANAGER_CORE_MODULE_IMPL: "0x5067Ea1d40b2Aaf4ad693bD9b6e7463C1A29E849",
461
+ TERM_MANAGER_MODULE: "0xDB99CdF883ffa38acD099bC39F8d1f4508c9239E",
462
+ TERM_MANAGER_MODULE_IMPL: "0x971f63f92990e59270E971612dd399fF2C63B0c3",
463
+ COLLATERAL_MANAGER_MODULE: "0x2Eb74FEc478218f5C260aAc78Bb8eC297F9d7135",
464
+ COLLATERAL_MANAGER_MODULE_IMPL: "0x55110B9dd6B2c9f812564e7a1ef42b3c76E1A3Bb",
465
+ LIQUIDATION_MANAGER_MODULE: "0x74B28695352E7bf736D6c9F76ccb7B4439477De9",
466
+ LIQUIDATION_MANAGER_MODULE_IMPL: "0xe7444C1d9652dAb31BaAdBE4C7c7e7Df3515dA46",
467
+ CIRCUIT_BREAKER_MODULE: "0xF7b545d3a4Ee056D06909AB367E2F7bFFE3cB1BC",
468
+ CIRCUIT_BREAKER_MODULE_IMPL: "0x40e8328D61342C6ADC51dfdC723296c908f95038",
469
+ ADMIN_MODULE: "0x0023B71B586795eE5fa4E83E384345C1EC8Bb946",
470
+ ADMIN_MODULE_IMPL: "0xb4C5C7E051A1e672F014B25CB5D55B225Aa0D512",
471
+ BTC_SPEND_AUTHORIZER: "0xfBbF108486fa07F1B06a811C5b66ed68DD9c508a",
472
+ BTC_SPEND_AUTHORIZER_IMPL: "0x40c9e8C46C65E0A57BB63da5368868A9E8Df81A5",
473
+ POSITION_MANAGER_VIEWS: "0x9225647a30bbACA4Acc0491B786869036914242e",
474
+ POSITION_MANAGER_VIEWS_IMPL: "0x9225647a30bbACA4Acc0491B786869036914242e",
475
+ POSITION_MANAGER: "0x12A1836e56139ccaD8722B89519d84233efc224B",
476
+ POSITION_MANAGER_IMPL: "0x600Dc0D1C2c0F94882B6Bc09172f8650047Ad5B1",
477
+ LOAN_OPERATIONS_MANAGER_MODULE: "0x2561974A40F1AEed1251d0A090A83cF8536FB9E9",
478
+ LOAN_OPERATIONS_MANAGER_MODULE_IMPL: "0x7d90aAB4466f59BA9aC9C7a9BF14dC53734336e7",
479
+ UPGRADE_VALIDATOR: "0xC46Ae71F22e3741A6CF46E399aE914C4868fEbed",
480
+ UPGRADE_VALIDATOR_IMPL: "0x4f835e77D1211299a1cbb8Aa2b42d9B390cC95CA",
481
+ OPERATION_AUTHORIZATION_REGISTRY: "0xD4505645b724754f5170a2027804a4265e860d44",
482
+ OPERATION_AUTHORIZATION_REGISTRY_IMPL: "0x493118746840EDB2D396E71632D2E774CA14070e"
390
483
  }
391
484
  };
392
485
  var MAINNET_CONTRACTS = {
@@ -417,44 +510,44 @@ var MAINNET_CONTRACTS = {
417
510
  var LOCALHOST_DEPLOYMENT = {
418
511
  network: "localhost",
419
512
  chainId: 31337,
420
- timestamp: "2026-03-23T15:33:34.068Z",
513
+ timestamp: "2026-06-11T12:30:59.589Z",
421
514
  deployer: "",
422
515
  contracts: {
423
- MessageHashBuilder: "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E",
424
- UpgradeValidator: "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318",
516
+ MessageHashBuilder: "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8",
517
+ UpgradeValidator: "0x610178dA211FEF7D417bC0e6FeD39F05609AD788",
425
518
  UCDToken: "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512",
426
519
  UCDController: "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9",
427
- PositionManagerCoreModule: "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e",
428
- TermManagerModule: "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82",
429
- LoanOperationsManagerModule: "0x68B1D87F95878fE05B998F19b66F4baba5De1aed",
520
+ PositionManagerCoreModule: "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0",
521
+ TermManagerModule: "0x9A676e781A523b5d0C0e43731313A708CB607508",
522
+ LoanOperationsManagerModule: "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c",
430
523
  BTCSpendAuthorizer: "0x59b670e9fA9D0A427751Af201D676719a970857b",
431
524
  CollateralManagerModule: "0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f",
432
525
  LiquidationManagerModule: "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F",
433
- CircuitBreakerModule: "0x0B306BF915C4d645ff596e518fAf3F9669b97016",
526
+ CircuitBreakerModule: "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1",
434
527
  AdminModule: "0xc5a5C42992dECbae36851359345FE25997F5C42d",
435
- PositionManagerViews: "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1",
436
- PositionManager: "0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB",
437
- OperationAuthorizationRegistry: "0x7969c5eD335650692Bc04293B07F5BF2e7A673C0",
438
- PKPValidation: "0xcbEAF3BDe82155F56486Fb5a1072cb8baAf547cc"
528
+ PositionManagerViews: "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE",
529
+ PositionManager: "0xf5059a5D33d5853360D16C683c16e67980206f36",
530
+ OperationAuthorizationRegistry: "0xF8e31cb472bc70500f08Cd84917E5A1912Ec8397",
531
+ PKPValidation: "0xc0F115A19107322cFBf1cDBC7ea011C19EbDB4F8"
439
532
  }
440
533
  };
441
534
  var LOCALHOST_CONTRACTS = {
442
- MessageHashBuilder: "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E",
443
- UpgradeValidator: "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318",
535
+ MessageHashBuilder: "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8",
536
+ UpgradeValidator: "0x610178dA211FEF7D417bC0e6FeD39F05609AD788",
444
537
  UCDToken: "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512",
445
538
  UCDController: "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9",
446
- PositionManagerCoreModule: "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e",
447
- TermManagerModule: "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82",
448
- LoanOperationsManagerModule: "0x68B1D87F95878fE05B998F19b66F4baba5De1aed",
539
+ PositionManagerCoreModule: "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0",
540
+ TermManagerModule: "0x9A676e781A523b5d0C0e43731313A708CB607508",
541
+ LoanOperationsManagerModule: "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c",
449
542
  BTCSpendAuthorizer: "0x59b670e9fA9D0A427751Af201D676719a970857b",
450
543
  CollateralManagerModule: "0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f",
451
544
  LiquidationManagerModule: "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F",
452
- CircuitBreakerModule: "0x0B306BF915C4d645ff596e518fAf3F9669b97016",
545
+ CircuitBreakerModule: "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1",
453
546
  AdminModule: "0xc5a5C42992dECbae36851359345FE25997F5C42d",
454
- PositionManagerViews: "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1",
455
- PositionManager: "0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB",
456
- OperationAuthorizationRegistry: "0x7969c5eD335650692Bc04293B07F5BF2e7A673C0",
457
- PKPValidation: "0xcbEAF3BDe82155F56486Fb5a1072cb8baAf547cc"
547
+ PositionManagerViews: "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE",
548
+ PositionManager: "0xf5059a5D33d5853360D16C683c16e67980206f36",
549
+ OperationAuthorizationRegistry: "0xF8e31cb472bc70500f08Cd84917E5A1912Ec8397",
550
+ PKPValidation: "0xc0F115A19107322cFBf1cDBC7ea011C19EbDB4F8"
458
551
  };
459
552
  var ALL_DEPLOYMENTS = {
460
553
  sepolia: SEPOLIA_DEPLOYMENT,
@@ -262,6 +262,24 @@ export declare class DiamondHandsGraph {
262
262
  * @returns Complete event history for the position
263
263
  */
264
264
  getLoanEvents(positionId: string, filter?: LoanEventsFilter): Promise<LoanEvents>;
265
+ /**
266
+ * Get the full loan-event history for every position owned by a wallet.
267
+ *
268
+ * The subgraph has no wallet-scoped event collection (`User` only derives
269
+ * `positions`), so this composes the two existing wallet/position queries:
270
+ * `getUserPositions(wallet)` to enumerate the wallet's positions, then
271
+ * `getLoanEvents(positionId, filter)` per position. Each returned `LoanEvents`
272
+ * already carries its own `positionId`, so callers can flatten and merge into
273
+ * a single timeline.
274
+ *
275
+ * Note: Bitcoin deposits are UTXOs on the Bitcoin network and never appear in
276
+ * the EVM subgraph — surface those from an Esplora source and merge separately.
277
+ *
278
+ * @param userAddress - The loan-owner wallet address.
279
+ * @param filter - Optional per-position event filter (same semantics as getLoanEvents).
280
+ * @returns One LoanEvents object per position; empty array if the wallet has none.
281
+ */
282
+ getWalletLoanEvents(userAddress: string, filter?: LoanEventsFilter): Promise<LoanEvents[]>;
265
283
  /**
266
284
  * Retrieve events across the full protocol, optionally narrowed to a position.
267
285
  * Returns a merged, sorted discriminated-union timeline suitable for explorers.