@waiaas/actions 2.9.0-rc → 2.9.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -30,6 +30,12 @@ export { AAVE_V3_DEFAULTS, AAVE_V3_ADDRESSES, getAaveAddresses, AAVE_CHAIN_ID_MA
30
30
  export type { AaveV3Config, AaveChainAddresses } from './providers/aave-v3/config.js';
31
31
  export type { IRpcCaller, UserAccountData, ReserveData } from './providers/aave-v3/aave-rpc.js';
32
32
  export { decodeGetUserAccountData, decodeGetReserveData, simulateHealthFactor, rayToApy, hfToNumber, LIQUIDATION_THRESHOLD_HF, WARNING_THRESHOLD_HF } from './providers/aave-v3/aave-rpc.js';
33
+ export { KaminoLendingProvider } from './providers/kamino/index.js';
34
+ export { KAMINO_DEFAULTS, KAMINO_PROGRAM_ID, KAMINO_MAIN_MARKET, resolveMarketAddress } from './providers/kamino/config.js';
35
+ export type { KaminoConfig } from './providers/kamino/config.js';
36
+ export type { IKaminoSdkWrapper, KaminoInstruction, KaminoObligation, KaminoReserve } from './providers/kamino/kamino-sdk-wrapper.js';
37
+ export { MockKaminoSdkWrapper } from './providers/kamino/kamino-sdk-wrapper.js';
38
+ export { calculateHealthFactor, simulateKaminoHealthFactor, hfToStatus, KAMINO_LIQUIDATION_THRESHOLD, KAMINO_DEFAULT_HF_THRESHOLD } from './providers/kamino/hf-simulation.js';
33
39
  export { ActionApiClient } from './common/action-api-client.js';
34
40
  export { asBps, asPct, clampSlippageBps, bpsToPct, pctToBps } from './common/slippage.js';
35
41
  export type { SlippageBps, SlippagePct } from './common/slippage.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,cAAc,CAAC;AAWjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAKlE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC/F,YAAY,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC5I,YAAY,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC3F,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAEzG,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC7I,YAAY,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAEvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACrH,YAAY,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACzH,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACtF,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAChG,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,UAAU,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAE7L,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAC5H,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACtI,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,UAAU,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAG/K,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC1F,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,GACb,MAAM,kCAAkC,CAAC;AAM1C,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;CAC3C;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,gBAAgB,EAC1B,cAAc,EAAE,cAAc,EAC9B,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,UAAU,CAAA;CAAE,GACnC;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CA0IzC"}
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ import { JitoStakingActionProvider } from './providers/jito-staking/index.js';
8
8
  import { getJitoAddresses } from './providers/jito-staking/config.js';
9
9
  import { AaveV3LendingProvider } from './providers/aave-v3/index.js';
10
10
  import {} from './providers/aave-v3/config.js';
11
+ import { KaminoLendingProvider } from './providers/kamino/index.js';
11
12
  // Re-export provider classes
12
13
  export { JupiterSwapActionProvider } from './providers/jupiter-swap/index.js';
13
14
  export { JUPITER_PROGRAM_ID, JUPITER_SWAP_DEFAULTS } from './providers/jupiter-swap/config.js';
@@ -26,6 +27,10 @@ export { JitoEpochTracker } from './providers/jito-staking/epoch-tracker.js';
26
27
  export { AaveV3LendingProvider } from './providers/aave-v3/index.js';
27
28
  export { AAVE_V3_DEFAULTS, AAVE_V3_ADDRESSES, getAaveAddresses, AAVE_CHAIN_ID_MAP } from './providers/aave-v3/config.js';
28
29
  export { decodeGetUserAccountData, decodeGetReserveData, simulateHealthFactor, rayToApy, hfToNumber, LIQUIDATION_THRESHOLD_HF, WARNING_THRESHOLD_HF } from './providers/aave-v3/aave-rpc.js';
30
+ export { KaminoLendingProvider } from './providers/kamino/index.js';
31
+ export { KAMINO_DEFAULTS, KAMINO_PROGRAM_ID, KAMINO_MAIN_MARKET, resolveMarketAddress } from './providers/kamino/config.js';
32
+ export { MockKaminoSdkWrapper } from './providers/kamino/kamino-sdk-wrapper.js';
33
+ export { calculateHealthFactor, simulateKaminoHealthFactor, hfToStatus, KAMINO_LIQUIDATION_THRESHOLD, KAMINO_DEFAULT_HF_THRESHOLD } from './providers/kamino/hf-simulation.js';
29
34
  // Re-export common utilities
30
35
  export { ActionApiClient } from './common/action-api-client.js';
31
36
  export { asBps, asPct, clampSlippageBps, bpsToPct, pctToBps } from './common/slippage.js';
@@ -132,6 +137,18 @@ export function registerBuiltInProviders(registry, settingsReader, options) {
132
137
  return new AaveV3LendingProvider(config, options?.rpcCaller);
133
138
  },
134
139
  },
140
+ {
141
+ key: 'kamino',
142
+ enabledKey: 'actions.kamino_enabled',
143
+ factory: () => {
144
+ const config = {
145
+ enabled: true,
146
+ market: settingsReader.get('actions.kamino_market') || 'main',
147
+ hfThreshold: Number(settingsReader.get('actions.kamino_hf_threshold')) || 1.2,
148
+ };
149
+ return new KaminoLendingProvider(config);
150
+ },
151
+ },
135
152
  ];
136
153
  for (const { key, enabledKey, factory } of providers) {
137
154
  if (settingsReader.get(enabledKey) === 'true') {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAA0B,MAAM,oCAAoC,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAA0B,MAAM,oCAAoC,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAqB,MAAM,+BAA+B,CAAC;AAElE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,6BAA6B;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAG/F,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAG5I,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAEzG,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAE7I,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAEvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAErH,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGzH,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,UAAU,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAE7L,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAG5H,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,UAAU,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAE/K,6BAA6B;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAG1F,qEAAqE;AACrE,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,kCAAkC,CAAC;AAoB1C;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAA0B,EAC1B,cAA8B,EAC9B,OAAoC;IAEpC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,MAAM,SAAS,GAIV;QACH;YACE,GAAG,EAAE,cAAc;YACnB,UAAU,EAAE,8BAA8B;YAC1C,OAAO,EAAE,GAAG,EAAE;gBACZ,MAAM,MAAM,GAAmE;oBAC7E,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,mCAAmC,CAAC;oBACnE,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,8BAA8B,CAAC;oBAC1D,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;oBAC3F,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;oBACnF,iBAAiB,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;oBAC1F,eAAe,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;oBACrF,gBAAgB,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;iBACxF,CAAC;gBACF,OAAO,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;YAC/C,CAAC;SACF;QACD;YACE,GAAG,EAAE,YAAY;YACjB,UAAU,EAAE,4BAA4B;YACxC,OAAO,EAAE,GAAG,EAAE;gBACZ,MAAM,MAAM,GAAyE;oBACnF,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,4BAA4B,CAAC;oBACxD,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;oBACzF,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;oBACjF,gBAAgB,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;iBACtF,CAAC;gBACF,OAAO,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAC;YAC9C,CAAC;SACF;QACD;YACE,GAAG,EAAE,MAAM;YACX,UAAU,EAAE,sBAAsB;YAClC,OAAO,EAAE,GAAG,EAAE;gBACZ,MAAM,MAAM,GAAoD;oBAC9D,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,2BAA2B,CAAC;oBAC3D,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,sBAAsB,CAAC;oBAClD,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;oBACnF,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;oBAC3E,gBAAgB,EAAE,MAAM;iBACzB,CAAC;gBACF,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;SACF;QACD;YACE,GAAG,EAAE,cAAc;YACnB,UAAU,EAAE,8BAA8B;YAC1C,OAAO,EAAE,GAAG,EAAE;gBACZ,sEAAsE;gBACtE,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,yBAAyB,CAAC,IAAI,kBAAkB,CAAC;gBACvF,MAAM,SAAS,GAAG,iBAAiB,CAAC,UAAyB,CAAC,KAAK,SAAS,CAAC;gBAC7E,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAEtE,gGAAgG;gBAChG,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;gBAC/E,MAAM,kBAAkB,GAAG,cAAc,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;gBAE/F,MAAM,MAAM,GAAsB;oBAChC,OAAO,EAAE,IAAI;oBACb,YAAY,EAAE,aAAa,IAAI,SAAS,CAAC,YAAY;oBACrD,sBAAsB,EAAE,kBAAkB,IAAI,SAAS,CAAC,sBAAsB;iBAC/E,CAAC;gBACF,OAAO,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;YAC/C,CAAC;SACF;QACD;YACE,GAAG,EAAE,cAAc;YACnB,UAAU,EAAE,8BAA8B;YAC1C,OAAO,EAAE,GAAG,EAAE;gBACZ,kDAAkD;gBAClD,8EAA8E;gBAC9E,MAAM,iBAAiB,GAAG,cAAc,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;gBACxF,MAAM,mBAAmB,GAAG,cAAc,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;gBAEpF,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBAE9C,MAAM,MAAM,GAAsB;oBAChC,OAAO,EAAE,IAAI;oBACb,gBAAgB,EAAE,iBAAiB,IAAI,SAAS,CAAC,gBAAgB;oBACjE,WAAW,EAAE,mBAAmB,IAAI,SAAS,CAAC,WAAW;oBACzD,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;iBAC7C,CAAC;gBACF,OAAO,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;YAC/C,CAAC;SACF;QACD;YACE,GAAG,EAAE,SAAS;YACd,UAAU,EAAE,yBAAyB;YACrC,OAAO,EAAE,GAAG,EAAE;gBACZ,MAAM,MAAM,GAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC/C,OAAO,IAAI,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAC/D,CAAC;SACF;QACD;YACE,GAAG,EAAE,QAAQ;YACb,UAAU,EAAE,wBAAwB;YACpC,OAAO,EAAE,GAAG,EAAE;gBACZ,MAAM,MAAM,GAAiB;oBAC3B,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,MAAM;oBAC7D,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,IAAI,GAAG;iBAC9E,CAAC;gBACF,OAAO,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC3C,CAAC;SACF;KACF,CAAC;IAEF,KAAK,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,SAAS,EAAE,CAAC;QACrD,IAAI,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,MAAM,EAAE,CAAC;YAC9C,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;gBAC3B,IAAI,QAAQ,EAAE,CAAC;oBACb,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,sBAAsB,GAAG,wBAAwB,EAAE,GAAG,CAAC,CAAC;gBACrE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Kamino K-Lend configuration type, defaults, and program addresses.
3
+ *
4
+ * Supports: Solana mainnet (Kamino K-Lend V2).
5
+ * Main market address verified from Kamino Finance documentation.
6
+ */
7
+ export interface KaminoConfig {
8
+ enabled: boolean;
9
+ /** Market identifier: 'main' or a custom market pubkey. */
10
+ market: string;
11
+ /** Health factor warning threshold. Default 1.2. */
12
+ hfThreshold: number;
13
+ }
14
+ /** Kamino K-Lend V2 program ID on Solana mainnet. */
15
+ export declare const KAMINO_PROGRAM_ID = "KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD";
16
+ /** Kamino main lending market pubkey (Solana mainnet). */
17
+ export declare const KAMINO_MAIN_MARKET = "7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF";
18
+ export declare const KAMINO_DEFAULTS: KaminoConfig;
19
+ /**
20
+ * Resolve market identifier to an actual pubkey.
21
+ *
22
+ * @param market - 'main' or a custom market pubkey string
23
+ * @returns The market address string
24
+ */
25
+ export declare function resolveMarketAddress(market: string): string;
26
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/providers/kamino/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,qDAAqD;AACrD,eAAO,MAAM,iBAAiB,gDAAgD,CAAC;AAE/E,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,iDAAiD,CAAC;AAMjF,eAAO,MAAM,eAAe,EAAE,YAI7B,CAAC;AAMF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE3D"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Kamino K-Lend configuration type, defaults, and program addresses.
3
+ *
4
+ * Supports: Solana mainnet (Kamino K-Lend V2).
5
+ * Main market address verified from Kamino Finance documentation.
6
+ */
7
+ // ---------------------------------------------------------------------------
8
+ // Program constants
9
+ // ---------------------------------------------------------------------------
10
+ /** Kamino K-Lend V2 program ID on Solana mainnet. */
11
+ export const KAMINO_PROGRAM_ID = 'KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD';
12
+ /** Kamino main lending market pubkey (Solana mainnet). */
13
+ export const KAMINO_MAIN_MARKET = '7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF';
14
+ // ---------------------------------------------------------------------------
15
+ // Defaults (disabled)
16
+ // ---------------------------------------------------------------------------
17
+ export const KAMINO_DEFAULTS = {
18
+ enabled: false,
19
+ market: 'main',
20
+ hfThreshold: 1.2,
21
+ };
22
+ // ---------------------------------------------------------------------------
23
+ // Helper to resolve market address
24
+ // ---------------------------------------------------------------------------
25
+ /**
26
+ * Resolve market identifier to an actual pubkey.
27
+ *
28
+ * @param market - 'main' or a custom market pubkey string
29
+ * @returns The market address string
30
+ */
31
+ export function resolveMarketAddress(market) {
32
+ return market === 'main' ? KAMINO_MAIN_MARKET : market;
33
+ }
34
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/providers/kamino/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,qDAAqD;AACrD,MAAM,CAAC,MAAM,iBAAiB,GAAG,6CAA6C,CAAC;AAE/E,0DAA0D;AAC1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,8CAA8C,CAAC;AAEjF,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAiB;IAC3C,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,MAAM;IACd,WAAW,EAAE,GAAG;CACjB,CAAC;AAEF,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,OAAO,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC;AACzD,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Kamino Health Factor simulation functions.
3
+ *
4
+ * Pure functions for calculating and simulating Kamino health factor changes.
5
+ * Unlike Aave (bigint 18-decimal precision), Kamino SDK provides USD values
6
+ * as floats, so number arithmetic is used. This is safe because HF threshold
7
+ * comparisons happen at the 0.01 precision level (e.g., 1.20 vs 1.05).
8
+ *
9
+ * Used by KaminoLendingProvider to guard borrow/withdraw actions against
10
+ * self-liquidation risk (KPROV-08).
11
+ */
12
+ /** HF at liquidation (1.0). Below this, the position can be liquidated. */
13
+ export declare const KAMINO_LIQUIDATION_THRESHOLD = 1;
14
+ /** Default HF warning threshold (configurable via Admin Settings). */
15
+ export declare const KAMINO_DEFAULT_HF_THRESHOLD = 1.2;
16
+ /**
17
+ * Calculate health factor from Kamino obligation data.
18
+ *
19
+ * HF = (totalCollateralUsd * weightedLiqThreshold) / totalDebtUsd
20
+ * When totalDebt is 0, returns Infinity.
21
+ *
22
+ * @param totalCollateralUsd - Total collateral in USD
23
+ * @param totalDebtUsd - Total debt in USD
24
+ * @param weightedLiqThreshold - Weighted liquidation threshold (default 0.85)
25
+ * @returns Health factor as a number
26
+ */
27
+ export declare function calculateHealthFactor(totalCollateralUsd: number, totalDebtUsd: number, weightedLiqThreshold?: number): number;
28
+ /**
29
+ * Simulate health factor after a borrow or withdraw action.
30
+ *
31
+ * @param obligation - Current obligation summary (collateral/debt in USD)
32
+ * @param action - 'borrow' (increases debt) or 'withdraw' (decreases collateral)
33
+ * @param amountUsd - Amount in USD terms (approximate, for simulation)
34
+ * @param threshold - HF threshold to check against (default: KAMINO_LIQUIDATION_THRESHOLD)
35
+ * @returns Simulation result with safe flag, simulated HF, and threshold
36
+ */
37
+ export declare function simulateKaminoHealthFactor(obligation: {
38
+ totalCollateralUsd: number;
39
+ totalDebtUsd: number;
40
+ }, action: 'borrow' | 'withdraw', amountUsd: number, threshold?: number): {
41
+ safe: boolean;
42
+ simulatedHf: number;
43
+ threshold: number;
44
+ };
45
+ /**
46
+ * Convert a health factor value to a status string.
47
+ *
48
+ * @param hf - Health factor value
49
+ * @returns Status: 'safe' (>= 2.0), 'warning' (>= 1.5), 'danger' (>= 1.2), 'critical' (< 1.2)
50
+ */
51
+ export declare function hfToStatus(hf: number): 'safe' | 'warning' | 'danger' | 'critical';
52
+ //# sourceMappingURL=hf-simulation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hf-simulation.d.ts","sourceRoot":"","sources":["../../../src/providers/kamino/hf-simulation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,2EAA2E;AAC3E,eAAO,MAAM,4BAA4B,IAAM,CAAC;AAEhD,sEAAsE;AACtE,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAM/C;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,kBAAkB,EAAE,MAAM,EAC1B,YAAY,EAAE,MAAM,EACpB,oBAAoB,GAAE,MAAa,GAClC,MAAM,CAGR;AAMD;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE;IAAE,kBAAkB,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAChE,MAAM,EAAE,QAAQ,GAAG,UAAU,EAC7B,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,MAAqC,GAC/C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAgB3D;AAMD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAKjF"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Kamino Health Factor simulation functions.
3
+ *
4
+ * Pure functions for calculating and simulating Kamino health factor changes.
5
+ * Unlike Aave (bigint 18-decimal precision), Kamino SDK provides USD values
6
+ * as floats, so number arithmetic is used. This is safe because HF threshold
7
+ * comparisons happen at the 0.01 precision level (e.g., 1.20 vs 1.05).
8
+ *
9
+ * Used by KaminoLendingProvider to guard borrow/withdraw actions against
10
+ * self-liquidation risk (KPROV-08).
11
+ */
12
+ // ---------------------------------------------------------------------------
13
+ // Threshold constants
14
+ // ---------------------------------------------------------------------------
15
+ /** HF at liquidation (1.0). Below this, the position can be liquidated. */
16
+ export const KAMINO_LIQUIDATION_THRESHOLD = 1.0;
17
+ /** Default HF warning threshold (configurable via Admin Settings). */
18
+ export const KAMINO_DEFAULT_HF_THRESHOLD = 1.2;
19
+ // ---------------------------------------------------------------------------
20
+ // calculateHealthFactor
21
+ // ---------------------------------------------------------------------------
22
+ /**
23
+ * Calculate health factor from Kamino obligation data.
24
+ *
25
+ * HF = (totalCollateralUsd * weightedLiqThreshold) / totalDebtUsd
26
+ * When totalDebt is 0, returns Infinity.
27
+ *
28
+ * @param totalCollateralUsd - Total collateral in USD
29
+ * @param totalDebtUsd - Total debt in USD
30
+ * @param weightedLiqThreshold - Weighted liquidation threshold (default 0.85)
31
+ * @returns Health factor as a number
32
+ */
33
+ export function calculateHealthFactor(totalCollateralUsd, totalDebtUsd, weightedLiqThreshold = 0.85) {
34
+ if (totalDebtUsd <= 0)
35
+ return Infinity;
36
+ return (totalCollateralUsd * weightedLiqThreshold) / totalDebtUsd;
37
+ }
38
+ // ---------------------------------------------------------------------------
39
+ // simulateKaminoHealthFactor
40
+ // ---------------------------------------------------------------------------
41
+ /**
42
+ * Simulate health factor after a borrow or withdraw action.
43
+ *
44
+ * @param obligation - Current obligation summary (collateral/debt in USD)
45
+ * @param action - 'borrow' (increases debt) or 'withdraw' (decreases collateral)
46
+ * @param amountUsd - Amount in USD terms (approximate, for simulation)
47
+ * @param threshold - HF threshold to check against (default: KAMINO_LIQUIDATION_THRESHOLD)
48
+ * @returns Simulation result with safe flag, simulated HF, and threshold
49
+ */
50
+ export function simulateKaminoHealthFactor(obligation, action, amountUsd, threshold = KAMINO_LIQUIDATION_THRESHOLD) {
51
+ let collateral = obligation.totalCollateralUsd;
52
+ let debt = obligation.totalDebtUsd;
53
+ if (action === 'borrow') {
54
+ debt += amountUsd;
55
+ }
56
+ else {
57
+ collateral -= amountUsd;
58
+ }
59
+ const simulatedHf = calculateHealthFactor(collateral, debt);
60
+ return {
61
+ safe: simulatedHf >= threshold,
62
+ simulatedHf,
63
+ threshold,
64
+ };
65
+ }
66
+ // ---------------------------------------------------------------------------
67
+ // hfToStatus
68
+ // ---------------------------------------------------------------------------
69
+ /**
70
+ * Convert a health factor value to a status string.
71
+ *
72
+ * @param hf - Health factor value
73
+ * @returns Status: 'safe' (>= 2.0), 'warning' (>= 1.5), 'danger' (>= 1.2), 'critical' (< 1.2)
74
+ */
75
+ export function hfToStatus(hf) {
76
+ if (hf >= 2.0)
77
+ return 'safe';
78
+ if (hf >= 1.5)
79
+ return 'warning';
80
+ if (hf >= 1.2)
81
+ return 'danger';
82
+ return 'critical';
83
+ }
84
+ //# sourceMappingURL=hf-simulation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hf-simulation.js","sourceRoot":"","sources":["../../../src/providers/kamino/hf-simulation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,2EAA2E;AAC3E,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAEhD,sEAAsE;AACtE,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAE/C,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CACnC,kBAA0B,EAC1B,YAAoB,EACpB,uBAA+B,IAAI;IAEnC,IAAI,YAAY,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IACvC,OAAO,CAAC,kBAAkB,GAAG,oBAAoB,CAAC,GAAG,YAAY,CAAC;AACpE,CAAC;AAED,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,0BAA0B,CACxC,UAAgE,EAChE,MAA6B,EAC7B,SAAiB,EACjB,YAAoB,4BAA4B;IAEhD,IAAI,UAAU,GAAG,UAAU,CAAC,kBAAkB,CAAC;IAC/C,IAAI,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC;IAEnC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,IAAI,IAAI,SAAS,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,UAAU,IAAI,SAAS,CAAC;IAC1B,CAAC;IAED,MAAM,WAAW,GAAG,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC5D,OAAO;QACL,IAAI,EAAE,WAAW,IAAI,SAAS;QAC9B,WAAW;QACX,SAAS;KACV,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,IAAI,EAAE,IAAI,GAAG;QAAE,OAAO,MAAM,CAAC;IAC7B,IAAI,EAAE,IAAI,GAAG;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,EAAE,IAAI,GAAG;QAAE,OAAO,QAAQ,CAAC;IAC/B,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { ILendingProvider, ActionProviderMetadata, ActionDefinition, ActionContext, ContractCallRequest, LendingPositionSummary, HealthFactor, MarketInfo } from '@waiaas/core';
2
+ import type { IPositionProvider, PositionUpdate, PositionCategory } from '@waiaas/core';
3
+ import type { KaminoConfig } from './config.js';
4
+ import type { IKaminoSdkWrapper } from './kamino-sdk-wrapper.js';
5
+ export declare class KaminoLendingProvider implements ILendingProvider, IPositionProvider {
6
+ readonly metadata: ActionProviderMetadata;
7
+ readonly actions: readonly ActionDefinition[];
8
+ private readonly config;
9
+ private readonly sdkWrapper;
10
+ constructor(config?: Partial<KaminoConfig>, sdkWrapper?: IKaminoSdkWrapper);
11
+ resolve(actionName: string, params: Record<string, unknown>, context: ActionContext): Promise<ContractCallRequest | ContractCallRequest[]>;
12
+ private resolveSupply;
13
+ private resolveBorrow;
14
+ private resolveRepay;
15
+ private resolveWithdraw;
16
+ private checkBorrowSafety;
17
+ private checkWithdrawSafety;
18
+ getPosition(_walletId: string, context: ActionContext): Promise<LendingPositionSummary[]>;
19
+ getHealthFactor(_walletId: string, context: ActionContext): Promise<HealthFactor>;
20
+ getMarkets(chain: string, _network?: string): Promise<MarketInfo[]>;
21
+ getPositions(walletId: string): Promise<PositionUpdate[]>;
22
+ getProviderName(): string;
23
+ getSupportedCategories(): PositionCategory[];
24
+ }
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/kamino/index.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACX,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAqB,MAAM,yBAAyB,CAAC;AAoEpF,qBAAa,qBAAsB,YAAW,gBAAgB,EAAE,iBAAiB;IAC/E,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAE9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;gBAEnC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,iBAAiB;IAsDpE,OAAO,CACX,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,mBAAmB,GAAG,mBAAmB,EAAE,CAAC;YAqBzC,aAAa;YAsBb,aAAa;YA2Bb,YAAY;YAsBZ,eAAe;YA4Bf,iBAAiB;YA+BjB,mBAAmB;IAiC3B,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAqCzF,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAuBjF,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAwBnE,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAkD/D,eAAe,IAAI,MAAM;IAIzB,sBAAsB,IAAI,gBAAgB,EAAE;CAG7C"}
@@ -0,0 +1,381 @@
1
+ /**
2
+ * Kamino K-Lend Lending Action Provider.
3
+ *
4
+ * Implements ILendingProvider + IPositionProvider to resolve Kamino
5
+ * lending requests into ContractCallRequest arrays for the sequential pipeline.
6
+ *
7
+ * Actions:
8
+ * - kamino_supply: supply token as collateral (medium risk, DELAY)
9
+ * - kamino_borrow: borrow against collateral (high risk, APPROVAL)
10
+ * - kamino_repay: repay borrowed debt (medium risk, DELAY, supports 'max')
11
+ * - kamino_withdraw: withdraw collateral (high risk, APPROVAL, supports 'max')
12
+ *
13
+ * Uses IKaminoSdkWrapper for instruction building and obligation queries.
14
+ * MockKaminoSdkWrapper enables unit testing without real SDK/RPC.
15
+ */
16
+ import { ChainError } from '@waiaas/core';
17
+ import { KAMINO_DEFAULTS, resolveMarketAddress } from './config.js';
18
+ import { MockKaminoSdkWrapper } from './kamino-sdk-wrapper.js';
19
+ import { KaminoSupplyInputSchema, KaminoBorrowInputSchema, KaminoRepayInputSchema, KaminoWithdrawInputSchema, } from './schemas.js';
20
+ import { simulateKaminoHealthFactor, calculateHealthFactor, hfToStatus, KAMINO_LIQUIDATION_THRESHOLD, } from './hf-simulation.js';
21
+ // ---------------------------------------------------------------------------
22
+ // Amount parsing helper
23
+ // ---------------------------------------------------------------------------
24
+ /**
25
+ * Parse a human-readable token amount string to smallest unit (bigint).
26
+ * SPL tokens typically use 6 decimals (USDC), 9 (SOL), or other values.
27
+ *
28
+ * @param amount - Human-readable amount string (e.g., "100.5")
29
+ * @param decimals - Token decimals (default 6 for most SPL stablecoins)
30
+ * @throws ChainError if amount is zero or negative
31
+ */
32
+ function parseTokenAmount(amount, decimals = 6) {
33
+ const parts = amount.split('.');
34
+ const whole = BigInt(parts[0] || '0');
35
+ const fractional = (parts[1] || '').padEnd(decimals, '0').slice(0, decimals);
36
+ const result = whole * 10n ** BigInt(decimals) + BigInt(fractional);
37
+ if (result <= 0n) {
38
+ throw new ChainError('INVALID_INSTRUCTION', 'solana', {
39
+ message: 'Amount must be greater than 0',
40
+ });
41
+ }
42
+ return result;
43
+ }
44
+ // ---------------------------------------------------------------------------
45
+ // Instruction-to-request conversion
46
+ // ---------------------------------------------------------------------------
47
+ /**
48
+ * Convert KaminoInstruction[] to ContractCallRequest[].
49
+ * Each instruction becomes a ContractCallRequest with Solana fields.
50
+ */
51
+ function instructionsToRequests(instructions, marketAddress) {
52
+ return instructions.map((ix) => ({
53
+ type: 'CONTRACT_CALL',
54
+ to: marketAddress,
55
+ programId: ix.programId,
56
+ instructionData: ix.instructionData,
57
+ accounts: ix.accounts,
58
+ network: 'mainnet',
59
+ }));
60
+ }
61
+ // ---------------------------------------------------------------------------
62
+ // Provider implementation
63
+ // ---------------------------------------------------------------------------
64
+ export class KaminoLendingProvider {
65
+ metadata;
66
+ actions;
67
+ config;
68
+ sdkWrapper;
69
+ constructor(config, sdkWrapper) {
70
+ this.config = { ...KAMINO_DEFAULTS, ...config };
71
+ this.sdkWrapper = sdkWrapper ?? new MockKaminoSdkWrapper();
72
+ this.metadata = {
73
+ name: 'kamino',
74
+ description: 'Kamino K-Lend DeFi lending protocol for Solana: supply, borrow, repay, withdraw',
75
+ version: '1.0.0',
76
+ chains: ['solana'],
77
+ mcpExpose: true,
78
+ requiresApiKey: false,
79
+ requiredApis: [],
80
+ };
81
+ this.actions = [
82
+ {
83
+ name: 'kamino_supply',
84
+ description: 'Supply (deposit) an SPL token as collateral to Kamino K-Lend lending market',
85
+ chain: 'solana',
86
+ inputSchema: KaminoSupplyInputSchema,
87
+ riskLevel: 'medium',
88
+ defaultTier: 'DELAY',
89
+ },
90
+ {
91
+ name: 'kamino_borrow',
92
+ description: 'Borrow an asset from Kamino K-Lend against deposited collateral on Solana',
93
+ chain: 'solana',
94
+ inputSchema: KaminoBorrowInputSchema,
95
+ riskLevel: 'high',
96
+ defaultTier: 'APPROVAL',
97
+ },
98
+ {
99
+ name: 'kamino_repay',
100
+ description: 'Repay borrowed debt on Kamino K-Lend. Use amount="max" for full repayment.',
101
+ chain: 'solana',
102
+ inputSchema: KaminoRepayInputSchema,
103
+ riskLevel: 'medium',
104
+ defaultTier: 'DELAY',
105
+ },
106
+ {
107
+ name: 'kamino_withdraw',
108
+ description: 'Withdraw supplied collateral from Kamino K-Lend. Use amount="max" for full withdrawal.',
109
+ chain: 'solana',
110
+ inputSchema: KaminoWithdrawInputSchema,
111
+ riskLevel: 'high',
112
+ defaultTier: 'APPROVAL',
113
+ },
114
+ ];
115
+ }
116
+ // -------------------------------------------------------------------------
117
+ // IActionProvider.resolve()
118
+ // -------------------------------------------------------------------------
119
+ async resolve(actionName, params, context) {
120
+ switch (actionName) {
121
+ case 'kamino_supply':
122
+ return this.resolveSupply(params, context);
123
+ case 'kamino_borrow':
124
+ return this.resolveBorrow(params, context);
125
+ case 'kamino_repay':
126
+ return this.resolveRepay(params, context);
127
+ case 'kamino_withdraw':
128
+ return this.resolveWithdraw(params, context);
129
+ default:
130
+ throw new ChainError('INVALID_INSTRUCTION', 'solana', {
131
+ message: `Unknown action: ${actionName}`,
132
+ });
133
+ }
134
+ }
135
+ // -------------------------------------------------------------------------
136
+ // Supply: build supply instruction via SDK wrapper
137
+ // -------------------------------------------------------------------------
138
+ async resolveSupply(params, context) {
139
+ const input = KaminoSupplyInputSchema.parse(params);
140
+ const marketAddress = resolveMarketAddress(input.market ?? this.config.market);
141
+ const amount = parseTokenAmount(input.amount);
142
+ const instructions = await this.sdkWrapper.buildSupplyInstruction({
143
+ market: marketAddress,
144
+ asset: input.asset,
145
+ amount,
146
+ walletAddress: context.walletAddress,
147
+ });
148
+ return instructionsToRequests(instructions, marketAddress);
149
+ }
150
+ // -------------------------------------------------------------------------
151
+ // Borrow: HF check + build borrow instruction
152
+ // -------------------------------------------------------------------------
153
+ async resolveBorrow(params, context) {
154
+ const input = KaminoBorrowInputSchema.parse(params);
155
+ const marketAddress = resolveMarketAddress(input.market ?? this.config.market);
156
+ const amount = parseTokenAmount(input.amount);
157
+ // HF simulation: approximate USD value using raw amount
158
+ // (conservative estimate -- proper conversion requires price oracle)
159
+ const approximateUsdValue = Number(amount) / 1e6;
160
+ await this.checkBorrowSafety(context.walletAddress, approximateUsdValue, marketAddress);
161
+ const instructions = await this.sdkWrapper.buildBorrowInstruction({
162
+ market: marketAddress,
163
+ asset: input.asset,
164
+ amount,
165
+ walletAddress: context.walletAddress,
166
+ });
167
+ return instructionsToRequests(instructions, marketAddress);
168
+ }
169
+ // -------------------------------------------------------------------------
170
+ // Repay: supports 'max' for full repayment
171
+ // -------------------------------------------------------------------------
172
+ async resolveRepay(params, context) {
173
+ const input = KaminoRepayInputSchema.parse(params);
174
+ const marketAddress = resolveMarketAddress(input.market ?? this.config.market);
175
+ const amount = input.amount === 'max' ? 'max' : parseTokenAmount(input.amount);
176
+ const instructions = await this.sdkWrapper.buildRepayInstruction({
177
+ market: marketAddress,
178
+ asset: input.asset,
179
+ amount,
180
+ walletAddress: context.walletAddress,
181
+ });
182
+ return instructionsToRequests(instructions, marketAddress);
183
+ }
184
+ // -------------------------------------------------------------------------
185
+ // Withdraw: supports 'max', HF check for non-max
186
+ // -------------------------------------------------------------------------
187
+ async resolveWithdraw(params, context) {
188
+ const input = KaminoWithdrawInputSchema.parse(params);
189
+ const marketAddress = resolveMarketAddress(input.market ?? this.config.market);
190
+ const amount = input.amount === 'max' ? 'max' : parseTokenAmount(input.amount);
191
+ // Skip HF simulation for 'max' withdrawals (closing position entirely)
192
+ if (amount !== 'max') {
193
+ const approximateUsdValue = Number(amount) / 1e6;
194
+ await this.checkWithdrawSafety(context.walletAddress, approximateUsdValue, marketAddress);
195
+ }
196
+ const instructions = await this.sdkWrapper.buildWithdrawInstruction({
197
+ market: marketAddress,
198
+ asset: input.asset,
199
+ amount,
200
+ walletAddress: context.walletAddress,
201
+ });
202
+ return instructionsToRequests(instructions, marketAddress);
203
+ }
204
+ // -------------------------------------------------------------------------
205
+ // HF Safety checks (KPROV-08)
206
+ // -------------------------------------------------------------------------
207
+ async checkBorrowSafety(walletAddress, amountUsd, market) {
208
+ try {
209
+ const obligation = await this.sdkWrapper.getObligation({ market, walletAddress });
210
+ if (!obligation)
211
+ return; // No existing position, skip check
212
+ const totalCollateralUsd = obligation.deposits.reduce((sum, d) => sum + d.marketValueUsd, 0);
213
+ const totalDebtUsd = obligation.borrows.reduce((sum, b) => sum + b.marketValueUsd, 0);
214
+ const result = simulateKaminoHealthFactor({ totalCollateralUsd, totalDebtUsd }, 'borrow', amountUsd, KAMINO_LIQUIDATION_THRESHOLD);
215
+ if (!result.safe) {
216
+ throw new ChainError('CONTRACT_EXECUTION_FAILED', 'solana', {
217
+ message: `Borrow would cause health factor to drop below liquidation threshold (simulated HF: ${result.simulatedHf.toFixed(4)})`,
218
+ });
219
+ }
220
+ }
221
+ catch (err) {
222
+ // Re-throw ChainError, swallow SDK failures (graceful degradation)
223
+ if (err instanceof ChainError)
224
+ throw err;
225
+ // SDK not available or RPC failed -- skip simulation
226
+ }
227
+ }
228
+ async checkWithdrawSafety(walletAddress, amountUsd, market) {
229
+ try {
230
+ const obligation = await this.sdkWrapper.getObligation({ market, walletAddress });
231
+ if (!obligation)
232
+ return;
233
+ const totalCollateralUsd = obligation.deposits.reduce((sum, d) => sum + d.marketValueUsd, 0);
234
+ const totalDebtUsd = obligation.borrows.reduce((sum, b) => sum + b.marketValueUsd, 0);
235
+ const result = simulateKaminoHealthFactor({ totalCollateralUsd, totalDebtUsd }, 'withdraw', amountUsd, KAMINO_LIQUIDATION_THRESHOLD);
236
+ if (!result.safe) {
237
+ throw new ChainError('CONTRACT_EXECUTION_FAILED', 'solana', {
238
+ message: `Withdrawal would cause health factor to drop below liquidation threshold (simulated HF: ${result.simulatedHf.toFixed(4)})`,
239
+ });
240
+ }
241
+ }
242
+ catch (err) {
243
+ if (err instanceof ChainError)
244
+ throw err;
245
+ }
246
+ }
247
+ // -------------------------------------------------------------------------
248
+ // ILendingProvider query methods
249
+ // -------------------------------------------------------------------------
250
+ async getPosition(_walletId, context) {
251
+ try {
252
+ const marketAddress = resolveMarketAddress(this.config.market);
253
+ const obligation = await this.sdkWrapper.getObligation({
254
+ market: marketAddress,
255
+ walletAddress: context.walletAddress,
256
+ });
257
+ if (!obligation)
258
+ return [];
259
+ const positions = [];
260
+ for (const deposit of obligation.deposits) {
261
+ positions.push({
262
+ asset: deposit.mintAddress,
263
+ positionType: 'SUPPLY',
264
+ amount: deposit.amount.toString(),
265
+ amountUsd: deposit.marketValueUsd,
266
+ apy: null,
267
+ });
268
+ }
269
+ for (const borrow of obligation.borrows) {
270
+ positions.push({
271
+ asset: borrow.mintAddress,
272
+ positionType: 'BORROW',
273
+ amount: borrow.amount.toString(),
274
+ amountUsd: borrow.marketValueUsd,
275
+ apy: null,
276
+ });
277
+ }
278
+ return positions;
279
+ }
280
+ catch {
281
+ return [];
282
+ }
283
+ }
284
+ async getHealthFactor(_walletId, context) {
285
+ try {
286
+ const marketAddress = resolveMarketAddress(this.config.market);
287
+ const obligation = await this.sdkWrapper.getObligation({
288
+ market: marketAddress,
289
+ walletAddress: context.walletAddress,
290
+ });
291
+ if (!obligation) {
292
+ return { factor: Infinity, totalCollateralUsd: 0, totalDebtUsd: 0, currentLtv: 0, status: 'safe' };
293
+ }
294
+ const totalCollateralUsd = obligation.deposits.reduce((sum, d) => sum + d.marketValueUsd, 0);
295
+ const totalDebtUsd = obligation.borrows.reduce((sum, b) => sum + b.marketValueUsd, 0);
296
+ const factor = calculateHealthFactor(totalCollateralUsd, totalDebtUsd);
297
+ const currentLtv = obligation.loanToValue;
298
+ const status = hfToStatus(factor);
299
+ return { factor, totalCollateralUsd, totalDebtUsd, currentLtv, status };
300
+ }
301
+ catch {
302
+ return { factor: Infinity, totalCollateralUsd: 0, totalDebtUsd: 0, currentLtv: 0, status: 'safe' };
303
+ }
304
+ }
305
+ async getMarkets(chain, _network) {
306
+ if (chain !== 'solana')
307
+ return [];
308
+ try {
309
+ const marketAddress = resolveMarketAddress(this.config.market);
310
+ const reserves = await this.sdkWrapper.getReserves(marketAddress);
311
+ return reserves.map((r) => ({
312
+ asset: r.mintAddress,
313
+ symbol: r.symbol,
314
+ supplyApy: r.supplyApy,
315
+ borrowApy: r.borrowApy,
316
+ ltv: r.ltvPct / 100,
317
+ availableLiquidity: r.availableLiquidity,
318
+ }));
319
+ }
320
+ catch {
321
+ return [];
322
+ }
323
+ }
324
+ // -------------------------------------------------------------------------
325
+ // IPositionProvider methods
326
+ // -------------------------------------------------------------------------
327
+ async getPositions(walletId) {
328
+ try {
329
+ const marketAddress = resolveMarketAddress(this.config.market);
330
+ const obligation = await this.sdkWrapper.getObligation({
331
+ market: marketAddress,
332
+ walletAddress: walletId,
333
+ });
334
+ if (!obligation)
335
+ return [];
336
+ const now = Math.floor(Date.now() / 1000);
337
+ const updates = [];
338
+ for (const deposit of obligation.deposits) {
339
+ updates.push({
340
+ walletId,
341
+ category: 'LENDING',
342
+ provider: 'kamino',
343
+ chain: 'solana',
344
+ network: 'mainnet',
345
+ assetId: deposit.mintAddress,
346
+ amount: deposit.amount.toString(),
347
+ amountUsd: deposit.marketValueUsd,
348
+ metadata: { positionType: 'SUPPLY', market: marketAddress },
349
+ status: 'ACTIVE',
350
+ openedAt: now,
351
+ });
352
+ }
353
+ for (const borrow of obligation.borrows) {
354
+ updates.push({
355
+ walletId,
356
+ category: 'LENDING',
357
+ provider: 'kamino',
358
+ chain: 'solana',
359
+ network: 'mainnet',
360
+ assetId: borrow.mintAddress,
361
+ amount: borrow.amount.toString(),
362
+ amountUsd: borrow.marketValueUsd,
363
+ metadata: { positionType: 'BORROW', market: marketAddress },
364
+ status: 'ACTIVE',
365
+ openedAt: now,
366
+ });
367
+ }
368
+ return updates;
369
+ }
370
+ catch {
371
+ return [];
372
+ }
373
+ }
374
+ getProviderName() {
375
+ return 'kamino';
376
+ }
377
+ getSupportedCategories() {
378
+ return ['LENDING'];
379
+ }
380
+ }
381
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/kamino/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ /** Kamino instruction result (converted from TransactionInstruction). */
2
+ export interface KaminoInstruction {
3
+ programId: string;
4
+ /** Base64-encoded instruction data. */
5
+ instructionData: string;
6
+ accounts: Array<{
7
+ pubkey: string;
8
+ isSigner: boolean;
9
+ isWritable: boolean;
10
+ }>;
11
+ }
12
+ export interface KaminoObligation {
13
+ deposits: Array<{
14
+ mintAddress: string;
15
+ amount: bigint;
16
+ marketValueUsd: number;
17
+ }>;
18
+ borrows: Array<{
19
+ mintAddress: string;
20
+ amount: bigint;
21
+ marketValueUsd: number;
22
+ }>;
23
+ /** Pre-calculated by SDK from obligation account data. */
24
+ loanToValue: number;
25
+ }
26
+ export interface KaminoReserve {
27
+ mintAddress: string;
28
+ symbol: string;
29
+ supplyApy: number;
30
+ borrowApy: number;
31
+ ltvPct: number;
32
+ availableLiquidity: string;
33
+ }
34
+ /** Abstraction over @kamino-finance/klend-sdk for testability. */
35
+ export interface IKaminoSdkWrapper {
36
+ buildSupplyInstruction(params: {
37
+ market: string;
38
+ asset: string;
39
+ amount: bigint;
40
+ walletAddress: string;
41
+ }): Promise<KaminoInstruction[]>;
42
+ buildBorrowInstruction(params: {
43
+ market: string;
44
+ asset: string;
45
+ amount: bigint;
46
+ walletAddress: string;
47
+ }): Promise<KaminoInstruction[]>;
48
+ buildRepayInstruction(params: {
49
+ market: string;
50
+ asset: string;
51
+ amount: bigint | 'max';
52
+ walletAddress: string;
53
+ }): Promise<KaminoInstruction[]>;
54
+ buildWithdrawInstruction(params: {
55
+ market: string;
56
+ asset: string;
57
+ amount: bigint | 'max';
58
+ walletAddress: string;
59
+ }): Promise<KaminoInstruction[]>;
60
+ /** Get obligation (position) data for a wallet. */
61
+ getObligation(params: {
62
+ market: string;
63
+ walletAddress: string;
64
+ }): Promise<KaminoObligation | null>;
65
+ /** Get reserve data for market data queries. */
66
+ getReserves(market: string): Promise<KaminoReserve[]>;
67
+ }
68
+ /**
69
+ * MockKaminoSdkWrapper: deterministic mock data for testing.
70
+ *
71
+ * Builds structurally valid KaminoInstruction arrays with recognizable
72
+ * mock instruction data (action index prefix + amount as LE u64).
73
+ */
74
+ export declare class MockKaminoSdkWrapper implements IKaminoSdkWrapper {
75
+ buildSupplyInstruction(params: {
76
+ market: string;
77
+ asset: string;
78
+ amount: bigint;
79
+ walletAddress: string;
80
+ }): Promise<KaminoInstruction[]>;
81
+ buildBorrowInstruction(params: {
82
+ market: string;
83
+ asset: string;
84
+ amount: bigint;
85
+ walletAddress: string;
86
+ }): Promise<KaminoInstruction[]>;
87
+ buildRepayInstruction(params: {
88
+ market: string;
89
+ asset: string;
90
+ amount: bigint | 'max';
91
+ walletAddress: string;
92
+ }): Promise<KaminoInstruction[]>;
93
+ buildWithdrawInstruction(params: {
94
+ market: string;
95
+ asset: string;
96
+ amount: bigint | 'max';
97
+ walletAddress: string;
98
+ }): Promise<KaminoInstruction[]>;
99
+ getObligation(_params: {
100
+ market: string;
101
+ walletAddress: string;
102
+ }): Promise<KaminoObligation | null>;
103
+ getReserves(_market: string): Promise<KaminoReserve[]>;
104
+ }
105
+ /**
106
+ * KaminoSdkWrapper: wraps @kamino-finance/klend-sdk.
107
+ *
108
+ * Lazily imports the SDK at first use. If the SDK is not installed,
109
+ * all methods throw ChainError('PROVIDER_NOT_CONFIGURED', 'solana').
110
+ *
111
+ * The real implementation converts TransactionInstruction results
112
+ * to KaminoInstruction format (programId + base64 + accounts).
113
+ */
114
+ export declare class KaminoSdkWrapper implements IKaminoSdkWrapper {
115
+ /** RPC URL for future SDK connection. Stored for when klend-sdk is installed. */
116
+ readonly rpcUrl: string;
117
+ constructor(rpcUrl: string);
118
+ private throwNotConfigured;
119
+ buildSupplyInstruction(_params: {
120
+ market: string;
121
+ asset: string;
122
+ amount: bigint;
123
+ walletAddress: string;
124
+ }): Promise<KaminoInstruction[]>;
125
+ buildBorrowInstruction(_params: {
126
+ market: string;
127
+ asset: string;
128
+ amount: bigint;
129
+ walletAddress: string;
130
+ }): Promise<KaminoInstruction[]>;
131
+ buildRepayInstruction(_params: {
132
+ market: string;
133
+ asset: string;
134
+ amount: bigint | 'max';
135
+ walletAddress: string;
136
+ }): Promise<KaminoInstruction[]>;
137
+ buildWithdrawInstruction(_params: {
138
+ market: string;
139
+ asset: string;
140
+ amount: bigint | 'max';
141
+ walletAddress: string;
142
+ }): Promise<KaminoInstruction[]>;
143
+ getObligation(_params: {
144
+ market: string;
145
+ walletAddress: string;
146
+ }): Promise<KaminoObligation | null>;
147
+ getReserves(_market: string): Promise<KaminoReserve[]>;
148
+ }
149
+ //# sourceMappingURL=kamino-sdk-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kamino-sdk-wrapper.d.ts","sourceRoot":"","sources":["../../../src/providers/kamino/kamino-sdk-wrapper.ts"],"names":[],"mappings":"AAgBA,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC7E;AAMD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,KAAK,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC,CAAC;IACH,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAMD,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,sBAAsB,CAAC,MAAM,EAAE;QAC7B,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEjC,sBAAsB,CAAC,MAAM,EAAE;QAC7B,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEjC,qBAAqB,CAAC,MAAM,EAAE;QAC5B,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEjC,wBAAwB,CAAC,MAAM,EAAE;QAC/B,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEjC,mDAAmD;IACnD,aAAa,CAAC,MAAM,EAAE;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAErC,gDAAgD;IAChD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CACvD;AAyBD;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,iBAAiB;IACtD,sBAAsB,CAAC,MAAM,EAAE;QACnC,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAc1B,sBAAsB,CAAC,MAAM,EAAE;QACnC,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAc1B,qBAAqB,CAAC,MAAM,EAAE;QAClC,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAe1B,wBAAwB,CAAC,MAAM,EAAE;QACrC,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAe1B,aAAa,CAAC,OAAO,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAoB9B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CA4B7D;AAMD;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,MAAM,EAAE,MAAM;YAIZ,kBAAkB;IAQ1B,sBAAsB,CAAC,OAAO,EAAE;QACpC,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI1B,sBAAsB,CAAC,OAAO,EAAE;QACpC,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI1B,qBAAqB,CAAC,OAAO,EAAE;QACnC,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI1B,wBAAwB,CAAC,OAAO,EAAE;QACtC,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI1B,aAAa,CAAC,OAAO,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAI9B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAG7D"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Kamino K-Lend SDK wrapper abstraction.
3
+ *
4
+ * IKaminoSdkWrapper provides a testable interface for @kamino-finance/klend-sdk
5
+ * instruction building. MockKaminoSdkWrapper provides deterministic test data.
6
+ * KaminoSdkWrapper wraps the real SDK with lazy imports and graceful fallback.
7
+ *
8
+ * Instruction results (KaminoInstruction) use the same format as Jito's
9
+ * ContractCallRequest: programId + base64 instructionData + accounts array.
10
+ */
11
+ import { KAMINO_PROGRAM_ID } from './config.js';
12
+ // ---------------------------------------------------------------------------
13
+ // Mock instruction data encoding
14
+ // ---------------------------------------------------------------------------
15
+ /**
16
+ * Encode mock instruction data: 1-byte action index + 8-byte LE u64 amount.
17
+ * NOT real Kamino CPI layout -- only for unit testing.
18
+ */
19
+ function encodeMockInstructionData(actionIndex, amount) {
20
+ const buffer = new Uint8Array(9);
21
+ buffer[0] = actionIndex;
22
+ const view = new DataView(buffer.buffer);
23
+ view.setBigUint64(1, amount, true);
24
+ return Buffer.from(buffer).toString('base64');
25
+ }
26
+ /** u64 max value for 'max' amounts. */
27
+ const U64_MAX = BigInt('0xFFFFFFFFFFFFFFFF');
28
+ // ---------------------------------------------------------------------------
29
+ // Mock SDK wrapper (for unit testing)
30
+ // ---------------------------------------------------------------------------
31
+ /**
32
+ * MockKaminoSdkWrapper: deterministic mock data for testing.
33
+ *
34
+ * Builds structurally valid KaminoInstruction arrays with recognizable
35
+ * mock instruction data (action index prefix + amount as LE u64).
36
+ */
37
+ export class MockKaminoSdkWrapper {
38
+ async buildSupplyInstruction(params) {
39
+ return [
40
+ {
41
+ programId: KAMINO_PROGRAM_ID,
42
+ instructionData: encodeMockInstructionData(0, params.amount),
43
+ accounts: [
44
+ { pubkey: params.walletAddress, isSigner: true, isWritable: true },
45
+ { pubkey: params.market, isSigner: false, isWritable: true },
46
+ { pubkey: params.asset, isSigner: false, isWritable: true },
47
+ ],
48
+ },
49
+ ];
50
+ }
51
+ async buildBorrowInstruction(params) {
52
+ return [
53
+ {
54
+ programId: KAMINO_PROGRAM_ID,
55
+ instructionData: encodeMockInstructionData(1, params.amount),
56
+ accounts: [
57
+ { pubkey: params.walletAddress, isSigner: true, isWritable: true },
58
+ { pubkey: params.market, isSigner: false, isWritable: true },
59
+ { pubkey: params.asset, isSigner: false, isWritable: false },
60
+ ],
61
+ },
62
+ ];
63
+ }
64
+ async buildRepayInstruction(params) {
65
+ const resolvedAmount = params.amount === 'max' ? U64_MAX : params.amount;
66
+ return [
67
+ {
68
+ programId: KAMINO_PROGRAM_ID,
69
+ instructionData: encodeMockInstructionData(2, resolvedAmount),
70
+ accounts: [
71
+ { pubkey: params.walletAddress, isSigner: true, isWritable: true },
72
+ { pubkey: params.market, isSigner: false, isWritable: true },
73
+ { pubkey: params.asset, isSigner: false, isWritable: true },
74
+ ],
75
+ },
76
+ ];
77
+ }
78
+ async buildWithdrawInstruction(params) {
79
+ const resolvedAmount = params.amount === 'max' ? U64_MAX : params.amount;
80
+ return [
81
+ {
82
+ programId: KAMINO_PROGRAM_ID,
83
+ instructionData: encodeMockInstructionData(3, resolvedAmount),
84
+ accounts: [
85
+ { pubkey: params.walletAddress, isSigner: true, isWritable: true },
86
+ { pubkey: params.market, isSigner: false, isWritable: true },
87
+ { pubkey: params.asset, isSigner: false, isWritable: true },
88
+ ],
89
+ },
90
+ ];
91
+ }
92
+ async getObligation(_params) {
93
+ return {
94
+ deposits: [
95
+ {
96
+ mintAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
97
+ amount: 10000000000n, // 10,000 USDC (6 decimals)
98
+ marketValueUsd: 10_000,
99
+ },
100
+ ],
101
+ borrows: [
102
+ {
103
+ mintAddress: 'So11111111111111111111111111111111111111112',
104
+ amount: 50000000000n, // 50 SOL (9 decimals)
105
+ marketValueUsd: 5_000,
106
+ },
107
+ ],
108
+ loanToValue: 0.5,
109
+ };
110
+ }
111
+ async getReserves(_market) {
112
+ return [
113
+ {
114
+ mintAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
115
+ symbol: 'USDC',
116
+ supplyApy: 0.045,
117
+ borrowApy: 0.062,
118
+ ltvPct: 85,
119
+ availableLiquidity: '5000000000000',
120
+ },
121
+ {
122
+ mintAddress: 'So11111111111111111111111111111111111111112',
123
+ symbol: 'SOL',
124
+ supplyApy: 0.032,
125
+ borrowApy: 0.055,
126
+ ltvPct: 75,
127
+ availableLiquidity: '200000000000000',
128
+ },
129
+ {
130
+ mintAddress: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',
131
+ symbol: 'USDT',
132
+ supplyApy: 0.042,
133
+ borrowApy: 0.059,
134
+ ltvPct: 80,
135
+ availableLiquidity: '3000000000000',
136
+ },
137
+ ];
138
+ }
139
+ }
140
+ // ---------------------------------------------------------------------------
141
+ // Real SDK wrapper (lazy import, graceful fallback)
142
+ // ---------------------------------------------------------------------------
143
+ /**
144
+ * KaminoSdkWrapper: wraps @kamino-finance/klend-sdk.
145
+ *
146
+ * Lazily imports the SDK at first use. If the SDK is not installed,
147
+ * all methods throw ChainError('PROVIDER_NOT_CONFIGURED', 'solana').
148
+ *
149
+ * The real implementation converts TransactionInstruction results
150
+ * to KaminoInstruction format (programId + base64 + accounts).
151
+ */
152
+ export class KaminoSdkWrapper {
153
+ /** RPC URL for future SDK connection. Stored for when klend-sdk is installed. */
154
+ rpcUrl;
155
+ constructor(rpcUrl) {
156
+ this.rpcUrl = rpcUrl;
157
+ }
158
+ async throwNotConfigured() {
159
+ const { ChainError } = await import('@waiaas/core');
160
+ throw new ChainError('INVALID_INSTRUCTION', 'solana', {
161
+ message: 'Kamino K-Lend SDK not available. Install @kamino-finance/klend-sdk and @solana/web3.js as dependencies.',
162
+ });
163
+ }
164
+ async buildSupplyInstruction(_params) {
165
+ return this.throwNotConfigured();
166
+ }
167
+ async buildBorrowInstruction(_params) {
168
+ return this.throwNotConfigured();
169
+ }
170
+ async buildRepayInstruction(_params) {
171
+ return this.throwNotConfigured();
172
+ }
173
+ async buildWithdrawInstruction(_params) {
174
+ return this.throwNotConfigured();
175
+ }
176
+ async getObligation(_params) {
177
+ return this.throwNotConfigured();
178
+ }
179
+ async getReserves(_market) {
180
+ return this.throwNotConfigured();
181
+ }
182
+ }
183
+ //# sourceMappingURL=kamino-sdk-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kamino-sdk-wrapper.js","sourceRoot":"","sources":["../../../src/providers/kamino/kamino-sdk-wrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Zod SSoT input schemas for Kamino K-Lend lending actions.
3
+ *
4
+ * Four schemas for the 4 lending actions: supply, borrow, repay, withdraw.
5
+ * Amount is always a human-readable string (e.g., "100.5").
6
+ * Repay and withdraw accept 'max' for full repayment/withdrawal.
7
+ */
8
+ import { z } from 'zod';
9
+ export declare const KaminoSupplyInputSchema: z.ZodObject<{
10
+ /** SPL token mint address to supply as collateral. */
11
+ asset: z.ZodString;
12
+ /** Amount to supply (human-readable, e.g., "100.5"). */
13
+ amount: z.ZodString;
14
+ /** Market pubkey (defaults to config market). */
15
+ market: z.ZodOptional<z.ZodString>;
16
+ }, "strip", z.ZodTypeAny, {
17
+ amount: string;
18
+ asset: string;
19
+ market?: string | undefined;
20
+ }, {
21
+ amount: string;
22
+ asset: string;
23
+ market?: string | undefined;
24
+ }>;
25
+ export declare const KaminoBorrowInputSchema: z.ZodObject<{
26
+ /** SPL token mint address to borrow. */
27
+ asset: z.ZodString;
28
+ /** Amount to borrow (human-readable, e.g., "100.5"). */
29
+ amount: z.ZodString;
30
+ /** Market pubkey (defaults to config market). */
31
+ market: z.ZodOptional<z.ZodString>;
32
+ }, "strip", z.ZodTypeAny, {
33
+ amount: string;
34
+ asset: string;
35
+ market?: string | undefined;
36
+ }, {
37
+ amount: string;
38
+ asset: string;
39
+ market?: string | undefined;
40
+ }>;
41
+ export declare const KaminoRepayInputSchema: z.ZodObject<{
42
+ /** SPL token mint address to repay. */
43
+ asset: z.ZodString;
44
+ /** Amount to repay (human-readable, e.g., "100.5") or 'max' for full repayment. */
45
+ amount: z.ZodUnion<[z.ZodString, z.ZodLiteral<"max">]>;
46
+ /** Market pubkey (defaults to config market). */
47
+ market: z.ZodOptional<z.ZodString>;
48
+ }, "strip", z.ZodTypeAny, {
49
+ amount: string;
50
+ asset: string;
51
+ market?: string | undefined;
52
+ }, {
53
+ amount: string;
54
+ asset: string;
55
+ market?: string | undefined;
56
+ }>;
57
+ export declare const KaminoWithdrawInputSchema: z.ZodObject<{
58
+ /** SPL token mint address to withdraw. */
59
+ asset: z.ZodString;
60
+ /** Amount to withdraw (human-readable, e.g., "100.5") or 'max' for full withdrawal. */
61
+ amount: z.ZodUnion<[z.ZodString, z.ZodLiteral<"max">]>;
62
+ /** Market pubkey (defaults to config market). */
63
+ market: z.ZodOptional<z.ZodString>;
64
+ }, "strip", z.ZodTypeAny, {
65
+ amount: string;
66
+ asset: string;
67
+ market?: string | undefined;
68
+ }, {
69
+ amount: string;
70
+ asset: string;
71
+ market?: string | undefined;
72
+ }>;
73
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/providers/kamino/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,uBAAuB;IAClC,sDAAsD;;IAEtD,wDAAwD;;IAExD,iDAAiD;;;;;;;;;;EAEjD,CAAC;AAMH,eAAO,MAAM,uBAAuB;IAClC,wCAAwC;;IAExC,wDAAwD;;IAExD,iDAAiD;;;;;;;;;;EAEjD,CAAC;AAMH,eAAO,MAAM,sBAAsB;IACjC,uCAAuC;;IAEvC,mFAAmF;;IAEnF,iDAAiD;;;;;;;;;;EAEjD,CAAC;AAMH,eAAO,MAAM,yBAAyB;IACpC,0CAA0C;;IAE1C,uFAAuF;;IAEvF,iDAAiD;;;;;;;;;;EAEjD,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Zod SSoT input schemas for Kamino K-Lend lending actions.
3
+ *
4
+ * Four schemas for the 4 lending actions: supply, borrow, repay, withdraw.
5
+ * Amount is always a human-readable string (e.g., "100.5").
6
+ * Repay and withdraw accept 'max' for full repayment/withdrawal.
7
+ */
8
+ import { z } from 'zod';
9
+ // ---------------------------------------------------------------------------
10
+ // Supply input schema
11
+ // ---------------------------------------------------------------------------
12
+ export const KaminoSupplyInputSchema = z.object({
13
+ /** SPL token mint address to supply as collateral. */
14
+ asset: z.string().min(1, 'token mint address is required'),
15
+ /** Amount to supply (human-readable, e.g., "100.5"). */
16
+ amount: z.string().min(1, 'amount is required (e.g. "100.5")'),
17
+ /** Market pubkey (defaults to config market). */
18
+ market: z.string().optional(),
19
+ });
20
+ // ---------------------------------------------------------------------------
21
+ // Borrow input schema
22
+ // ---------------------------------------------------------------------------
23
+ export const KaminoBorrowInputSchema = z.object({
24
+ /** SPL token mint address to borrow. */
25
+ asset: z.string().min(1, 'token mint address is required'),
26
+ /** Amount to borrow (human-readable, e.g., "100.5"). */
27
+ amount: z.string().min(1, 'amount is required (e.g. "100.5")'),
28
+ /** Market pubkey (defaults to config market). */
29
+ market: z.string().optional(),
30
+ });
31
+ // ---------------------------------------------------------------------------
32
+ // Repay input schema (supports 'max' for full repayment)
33
+ // ---------------------------------------------------------------------------
34
+ export const KaminoRepayInputSchema = z.object({
35
+ /** SPL token mint address to repay. */
36
+ asset: z.string().min(1, 'token mint address is required'),
37
+ /** Amount to repay (human-readable, e.g., "100.5") or 'max' for full repayment. */
38
+ amount: z.string().min(1, 'amount is required').or(z.literal('max')),
39
+ /** Market pubkey (defaults to config market). */
40
+ market: z.string().optional(),
41
+ });
42
+ // ---------------------------------------------------------------------------
43
+ // Withdraw input schema (supports 'max' for full withdrawal)
44
+ // ---------------------------------------------------------------------------
45
+ export const KaminoWithdrawInputSchema = z.object({
46
+ /** SPL token mint address to withdraw. */
47
+ asset: z.string().min(1, 'token mint address is required'),
48
+ /** Amount to withdraw (human-readable, e.g., "100.5") or 'max' for full withdrawal. */
49
+ amount: z.string().min(1, 'amount is required').or(z.literal('max')),
50
+ /** Market pubkey (defaults to config market). */
51
+ market: z.string().optional(),
52
+ });
53
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/providers/kamino/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,sDAAsD;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC1D,wDAAwD;IACxD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,mCAAmC,CAAC;IAC9D,iDAAiD;IACjD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,wCAAwC;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC1D,wDAAwD;IACxD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,mCAAmC,CAAC;IAC9D,iDAAiD;IACjD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,8EAA8E;AAC9E,yDAAyD;AACzD,8EAA8E;AAE9E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,uCAAuC;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC1D,mFAAmF;IACnF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpE,iDAAiD;IACjD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,8EAA8E;AAC9E,6DAA6D;AAC7D,8EAA8E;AAE9E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,0CAA0C;IAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC1D,uFAAuF;IACvF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpE,iDAAiD;IACjD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@waiaas/actions",
3
- "version": "2.9.0-rc",
3
+ "version": "2.9.0-rc.2",
4
4
  "description": "WAIaaS built-in DeFi Action Provider implementations",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -29,7 +29,7 @@
29
29
  ],
30
30
  "dependencies": {
31
31
  "zod": "^3.24.0",
32
- "@waiaas/core": "2.9.0-rc"
32
+ "@waiaas/core": "2.9.0-rc.2"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/node": "^25.2.3",