@eulerxyz/euler-v2-sdk 0.2.2-beta → 0.2.4-beta

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.
Files changed (137) hide show
  1. package/README.md +14 -11
  2. package/dist/src/entities/Account.d.ts +1 -1
  3. package/dist/src/entities/Account.d.ts.map +1 -1
  4. package/dist/src/entities/Account.js +28 -38
  5. package/dist/src/entities/Account.js.map +1 -1
  6. package/dist/src/entities/ERC4626Vault.d.ts +8 -0
  7. package/dist/src/entities/ERC4626Vault.d.ts.map +1 -1
  8. package/dist/src/entities/ERC4626Vault.js +4 -0
  9. package/dist/src/entities/ERC4626Vault.js.map +1 -1
  10. package/dist/src/entities/EVault.d.ts +6 -0
  11. package/dist/src/entities/EVault.d.ts.map +1 -1
  12. package/dist/src/entities/EVault.js +11 -0
  13. package/dist/src/entities/EVault.js.map +1 -1
  14. package/dist/src/entities/Portfolio.d.ts +3 -3
  15. package/dist/src/entities/Portfolio.d.ts.map +1 -1
  16. package/dist/src/entities/Portfolio.js +8 -4
  17. package/dist/src/entities/Portfolio.js.map +1 -1
  18. package/dist/src/entities/SecuritizeCollateralVault.d.ts +2 -0
  19. package/dist/src/entities/SecuritizeCollateralVault.d.ts.map +1 -1
  20. package/dist/src/entities/SecuritizeCollateralVault.js +4 -0
  21. package/dist/src/entities/SecuritizeCollateralVault.js.map +1 -1
  22. package/dist/src/index.d.ts +2 -0
  23. package/dist/src/index.d.ts.map +1 -1
  24. package/dist/src/index.js +2 -0
  25. package/dist/src/index.js.map +1 -1
  26. package/dist/src/sdk/buildSDK.d.ts +8 -0
  27. package/dist/src/sdk/buildSDK.d.ts.map +1 -1
  28. package/dist/src/sdk/buildSDK.js +309 -101
  29. package/dist/src/sdk/buildSDK.js.map +1 -1
  30. package/dist/src/sdk/config.d.ts +8 -2
  31. package/dist/src/sdk/config.d.ts.map +1 -1
  32. package/dist/src/sdk/config.js +6 -1
  33. package/dist/src/sdk/config.js.map +1 -1
  34. package/dist/src/sdk/sdk.d.ts +3 -0
  35. package/dist/src/sdk/sdk.d.ts.map +1 -1
  36. package/dist/src/sdk/sdk.js +2 -0
  37. package/dist/src/sdk/sdk.js.map +1 -1
  38. package/dist/src/services/accountService/accountServiceConfig.d.ts +2 -2
  39. package/dist/src/services/accountService/accountServiceConfig.d.ts.map +1 -1
  40. package/dist/src/services/accountService/adapters/accountV3Adapter/accountV3Adapter.d.ts +2 -2
  41. package/dist/src/services/accountService/adapters/accountV3Adapter/accountV3Adapter.d.ts.map +1 -1
  42. package/dist/src/services/accountService/adapters/accountV3Adapter/accountV3Adapter.js +3 -3
  43. package/dist/src/services/accountService/adapters/accountV3Adapter/accountV3Adapter.js.map +1 -1
  44. package/dist/src/services/executionService/abis/cowSwapWrapperAbi.d.ts +199 -0
  45. package/dist/src/services/executionService/abis/cowSwapWrapperAbi.d.ts.map +1 -0
  46. package/dist/src/services/executionService/abis/cowSwapWrapperAbi.js +95 -0
  47. package/dist/src/services/executionService/abis/cowSwapWrapperAbi.js.map +1 -0
  48. package/dist/src/services/executionService/cowExecutor.d.ts +53 -0
  49. package/dist/src/services/executionService/cowExecutor.d.ts.map +1 -0
  50. package/dist/src/services/executionService/cowExecutor.js +390 -0
  51. package/dist/src/services/executionService/cowExecutor.js.map +1 -0
  52. package/dist/src/services/executionService/cowSwapHelpers.d.ts +254 -0
  53. package/dist/src/services/executionService/cowSwapHelpers.d.ts.map +1 -0
  54. package/dist/src/services/executionService/cowSwapHelpers.js +524 -0
  55. package/dist/src/services/executionService/cowSwapHelpers.js.map +1 -0
  56. package/dist/src/services/executionService/execute.d.ts +18 -3
  57. package/dist/src/services/executionService/execute.d.ts.map +1 -1
  58. package/dist/src/services/executionService/execute.js +9 -2
  59. package/dist/src/services/executionService/execute.js.map +1 -1
  60. package/dist/src/services/executionService/executionService.d.ts +53 -2
  61. package/dist/src/services/executionService/executionService.d.ts.map +1 -1
  62. package/dist/src/services/executionService/executionService.js +368 -15
  63. package/dist/src/services/executionService/executionService.js.map +1 -1
  64. package/dist/src/services/executionService/executionServiceTypes.d.ts +130 -3
  65. package/dist/src/services/executionService/executionServiceTypes.d.ts.map +1 -1
  66. package/dist/src/services/executionService/executionServiceTypes.js +13 -0
  67. package/dist/src/services/executionService/executionServiceTypes.js.map +1 -1
  68. package/dist/src/services/executionService/index.d.ts +5 -3
  69. package/dist/src/services/executionService/index.d.ts.map +1 -1
  70. package/dist/src/services/executionService/index.js +3 -2
  71. package/dist/src/services/executionService/index.js.map +1 -1
  72. package/dist/src/services/executionService/simulate.d.ts +1 -1
  73. package/dist/src/services/executionService/simulate.d.ts.map +1 -1
  74. package/dist/src/services/executionService/simulate.js +25 -9
  75. package/dist/src/services/executionService/simulate.js.map +1 -1
  76. package/dist/src/services/priceService/backendClient.d.ts +3 -1
  77. package/dist/src/services/priceService/backendClient.d.ts.map +1 -1
  78. package/dist/src/services/priceService/backendClient.js +30 -12
  79. package/dist/src/services/priceService/backendClient.js.map +1 -1
  80. package/dist/src/services/reulLockService/index.d.ts +3 -0
  81. package/dist/src/services/reulLockService/index.d.ts.map +1 -0
  82. package/dist/src/services/reulLockService/index.js +2 -0
  83. package/dist/src/services/reulLockService/index.js.map +1 -0
  84. package/dist/src/services/reulLockService/reulLockService.d.ts +82 -0
  85. package/dist/src/services/reulLockService/reulLockService.d.ts.map +1 -0
  86. package/dist/src/services/reulLockService/reulLockService.js +120 -0
  87. package/dist/src/services/reulLockService/reulLockService.js.map +1 -0
  88. package/dist/src/services/reulLockService/reulLockServiceTypes.d.ts +41 -0
  89. package/dist/src/services/reulLockService/reulLockServiceTypes.d.ts.map +1 -0
  90. package/dist/src/services/reulLockService/reulLockServiceTypes.js +2 -0
  91. package/dist/src/services/reulLockService/reulLockServiceTypes.js.map +1 -0
  92. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.d.ts.map +1 -1
  93. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.js +93 -5
  94. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.js.map +1 -1
  95. package/dist/src/services/rewardsService/rewardsService.d.ts +1 -7
  96. package/dist/src/services/rewardsService/rewardsService.d.ts.map +1 -1
  97. package/dist/src/services/rewardsService/rewardsService.js +5 -130
  98. package/dist/src/services/rewardsService/rewardsService.js.map +1 -1
  99. package/dist/src/services/rewardsService/rewardsServiceTypes.d.ts +13 -2
  100. package/dist/src/services/rewardsService/rewardsServiceTypes.d.ts.map +1 -1
  101. package/dist/src/services/swapService/index.d.ts +2 -2
  102. package/dist/src/services/swapService/index.d.ts.map +1 -1
  103. package/dist/src/services/swapService/index.js.map +1 -1
  104. package/dist/src/services/swapService/swapService.d.ts +15 -0
  105. package/dist/src/services/swapService/swapService.d.ts.map +1 -1
  106. package/dist/src/services/swapService/swapService.js +217 -7
  107. package/dist/src/services/swapService/swapService.js.map +1 -1
  108. package/dist/src/services/swapService/swapServiceTypes.d.ts +33 -0
  109. package/dist/src/services/swapService/swapServiceTypes.d.ts.map +1 -1
  110. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterConversions.d.ts.map +1 -1
  111. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterConversions.js +103 -140
  112. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterConversions.js.map +1 -1
  113. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterTypes.d.ts +33 -33
  114. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterTypes.d.ts.map +1 -1
  115. package/dist/src/services/vaults/eVaultService/eVaultServiceConfig.d.ts +2 -2
  116. package/dist/src/services/vaults/eVaultService/eVaultServiceConfig.d.ts.map +1 -1
  117. package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnV3Adapter.d.ts +9 -9
  118. package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnV3Adapter.d.ts.map +1 -1
  119. package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnV3Adapter.js +10 -10
  120. package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnV3Adapter.js.map +1 -1
  121. package/dist/src/services/vaults/eulerEarnService/eulerEarnServiceConfig.d.ts +2 -2
  122. package/dist/src/services/vaults/eulerEarnService/eulerEarnServiceConfig.d.ts.map +1 -1
  123. package/dist/src/utils/accountComputations.d.ts.map +1 -1
  124. package/dist/src/utils/accountComputations.js +4 -2
  125. package/dist/src/utils/accountComputations.js.map +1 -1
  126. package/dist/src/utils/eulerLabels.d.ts.map +1 -1
  127. package/dist/src/utils/eulerLabels.js +4 -1
  128. package/dist/src/utils/eulerLabels.js.map +1 -1
  129. package/dist/src/utils/fallbackAdapter.d.ts +69 -0
  130. package/dist/src/utils/fallbackAdapter.d.ts.map +1 -0
  131. package/dist/src/utils/fallbackAdapter.js +139 -0
  132. package/dist/src/utils/fallbackAdapter.js.map +1 -0
  133. package/dist/src/utils/parsing.d.ts +17 -1
  134. package/dist/src/utils/parsing.d.ts.map +1 -1
  135. package/dist/src/utils/parsing.js +39 -0
  136. package/dist/src/utils/parsing.js.map +1 -1
  137. package/package.json +1 -1
@@ -18,5 +18,9 @@ export class SecuritizeCollateralVault extends ERC4626Vault {
18
18
  convertToShares(assets) {
19
19
  return assets;
20
20
  }
21
+ /** 1:1 conversion (rounding-up is a no-op when totalShares === totalAssets). */
22
+ previewWithdraw(assets) {
23
+ return assets;
24
+ }
21
25
  }
22
26
  //# sourceMappingURL=SecuritizeCollateralVault.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SecuritizeCollateralVault.js","sourceRoot":"","sources":["../../../src/entities/SecuritizeCollateralVault.ts"],"names":[],"mappings":"AACA,OAAO,EACN,YAAY,GAGZ,MAAM,mBAAmB,CAAC;AAO3B,MAAM,OAAO,yBACZ,SAAQ,YAAY;IAGpB,QAAQ,CAAU;IAClB,SAAS,CAAS;IAElB,YAAY,IAAgC;QAC3C,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,IAAa,YAAY;QACxB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,0EAA0E;IACjE,eAAe,CAAC,MAAc;QACtC,OAAO,MAAM,CAAC;IACf,CAAC;IAED,0EAA0E;IACjE,eAAe,CAAC,MAAc;QACtC,OAAO,MAAM,CAAC;IACf,CAAC;CACD"}
1
+ {"version":3,"file":"SecuritizeCollateralVault.js","sourceRoot":"","sources":["../../../src/entities/SecuritizeCollateralVault.ts"],"names":[],"mappings":"AACA,OAAO,EACN,YAAY,GAGZ,MAAM,mBAAmB,CAAC;AAO3B,MAAM,OAAO,yBACZ,SAAQ,YAAY;IAGpB,QAAQ,CAAU;IAClB,SAAS,CAAS;IAElB,YAAY,IAAgC;QAC3C,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,IAAa,YAAY;QACxB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,0EAA0E;IACjE,eAAe,CAAC,MAAc;QACtC,OAAO,MAAM,CAAC;IACf,CAAC;IAED,0EAA0E;IACjE,eAAe,CAAC,MAAc;QACtC,OAAO,MAAM,CAAC;IACf,CAAC;IAED,gFAAgF;IACvE,eAAe,CAAC,MAAc;QACtC,OAAO,MAAM,CAAC;IACf,CAAC;CACD"}
@@ -31,6 +31,7 @@ export * from "./services/rewardsService/index.js";
31
31
  export * from "./services/intrinsicApyService/index.js";
32
32
  export * from "./services/oracleAdapterService/index.js";
33
33
  export * from "./services/feeFlowService/index.js";
34
+ export * from "./services/reulLockService/index.js";
34
35
  export * from "./plugins/index.js";
35
36
  export * from "./utils/subAccounts.js";
36
37
  export * from "./utils/accountPositionClassification.js";
@@ -42,6 +43,7 @@ export * from "./utils/oracle.js";
42
43
  export * from "./utils/accountComputations.js";
43
44
  export * from "./utils/callBundler.js";
44
45
  export * from "./utils/entityDiagnostics.js";
46
+ export * from "./utils/fallbackAdapter.js";
45
47
  export * from "./utils/normalization.js";
46
48
  export * from "./utils/parsing.js";
47
49
  export * from "./utils/decodeSmartContractErrors.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yCAAyC,CAAC;AACxD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,qCAAqC,EAAE,MAAM,wBAAwB,CAAC;AAC/E,+CAA+C;AAC/C,OAAO,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG9D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,0CAA0C,CAAC;AACzD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AAGnD,cAAc,oBAAoB,CAAC;AAGnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0CAA0C,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,eAAe,EACf,0BAA0B,EAC1B,mBAAmB,EACnB,2BAA2B,EAC3B,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAChF,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yCAAyC,CAAC;AACxD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,qCAAqC,EAAE,MAAM,wBAAwB,CAAC;AAC/E,+CAA+C;AAC/C,OAAO,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG9D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,0CAA0C,CAAC;AACzD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AAGpD,cAAc,oBAAoB,CAAC;AAGnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0CAA0C,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,eAAe,EACf,0BAA0B,EAC1B,mBAAmB,EACnB,2BAA2B,EAC3B,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAChF,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC"}
package/dist/src/index.js CHANGED
@@ -32,6 +32,7 @@ export * from "./services/rewardsService/index.js";
32
32
  export * from "./services/intrinsicApyService/index.js";
33
33
  export * from "./services/oracleAdapterService/index.js";
34
34
  export * from "./services/feeFlowService/index.js";
35
+ export * from "./services/reulLockService/index.js";
35
36
  // Plugins
36
37
  export * from "./plugins/index.js";
37
38
  // Utils
@@ -44,6 +45,7 @@ export * from "./utils/oracle.js";
44
45
  export * from "./utils/accountComputations.js";
45
46
  export * from "./utils/callBundler.js";
46
47
  export * from "./utils/entityDiagnostics.js";
48
+ export * from "./utils/fallbackAdapter.js";
47
49
  export * from "./utils/normalization.js";
48
50
  export * from "./utils/parsing.js";
49
51
  export * from "./utils/decodeSmartContractErrors.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yCAAyC,CAAC;AACxD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,qCAAqC,EAAE,MAAM,wBAAwB,CAAC;AAC/E,+CAA+C;AAC/C,OAAO,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE9D,WAAW;AACX,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,0CAA0C,CAAC;AACzD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AAEnD,UAAU;AACV,cAAc,oBAAoB,CAAC;AAEnC,QAAQ;AACR,cAAc,wBAAwB,CAAC;AACvC,cAAc,0CAA0C,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAIL,eAAe,EACf,0BAA0B,EAC1B,mBAAmB,EACnB,2BAA2B,EAC3B,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yCAAyC,CAAC;AACxD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,qCAAqC,EAAE,MAAM,wBAAwB,CAAC;AAC/E,+CAA+C;AAC/C,OAAO,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE9D,WAAW;AACX,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,0CAA0C,CAAC;AACzD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AAEpD,UAAU;AACV,cAAc,oBAAoB,CAAC;AAEnC,QAAQ;AACR,cAAc,wBAAwB,CAAC;AACvC,cAAc,0CAA0C,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAIL,eAAe,EACf,0BAA0B,EAC1B,mBAAmB,EACnB,2BAA2B,EAC3B,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC"}
@@ -20,12 +20,14 @@ import { type IRewardsService, type RewardsServiceConfig } from "../services/rew
20
20
  import { type IIntrinsicApyService, type IntrinsicApyServiceConfig } from "../services/intrinsicApyService/index.js";
21
21
  import { type IOracleAdapterService, type OracleAdapterServiceConfig } from "../services/oracleAdapterService/index.js";
22
22
  import { type IFeeFlowService, type FeeFlowServiceConfig } from "../services/feeFlowService/index.js";
23
+ import { type IREULLockService } from "../services/reulLockService/index.js";
23
24
  import { type EulerSDKConfig } from "./config.js";
24
25
  import type { TokenlistServiceConfig } from "../services/tokenlistService/index.js";
25
26
  import { type IVaultMetaService, type VaultEntity, type VaultServiceEntry } from "../services/vaults/vaultMetaService/index.js";
26
27
  import type { VaultTypeSubgraphAdapterConfig, VaultTypeV3AdapterConfig } from "../services/vaults/vaultMetaService/index.js";
27
28
  import type { IVaultEntity } from "../entities/Account.js";
28
29
  import { type BuildQueryFn, type QueryCacheConfig } from "../utils/buildQuery.js";
30
+ import { type FallbackInfo } from "../utils/fallbackAdapter.js";
29
31
  import type { EulerPlugin } from "../plugins/types.js";
30
32
  export interface BuildSDKOverrides<TVaultEntity extends IVaultEntity = VaultEntity> {
31
33
  abiService?: IABIService;
@@ -47,6 +49,7 @@ export interface BuildSDKOverrides<TVaultEntity extends IVaultEntity = VaultEnti
47
49
  intrinsicApyService?: IIntrinsicApyService;
48
50
  oracleAdapterService?: IOracleAdapterService;
49
51
  feeFlowService?: IFeeFlowService;
52
+ reulLockService?: IREULLockService;
50
53
  }
51
54
  export type { EulerSDKConfig } from "./config.js";
52
55
  export interface BuildSDKOptions<TVaultEntity extends IVaultEntity = VaultEntity> {
@@ -78,6 +81,11 @@ export interface BuildSDKOptions<TVaultEntity extends IVaultEntity = VaultEntity
78
81
  buildQuery?: BuildQueryFn;
79
82
  /** Plugins that enrich on-chain reads (via batchSimulation) and transaction plans (via processPlan). */
80
83
  plugins?: EulerPlugin[];
84
+ /**
85
+ * Optional callback invoked whenever a built-in fallback adapter routes a call from the primary
86
+ * to the secondary. Use for telemetry, dashboards, or in-app diagnostics.
87
+ */
88
+ onFallback?: (info: FallbackInfo) => void;
81
89
  servicesOverrides?: BuildSDKOverrides<TVaultEntity>;
82
90
  }
83
91
  export declare function buildEulerSDK<TVaultEntity extends IVaultEntity = VaultEntity>(options?: BuildSDKOptions<TVaultEntity>): Promise<EulerSDK<TVaultEntity>>;
@@ -1 +1 @@
1
- {"version":3,"file":"buildSDK.d.ts","sourceRoot":"","sources":["../../../src/sdk/buildSDK.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildSDK.d.ts","sourceRoot":"","sources":["../../../src/sdk/buildSDK.ts"],"names":[],"mappings":"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"}
@@ -25,12 +25,14 @@ import { OracleAdapterService, } from "../services/oracleAdapterService/index.js
25
25
  import { DEFAULT_EULER_LABELS_BASE_URL, DEFAULT_TOKENLIST_API_BASE_URL, defaultAccountV3AdapterConfig, defaultAccountVaultsAdapterConfig, defaultDeploymentServiceConfig, defaultEulerEarnV3AdapterConfig, defaultEulerLabelsURLAdapterConfig, defaultIntrinsicApyV3AdapterConfig, defaultPricingServiceConfig, defaultRewardsV3AdapterConfig, defaultSwapServiceConfig, defaultTokenlistServiceConfig, defaultVaultTypeAdapterConfig, } from "./defaultConfig.js";
26
26
  import { defaultEVaultV3AdapterConfig } from "./defaultConfig.js";
27
27
  import { FeeFlowService, } from "../services/feeFlowService/index.js";
28
+ import { REULLockService, } from "../services/reulLockService/index.js";
28
29
  import { readEulerSDKEnvConfig, } from "./config.js";
29
30
  import { EVaultOnchainAdapter } from "../services/vaults/eVaultService/adapters/eVaultOnchainAdapter/eVaultOnchainAdapter.js";
30
31
  import { EVaultV3Adapter } from "../services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3Adapter.js";
31
32
  import { VaultMetaService, VaultTypeSubgraphAdapter, VaultTypeV3Adapter, } from "../services/vaults/vaultMetaService/index.js";
32
33
  import { VaultType } from "../utils/types.js";
33
34
  import { createQueryCacheBuildQuery, } from "../utils/buildQuery.js";
35
+ import { createFallbackAdapter, } from "../utils/fallbackAdapter.js";
34
36
  import { BatchSimulationAdapter } from "../plugins/batchSimulation.js";
35
37
  function pickConfigValue(configValue, explicitValue, envValue, defaultValue) {
36
38
  return configValue ?? explicitValue ?? envValue ?? defaultValue;
@@ -205,7 +207,7 @@ function resolveRewardsDirectAdapterConfig(explicitConfig, envConfig, config) {
205
207
  };
206
208
  }
207
209
  export async function buildEulerSDK(options = {}) {
208
- const { config, v3ApiKey, accountServiceConfig, eVaultServiceConfig, eulerEarnServiceConfig, accountVaultsAdapterConfig, vaultTypeAdapterConfig, additionalVaultServices, eulerLabelsAdapterConfig, tokenlistServiceConfig, swapServiceConfig, pricingServiceConfig, rewardsServiceConfig, intrinsicApyServiceConfig, oracleAdapterServiceConfig, queryCacheConfig, buildQuery, plugins, servicesOverrides, feeFlowServiceConfig, } = options;
210
+ const { config, v3ApiKey, accountServiceConfig, eVaultServiceConfig, eulerEarnServiceConfig, accountVaultsAdapterConfig, vaultTypeAdapterConfig, additionalVaultServices, eulerLabelsAdapterConfig, tokenlistServiceConfig, swapServiceConfig, pricingServiceConfig, rewardsServiceConfig, intrinsicApyServiceConfig, oracleAdapterServiceConfig, queryCacheConfig, buildQuery, plugins, onFallback, servicesOverrides, feeFlowServiceConfig, } = options;
209
211
  const envConfig = readEulerSDKEnvConfig();
210
212
  const resolvedRpcUrls = mergeNumberRecords(undefined, envConfig.rpcUrls, undefined, config?.rpcUrls);
211
213
  const resolvedQueryCacheConfig = {
@@ -226,34 +228,76 @@ export async function buildEulerSDK(options = {}) {
226
228
  const deploymentService = servicesOverrides?.deploymentService ??
227
229
  (await DeploymentService.build(resolvedDeploymentServiceConfig, resolvedBuildQuery));
228
230
  const providerService = servicesOverrides?.providerService ?? new ProviderService(resolvedRpcUrls);
231
+ const disableV3 = pickConfigValue(config?.disableV3, undefined, envConfig.disableV3) ?? false;
229
232
  // Account adapter is built early so it can be used when building account service (after vault meta service)
230
233
  const resolvedAccountServiceConfig = accountServiceConfig ?? {};
231
- const resolvedAccountServiceAdapter = pickConfigValue(config?.accountServiceAdapter, resolvedAccountServiceConfig.adapter, envConfig.accountServiceAdapter);
234
+ const resolvedAccountServiceAdapter = pickConfigValue(config?.accountServiceAdapter, resolvedAccountServiceConfig.adapter, envConfig.accountServiceAdapter) ?? "fallback";
235
+ const effectiveAccountServiceAdapter = (() => {
236
+ if (!disableV3)
237
+ return resolvedAccountServiceAdapter;
238
+ if (resolvedAccountServiceAdapter === "v3") {
239
+ console.warn("[buildEulerSDK] disableV3 is set but accountServiceAdapter='v3'; forcing 'onchain'.");
240
+ return "onchain";
241
+ }
242
+ if (resolvedAccountServiceAdapter === "fallback")
243
+ return "onchain";
244
+ return resolvedAccountServiceAdapter;
245
+ })();
246
+ const accountV3Config = resolveV3AdapterConfig(defaultAccountV3AdapterConfig, {
247
+ explicitConfig: resolvedAccountServiceConfig.v3AdapterConfig,
248
+ explicitV3ApiKey: v3ApiKey,
249
+ envConfig,
250
+ config,
251
+ envEndpoint: envConfig.accountV3ApiUrl,
252
+ configEndpoint: config?.accountV3ApiUrl,
253
+ envApiKey: envConfig.accountV3ApiKey,
254
+ configApiKey: config?.accountV3ApiKey,
255
+ envExtra: {
256
+ ...maybeField("forceFresh", envConfig.accountV3ForceFresh),
257
+ },
258
+ configExtra: {
259
+ ...maybeField("forceFresh", config?.accountV3ForceFresh),
260
+ },
261
+ });
262
+ const accountVaultsSubgraphUrls = mergeNumberRecords(defaultAccountVaultsAdapterConfig.subgraphURLs, envConfig.accountVaultsSubgraphUrls, accountVaultsAdapterConfig?.subgraphURLs, config?.accountVaultsSubgraphUrls);
263
+ const canBuildAccountV3 = !!accountV3Config.endpoint;
264
+ const canBuildAccountOnchain = Object.keys(accountVaultsSubgraphUrls).length > 0;
232
265
  let accountOnchainAdapter;
233
- const accountAdapter = resolvedAccountServiceAdapter === "onchain"
234
- ? (() => {
235
- const accountVaultsAdapter = new AccountVaultsSubgraphAdapter({
236
- subgraphURLs: mergeNumberRecords(defaultAccountVaultsAdapterConfig.subgraphURLs, envConfig.accountVaultsSubgraphUrls, accountVaultsAdapterConfig?.subgraphURLs, config?.accountVaultsSubgraphUrls),
237
- }, resolvedBuildQuery);
238
- accountOnchainAdapter = new AccountOnchainAdapter(providerService, deploymentService, accountVaultsAdapter, resolvedBuildQuery);
239
- return accountOnchainAdapter;
240
- })()
241
- : new AccountV3Adapter(resolveV3AdapterConfig(defaultAccountV3AdapterConfig, {
242
- explicitConfig: resolvedAccountServiceConfig.v3AdapterConfig,
243
- explicitV3ApiKey: v3ApiKey,
244
- envConfig,
245
- config,
246
- envEndpoint: envConfig.accountV3ApiUrl,
247
- configEndpoint: config?.accountV3ApiUrl,
248
- envApiKey: envConfig.accountV3ApiKey,
249
- configApiKey: config?.accountV3ApiKey,
250
- envExtra: {
251
- ...maybeField("forceFresh", envConfig.accountV3ForceFresh),
252
- },
253
- configExtra: {
254
- ...maybeField("forceFresh", config?.accountV3ForceFresh),
255
- },
256
- }), resolvedBuildQuery);
266
+ const buildAccountV3 = () => new AccountV3Adapter(accountV3Config, resolvedBuildQuery);
267
+ const buildAccountOnchain = () => {
268
+ const accountVaultsAdapter = new AccountVaultsSubgraphAdapter({ subgraphURLs: accountVaultsSubgraphUrls }, resolvedBuildQuery);
269
+ accountOnchainAdapter = new AccountOnchainAdapter(providerService, deploymentService, accountVaultsAdapter, resolvedBuildQuery);
270
+ return accountOnchainAdapter;
271
+ };
272
+ let accountAdapter;
273
+ if (effectiveAccountServiceAdapter === "v3") {
274
+ if (!canBuildAccountV3)
275
+ throw new Error("[buildEulerSDK] accountServiceAdapter='v3' but no V3 endpoint is configured.");
276
+ accountAdapter = buildAccountV3();
277
+ }
278
+ else if (effectiveAccountServiceAdapter === "onchain") {
279
+ if (!canBuildAccountOnchain)
280
+ throw new Error("[buildEulerSDK] accountServiceAdapter='onchain' but no accountVaultsSubgraphUrls are configured.");
281
+ accountAdapter = buildAccountOnchain();
282
+ }
283
+ else if (canBuildAccountV3 && canBuildAccountOnchain) {
284
+ accountAdapter = createFallbackAdapter(buildAccountV3(), buildAccountOnchain(), {
285
+ methods: ["fetchAccount", "fetchSubAccount"],
286
+ adapterNames: { primary: "accountV3", secondary: "accountOnchain" },
287
+ onFallback,
288
+ });
289
+ }
290
+ else if (canBuildAccountV3) {
291
+ console.warn("[buildEulerSDK] accountService fallback disabled: onchain adapter requires accountVaultsSubgraphUrls. Using V3 only.");
292
+ accountAdapter = buildAccountV3();
293
+ }
294
+ else if (canBuildAccountOnchain) {
295
+ console.warn("[buildEulerSDK] accountService fallback disabled: V3 endpoint not configured. Using onchain only.");
296
+ accountAdapter = buildAccountOnchain();
297
+ }
298
+ else {
299
+ throw new Error("[buildEulerSDK] cannot build account adapter: neither V3 endpoint nor accountVaultsSubgraphUrls are configured.");
300
+ }
257
301
  // Build wallet service if not overridden
258
302
  let walletService;
259
303
  if (servicesOverrides?.walletService) {
@@ -271,28 +315,65 @@ export async function buildEulerSDK(options = {}) {
271
315
  }
272
316
  else {
273
317
  const resolvedEVaultServiceConfig = eVaultServiceConfig ?? {};
274
- const resolvedEVaultServiceAdapter = pickConfigValue(config?.eVaultServiceAdapter, resolvedEVaultServiceConfig.adapter, envConfig.eVaultServiceAdapter);
275
- const selectedEVaultAdapter = resolvedEVaultServiceAdapter === "onchain"
276
- ? (() => {
277
- eVaultAdapter = new EVaultOnchainAdapter(providerService, deploymentService, resolvedBuildQuery);
278
- return eVaultAdapter;
279
- })()
280
- : new EVaultV3Adapter(resolveV3AdapterConfig(defaultEVaultV3AdapterConfig, {
281
- explicitConfig: resolvedEVaultServiceConfig.v3AdapterConfig,
282
- explicitV3ApiKey: v3ApiKey,
283
- envConfig,
284
- config,
285
- envEndpoint: envConfig.eVaultV3ApiUrl,
286
- configEndpoint: config?.eVaultV3ApiUrl,
287
- envApiKey: envConfig.eVaultV3ApiKey,
288
- configApiKey: config?.eVaultV3ApiKey,
289
- envExtra: {
290
- ...maybeField("batchSize", envConfig.eVaultV3BatchSize),
291
- },
292
- configExtra: {
293
- ...maybeField("batchSize", config?.eVaultV3BatchSize),
294
- },
295
- }), providerService, resolvedBuildQuery);
318
+ const resolvedEVaultServiceAdapter = pickConfigValue(config?.eVaultServiceAdapter, resolvedEVaultServiceConfig.adapter, envConfig.eVaultServiceAdapter) ?? "fallback";
319
+ const effectiveEVaultServiceAdapter = (() => {
320
+ if (!disableV3)
321
+ return resolvedEVaultServiceAdapter;
322
+ if (resolvedEVaultServiceAdapter === "v3") {
323
+ console.warn("[buildEulerSDK] disableV3 is set but eVaultServiceAdapter='v3'; forcing 'onchain'.");
324
+ return "onchain";
325
+ }
326
+ if (resolvedEVaultServiceAdapter === "fallback")
327
+ return "onchain";
328
+ return resolvedEVaultServiceAdapter;
329
+ })();
330
+ const eVaultV3Config = resolveV3AdapterConfig(defaultEVaultV3AdapterConfig, {
331
+ explicitConfig: resolvedEVaultServiceConfig.v3AdapterConfig,
332
+ explicitV3ApiKey: v3ApiKey,
333
+ envConfig,
334
+ config,
335
+ envEndpoint: envConfig.eVaultV3ApiUrl,
336
+ configEndpoint: config?.eVaultV3ApiUrl,
337
+ envApiKey: envConfig.eVaultV3ApiKey,
338
+ configApiKey: config?.eVaultV3ApiKey,
339
+ envExtra: { ...maybeField("batchSize", envConfig.eVaultV3BatchSize) },
340
+ configExtra: { ...maybeField("batchSize", config?.eVaultV3BatchSize) },
341
+ });
342
+ const canBuildEVaultV3 = !!eVaultV3Config.endpoint;
343
+ const canBuildEVaultOnchain = true; // onchain only needs provider + deployment, always available
344
+ const buildEVaultV3 = () => new EVaultV3Adapter(eVaultV3Config, providerService, resolvedBuildQuery);
345
+ const buildEVaultOnchain = () => {
346
+ eVaultAdapter = new EVaultOnchainAdapter(providerService, deploymentService, resolvedBuildQuery);
347
+ return eVaultAdapter;
348
+ };
349
+ let selectedEVaultAdapter;
350
+ if (effectiveEVaultServiceAdapter === "v3") {
351
+ if (!canBuildEVaultV3)
352
+ throw new Error("[buildEulerSDK] eVaultServiceAdapter='v3' but no V3 endpoint is configured.");
353
+ selectedEVaultAdapter = buildEVaultV3();
354
+ }
355
+ else if (effectiveEVaultServiceAdapter === "onchain") {
356
+ selectedEVaultAdapter = buildEVaultOnchain();
357
+ }
358
+ else if (canBuildEVaultV3 && canBuildEVaultOnchain) {
359
+ selectedEVaultAdapter = createFallbackAdapter(buildEVaultV3(), buildEVaultOnchain(), {
360
+ methods: [
361
+ "fetchVaults",
362
+ "fetchAllVaults",
363
+ "fetchVerifiedVaultsAddresses",
364
+ ],
365
+ adapterNames: { primary: "eVaultV3", secondary: "eVaultOnchain" },
366
+ onFallback,
367
+ });
368
+ }
369
+ else if (canBuildEVaultV3) {
370
+ console.warn("[buildEulerSDK] eVaultService fallback disabled: onchain adapter unavailable. Using V3 only.");
371
+ selectedEVaultAdapter = buildEVaultV3();
372
+ }
373
+ else {
374
+ console.warn("[buildEulerSDK] eVaultService fallback disabled: V3 endpoint not configured. Using onchain only.");
375
+ selectedEVaultAdapter = buildEVaultOnchain();
376
+ }
296
377
  eVaultService = new EVaultService(selectedEVaultAdapter, deploymentService);
297
378
  }
298
379
  // Build eulerEarn service if not overridden
@@ -302,19 +383,58 @@ export async function buildEulerSDK(options = {}) {
302
383
  }
303
384
  else {
304
385
  const resolvedEulerEarnServiceConfig = eulerEarnServiceConfig ?? {};
305
- const resolvedEulerEarnServiceAdapter = pickConfigValue(config?.eulerEarnServiceAdapter, resolvedEulerEarnServiceConfig.adapter, envConfig.eulerEarnServiceAdapter);
306
- const eulerEarnAdapter = resolvedEulerEarnServiceAdapter === "onchain"
307
- ? new EulerEarnOnchainAdapter(providerService, deploymentService, resolvedBuildQuery)
308
- : new EulerEarnV3Adapter(resolveV3AdapterConfig(defaultEulerEarnV3AdapterConfig, {
309
- explicitConfig: resolvedEulerEarnServiceConfig.v3AdapterConfig,
310
- explicitV3ApiKey: v3ApiKey,
311
- envConfig,
312
- config,
313
- envEndpoint: envConfig.eulerEarnV3ApiUrl,
314
- configEndpoint: config?.eulerEarnV3ApiUrl,
315
- envApiKey: envConfig.eulerEarnV3ApiKey,
316
- configApiKey: config?.eulerEarnV3ApiKey,
317
- }), resolvedBuildQuery);
386
+ const resolvedEulerEarnServiceAdapter = pickConfigValue(config?.eulerEarnServiceAdapter, resolvedEulerEarnServiceConfig.adapter, envConfig.eulerEarnServiceAdapter) ?? "fallback";
387
+ const effectiveEulerEarnServiceAdapter = (() => {
388
+ if (!disableV3)
389
+ return resolvedEulerEarnServiceAdapter;
390
+ if (resolvedEulerEarnServiceAdapter === "v3") {
391
+ console.warn("[buildEulerSDK] disableV3 is set but eulerEarnServiceAdapter='v3'; forcing 'onchain'.");
392
+ return "onchain";
393
+ }
394
+ if (resolvedEulerEarnServiceAdapter === "fallback")
395
+ return "onchain";
396
+ return resolvedEulerEarnServiceAdapter;
397
+ })();
398
+ const eulerEarnV3Config = resolveV3AdapterConfig(defaultEulerEarnV3AdapterConfig, {
399
+ explicitConfig: resolvedEulerEarnServiceConfig.v3AdapterConfig,
400
+ explicitV3ApiKey: v3ApiKey,
401
+ envConfig,
402
+ config,
403
+ envEndpoint: envConfig.eulerEarnV3ApiUrl,
404
+ configEndpoint: config?.eulerEarnV3ApiUrl,
405
+ envApiKey: envConfig.eulerEarnV3ApiKey,
406
+ configApiKey: config?.eulerEarnV3ApiKey,
407
+ });
408
+ const canBuildEulerEarnV3 = !!eulerEarnV3Config.endpoint;
409
+ const buildEulerEarnV3 = () => new EulerEarnV3Adapter(eulerEarnV3Config, resolvedBuildQuery);
410
+ const buildEulerEarnOnchain = () => new EulerEarnOnchainAdapter(providerService, deploymentService, resolvedBuildQuery);
411
+ let eulerEarnAdapter;
412
+ if (effectiveEulerEarnServiceAdapter === "v3") {
413
+ if (!canBuildEulerEarnV3)
414
+ throw new Error("[buildEulerSDK] eulerEarnServiceAdapter='v3' but no V3 endpoint is configured.");
415
+ eulerEarnAdapter = buildEulerEarnV3();
416
+ }
417
+ else if (effectiveEulerEarnServiceAdapter === "onchain") {
418
+ eulerEarnAdapter = buildEulerEarnOnchain();
419
+ }
420
+ else if (canBuildEulerEarnV3) {
421
+ eulerEarnAdapter = createFallbackAdapter(buildEulerEarnV3(), buildEulerEarnOnchain(), {
422
+ methods: [
423
+ "fetchVaults",
424
+ "fetchAllVaults",
425
+ "fetchVerifiedVaultsAddresses",
426
+ ],
427
+ adapterNames: {
428
+ primary: "eulerEarnV3",
429
+ secondary: "eulerEarnOnchain",
430
+ },
431
+ onFallback,
432
+ });
433
+ }
434
+ else {
435
+ console.warn("[buildEulerSDK] eulerEarnService fallback disabled: V3 endpoint not configured. Using onchain only.");
436
+ eulerEarnAdapter = buildEulerEarnOnchain();
437
+ }
318
438
  eulerEarnService = new EulerEarnService(eulerEarnAdapter, deploymentService, eVaultService);
319
439
  }
320
440
  // Build securitizeVault service if not overridden
@@ -337,32 +457,75 @@ export async function buildEulerSDK(options = {}) {
337
457
  ? "subgraph"
338
458
  : "v3"
339
459
  : undefined;
340
- const resolvedVaultTypeAdapterKind = pickConfigValue(config?.vaultTypeAdapter, explicitVaultTypeAdapterKind, envConfig.vaultTypeAdapter, "v3");
341
- const vaultTypeAdapter = resolvedVaultTypeAdapterKind === "subgraph"
342
- ? new VaultTypeSubgraphAdapter({
343
- subgraphURLs: mergeNumberRecords(defaultAccountVaultsAdapterConfig.subgraphURLs, envConfig.vaultTypeSubgraphUrls, vaultTypeAdapterConfig &&
344
- "subgraphURLs" in vaultTypeAdapterConfig
345
- ? vaultTypeAdapterConfig.subgraphURLs
346
- : undefined, config?.vaultTypeSubgraphUrls),
347
- }, resolvedBuildQuery)
348
- : new VaultTypeV3Adapter(resolveV3AdapterConfig(defaultVaultTypeAdapterConfig, {
349
- explicitConfig: vaultTypeAdapterConfig &&
350
- !("subgraphURLs" in vaultTypeAdapterConfig)
351
- ? {
352
- ...vaultTypeAdapterConfig,
353
- ...maybeField("typeMap", mergeStringRecords(envConfig.vaultTypeV3TypeMap, vaultTypeAdapterConfig.typeMap, config?.vaultTypeV3TypeMap)),
354
- }
355
- : {
356
- ...maybeField("typeMap", mergeStringRecords(envConfig.vaultTypeV3TypeMap, undefined, config?.vaultTypeV3TypeMap)),
357
- },
358
- explicitV3ApiKey: v3ApiKey,
359
- envConfig,
360
- config,
361
- envEndpoint: envConfig.vaultTypeV3ApiUrl,
362
- configEndpoint: config?.vaultTypeV3ApiUrl,
363
- envApiKey: envConfig.vaultTypeV3ApiKey,
364
- configApiKey: config?.vaultTypeV3ApiKey,
365
- }), resolvedBuildQuery);
460
+ const resolvedVaultTypeAdapterKind = pickConfigValue(config?.vaultTypeAdapter, explicitVaultTypeAdapterKind, envConfig.vaultTypeAdapter, "fallback");
461
+ const effectiveVaultTypeAdapterKind = (() => {
462
+ if (!disableV3)
463
+ return resolvedVaultTypeAdapterKind;
464
+ if (resolvedVaultTypeAdapterKind === "v3") {
465
+ console.warn("[buildEulerSDK] disableV3 is set but vaultTypeAdapter='v3'; forcing 'subgraph'.");
466
+ return "subgraph";
467
+ }
468
+ if (resolvedVaultTypeAdapterKind === "fallback")
469
+ return "subgraph";
470
+ return resolvedVaultTypeAdapterKind;
471
+ })();
472
+ const vaultTypeSubgraphUrls = mergeNumberRecords(defaultAccountVaultsAdapterConfig.subgraphURLs, envConfig.vaultTypeSubgraphUrls, vaultTypeAdapterConfig && "subgraphURLs" in vaultTypeAdapterConfig
473
+ ? vaultTypeAdapterConfig.subgraphURLs
474
+ : undefined, config?.vaultTypeSubgraphUrls);
475
+ const vaultTypeV3Config = resolveV3AdapterConfig(defaultVaultTypeAdapterConfig, {
476
+ explicitConfig: vaultTypeAdapterConfig &&
477
+ !("subgraphURLs" in vaultTypeAdapterConfig)
478
+ ? {
479
+ ...vaultTypeAdapterConfig,
480
+ ...maybeField("typeMap", mergeStringRecords(envConfig.vaultTypeV3TypeMap, vaultTypeAdapterConfig.typeMap, config?.vaultTypeV3TypeMap)),
481
+ }
482
+ : {
483
+ ...maybeField("typeMap", mergeStringRecords(envConfig.vaultTypeV3TypeMap, undefined, config?.vaultTypeV3TypeMap)),
484
+ },
485
+ explicitV3ApiKey: v3ApiKey,
486
+ envConfig,
487
+ config,
488
+ envEndpoint: envConfig.vaultTypeV3ApiUrl,
489
+ configEndpoint: config?.vaultTypeV3ApiUrl,
490
+ envApiKey: envConfig.vaultTypeV3ApiKey,
491
+ configApiKey: config?.vaultTypeV3ApiKey,
492
+ });
493
+ const canBuildVaultTypeV3 = !!vaultTypeV3Config.endpoint;
494
+ const canBuildVaultTypeSubgraph = Object.keys(vaultTypeSubgraphUrls).length > 0;
495
+ const buildVaultTypeV3 = () => new VaultTypeV3Adapter(vaultTypeV3Config, resolvedBuildQuery);
496
+ const buildVaultTypeSubgraph = () => new VaultTypeSubgraphAdapter({ subgraphURLs: vaultTypeSubgraphUrls }, resolvedBuildQuery);
497
+ let vaultTypeAdapter;
498
+ if (effectiveVaultTypeAdapterKind === "v3") {
499
+ if (!canBuildVaultTypeV3)
500
+ throw new Error("[buildEulerSDK] vaultTypeAdapter='v3' but no V3 endpoint is configured.");
501
+ vaultTypeAdapter = buildVaultTypeV3();
502
+ }
503
+ else if (effectiveVaultTypeAdapterKind === "subgraph") {
504
+ if (!canBuildVaultTypeSubgraph)
505
+ throw new Error("[buildEulerSDK] vaultTypeAdapter='subgraph' but no subgraph URLs are configured.");
506
+ vaultTypeAdapter = buildVaultTypeSubgraph();
507
+ }
508
+ else if (canBuildVaultTypeV3 && canBuildVaultTypeSubgraph) {
509
+ vaultTypeAdapter = createFallbackAdapter(buildVaultTypeV3(), buildVaultTypeSubgraph(), {
510
+ methods: ["fetchVaultType", "fetchVaultFactories", "fetchVaultTypes"],
511
+ adapterNames: {
512
+ primary: "vaultTypeV3",
513
+ secondary: "vaultTypeSubgraph",
514
+ },
515
+ onFallback,
516
+ });
517
+ }
518
+ else if (canBuildVaultTypeV3) {
519
+ console.warn("[buildEulerSDK] vaultTypeAdapter fallback disabled: subgraph URLs not configured. Using V3 only.");
520
+ vaultTypeAdapter = buildVaultTypeV3();
521
+ }
522
+ else if (canBuildVaultTypeSubgraph) {
523
+ console.warn("[buildEulerSDK] vaultTypeAdapter fallback disabled: V3 endpoint not configured. Using subgraph only.");
524
+ vaultTypeAdapter = buildVaultTypeSubgraph();
525
+ }
526
+ else {
527
+ throw new Error("[buildEulerSDK] cannot build vault type adapter: neither V3 endpoint nor subgraph URLs are configured.");
528
+ }
366
529
  const allVaultServices = [
367
530
  {
368
531
  type: VaultType.EVault,
@@ -469,22 +632,64 @@ export async function buildEulerSDK(options = {}) {
469
632
  // Build rewards service if not overridden
470
633
  const rewardsService = servicesOverrides?.rewardsService ??
471
634
  (() => {
472
- const resolvedRewardsServiceAdapter = pickConfigValue(config?.rewardsServiceAdapter, rewardsServiceConfig?.adapter, envConfig.rewardsServiceAdapter, "v3");
635
+ const resolvedRewardsServiceAdapter = pickConfigValue(config?.rewardsServiceAdapter, rewardsServiceConfig?.adapter, envConfig.rewardsServiceAdapter) ?? "fallback";
636
+ const effectiveRewardsServiceAdapter = (() => {
637
+ if (!disableV3)
638
+ return resolvedRewardsServiceAdapter;
639
+ if (resolvedRewardsServiceAdapter === "v3") {
640
+ console.warn("[buildEulerSDK] disableV3 is set but rewardsServiceAdapter='v3'; forcing 'direct'.");
641
+ return "direct";
642
+ }
643
+ if (resolvedRewardsServiceAdapter === "fallback")
644
+ return "direct";
645
+ return resolvedRewardsServiceAdapter;
646
+ })();
473
647
  const directAdapterConfig = resolveRewardsDirectAdapterConfig(rewardsServiceConfig, envConfig, config);
648
+ // directAdapter is always constructed because RewardsService also reads
649
+ // merkl/fuul addresses from it, regardless of which adapter serves data.
474
650
  const directAdapter = new RewardsDirectAdapter(directAdapterConfig, resolvedBuildQuery);
475
- const rewardsAdapter = resolvedRewardsServiceAdapter === "direct"
476
- ? directAdapter
477
- : new RewardsV3Adapter(resolveV3AdapterConfig(defaultRewardsV3AdapterConfig, {
478
- explicitConfig: rewardsServiceConfig?.v3AdapterConfig,
479
- explicitV3ApiKey: v3ApiKey,
480
- envConfig,
481
- config,
482
- envEndpoint: envConfig.rewardsV3ApiUrl,
483
- configEndpoint: config?.rewardsV3ApiUrl,
484
- envApiKey: envConfig.rewardsV3ApiKey,
485
- configApiKey: config?.rewardsV3ApiKey,
486
- }), resolvedBuildQuery);
487
- return new RewardsService(rewardsAdapter, resolvedRewardsServiceAdapter === "direct" ? undefined : directAdapter, {
651
+ const rewardsV3Config = resolveV3AdapterConfig(defaultRewardsV3AdapterConfig, {
652
+ explicitConfig: rewardsServiceConfig?.v3AdapterConfig,
653
+ explicitV3ApiKey: v3ApiKey,
654
+ envConfig,
655
+ config,
656
+ envEndpoint: envConfig.rewardsV3ApiUrl,
657
+ configEndpoint: config?.rewardsV3ApiUrl,
658
+ envApiKey: envConfig.rewardsV3ApiKey,
659
+ configApiKey: config?.rewardsV3ApiKey,
660
+ });
661
+ const canBuildRewardsV3 = !!rewardsV3Config.endpoint;
662
+ const buildRewardsV3 = () => new RewardsV3Adapter(rewardsV3Config, resolvedBuildQuery);
663
+ let rewardsAdapter;
664
+ if (effectiveRewardsServiceAdapter === "direct") {
665
+ rewardsAdapter = directAdapter;
666
+ }
667
+ else if (effectiveRewardsServiceAdapter === "v3") {
668
+ if (!canBuildRewardsV3)
669
+ throw new Error("[buildEulerSDK] rewardsServiceAdapter='v3' but no V3 endpoint is configured.");
670
+ rewardsAdapter = buildRewardsV3();
671
+ }
672
+ else if (canBuildRewardsV3) {
673
+ rewardsAdapter = createFallbackAdapter(buildRewardsV3(), directAdapter, {
674
+ methods: [
675
+ "fetchVaultRewards",
676
+ "fetchChainRewards",
677
+ "fetchUserRewards",
678
+ "fetchFuulTotals",
679
+ "fetchFuulClaimChecks",
680
+ ],
681
+ adapterNames: {
682
+ primary: "rewardsV3",
683
+ secondary: "rewardsDirect",
684
+ },
685
+ onFallback,
686
+ });
687
+ }
688
+ else {
689
+ console.warn("[buildEulerSDK] rewardsService fallback disabled: V3 endpoint not configured. Using direct only.");
690
+ rewardsAdapter = directAdapter;
691
+ }
692
+ return new RewardsService(rewardsAdapter, {
488
693
  merklDistributorAddress: directAdapter.getMerklDistributorAddress(),
489
694
  fuulManagerAddress: directAdapter.getFuulManagerAddress(),
490
695
  fuulFactoryAddress: directAdapter.getFuulFactoryAddress(),
@@ -532,6 +737,8 @@ export async function buildEulerSDK(options = {}) {
532
737
  ...maybeField("feeFlowControllerUtilAddress", config?.feeFlowControllerUtilAddress),
533
738
  ...maybeField("defaultBuyDeadlineSeconds", config?.feeFlowDefaultBuyDeadlineSeconds),
534
739
  }, resolvedBuildQuery);
740
+ const reulLockService = servicesOverrides?.reulLockService ??
741
+ new REULLockService(providerService, deploymentService);
535
742
  if (executionService instanceof ExecutionService) {
536
743
  executionService.setProviderService(providerService);
537
744
  executionService.setVaultMetaService(vaultMetaService);
@@ -613,6 +820,7 @@ export async function buildEulerSDK(options = {}) {
613
820
  intrinsicApyService,
614
821
  oracleAdapterService,
615
822
  feeFlowService,
823
+ reulLockService,
616
824
  plugins,
617
825
  });
618
826
  if (executionService instanceof ExecutionService) {