@glamsystems/glam-cli 1.0.12-alpha.1 → 1.0.12-alpha.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.
Files changed (2) hide show
  1. package/main.js +448 -179
  2. package/package.json +2 -2
package/main.js CHANGED
@@ -11,18 +11,18 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
11
11
  const tslib_1 = __webpack_require__(2);
12
12
  tslib_1.__exportStar(__webpack_require__(3), exports);
13
13
  tslib_1.__exportStar(__webpack_require__(24), exports);
14
- tslib_1.__exportStar(__webpack_require__(58), exports);
15
14
  tslib_1.__exportStar(__webpack_require__(59), exports);
15
+ tslib_1.__exportStar(__webpack_require__(60), exports);
16
16
  tslib_1.__exportStar(__webpack_require__(67), exports);
17
17
  tslib_1.__exportStar(__webpack_require__(62), exports);
18
18
  tslib_1.__exportStar(__webpack_require__(86), exports);
19
19
  tslib_1.__exportStar(__webpack_require__(90), exports);
20
20
  tslib_1.__exportStar(__webpack_require__(81), exports);
21
21
  tslib_1.__exportStar(__webpack_require__(29), exports);
22
- tslib_1.__exportStar(__webpack_require__(60), exports);
22
+ tslib_1.__exportStar(__webpack_require__(61), exports);
23
23
  tslib_1.__exportStar(__webpack_require__(68), exports);
24
24
  tslib_1.__exportStar(__webpack_require__(34), exports);
25
- tslib_1.__exportStar(__webpack_require__(61), exports);
25
+ tslib_1.__exportStar(__webpack_require__(48), exports);
26
26
  tslib_1.__exportStar(__webpack_require__(32), exports);
27
27
 
28
28
 
@@ -304,7 +304,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"address":"gstgdpMFXKobURsFtStdaMLRSu
304
304
  /***/ ((module) => {
305
305
 
306
306
  "use strict";
307
- module.exports = /*#__PURE__*/JSON.parse('{"address":"gstgKa2Gq9wf5hM3DFWx1TvUrGYzDYszyFGq3XBY9Uq","metadata":{"name":"ext_kamino","version":"1.0.0","spec":"0.1.0","description":"Kamino integration for GLAM Protocol"},"instructions":[{"name":"farms_harvest_reward","discriminator":[244,248,124,210,194,52,75,152],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"user_state","writable":true},{"name":"farm_state","writable":true},{"name":"global_config"},{"name":"reward_mint"},{"name":"user_reward_ata","writable":true},{"name":"rewards_vault","writable":true},{"name":"rewards_treasury_vault","writable":true},{"name":"farm_vaults_authority"},{"name":"scope_prices","optional":true},{"name":"token_program"}],"args":[{"name":"reward_index","type":"u64"}]},{"name":"farms_initialize_user","discriminator":[188,148,82,37,44,46,162,34],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"user_state","writable":true},{"name":"farm_state","writable":true},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"}],"args":[]},{"name":"farms_stake","discriminator":[224,105,208,179,98,200,213,238],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"user_state","writable":true},{"name":"farm_state","writable":true},{"name":"farm_vault","writable":true},{"name":"user_ata","writable":true},{"name":"token_mint"},{"name":"scope_prices","optional":true},{"name":"token_program"}],"args":[{"name":"amount","type":"u64"}]},{"name":"farms_unstake","discriminator":[180,131,50,144,26,242,175,242],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"user_state","writable":true},{"name":"farm_state","writable":true},{"name":"scope_prices","optional":true}],"args":[{"name":"amount","type":"u128"}]},{"name":"farms_withdraw_unstaked_deposits","discriminator":[107,97,50,15,211,245,52,96],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"user_state","writable":true},{"name":"farm_state","writable":true},{"name":"user_ata","writable":true},{"name":"farm_vault","writable":true},{"name":"farm_vaults_authority"},{"name":"token_program"}],"args":[]},{"name":"lending_borrow_obligation_liquidity_v2","discriminator":[149,226,84,157,124,178,35,122],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"obligation","writable":true},{"name":"lending_market"},{"name":"lending_market_authority"},{"name":"borrow_reserve","writable":true},{"name":"borrow_reserve_liquidity_mint"},{"name":"reserve_source_liquidity","writable":true},{"name":"borrow_reserve_liquidity_fee_receiver","writable":true},{"name":"user_destination_liquidity","writable":true},{"name":"referrer_token_state","writable":true,"optional":true},{"name":"token_program"},{"name":"instruction_sysvar_account"},{"name":"obligation_farm_user_state","writable":true,"optional":true},{"name":"reserve_farm_state","writable":true,"optional":true},{"name":"farms_program"}],"args":[{"name":"liquidity_amount","type":"u64"}]},{"name":"lending_deposit_reserve_liquidity_and_obligation_collateral_v2","discriminator":[33,146,50,121,127,94,92,192],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"obligation","writable":true},{"name":"lending_market"},{"name":"lending_market_authority"},{"name":"reserve","writable":true},{"name":"reserve_liquidity_mint"},{"name":"reserve_liquidity_supply","writable":true},{"name":"reserve_collateral_mint","writable":true},{"name":"reserve_destination_deposit_collateral","writable":true},{"name":"user_source_liquidity","writable":true},{"name":"placeholder_user_destination_collateral","optional":true},{"name":"collateral_token_program"},{"name":"liquidity_token_program"},{"name":"instruction_sysvar_account"},{"name":"obligation_farm_user_state","writable":true,"optional":true},{"name":"reserve_farm_state","writable":true,"optional":true},{"name":"farms_program"}],"args":[{"name":"liquidity_amount","type":"u64"}]},{"name":"lending_init_obligation","discriminator":[188,161,62,142,106,232,77,135],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"fee_payer","writable":true,"signer":true},{"name":"obligation","writable":true},{"name":"lending_market"},{"name":"seed1_account"},{"name":"seed2_account"},{"name":"owner_user_metadata"},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"args","type":{"defined":{"name":"InitObligationArgs"}}}]},{"name":"lending_init_obligation_farms_for_reserve","discriminator":[3,234,110,39,12,147,175,185],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"payer","writable":true,"signer":true},{"name":"obligation","writable":true},{"name":"lending_market_authority"},{"name":"reserve","writable":true},{"name":"reserve_farm_state","writable":true},{"name":"obligation_farm","writable":true},{"name":"lending_market"},{"name":"farms_program"},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"mode","type":"u8"}]},{"name":"lending_init_user_metadata","discriminator":[68,236,138,146,124,228,247,241],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"fee_payer","writable":true,"signer":true},{"name":"user_metadata","writable":true},{"name":"referrer_user_metadata","optional":true},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"user_lookup_table","type":"pubkey"}]},{"name":"lending_repay_obligation_liquidity_v2","discriminator":[79,34,126,170,174,156,174,29],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"obligation","writable":true},{"name":"lending_market"},{"name":"repay_reserve","writable":true},{"name":"reserve_liquidity_mint"},{"name":"reserve_destination_liquidity","writable":true},{"name":"user_source_liquidity","writable":true},{"name":"token_program"},{"name":"instruction_sysvar_account"},{"name":"obligation_farm_user_state","writable":true,"optional":true},{"name":"reserve_farm_state","writable":true,"optional":true},{"name":"lending_market_authority"},{"name":"farms_program"}],"args":[{"name":"liquidity_amount","type":"u64"}]},{"name":"lending_withdraw_obligation_collateral_and_redeem_reserve_collateral_v2","discriminator":[217,223,173,35,64,225,161,222],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"obligation","writable":true},{"name":"lending_market"},{"name":"lending_market_authority"},{"name":"withdraw_reserve","writable":true},{"name":"reserve_liquidity_mint"},{"name":"reserve_source_collateral","writable":true},{"name":"reserve_collateral_mint","writable":true},{"name":"reserve_liquidity_supply","writable":true},{"name":"user_destination_liquidity","writable":true},{"name":"placeholder_user_destination_collateral","optional":true},{"name":"collateral_token_program"},{"name":"liquidity_token_program"},{"name":"instruction_sysvar_account"},{"name":"obligation_farm_user_state","writable":true,"optional":true},{"name":"reserve_farm_state","writable":true,"optional":true},{"name":"farms_program"}],"args":[{"name":"collateral_amount","type":"u64"}]},{"name":"set_lending_policy","discriminator":[226,185,23,3,113,88,118,176],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_signer","writable":true,"signer":true},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"}],"args":[{"name":"policy","type":{"defined":{"name":"LendingPolicy"}}}]},{"name":"set_vaults_policy","discriminator":[211,177,22,152,235,59,192,62],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_signer","writable":true,"signer":true},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"}],"args":[{"name":"policy","type":{"defined":{"name":"VaultsPolicy"}}}]},{"name":"vaults_deposit","discriminator":[124,173,191,223,48,26,84,84],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KvauGMspG5k6rtzrqqn7WNn3oZdyKqLKwK2XWQ8FLjd"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"vault_state","writable":true},{"name":"token_vault","writable":true},{"name":"token_mint"},{"name":"base_vault_authority"},{"name":"shares_mint","writable":true},{"name":"user_token_ata","writable":true},{"name":"user_shares_ata","writable":true},{"name":"klend_program"},{"name":"token_program"},{"name":"shares_token_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"max_amount","type":"u64"}]},{"name":"vaults_withdraw","discriminator":[12,8,236,92,134,144,196,87],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KvauGMspG5k6rtzrqqn7WNn3oZdyKqLKwK2XWQ8FLjd"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"withdraw_from_available_vault_state","writable":true},{"name":"withdraw_from_available_global_config"},{"name":"withdraw_from_available_token_vault","writable":true},{"name":"withdraw_from_available_base_vault_authority"},{"name":"withdraw_from_available_user_token_ata","writable":true},{"name":"withdraw_from_available_token_mint","writable":true},{"name":"withdraw_from_available_user_shares_ata","writable":true},{"name":"withdraw_from_available_shares_mint","writable":true},{"name":"withdraw_from_available_token_program"},{"name":"withdraw_from_available_shares_token_program"},{"name":"withdraw_from_available_klend_program"},{"name":"withdraw_from_available_event_authority"},{"name":"withdraw_from_available_program"},{"name":"withdraw_from_reserve_vault_state","writable":true},{"name":"withdraw_from_reserve_reserve","writable":true},{"name":"withdraw_from_reserve_ctoken_vault","writable":true},{"name":"withdraw_from_reserve_lending_market"},{"name":"withdraw_from_reserve_lending_market_authority"},{"name":"withdraw_from_reserve_reserve_liquidity_supply","writable":true},{"name":"withdraw_from_reserve_reserve_collateral_mint","writable":true},{"name":"withdraw_from_reserve_reserve_collateral_token_program"},{"name":"withdraw_from_reserve_instruction_sysvar_account"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"shares_amount","type":"u64"}]}],"accounts":[{"name":"StateAccount","discriminator":[142,247,54,95,85,133,249,103]}],"types":[{"name":"AccountType","type":{"kind":"enum","variants":[{"name":"Vault"},{"name":"TokenizedVault"},{"name":"Mint"},{"name":"SingleAssetVault"}]}},{"name":"AccruedFees","type":{"kind":"struct","fields":[{"name":"vault_subscription_fee","type":"u128"},{"name":"vault_redemption_fee","type":"u128"},{"name":"manager_subscription_fee","type":"u128"},{"name":"manager_redemption_fee","type":"u128"},{"name":"management_fee","type":"u128"},{"name":"performance_fee","type":"u128"},{"name":"protocol_base_fee","type":"u128"},{"name":"protocol_flow_fee","type":"u128"}]}},{"name":"CreatedModel","type":{"kind":"struct","fields":[{"name":"key","type":{"array":["u8",8]}},{"name":"created_by","type":"pubkey"},{"name":"created_at","type":"i64"}]}},{"name":"DelegateAcl","type":{"kind":"struct","fields":[{"name":"pubkey","type":"pubkey"},{"name":"integration_permissions","type":{"vec":{"defined":{"name":"IntegrationPermissions"}}}},{"name":"expires_at","type":"i64"}]}},{"name":"EngineField","type":{"kind":"struct","fields":[{"name":"name","type":{"defined":{"name":"EngineFieldName"}}},{"name":"value","type":{"defined":{"name":"EngineFieldValue"}}}]}},{"name":"EngineFieldName","type":{"kind":"enum","variants":[{"name":"Owner"},{"name":"PortfolioManagerName"},{"name":"Name"},{"name":"Uri"},{"name":"Assets"},{"name":"DelegateAcls"},{"name":"IntegrationAcls"},{"name":"TimelockDuration"},{"name":"Borrowable"},{"name":"DefaultAccountStateFrozen"},{"name":"PermanentDelegate"},{"name":"NotifyAndSettle"},{"name":"FeeStructure"},{"name":"FeeParams"},{"name":"ClaimableFees"},{"name":"ClaimedFees"},{"name":"OracleConfigs"},{"name":"ReduceOnly"},{"name":"AnyLst"}]}},{"name":"EngineFieldValue","type":{"kind":"enum","variants":[{"name":"Boolean","fields":[{"name":"val","type":"bool"}]},{"name":"U8","fields":[{"name":"val","type":"u8"}]},{"name":"U32","fields":[{"name":"val","type":"u32"}]},{"name":"U64","fields":[{"name":"val","type":"u64"}]},{"name":"String","fields":[{"name":"val","type":"string"}]},{"name":"Pubkey","fields":[{"name":"val","type":"pubkey"}]},{"name":"VecPubkey","fields":[{"name":"val","type":{"vec":"pubkey"}}]},{"name":"VecU8","fields":[{"name":"val","type":"bytes"}]},{"name":"VecU32","fields":[{"name":"val","type":{"vec":"u32"}}]},{"name":"VecDelegateAcl","fields":[{"name":"val","type":{"vec":{"defined":{"name":"DelegateAcl"}}}}]},{"name":"VecIntegrationAcl","fields":[{"name":"val","type":{"vec":{"defined":{"name":"IntegrationAcl"}}}}]},{"name":"FeeStructure","fields":[{"name":"val","type":{"defined":{"name":"FeeStructure"}}}]},{"name":"FeeParams","fields":[{"name":"val","type":{"defined":{"name":"FeeParams"}}}]},{"name":"AccruedFees","fields":[{"name":"val","type":{"defined":{"name":"AccruedFees"}}}]},{"name":"NotifyAndSettle","fields":[{"name":"val","type":{"defined":{"name":"NotifyAndSettle"}}}]},{"name":"OracleConfigs","fields":[{"name":"val","type":{"defined":{"name":"OracleConfigs"}}}]}]}},{"name":"EntryExitFees","type":{"kind":"struct","fields":[{"name":"subscription_fee_bps","type":"u16"},{"name":"redemption_fee_bps","type":"u16"}]}},{"name":"FeeParams","type":{"kind":"struct","fields":[{"name":"year_in_seconds","type":"u32"},{"name":"pa_high_water_mark","type":"i128"},{"name":"pa_last_nav","type":"i128"},{"name":"last_aum","type":"i128"},{"name":"last_performance_fee_crystallized","type":"i64"},{"name":"last_management_fee_crystallized","type":"i64"},{"name":"last_protocol_fee_crystallized","type":"i64"}]}},{"name":"FeeStructure","type":{"kind":"struct","fields":[{"name":"vault","type":{"defined":{"name":"EntryExitFees"}}},{"name":"manager","type":{"defined":{"name":"EntryExitFees"}}},{"name":"management","type":{"defined":{"name":"ManagementFee"}}},{"name":"performance","type":{"defined":{"name":"PerformanceFee"}}},{"name":"protocol","type":{"defined":{"name":"ProtocolFees"}}}]}},{"name":"HurdleType","type":{"kind":"enum","variants":[{"name":"Hard"},{"name":"Soft"}]}},{"name":"InitObligationArgs","type":{"kind":"struct","fields":[{"name":"tag","type":"u8"},{"name":"id","type":"u8"}]}},{"name":"IntegrationAcl","docs":["An integration program can have multiple protocols supported.","Enabled protocols are stored in a bitmask, and each protocol can have its own policy."],"type":{"kind":"struct","fields":[{"name":"integration_program","type":"pubkey"},{"name":"protocols_bitmask","type":"u16"},{"name":"protocol_policies","type":{"vec":{"defined":{"name":"ProtocolPolicy"}}}}]}},{"name":"IntegrationPermissions","docs":["Stores delegate permissions for an integration program."],"type":{"kind":"struct","fields":[{"name":"integration_program","type":"pubkey"},{"name":"protocol_permissions","type":{"vec":{"defined":{"name":"ProtocolPermissions"}}}}]}},{"name":"LendingPolicy","type":{"kind":"struct","fields":[{"name":"markets_allowlist","type":{"vec":"pubkey"}},{"name":"borrow_allowlist","type":{"vec":"pubkey"}}]}},{"name":"ManagementFee","type":{"kind":"struct","fields":[{"name":"fee_bps","type":"u16"}]}},{"name":"NoticePeriodType","type":{"kind":"enum","variants":[{"name":"Hard"},{"name":"Soft"}]}},{"name":"NotifyAndSettle","type":{"kind":"struct","fields":[{"name":"model","type":{"defined":{"name":"ValuationModel"}}},{"name":"permissionless_fulfillment","type":"bool"},{"name":"subscribe_notice_period_type","type":{"defined":{"name":"NoticePeriodType"}}},{"name":"subscribe_notice_period","type":"u64"},{"name":"subscribe_settlement_period","type":"u64"},{"name":"subscribe_cancellation_window","type":"u64"},{"name":"redeem_notice_period_type","type":{"defined":{"name":"NoticePeriodType"}}},{"name":"redeem_notice_period","type":"u64"},{"name":"redeem_settlement_period","type":"u64"},{"name":"redeem_cancellation_window","type":"u64"},{"name":"time_unit","type":{"defined":{"name":"TimeUnit"}}},{"name":"_padding","type":{"array":["u8",3]}}]}},{"name":"OracleConfigs","docs":["Vault-specific oracle configs. If available, these configs are preferred over the global config."],"type":{"kind":"struct","fields":[{"name":"max_ages_seconds","type":{"vec":{"array":["u16",2]}}},{"name":"padding","type":{"array":["u8",12]}}]}},{"name":"PerformanceFee","type":{"kind":"struct","fields":[{"name":"fee_bps","type":"u16"},{"name":"hurdle_rate_bps","type":"u16"},{"name":"hurdle_type","type":{"defined":{"name":"HurdleType"}}}]}},{"name":"PricedProtocol","type":{"kind":"struct","fields":[{"name":"rent","type":"u64"},{"name":"amount","type":"i128"},{"name":"decimals","type":"u8"},{"name":"last_updated_slot","type":"u64"},{"name":"integration_program","type":"pubkey"},{"name":"protocol_bitflag","type":"u16"},{"name":"positions","type":{"vec":"pubkey"}}]}},{"name":"ProtocolFees","type":{"kind":"struct","fields":[{"name":"base_fee_bps","type":"u16"},{"name":"flow_fee_bps","type":"u16"}]}},{"name":"ProtocolPermissions","docs":["Represents a delegate\'s permissions for a specific protocol"],"type":{"kind":"struct","fields":[{"name":"protocol_bitflag","type":"u16"},{"name":"permissions_bitmask","type":"u64"}]}},{"name":"ProtocolPolicy","docs":["Stores policy data for an integrated protocol.","Integration programs serialize/deserialize this data."],"type":{"kind":"struct","fields":[{"name":"protocol_bitflag","type":"u16"},{"name":"data","type":"bytes"}]}},{"name":"StateAccount","type":{"kind":"struct","fields":[{"name":"account_type","type":{"defined":{"name":"AccountType"}}},{"name":"enabled","type":"bool"},{"name":"vault","type":"pubkey"},{"name":"owner","type":"pubkey"},{"name":"portfolio_manager_name","type":{"array":["u8",32]}},{"name":"created","type":{"defined":{"name":"CreatedModel"}}},{"name":"base_asset_mint","type":"pubkey"},{"name":"base_asset_decimals","type":"u8"},{"name":"base_asset_token_program","type":"u8"},{"name":"name","type":{"array":["u8",32]}},{"name":"timelock_duration","type":"u32"},{"name":"timelock_expires_at","type":"u64"},{"name":"mint","type":"pubkey"},{"name":"assets","type":{"vec":"pubkey"}},{"name":"integration_acls","type":{"vec":{"defined":{"name":"IntegrationAcl"}}}},{"name":"delegate_acls","type":{"vec":{"defined":{"name":"DelegateAcl"}}}},{"name":"external_positions","type":{"vec":"pubkey"}},{"name":"priced_protocols","type":{"vec":{"defined":{"name":"PricedProtocol"}}}},{"name":"params","type":{"vec":{"vec":{"defined":{"name":"EngineField"}}}}}]}},{"name":"TimeUnit","type":{"kind":"enum","variants":[{"name":"Second"},{"name":"Slot"}]}},{"name":"ValuationModel","type":{"kind":"enum","variants":[{"name":"Continuous"},{"name":"Periodic"}]}},{"name":"VaultsPolicy","type":{"kind":"struct","fields":[{"name":"vaults_allowlist","type":{"vec":"pubkey"}}]}}],"constants":[{"name":"PROTO_KAMINO_FARMS","type":"u16","value":"4"},{"name":"PROTO_KAMINO_FARMS_PERM_HARVEST_REWARD","type":"u64","value":"4"},{"name":"PROTO_KAMINO_FARMS_PERM_STAKE","type":"u64","value":"1"},{"name":"PROTO_KAMINO_FARMS_PERM_UNSTAKE","type":"u64","value":"2"},{"name":"PROTO_KAMINO_LENDING","type":"u16","value":"1"},{"name":"PROTO_KAMINO_LENDING_PERM_BORROW","type":"u64","value":"8"},{"name":"PROTO_KAMINO_LENDING_PERM_DEPOSIT","type":"u64","value":"2"},{"name":"PROTO_KAMINO_LENDING_PERM_INIT","type":"u64","value":"1"},{"name":"PROTO_KAMINO_LENDING_PERM_REPAY","type":"u64","value":"16"},{"name":"PROTO_KAMINO_LENDING_PERM_WITHDRAW","type":"u64","value":"4"},{"name":"PROTO_KAMINO_VAULTS","type":"u16","value":"2"},{"name":"PROTO_KAMINO_VAULTS_PERM_DEPOSIT","type":"u64","value":"1"},{"name":"PROTO_KAMINO_VAULTS_PERM_WITHDRAW","type":"u64","value":"2"}]}');
307
+ module.exports = /*#__PURE__*/JSON.parse('{"address":"gstgKa2Gq9wf5hM3DFWx1TvUrGYzDYszyFGq3XBY9Uq","metadata":{"name":"ext_kamino","version":"1.0.0","spec":"0.1.0","description":"Kamino integration for GLAM Protocol"},"instructions":[{"name":"farms_harvest_reward","discriminator":[244,248,124,210,194,52,75,152],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"user_state","writable":true},{"name":"farm_state","writable":true},{"name":"global_config"},{"name":"reward_mint"},{"name":"user_reward_ata","writable":true},{"name":"rewards_vault","writable":true},{"name":"rewards_treasury_vault","writable":true},{"name":"farm_vaults_authority"},{"name":"scope_prices","optional":true},{"name":"token_program"}],"args":[{"name":"reward_index","type":"u64"}]},{"name":"farms_initialize_user","discriminator":[188,148,82,37,44,46,162,34],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"user_state","writable":true},{"name":"farm_state","writable":true},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"}],"args":[]},{"name":"farms_stake","discriminator":[224,105,208,179,98,200,213,238],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"user_state","writable":true},{"name":"farm_state","writable":true},{"name":"farm_vault","writable":true},{"name":"user_ata","writable":true},{"name":"token_mint"},{"name":"scope_prices","optional":true},{"name":"token_program"}],"args":[{"name":"amount","type":"u64"}]},{"name":"farms_unstake","discriminator":[180,131,50,144,26,242,175,242],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"user_state","writable":true},{"name":"farm_state","writable":true},{"name":"scope_prices","optional":true}],"args":[{"name":"amount","type":"u128"}]},{"name":"farms_withdraw_unstaked_deposits","discriminator":[107,97,50,15,211,245,52,96],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"user_state","writable":true},{"name":"farm_state","writable":true},{"name":"user_ata","writable":true},{"name":"farm_vault","writable":true},{"name":"farm_vaults_authority"},{"name":"token_program"}],"args":[]},{"name":"lending_borrow_obligation_liquidity_v2","discriminator":[149,226,84,157,124,178,35,122],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"obligation","writable":true},{"name":"lending_market"},{"name":"lending_market_authority"},{"name":"borrow_reserve","writable":true},{"name":"borrow_reserve_liquidity_mint"},{"name":"reserve_source_liquidity","writable":true},{"name":"borrow_reserve_liquidity_fee_receiver","writable":true},{"name":"user_destination_liquidity","writable":true},{"name":"referrer_token_state","writable":true,"optional":true},{"name":"token_program"},{"name":"instruction_sysvar_account"},{"name":"obligation_farm_user_state","writable":true,"optional":true},{"name":"reserve_farm_state","writable":true,"optional":true},{"name":"farms_program"}],"args":[{"name":"liquidity_amount","type":"u64"}]},{"name":"lending_deposit_reserve_liquidity_and_obligation_collateral_v2","discriminator":[33,146,50,121,127,94,92,192],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"obligation","writable":true},{"name":"lending_market"},{"name":"lending_market_authority"},{"name":"reserve","writable":true},{"name":"reserve_liquidity_mint"},{"name":"reserve_liquidity_supply","writable":true},{"name":"reserve_collateral_mint","writable":true},{"name":"reserve_destination_deposit_collateral","writable":true},{"name":"user_source_liquidity","writable":true},{"name":"placeholder_user_destination_collateral","optional":true},{"name":"collateral_token_program"},{"name":"liquidity_token_program"},{"name":"instruction_sysvar_account"},{"name":"obligation_farm_user_state","writable":true,"optional":true},{"name":"reserve_farm_state","writable":true,"optional":true},{"name":"farms_program"}],"args":[{"name":"liquidity_amount","type":"u64"}]},{"name":"lending_init_obligation","discriminator":[188,161,62,142,106,232,77,135],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"fee_payer","writable":true,"signer":true},{"name":"obligation","writable":true},{"name":"lending_market"},{"name":"seed1_account"},{"name":"seed2_account"},{"name":"owner_user_metadata"},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"args","type":{"defined":{"name":"InitObligationArgs"}}}]},{"name":"lending_init_obligation_farms_for_reserve","discriminator":[3,234,110,39,12,147,175,185],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"payer","writable":true,"signer":true},{"name":"obligation","writable":true},{"name":"lending_market_authority"},{"name":"reserve","writable":true},{"name":"reserve_farm_state","writable":true},{"name":"obligation_farm","writable":true},{"name":"lending_market"},{"name":"farms_program"},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"mode","type":"u8"}]},{"name":"lending_init_user_metadata","discriminator":[68,236,138,146,124,228,247,241],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"fee_payer","writable":true,"signer":true},{"name":"user_metadata","writable":true},{"name":"referrer_user_metadata","optional":true},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"user_lookup_table","type":"pubkey"}]},{"name":"lending_repay_obligation_liquidity_v2","discriminator":[79,34,126,170,174,156,174,29],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"obligation","writable":true},{"name":"lending_market"},{"name":"repay_reserve","writable":true},{"name":"reserve_liquidity_mint"},{"name":"reserve_destination_liquidity","writable":true},{"name":"user_source_liquidity","writable":true},{"name":"token_program"},{"name":"instruction_sysvar_account"},{"name":"obligation_farm_user_state","writable":true,"optional":true},{"name":"reserve_farm_state","writable":true,"optional":true},{"name":"lending_market_authority"},{"name":"farms_program"}],"args":[{"name":"liquidity_amount","type":"u64"}]},{"name":"lending_request_elevation_group","discriminator":[162,119,197,54,246,84,55,153],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"obligation","writable":true},{"name":"lending_market"}],"args":[{"name":"elevation_group","type":"u8"}]},{"name":"lending_withdraw_obligation_collateral_and_redeem_reserve_collateral_v2","discriminator":[217,223,173,35,64,225,161,222],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"obligation","writable":true},{"name":"lending_market"},{"name":"lending_market_authority"},{"name":"withdraw_reserve","writable":true},{"name":"reserve_liquidity_mint"},{"name":"reserve_source_collateral","writable":true},{"name":"reserve_collateral_mint","writable":true},{"name":"reserve_liquidity_supply","writable":true},{"name":"user_destination_liquidity","writable":true},{"name":"placeholder_user_destination_collateral","optional":true},{"name":"collateral_token_program"},{"name":"liquidity_token_program"},{"name":"instruction_sysvar_account"},{"name":"obligation_farm_user_state","writable":true,"optional":true},{"name":"reserve_farm_state","writable":true,"optional":true},{"name":"farms_program"}],"args":[{"name":"collateral_amount","type":"u64"}]},{"name":"set_lending_policy","discriminator":[226,185,23,3,113,88,118,176],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_signer","writable":true,"signer":true},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"}],"args":[{"name":"policy","type":{"defined":{"name":"LendingPolicy"}}}]},{"name":"set_vaults_policy","discriminator":[211,177,22,152,235,59,192,62],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_signer","writable":true,"signer":true},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"}],"args":[{"name":"policy","type":{"defined":{"name":"VaultsPolicy"}}}]},{"name":"vaults_deposit","discriminator":[124,173,191,223,48,26,84,84],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KvauGMspG5k6rtzrqqn7WNn3oZdyKqLKwK2XWQ8FLjd"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"vault_state","writable":true},{"name":"token_vault","writable":true},{"name":"token_mint"},{"name":"base_vault_authority"},{"name":"shares_mint","writable":true},{"name":"user_token_ata","writable":true},{"name":"user_shares_ata","writable":true},{"name":"klend_program"},{"name":"token_program"},{"name":"shares_token_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"max_amount","type":"u64"}]},{"name":"vaults_withdraw","discriminator":[12,8,236,92,134,144,196,87],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}],"program":{"kind":"account","path":"glam_protocol_program"}}},{"name":"glam_signer","writable":true,"signer":true},{"name":"integration_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,103,114,97,116,105,111,110,45,97,117,116,104,111,114,105,116,121]}]}},{"name":"cpi_program","address":"KvauGMspG5k6rtzrqqn7WNn3oZdyKqLKwK2XWQ8FLjd"},{"name":"glam_protocol_program","address":"gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"withdraw_from_available_vault_state","writable":true},{"name":"withdraw_from_available_global_config"},{"name":"withdraw_from_available_token_vault","writable":true},{"name":"withdraw_from_available_base_vault_authority"},{"name":"withdraw_from_available_user_token_ata","writable":true},{"name":"withdraw_from_available_token_mint","writable":true},{"name":"withdraw_from_available_user_shares_ata","writable":true},{"name":"withdraw_from_available_shares_mint","writable":true},{"name":"withdraw_from_available_token_program"},{"name":"withdraw_from_available_shares_token_program"},{"name":"withdraw_from_available_klend_program"},{"name":"withdraw_from_available_event_authority"},{"name":"withdraw_from_available_program"},{"name":"withdraw_from_reserve_vault_state","writable":true},{"name":"withdraw_from_reserve_reserve","writable":true},{"name":"withdraw_from_reserve_ctoken_vault","writable":true},{"name":"withdraw_from_reserve_lending_market"},{"name":"withdraw_from_reserve_lending_market_authority"},{"name":"withdraw_from_reserve_reserve_liquidity_supply","writable":true},{"name":"withdraw_from_reserve_reserve_collateral_mint","writable":true},{"name":"withdraw_from_reserve_reserve_collateral_token_program"},{"name":"withdraw_from_reserve_instruction_sysvar_account"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"shares_amount","type":"u64"}]}],"accounts":[{"name":"StateAccount","discriminator":[142,247,54,95,85,133,249,103]}],"types":[{"name":"AccountType","type":{"kind":"enum","variants":[{"name":"Vault"},{"name":"TokenizedVault"},{"name":"Mint"},{"name":"SingleAssetVault"}]}},{"name":"AccruedFees","type":{"kind":"struct","fields":[{"name":"vault_subscription_fee","type":"u128"},{"name":"vault_redemption_fee","type":"u128"},{"name":"manager_subscription_fee","type":"u128"},{"name":"manager_redemption_fee","type":"u128"},{"name":"management_fee","type":"u128"},{"name":"performance_fee","type":"u128"},{"name":"protocol_base_fee","type":"u128"},{"name":"protocol_flow_fee","type":"u128"}]}},{"name":"CreatedModel","type":{"kind":"struct","fields":[{"name":"key","type":{"array":["u8",8]}},{"name":"created_by","type":"pubkey"},{"name":"created_at","type":"i64"}]}},{"name":"DelegateAcl","type":{"kind":"struct","fields":[{"name":"pubkey","type":"pubkey"},{"name":"integration_permissions","type":{"vec":{"defined":{"name":"IntegrationPermissions"}}}},{"name":"expires_at","type":"i64"}]}},{"name":"EngineField","type":{"kind":"struct","fields":[{"name":"name","type":{"defined":{"name":"EngineFieldName"}}},{"name":"value","type":{"defined":{"name":"EngineFieldValue"}}}]}},{"name":"EngineFieldName","type":{"kind":"enum","variants":[{"name":"Owner"},{"name":"PortfolioManagerName"},{"name":"Name"},{"name":"Uri"},{"name":"Assets"},{"name":"DelegateAcls"},{"name":"IntegrationAcls"},{"name":"TimelockDuration"},{"name":"Borrowable"},{"name":"DefaultAccountStateFrozen"},{"name":"PermanentDelegate"},{"name":"NotifyAndSettle"},{"name":"FeeStructure"},{"name":"FeeParams"},{"name":"ClaimableFees"},{"name":"ClaimedFees"},{"name":"OracleConfigs"},{"name":"ReduceOnly"},{"name":"AnyLst"}]}},{"name":"EngineFieldValue","type":{"kind":"enum","variants":[{"name":"Boolean","fields":[{"name":"val","type":"bool"}]},{"name":"U8","fields":[{"name":"val","type":"u8"}]},{"name":"U32","fields":[{"name":"val","type":"u32"}]},{"name":"U64","fields":[{"name":"val","type":"u64"}]},{"name":"String","fields":[{"name":"val","type":"string"}]},{"name":"Pubkey","fields":[{"name":"val","type":"pubkey"}]},{"name":"VecPubkey","fields":[{"name":"val","type":{"vec":"pubkey"}}]},{"name":"VecU8","fields":[{"name":"val","type":"bytes"}]},{"name":"VecU32","fields":[{"name":"val","type":{"vec":"u32"}}]},{"name":"VecDelegateAcl","fields":[{"name":"val","type":{"vec":{"defined":{"name":"DelegateAcl"}}}}]},{"name":"VecIntegrationAcl","fields":[{"name":"val","type":{"vec":{"defined":{"name":"IntegrationAcl"}}}}]},{"name":"FeeStructure","fields":[{"name":"val","type":{"defined":{"name":"FeeStructure"}}}]},{"name":"FeeParams","fields":[{"name":"val","type":{"defined":{"name":"FeeParams"}}}]},{"name":"AccruedFees","fields":[{"name":"val","type":{"defined":{"name":"AccruedFees"}}}]},{"name":"NotifyAndSettle","fields":[{"name":"val","type":{"defined":{"name":"NotifyAndSettle"}}}]},{"name":"OracleConfigs","fields":[{"name":"val","type":{"defined":{"name":"OracleConfigs"}}}]}]}},{"name":"EntryExitFees","type":{"kind":"struct","fields":[{"name":"subscription_fee_bps","type":"u16"},{"name":"redemption_fee_bps","type":"u16"}]}},{"name":"FeeParams","type":{"kind":"struct","fields":[{"name":"year_in_seconds","type":"u32"},{"name":"pa_high_water_mark","type":"i128"},{"name":"pa_last_nav","type":"i128"},{"name":"last_aum","type":"i128"},{"name":"last_performance_fee_crystallized","type":"i64"},{"name":"last_management_fee_crystallized","type":"i64"},{"name":"last_protocol_fee_crystallized","type":"i64"}]}},{"name":"FeeStructure","type":{"kind":"struct","fields":[{"name":"vault","type":{"defined":{"name":"EntryExitFees"}}},{"name":"manager","type":{"defined":{"name":"EntryExitFees"}}},{"name":"management","type":{"defined":{"name":"ManagementFee"}}},{"name":"performance","type":{"defined":{"name":"PerformanceFee"}}},{"name":"protocol","type":{"defined":{"name":"ProtocolFees"}}}]}},{"name":"HurdleType","type":{"kind":"enum","variants":[{"name":"Hard"},{"name":"Soft"}]}},{"name":"InitObligationArgs","type":{"kind":"struct","fields":[{"name":"tag","type":"u8"},{"name":"id","type":"u8"}]}},{"name":"IntegrationAcl","docs":["An integration program can have multiple protocols supported.","Enabled protocols are stored in a bitmask, and each protocol can have its own policy."],"type":{"kind":"struct","fields":[{"name":"integration_program","type":"pubkey"},{"name":"protocols_bitmask","type":"u16"},{"name":"protocol_policies","type":{"vec":{"defined":{"name":"ProtocolPolicy"}}}}]}},{"name":"IntegrationPermissions","docs":["Stores delegate permissions for an integration program."],"type":{"kind":"struct","fields":[{"name":"integration_program","type":"pubkey"},{"name":"protocol_permissions","type":{"vec":{"defined":{"name":"ProtocolPermissions"}}}}]}},{"name":"LendingPolicy","type":{"kind":"struct","fields":[{"name":"markets_allowlist","type":{"vec":"pubkey"}},{"name":"borrow_allowlist","type":{"vec":"pubkey"}}]}},{"name":"ManagementFee","type":{"kind":"struct","fields":[{"name":"fee_bps","type":"u16"}]}},{"name":"NoticePeriodType","type":{"kind":"enum","variants":[{"name":"Hard"},{"name":"Soft"}]}},{"name":"NotifyAndSettle","type":{"kind":"struct","fields":[{"name":"model","type":{"defined":{"name":"ValuationModel"}}},{"name":"permissionless_fulfillment","type":"bool"},{"name":"subscribe_notice_period_type","type":{"defined":{"name":"NoticePeriodType"}}},{"name":"subscribe_notice_period","type":"u64"},{"name":"subscribe_settlement_period","type":"u64"},{"name":"subscribe_cancellation_window","type":"u64"},{"name":"redeem_notice_period_type","type":{"defined":{"name":"NoticePeriodType"}}},{"name":"redeem_notice_period","type":"u64"},{"name":"redeem_settlement_period","type":"u64"},{"name":"redeem_cancellation_window","type":"u64"},{"name":"time_unit","type":{"defined":{"name":"TimeUnit"}}},{"name":"_padding","type":{"array":["u8",3]}}]}},{"name":"OracleConfigs","docs":["Vault-specific oracle configs. If available, these configs are preferred over the global config."],"type":{"kind":"struct","fields":[{"name":"max_ages_seconds","type":{"vec":{"array":["u16",2]}}},{"name":"padding","type":{"array":["u8",12]}}]}},{"name":"PerformanceFee","type":{"kind":"struct","fields":[{"name":"fee_bps","type":"u16"},{"name":"hurdle_rate_bps","type":"u16"},{"name":"hurdle_type","type":{"defined":{"name":"HurdleType"}}}]}},{"name":"PricedProtocol","type":{"kind":"struct","fields":[{"name":"rent","type":"u64"},{"name":"amount","type":"i128"},{"name":"decimals","type":"u8"},{"name":"last_updated_slot","type":"u64"},{"name":"integration_program","type":"pubkey"},{"name":"protocol_bitflag","type":"u16"},{"name":"positions","type":{"vec":"pubkey"}}]}},{"name":"ProtocolFees","type":{"kind":"struct","fields":[{"name":"base_fee_bps","type":"u16"},{"name":"flow_fee_bps","type":"u16"}]}},{"name":"ProtocolPermissions","docs":["Represents a delegate\'s permissions for a specific protocol"],"type":{"kind":"struct","fields":[{"name":"protocol_bitflag","type":"u16"},{"name":"permissions_bitmask","type":"u64"}]}},{"name":"ProtocolPolicy","docs":["Stores policy data for an integrated protocol.","Integration programs serialize/deserialize this data."],"type":{"kind":"struct","fields":[{"name":"protocol_bitflag","type":"u16"},{"name":"data","type":"bytes"}]}},{"name":"StateAccount","type":{"kind":"struct","fields":[{"name":"account_type","type":{"defined":{"name":"AccountType"}}},{"name":"enabled","type":"bool"},{"name":"vault","type":"pubkey"},{"name":"owner","type":"pubkey"},{"name":"portfolio_manager_name","type":{"array":["u8",32]}},{"name":"created","type":{"defined":{"name":"CreatedModel"}}},{"name":"base_asset_mint","type":"pubkey"},{"name":"base_asset_decimals","type":"u8"},{"name":"base_asset_token_program","type":"u8"},{"name":"name","type":{"array":["u8",32]}},{"name":"timelock_duration","type":"u32"},{"name":"timelock_expires_at","type":"u64"},{"name":"mint","type":"pubkey"},{"name":"assets","type":{"vec":"pubkey"}},{"name":"integration_acls","type":{"vec":{"defined":{"name":"IntegrationAcl"}}}},{"name":"delegate_acls","type":{"vec":{"defined":{"name":"DelegateAcl"}}}},{"name":"external_positions","type":{"vec":"pubkey"}},{"name":"priced_protocols","type":{"vec":{"defined":{"name":"PricedProtocol"}}}},{"name":"params","type":{"vec":{"vec":{"defined":{"name":"EngineField"}}}}}]}},{"name":"TimeUnit","type":{"kind":"enum","variants":[{"name":"Second"},{"name":"Slot"}]}},{"name":"ValuationModel","type":{"kind":"enum","variants":[{"name":"Continuous"},{"name":"Periodic"}]}},{"name":"VaultsPolicy","type":{"kind":"struct","fields":[{"name":"vaults_allowlist","type":{"vec":"pubkey"}}]}}],"constants":[{"name":"PROTO_KAMINO_FARMS","type":"u16","value":"4"},{"name":"PROTO_KAMINO_FARMS_PERM_HARVEST_REWARD","type":"u64","value":"4"},{"name":"PROTO_KAMINO_FARMS_PERM_STAKE","type":"u64","value":"1"},{"name":"PROTO_KAMINO_FARMS_PERM_UNSTAKE","type":"u64","value":"2"},{"name":"PROTO_KAMINO_LENDING","type":"u16","value":"1"},{"name":"PROTO_KAMINO_LENDING_PERM_BORROW","type":"u64","value":"8"},{"name":"PROTO_KAMINO_LENDING_PERM_DEPOSIT","type":"u64","value":"2"},{"name":"PROTO_KAMINO_LENDING_PERM_INIT","type":"u64","value":"1"},{"name":"PROTO_KAMINO_LENDING_PERM_REPAY","type":"u64","value":"16"},{"name":"PROTO_KAMINO_LENDING_PERM_WITHDRAW","type":"u64","value":"4"},{"name":"PROTO_KAMINO_VAULTS","type":"u16","value":"2"},{"name":"PROTO_KAMINO_VAULTS_PERM_DEPOSIT","type":"u64","value":"1"},{"name":"PROTO_KAMINO_VAULTS_PERM_WITHDRAW","type":"u64","value":"2"}]}');
308
308
 
309
309
  /***/ }),
310
310
  /* 21 */
@@ -348,7 +348,7 @@ Object.defineProperty(exports, "MintModel", ({ enumerable: true, get: function (
348
348
  Object.defineProperty(exports, "EmergencyUpdateMintArgs", ({ enumerable: true, get: function () { return mint_1.EmergencyUpdateMintArgs; } }));
349
349
  Object.defineProperty(exports, "RequestType", ({ enumerable: true, get: function () { return mint_1.RequestType; } }));
350
350
  // ACL-related exports
351
- var acl_1 = __webpack_require__(56);
351
+ var acl_1 = __webpack_require__(57);
352
352
  Object.defineProperty(exports, "IntegrationPermissions", ({ enumerable: true, get: function () { return acl_1.IntegrationPermissions; } }));
353
353
  Object.defineProperty(exports, "ProtocolPermissions", ({ enumerable: true, get: function () { return acl_1.ProtocolPermissions; } }));
354
354
  Object.defineProperty(exports, "ProtocolPolicy", ({ enumerable: true, get: function () { return acl_1.ProtocolPolicy; } }));
@@ -356,7 +356,7 @@ Object.defineProperty(exports, "IntegrationAcl", ({ enumerable: true, get: funct
356
356
  Object.defineProperty(exports, "DelegateAcl", ({ enumerable: true, get: function () { return acl_1.DelegateAcl; } }));
357
357
  Object.defineProperty(exports, "EmergencyAccessUpdateArgs", ({ enumerable: true, get: function () { return acl_1.EmergencyAccessUpdateArgs; } }));
358
358
  // Type exports
359
- var types_1 = __webpack_require__(57);
359
+ var types_1 = __webpack_require__(58);
360
360
  Object.defineProperty(exports, "PriceDenom", ({ enumerable: true, get: function () { return types_1.PriceDenom; } }));
361
361
  Object.defineProperty(exports, "TimeUnit", ({ enumerable: true, get: function () { return types_1.TimeUnit; } }));
362
362
  Object.defineProperty(exports, "VoteAuthorize", ({ enumerable: true, get: function () { return types_1.VoteAuthorize; } }));
@@ -821,28 +821,31 @@ class DriftProtocolPolicy {
821
821
  this.borrowAllowlist = borrowAllowlist;
822
822
  this.orderPriceToleranceBps = orderPriceToleranceBps;
823
823
  }
824
- static decode(buffer) {
825
- try {
826
- const data = DriftProtocolPolicy._layout.decode(buffer);
827
- return new DriftProtocolPolicy(data.spotMarketsAllowlist, data.perpMarketsAllowlist, data.borrowAllowlist, data.orderPriceToleranceBps ?? 0);
828
- }
829
- catch {
830
- // Legacy format without orderPriceToleranceBps
831
- const data = DriftProtocolPolicy._legacyLayout.decode(buffer);
832
- return new DriftProtocolPolicy(data.spotMarketsAllowlist, data.perpMarketsAllowlist, data.borrowAllowlist, 0);
824
+ static decode(buffer, staging = false) {
825
+ if (staging) {
826
+ try {
827
+ const data = DriftProtocolPolicy._stagingLayout.decode(buffer);
828
+ return new DriftProtocolPolicy(data.spotMarketsAllowlist, data.perpMarketsAllowlist, data.borrowAllowlist, data.orderPriceToleranceBps ?? 0);
829
+ }
830
+ catch {
831
+ // Backward compat: old staging data without orderPriceToleranceBps
832
+ // falls through to the base layout decoding
833
+ }
833
834
  }
835
+ const data = DriftProtocolPolicy._layout.decode(buffer);
836
+ return new DriftProtocolPolicy(data.spotMarketsAllowlist, data.perpMarketsAllowlist, data.borrowAllowlist, 0);
834
837
  }
835
- encode() {
836
- // Calculate buffer size needed
837
- // 4 bytes for spot markets length + 2 bytes per spot market
838
- // 4 bytes for perp markets length + 2 bytes per perp market
839
- // 4 bytes for borrow allowlist length + 32 bytes per pubkey
840
- // 2 bytes for orderPriceToleranceBps
838
+ encode(staging = false) {
841
839
  const spotMarketsSize = 4 + this.spotMarketsAllowlist.length * 2;
842
840
  const perpMarketsSize = 4 + this.perpMarketsAllowlist.length * 2;
843
841
  const borrowAllowlistSize = 4 + this.borrowAllowlist.length * 32;
844
- const totalSize = spotMarketsSize + perpMarketsSize + borrowAllowlistSize + 2;
845
- const buffer = Buffer.alloc(totalSize);
842
+ const baseSize = spotMarketsSize + perpMarketsSize + borrowAllowlistSize;
843
+ if (staging) {
844
+ const buffer = Buffer.alloc(baseSize + 2); // +2 for orderPriceToleranceBps
845
+ DriftProtocolPolicy._stagingLayout.encode(this, buffer);
846
+ return buffer;
847
+ }
848
+ const buffer = Buffer.alloc(baseSize);
846
849
  DriftProtocolPolicy._layout.encode(this, buffer);
847
850
  return buffer;
848
851
  }
@@ -852,12 +855,12 @@ DriftProtocolPolicy._layout = (0, borsh_1.struct)([
852
855
  (0, borsh_1.vec)((0, borsh_1.u16)(), "spotMarketsAllowlist"),
853
856
  (0, borsh_1.vec)((0, borsh_1.u16)(), "perpMarketsAllowlist"),
854
857
  (0, borsh_1.vec)((0, borsh_1.publicKey)(), "borrowAllowlist"),
855
- (0, borsh_1.u16)("orderPriceToleranceBps"),
856
858
  ]);
857
- DriftProtocolPolicy._legacyLayout = (0, borsh_1.struct)([
859
+ DriftProtocolPolicy._stagingLayout = (0, borsh_1.struct)([
858
860
  (0, borsh_1.vec)((0, borsh_1.u16)(), "spotMarketsAllowlist"),
859
861
  (0, borsh_1.vec)((0, borsh_1.u16)(), "perpMarketsAllowlist"),
860
862
  (0, borsh_1.vec)((0, borsh_1.publicKey)(), "borrowAllowlist"),
863
+ (0, borsh_1.u16)("orderPriceToleranceBps"),
861
864
  ]);
862
865
  class KaminoLendingPolicy {
863
866
  constructor(marketsAllowlist, borrowAllowlist) {
@@ -1080,12 +1083,12 @@ tslib_1.__exportStar(__webpack_require__(44), exports);
1080
1083
  tslib_1.__exportStar(__webpack_require__(37), exports);
1081
1084
  tslib_1.__exportStar(__webpack_require__(46), exports);
1082
1085
  tslib_1.__exportStar(__webpack_require__(47), exports);
1083
- tslib_1.__exportStar(__webpack_require__(48), exports);
1086
+ tslib_1.__exportStar(__webpack_require__(49), exports);
1084
1087
  tslib_1.__exportStar(__webpack_require__(35), exports);
1085
1088
  tslib_1.__exportStar(__webpack_require__(45), exports);
1086
- tslib_1.__exportStar(__webpack_require__(51), exports);
1087
- tslib_1.__exportStar(__webpack_require__(53), exports);
1088
- tslib_1.__exportStar(__webpack_require__(55), exports);
1089
+ tslib_1.__exportStar(__webpack_require__(52), exports);
1090
+ tslib_1.__exportStar(__webpack_require__(54), exports);
1091
+ tslib_1.__exportStar(__webpack_require__(56), exports);
1089
1092
 
1090
1093
 
1091
1094
  /***/ }),
@@ -1823,9 +1826,14 @@ function getHeliusApiKey() {
1823
1826
  * Otherwise falls back to standard getProgramAccounts with retry logic.
1824
1827
  */
1825
1828
  async function getProgramAccounts(connection, programId, config) {
1826
- if (isHeliusRpc(connection.rpcEndpoint)) {
1827
- return await getProgramAccountsV2Helius(connection.rpcEndpoint, programId, config);
1828
- }
1829
+ // 2026-03-02: Helius getProgramAccountsV2 cannot find ALTs, disable it for now
1830
+ // if (isHeliusRpc(connection.rpcEndpoint)) {
1831
+ // return await getProgramAccountsV2Helius(
1832
+ // connection.rpcEndpoint,
1833
+ // programId,
1834
+ // config,
1835
+ // );
1836
+ // }
1829
1837
  return await getProgramAccountsWithRetry(connection, programId, config);
1830
1838
  }
1831
1839
  async function rpcRequest(rpcUrl, method, params) {
@@ -1880,7 +1888,7 @@ async function getProgramAccountsV2Helius(rpcUrl, programId, config) {
1880
1888
  },
1881
1889
  });
1882
1890
  }
1883
- paginationKey = result.paginationKey;
1891
+ paginationKey = result.accounts.length > 0 ? result.paginationKey : null;
1884
1892
  } while (paginationKey);
1885
1893
  return allAccounts;
1886
1894
  }
@@ -2835,42 +2843,36 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
2835
2843
  exports.getSimulationResult = void 0;
2836
2844
  exports.parseProgramLogs = parseProgramLogs;
2837
2845
  const web3_js_1 = __webpack_require__(5);
2838
- const glamExports_1 = __webpack_require__(3);
2839
- const JUPITER_SWAP_ERRORS = {
2840
- 6001: "Jupiter swap failed: Slippage tolerance exceeded",
2841
- 6008: "Jupiter swap failed: Not enough account keys",
2842
- 6014: "Jupiter swap failed: Incorrect token program ID",
2843
- 6024: "Jupiter swap failed: Insufficient funds",
2844
- 6025: "Jupiter swap failed: Invalid token account",
2845
- };
2846
- /**
2847
- * Parses program logs to extract error message
2848
- */
2849
- function parseProgramLogs(logs) {
2850
- // "Error Message:" indicates an anchor program error
2851
- // Other messages are manually sourced & handled
2852
- const errorMsgLog = (logs || []).find((log) => log.includes("Error Message:") ||
2853
- log.includes("Error: insufficient funds") ||
2854
- log.includes("Transfer: insufficient lamports"));
2846
+ const error_1 = __webpack_require__(48);
2847
+ /**
2848
+ * Parses program logs to extract error message.
2849
+ * Checks in order: Anchor "Error Message:", insufficient funds/lamports,
2850
+ * and custom program error codes (resolved via IDL when possible).
2851
+ * Returns "Unknown error" if no recognizable error pattern is found.
2852
+ */
2853
+ function parseProgramLogs(logs, staging) {
2854
+ if (logs.length === 0)
2855
+ return "Invalid program logs";
2856
+ // Anchor "Error Message:" from program logs
2857
+ const errorMsgLog = logs.find((log) => log.includes("Error Message:"));
2855
2858
  if (errorMsgLog) {
2856
- if (errorMsgLog.includes("Error Message:")) {
2857
- return errorMsgLog.split("Error Message:")[1].trim();
2858
- }
2859
- return errorMsgLog;
2859
+ return errorMsgLog.split("Error Message:")[1].trim();
2860
2860
  }
2861
- // Match the following pattern to find Jupiter error code in logs
2862
- // "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1788"
2863
- const jupiterErrorLog = (logs || []).find((log) => log.includes("JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4") &&
2864
- log.includes("custom program error:"));
2865
- if (jupiterErrorLog) {
2866
- const match = jupiterErrorLog.match(/custom program error: (0x[0-9a-fA-F]+)/);
2861
+ // "insufficient funds" / "insufficient lamports" from logs
2862
+ const fundsLog = logs.find((log) => log.includes("Error: insufficient funds") ||
2863
+ log.includes("Transfer: insufficient lamports"));
2864
+ if (fundsLog)
2865
+ return fundsLog;
2866
+ // Custom program error code in logs (covers GLAM, Jupiter, etc.)
2867
+ const customErrorLog = logs.find((log) => log.includes("custom program error:"));
2868
+ if (customErrorLog) {
2869
+ const match = customErrorLog.match(/custom program error: (0x[0-9a-fA-F]+)/);
2867
2870
  if (match) {
2868
- const errorCodeHex = match[1];
2869
- const errorCode = parseInt(errorCodeHex, 16);
2870
- const jupiterError = JUPITER_SWAP_ERRORS[errorCode];
2871
- if (jupiterError) {
2872
- return jupiterError;
2873
- }
2871
+ const failedProgramId = (0, error_1.extractFailedProgramId)(logs);
2872
+ const resolved = (0, error_1.resolveErrorCode)(match[1], staging, failedProgramId);
2873
+ if (resolved)
2874
+ return resolved;
2875
+ return `Program error: ${match[1]}`;
2874
2876
  }
2875
2877
  }
2876
2878
  return "Unknown error";
@@ -2908,35 +2910,30 @@ const getSimulationResult = async (connection, instructions, payer, lookupTables
2908
2910
  };
2909
2911
  exports.getSimulationResult = getSimulationResult;
2910
2912
  const getErrorFromRpcResponse = (rpcResponse, staging) => {
2911
- // Note: `confirmTransaction` does not throw an error if the confirmation does not succeed,
2912
- // but rather a `TransactionError` object. so we handle that here
2913
2913
  const error = rpcResponse.value.err;
2914
- if (error) {
2915
- // Can be a string or an object (literally just {}, no further typing is provided by the library)
2916
- // https://github.com/solana-labs/solana-web3.js/blob/4436ba5189548fc3444a9f6efb51098272926945/packages/library-legacy/src/connection.ts#L2930
2917
- if (typeof error === "object") {
2918
- const errorKeys = Object.keys(error);
2919
- if (errorKeys.length === 1) {
2920
- if (errorKeys[0] !== "InstructionError") {
2921
- throw new Error(`Unknown RPC error: ${error}`);
2922
- }
2923
- // @ts-ignore due to missing typing information mentioned above.
2924
- const instructionError = error["InstructionError"];
2925
- // An instruction error is a custom program error and looks like: [1, {"Custom": 1}]
2926
- // See also https://solana.stackexchange.com/a/931/294
2927
- const customErrorCode = instructionError[1]["Custom"];
2928
- const { errors: glamErrors } = (0, glamExports_1.getGlamProtocolIdl)(staging);
2929
- const glamError = glamErrors.find((e) => e.code === customErrorCode);
2930
- if (glamError?.msg) {
2931
- throw new Error(glamError.msg);
2932
- }
2933
- // Unrecognized error code, try to parse program logs to get error message
2934
- const errMsg = parseProgramLogs(rpcResponse.value.logs);
2935
- throw new Error(errMsg);
2914
+ if (!error)
2915
+ return;
2916
+ if (typeof error === "object") {
2917
+ const errorKeys = Object.keys(error);
2918
+ if (errorKeys.length === 1) {
2919
+ if (errorKeys[0] !== "InstructionError") {
2920
+ throw new Error(`Unknown RPC error: ${JSON.stringify(error)}`);
2921
+ }
2922
+ // @ts-ignore due to missing typing information
2923
+ const instructionError = error["InstructionError"];
2924
+ const customErrorCode = instructionError?.[1]?.["Custom"];
2925
+ if (customErrorCode !== undefined) {
2926
+ const failedProgramId = (0, error_1.extractFailedProgramId)(rpcResponse.value.logs);
2927
+ const msg = (0, error_1.resolveErrorCode)(customErrorCode, staging, failedProgramId);
2928
+ if (msg)
2929
+ throw new Error(msg);
2936
2930
  }
2931
+ // Fallback to log-based parsing
2932
+ throw new Error(parseProgramLogs(rpcResponse.value.logs || [], staging));
2937
2933
  }
2938
- throw Error("Unknown error");
2934
+ throw new Error(`Unknown RPC error: ${JSON.stringify(error)}`);
2939
2935
  }
2936
+ throw new Error(typeof error === "string" ? error : "Unknown error");
2940
2937
  };
2941
2938
 
2942
2939
 
@@ -2946,14 +2943,148 @@ const getErrorFromRpcResponse = (rpcResponse, staging) => {
2946
2943
 
2947
2944
  "use strict";
2948
2945
 
2946
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2947
+ exports.GlamError = void 0;
2948
+ exports.extractFailedProgramId = extractFailedProgramId;
2949
+ exports.resolveErrorCode = resolveErrorCode;
2950
+ exports.parseTxError = parseTxError;
2951
+ const glamExports_1 = __webpack_require__(3);
2952
+ class GlamError extends Error {
2953
+ constructor(message, rawError, programLogs) {
2954
+ super(message);
2955
+ this.message = message;
2956
+ this.rawError = rawError;
2957
+ this.programLogs = programLogs;
2958
+ }
2959
+ }
2960
+ exports.GlamError = GlamError;
2961
+ const JUPITER_SWAP_ERRORS = {
2962
+ 6001: "Jupiter swap failed: Slippage tolerance exceeded",
2963
+ 6008: "Jupiter swap failed: Not enough account keys",
2964
+ 6014: "Jupiter swap failed: Incorrect token program ID",
2965
+ 6024: "Jupiter swap failed: Insufficient funds",
2966
+ 6025: "Jupiter swap failed: Invalid token account",
2967
+ };
2968
+ /**
2969
+ * Extract the program ID that failed from transaction logs.
2970
+ * Looks for "Program <ID> failed:" log lines.
2971
+ */
2972
+ function extractFailedProgramId(logs) {
2973
+ if (!logs)
2974
+ return undefined;
2975
+ for (let i = logs.length - 1; i >= 0; i--) {
2976
+ const match = logs[i].match(/^Program (\w+) failed/);
2977
+ if (match)
2978
+ return match[1];
2979
+ }
2980
+ return undefined;
2981
+ }
2982
+ /**
2983
+ * Resolve a custom program error code to a human-readable message.
2984
+ * When programId is provided, matches against the specific program's IDL
2985
+ * to avoid collisions between programs using the same error code range.
2986
+ * Accepts either a decimal number or a hex string (e.g. "0xBB80").
2987
+ */
2988
+ function resolveErrorCode(code, staging, programId) {
2989
+ const decimal = typeof code === "string"
2990
+ ? (() => {
2991
+ const normalized = code.trim().toLowerCase();
2992
+ return normalized.startsWith("0x")
2993
+ ? parseInt(normalized, 16)
2994
+ : parseInt(normalized, 10);
2995
+ })()
2996
+ : code;
2997
+ if (isNaN(decimal))
2998
+ return undefined;
2999
+ const s = (0, glamExports_1.resolveStaging)(staging);
3000
+ const glamProtocolId = (0, glamExports_1.getGlamProtocolProgramId)(s).toBase58();
3001
+ const glamMintId = (0, glamExports_1.getGlamMintProgramId)(s).toBase58();
3002
+ if (programId) {
3003
+ // Match against the specific program that failed
3004
+ if (programId === glamProtocolId) {
3005
+ const err = (0, glamExports_1.getGlamProtocolIdl)(s).errors.find((e) => e.code === decimal);
3006
+ return err?.msg;
3007
+ }
3008
+ if (programId === glamMintId) {
3009
+ const err = (0, glamExports_1.getGlamMintIdl)(s).errors.find((e) => e.code === decimal);
3010
+ return err?.msg;
3011
+ }
3012
+ // Not a GLAM program — check third-party errors
3013
+ const jupiterMsg = JUPITER_SWAP_ERRORS[decimal];
3014
+ if (jupiterMsg)
3015
+ return jupiterMsg;
3016
+ return undefined;
3017
+ }
3018
+ // Fallback: no programId provided, check all (legacy behavior)
3019
+ const protocolError = (0, glamExports_1.getGlamProtocolIdl)(s).errors.find((e) => e.code === decimal);
3020
+ if (protocolError?.msg)
3021
+ return protocolError.msg;
3022
+ const mintError = (0, glamExports_1.getGlamMintIdl)(s).errors.find((e) => e.code === decimal);
3023
+ if (mintError?.msg)
3024
+ return mintError.msg;
3025
+ const jupiterMsg = JUPITER_SWAP_ERRORS[decimal];
3026
+ if (jupiterMsg)
3027
+ return jupiterMsg;
3028
+ return undefined;
3029
+ }
3030
+ /**
3031
+ * Parse the error message from a transaction error.
3032
+ * Environment-agnostic: handles Anchor errors, program error codes,
3033
+ * simulation failures, and common RPC/network errors.
3034
+ *
3035
+ * Callers (GUI, CLI) can handle environment-specific error types
3036
+ * (e.g. WalletSignTransactionError) before delegating to this function.
3037
+ */
3038
+ function parseTxError(error) {
3039
+ const raw = error?.message || error?.toString?.() || "";
3040
+ const msg = raw === "[object Object]" ? "" : raw;
3041
+ // Transaction expired
3042
+ if (msg.includes("block height exceeded")) {
3043
+ return "Transaction expired";
3044
+ }
3045
+ // Transaction too large
3046
+ if (msg.includes("encoding overruns") ||
3047
+ msg.includes("exceeded maximum size")) {
3048
+ return "Transaction too large: the transaction exceeds the maximum size limit.";
3049
+ }
3050
+ // RPC rate limiting
3051
+ if (msg.includes("429") ||
3052
+ msg.includes("Too Many Requests") ||
3053
+ msg.includes("rate limit")) {
3054
+ return "RPC rate limited: please wait a moment and try again";
3055
+ }
3056
+ // RPC unavailable
3057
+ if (msg.includes("503") || msg.includes("Service Unavailable")) {
3058
+ return "RPC service unavailable: try again shortly";
3059
+ }
3060
+ // Connection errors
3061
+ if (msg.includes("ECONNREFUSED") || msg.includes("ENOTFOUND")) {
3062
+ return "Cannot connect to RPC: check your network or endpoint";
3063
+ }
3064
+ // Timeout
3065
+ if (msg.includes("timeout") ||
3066
+ msg.includes("ETIMEDOUT") ||
3067
+ msg.includes("TimeoutError")) {
3068
+ return "Request timed out: try again";
3069
+ }
3070
+ return msg || "Unknown error";
3071
+ }
3072
+
3073
+
3074
+ /***/ }),
3075
+ /* 49 */
3076
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3077
+
3078
+ "use strict";
3079
+
2949
3080
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2950
3081
  const tslib_1 = __webpack_require__(2);
2951
- tslib_1.__exportStar(__webpack_require__(49), exports);
2952
3082
  tslib_1.__exportStar(__webpack_require__(50), exports);
3083
+ tslib_1.__exportStar(__webpack_require__(51), exports);
2953
3084
 
2954
3085
 
2955
3086
  /***/ }),
2956
- /* 49 */
3087
+ /* 50 */
2957
3088
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2958
3089
 
2959
3090
  "use strict";
@@ -3308,7 +3439,7 @@ exports.DefaultOrderParams = {
3308
3439
 
3309
3440
 
3310
3441
  /***/ }),
3311
- /* 50 */
3442
+ /* 51 */
3312
3443
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3313
3444
 
3314
3445
  "use strict";
@@ -3319,7 +3450,7 @@ exports.getTriggerMarketOrderParams = getTriggerMarketOrderParams;
3319
3450
  exports.getTriggerLimitOrderParams = getTriggerLimitOrderParams;
3320
3451
  exports.getMarketOrderParams = getMarketOrderParams;
3321
3452
  exports.getOrderParams = getOrderParams;
3322
- const types_1 = __webpack_require__(49);
3453
+ const types_1 = __webpack_require__(50);
3323
3454
  function getLimitOrderParams(params) {
3324
3455
  return getOrderParams(Object.assign({}, params, {
3325
3456
  orderType: types_1.OrderType.LIMIT,
@@ -3358,7 +3489,7 @@ function getOrderParams(optionalOrderParams, overridingParams = {}) {
3358
3489
 
3359
3490
 
3360
3491
  /***/ }),
3361
- /* 51 */
3492
+ /* 52 */
3362
3493
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3363
3494
 
3364
3495
  "use strict";
@@ -3368,7 +3499,7 @@ exports.Fraction = void 0;
3368
3499
  exports.bfToDecimal = bfToDecimal;
3369
3500
  const tslib_1 = __webpack_require__(2);
3370
3501
  const anchor_1 = __webpack_require__(4);
3371
- const decimal_js_1 = tslib_1.__importDefault(__webpack_require__(52));
3502
+ const decimal_js_1 = tslib_1.__importDefault(__webpack_require__(53));
3372
3503
  const FractionDecimal = decimal_js_1.default.clone({ precision: 40 });
3373
3504
  /**
3374
3505
  * Replicates the Fraction class from the klend-sdk:
@@ -3419,21 +3550,21 @@ function bfToDecimal(x) {
3419
3550
 
3420
3551
 
3421
3552
  /***/ }),
3422
- /* 52 */
3553
+ /* 53 */
3423
3554
  /***/ ((module) => {
3424
3555
 
3425
3556
  "use strict";
3426
3557
  module.exports = require("decimal.js");
3427
3558
 
3428
3559
  /***/ }),
3429
- /* 53 */
3560
+ /* 54 */
3430
3561
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3431
3562
 
3432
3563
  "use strict";
3433
3564
 
3434
3565
  Object.defineProperty(exports, "__esModule", ({ value: true }));
3435
3566
  exports.JupiterApiClient = exports.JUPITER_API_DEFAULT = exports.JupTokenList = void 0;
3436
- const zod_1 = __webpack_require__(54);
3567
+ const zod_1 = __webpack_require__(55);
3437
3568
  class JupTokenList {
3438
3569
  constructor(tokens) {
3439
3570
  this.tokens = tokens;
@@ -3585,14 +3716,14 @@ exports.JupiterApiClient = JupiterApiClient;
3585
3716
 
3586
3717
 
3587
3718
  /***/ }),
3588
- /* 54 */
3719
+ /* 55 */
3589
3720
  /***/ ((module) => {
3590
3721
 
3591
3722
  "use strict";
3592
3723
  module.exports = require("zod");
3593
3724
 
3594
3725
  /***/ }),
3595
- /* 55 */
3726
+ /* 56 */
3596
3727
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3597
3728
 
3598
3729
  "use strict";
@@ -3723,7 +3854,7 @@ exports.PositionCategorizer = PositionCategorizer;
3723
3854
 
3724
3855
 
3725
3856
  /***/ }),
3726
- /* 56 */
3857
+ /* 57 */
3727
3858
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3728
3859
 
3729
3860
  "use strict";
@@ -3779,7 +3910,7 @@ exports.EmergencyAccessUpdateArgs = EmergencyAccessUpdateArgs;
3779
3910
 
3780
3911
 
3781
3912
  /***/ }),
3782
- /* 57 */
3913
+ /* 58 */
3783
3914
  /***/ ((__unused_webpack_module, exports) => {
3784
3915
 
3785
3916
  "use strict";
@@ -3805,7 +3936,7 @@ VoteAuthorize.Withdrawer = { withdrawer: {} };
3805
3936
 
3806
3937
 
3807
3938
  /***/ }),
3808
- /* 58 */
3939
+ /* 59 */
3809
3940
  /***/ ((__unused_webpack_module, exports) => {
3810
3941
 
3811
3942
  "use strict";
@@ -3860,14 +3991,14 @@ var ClusterNetwork;
3860
3991
 
3861
3992
 
3862
3993
  /***/ }),
3863
- /* 59 */
3994
+ /* 60 */
3864
3995
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3865
3996
 
3866
3997
  "use strict";
3867
3998
 
3868
3999
  Object.defineProperty(exports, "__esModule", ({ value: true }));
3869
4000
  exports.GlamClient = void 0;
3870
- const base_1 = __webpack_require__(60);
4001
+ const base_1 = __webpack_require__(61);
3871
4002
  const drift_1 = __webpack_require__(62);
3872
4003
  const jupiter_1 = __webpack_require__(67);
3873
4004
  const marinade_1 = __webpack_require__(70);
@@ -4005,7 +4136,7 @@ exports.GlamClient = GlamClient;
4005
4136
 
4006
4137
 
4007
4138
  /***/ }),
4008
- /* 60 */
4139
+ /* 61 */
4009
4140
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4010
4141
 
4011
4142
  "use strict";
@@ -4022,9 +4153,9 @@ const lookupTables_1 = __webpack_require__(44);
4022
4153
  const accounts_1 = __webpack_require__(33);
4023
4154
  const spl_token_1 = __webpack_require__(26);
4024
4155
  const glamExports_1 = __webpack_require__(3);
4025
- const clientConfig_1 = __webpack_require__(58);
4156
+ const clientConfig_1 = __webpack_require__(59);
4026
4157
  const models_1 = __webpack_require__(24);
4027
- const error_1 = __webpack_require__(61);
4158
+ const error_1 = __webpack_require__(48);
4028
4159
  const blockhash_1 = __webpack_require__(40);
4029
4160
  const glamPDAs_1 = __webpack_require__(43);
4030
4161
  const spl_token_metadata_1 = __webpack_require__(27);
@@ -4231,7 +4362,8 @@ class BaseClient {
4231
4362
  const errTx = await this.connection.getTransaction(txSig, {
4232
4363
  maxSupportedTransactionVersion: 0,
4233
4364
  });
4234
- throw new error_1.GlamError((0, transaction_1.parseProgramLogs)(errTx?.meta?.logMessages), errTx?.meta?.err || undefined, errTx?.meta?.logMessages || []);
4365
+ const logs = errTx?.meta?.logMessages || [];
4366
+ throw new error_1.GlamError((0, transaction_1.parseProgramLogs)(logs, this.staging), errTx?.meta?.err, logs);
4235
4367
  }
4236
4368
  return txSig;
4237
4369
  }
@@ -4478,7 +4610,7 @@ class BaseClient {
4478
4610
  const integrationPolicy = stateAccount.integrationAcls?.find((acl) => acl.integrationProgram.equals(integProgramId));
4479
4611
  const policyData = integrationPolicy?.protocolPolicies?.find((policy) => policy.protocolBitflag === protocolBitflag)?.data;
4480
4612
  if (policyData) {
4481
- return policyClass.decode(policyData);
4613
+ return policyClass.decode(policyData, this.staging);
4482
4614
  }
4483
4615
  return null;
4484
4616
  }
@@ -4509,25 +4641,6 @@ class BaseTxBuilder {
4509
4641
  exports.BaseTxBuilder = BaseTxBuilder;
4510
4642
 
4511
4643
 
4512
- /***/ }),
4513
- /* 61 */
4514
- /***/ ((__unused_webpack_module, exports) => {
4515
-
4516
- "use strict";
4517
-
4518
- Object.defineProperty(exports, "__esModule", ({ value: true }));
4519
- exports.GlamError = void 0;
4520
- class GlamError extends Error {
4521
- constructor(message, rawError, programLogs) {
4522
- super(message);
4523
- this.message = message;
4524
- this.rawError = rawError;
4525
- this.programLogs = programLogs;
4526
- }
4527
- }
4528
- exports.GlamError = GlamError;
4529
-
4530
-
4531
4644
  /***/ }),
4532
4645
  /* 62 */
4533
4646
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
@@ -4549,9 +4662,9 @@ tslib_1.__exportStar(__webpack_require__(66), exports);
4549
4662
  Object.defineProperty(exports, "__esModule", ({ value: true }));
4550
4663
  exports.DriftProtocolClient = exports.DriftMarketConfigs = exports.DRIFT_MARGIN_PRECISION = exports.DRIFT_SIGNER = void 0;
4551
4664
  const web3_js_1 = __webpack_require__(5);
4552
- const types_1 = __webpack_require__(49);
4665
+ const types_1 = __webpack_require__(50);
4553
4666
  const driftLayouts_1 = __webpack_require__(64);
4554
- const base_1 = __webpack_require__(60);
4667
+ const base_1 = __webpack_require__(61);
4555
4668
  const constants_1 = __webpack_require__(34);
4556
4669
  const spl_token_1 = __webpack_require__(26);
4557
4670
  const anchor_1 = __webpack_require__(4);
@@ -5189,7 +5302,7 @@ const common_1 = __webpack_require__(28);
5189
5302
  const base_1 = __webpack_require__(65);
5190
5303
  const utils_1 = __webpack_require__(32);
5191
5304
  const spl_token_1 = __webpack_require__(26);
5192
- const types_1 = __webpack_require__(49);
5305
+ const types_1 = __webpack_require__(50);
5193
5306
  const constants_1 = __webpack_require__(34);
5194
5307
  class SpotPosition {
5195
5308
  constructor(data) {
@@ -5298,6 +5411,20 @@ class DriftVaultDepositor extends base_1.Decodable {
5298
5411
  get netShares() {
5299
5412
  return this.vaultShares.sub(this.lastWithdrawRequest.shares);
5300
5413
  }
5414
+ /** Rebase shares to match the vault's current shares base. */
5415
+ rebaseShares(shares, vaultSharesBase) {
5416
+ if (this.vaultSharesBase === vaultSharesBase)
5417
+ return shares;
5418
+ const expoDiff = vaultSharesBase - this.vaultSharesBase;
5419
+ const divisor = new anchor_1.BN(10).pow(new anchor_1.BN(expoDiff));
5420
+ return shares.div(divisor);
5421
+ }
5422
+ /** Net shares rebased to the vault's current shares base. */
5423
+ netSharesRebased(vaultSharesBase) {
5424
+ const rebased = this.rebaseShares(this.vaultShares, vaultSharesBase);
5425
+ const pendingRebased = this.rebaseShares(this.lastWithdrawRequest.shares, vaultSharesBase);
5426
+ return rebased.sub(pendingRebased);
5427
+ }
5301
5428
  }
5302
5429
  exports.DriftVaultDepositor = DriftVaultDepositor;
5303
5430
  DriftVaultDepositor._layout = (0, borsh_1.struct)([
@@ -5354,7 +5481,7 @@ class DriftVault extends base_1.Decodable {
5354
5481
  const baseAssetAmount = aumScaledUsd
5355
5482
  .mul(new anchor_1.BN(10 ** spotMarket.decimals))
5356
5483
  .div(spotMarket.lastOraclePrice);
5357
- return baseAssetAmount.sub(this.managerBorrowedValue);
5484
+ return baseAssetAmount.add(this.managerBorrowedValue);
5358
5485
  }
5359
5486
  }
5360
5487
  exports.DriftVault = DriftVault;
@@ -5868,7 +5995,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
5868
5995
  exports.DriftVaultsClient = void 0;
5869
5996
  const web3_js_1 = __webpack_require__(5);
5870
5997
  const driftLayouts_1 = __webpack_require__(64);
5871
- const base_1 = __webpack_require__(60);
5998
+ const base_1 = __webpack_require__(61);
5872
5999
  const constants_1 = __webpack_require__(34);
5873
6000
  const anchor_1 = __webpack_require__(4);
5874
6001
  const protocol_v2_1 = __webpack_require__(63);
@@ -6135,12 +6262,12 @@ exports.JupiterSwapClient = void 0;
6135
6262
  const anchor_1 = __webpack_require__(4);
6136
6263
  const web3_js_1 = __webpack_require__(5);
6137
6264
  const spl_token_1 = __webpack_require__(26);
6138
- const base_1 = __webpack_require__(60);
6265
+ const base_1 = __webpack_require__(61);
6139
6266
  const constants_1 = __webpack_require__(34);
6140
6267
  const assets_1 = __webpack_require__(68);
6141
6268
  const accounts_1 = __webpack_require__(33);
6142
6269
  const glamPDAs_1 = __webpack_require__(43);
6143
- const jupiterApi_1 = __webpack_require__(53);
6270
+ const jupiterApi_1 = __webpack_require__(54);
6144
6271
  class TxBuilder extends base_1.BaseTxBuilder {
6145
6272
  constructor() {
6146
6273
  super(...arguments);
@@ -6192,7 +6319,7 @@ class TxBuilder extends base_1.BaseTxBuilder {
6192
6319
  inputMint = new web3_js_1.PublicKey(quoteParams?.inputMint || resolvedQuoteResponse.inputMint);
6193
6320
  outputMint = new web3_js_1.PublicKey(quoteParams?.outputMint || resolvedQuoteResponse.outputMint);
6194
6321
  amount = new anchor_1.BN(quoteParams?.amount || resolvedQuoteResponse.inAmount);
6195
- swapInstructions = await this.client.jupApi.getSwapInstructions(resolvedQuoteResponse, glamVault);
6322
+ swapInstructions = await this.client.jupApi.getSwapInstructions(resolvedQuoteResponse, glamVault, options.trackingAccount);
6196
6323
  }
6197
6324
  else {
6198
6325
  // If swapInstructions is provided, we need to extract mints and amount from quoteParams or quoteResponse
@@ -6273,7 +6400,7 @@ exports.getAssetMeta = getAssetMeta;
6273
6400
  const spl_token_1 = __webpack_require__(26);
6274
6401
  const web3_js_1 = __webpack_require__(5);
6275
6402
  const sanctum_lst_list_1 = __webpack_require__(69);
6276
- const clientConfig_1 = __webpack_require__(58);
6403
+ const clientConfig_1 = __webpack_require__(59);
6277
6404
  exports.STAKE_POOLS = sanctum_lst_list_1.LstList.filter((lst) => lst.pool.program === "Spl" ||
6278
6405
  lst.pool.program === "Marinade" ||
6279
6406
  lst.pool.program === "SanctumSpl" ||
@@ -6756,10 +6883,10 @@ const anchor_1 = __webpack_require__(4);
6756
6883
  const web3_js_1 = __webpack_require__(5);
6757
6884
  const spl_token_1 = __webpack_require__(26);
6758
6885
  const marinade_ts_sdk_1 = __webpack_require__(71);
6759
- const base_1 = __webpack_require__(60);
6886
+ const base_1 = __webpack_require__(61);
6760
6887
  const constants_1 = __webpack_require__(34);
6761
6888
  const accounts_1 = __webpack_require__(33);
6762
- const clientConfig_1 = __webpack_require__(58);
6889
+ const clientConfig_1 = __webpack_require__(59);
6763
6890
  class TxBuilder extends base_1.BaseTxBuilder {
6764
6891
  async depositIxs(amount, glamSigner) {
6765
6892
  const marinadeState = await this.client.fetchMarinadeState();
@@ -7019,7 +7146,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
7019
7146
  exports.VaultClient = void 0;
7020
7147
  const anchor_1 = __webpack_require__(4);
7021
7148
  const web3_js_1 = __webpack_require__(5);
7022
- const base_1 = __webpack_require__(60);
7149
+ const base_1 = __webpack_require__(61);
7023
7150
  const accounts_1 = __webpack_require__(33);
7024
7151
  const constants_1 = __webpack_require__(34);
7025
7152
  const spl_token_1 = __webpack_require__(26);
@@ -7307,7 +7434,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
7307
7434
  exports.StateClient = void 0;
7308
7435
  const tslib_1 = __webpack_require__(2);
7309
7436
  const anchor = tslib_1.__importStar(__webpack_require__(4));
7310
- const base_1 = __webpack_require__(60);
7437
+ const base_1 = __webpack_require__(61);
7311
7438
  const models_1 = __webpack_require__(24);
7312
7439
  const glamPDAs_1 = __webpack_require__(43);
7313
7440
  const common_1 = __webpack_require__(28);
@@ -7469,7 +7596,7 @@ exports.KaminoLendingClient = void 0;
7469
7596
  const tslib_1 = __webpack_require__(2);
7470
7597
  const anchor_1 = __webpack_require__(4);
7471
7598
  const web3_js_1 = __webpack_require__(5);
7472
- const base_1 = __webpack_require__(60);
7599
+ const base_1 = __webpack_require__(61);
7473
7600
  const borsh = tslib_1.__importStar(__webpack_require__(30));
7474
7601
  const accounts_1 = __webpack_require__(33);
7475
7602
  const spl_token_1 = __webpack_require__(26);
@@ -7944,6 +8071,49 @@ class TxBuilder extends base_1.BaseTxBuilder {
7944
8071
  const tx = this.build(ixs, txOptions);
7945
8072
  return await this.client.base.intoVersionedTransaction(tx, txOptions);
7946
8073
  }
8074
+ async requestElevationGroupIxs(lendingMarket, elevationGroup, glamSigner) {
8075
+ const vault = this.client.base.vaultPda;
8076
+ const obligation = this.client.getObligationPda(vault, lendingMarket);
8077
+ // Find all reserve keys
8078
+ const { activeDeposits, activeBorrows } = await this.client.fetchAndParseObligation(obligation);
8079
+ const reserveKeys = [
8080
+ ...activeDeposits.map(({ depositReserve }) => depositReserve),
8081
+ ...activeBorrows.map(({ borrowReserve }) => borrowReserve),
8082
+ ];
8083
+ // Build refresh ixs
8084
+ const reserves = await this.client.fetchAndParseReserves(reserveKeys);
8085
+ const refreshReservesIx = this.refreshReservesBatchIx(reserves, false);
8086
+ const refreshObligationIx = this.refreshObligationIx({
8087
+ lendingMarket,
8088
+ obligation,
8089
+ reserves: reserveKeys,
8090
+ });
8091
+ const ix = await this.client.base.extKaminoProgram.methods
8092
+ // @ts-expect-error staging only
8093
+ .lendingRequestElevationGroup(elevationGroup)
8094
+ .accounts({
8095
+ glamState: this.client.base.statePda,
8096
+ glamSigner,
8097
+ obligation,
8098
+ lendingMarket,
8099
+ })
8100
+ .remainingAccounts(reserveKeys.map((pubkey) => ({
8101
+ pubkey,
8102
+ isSigner: false,
8103
+ isWritable: false,
8104
+ })))
8105
+ .instruction();
8106
+ return [refreshReservesIx, refreshObligationIx, ix];
8107
+ }
8108
+ async requestElevationGroupTx(lendingMarket, elevationGroup, txOptions = {}) {
8109
+ if (!this.client.base.staging) {
8110
+ throw new Error("requestElevationGroupTx is only available in staging mode");
8111
+ }
8112
+ const glamSigner = txOptions.signer || this.client.base.signer;
8113
+ const ixs = await this.requestElevationGroupIxs(lendingMarket, elevationGroup, glamSigner);
8114
+ const tx = this.build(ixs, txOptions);
8115
+ return await this.client.base.intoVersionedTransaction(tx, txOptions);
8116
+ }
7947
8117
  async repayIxs(market, asset, amount, glamSigner) {
7948
8118
  const vault = this.client.base.vaultPda;
7949
8119
  const obligation = this.client.getObligationPda(vault, market);
@@ -8021,6 +8191,16 @@ class KaminoLendingClient {
8021
8191
  const tx = await this.txBuilder.borrowTx(new web3_js_1.PublicKey(market), new web3_js_1.PublicKey(asset), new anchor_1.BN(amount), txOptions);
8022
8192
  return await this.base.sendAndConfirm(tx);
8023
8193
  }
8194
+ /**
8195
+ * Requests an elevation group for an obligation.
8196
+ */
8197
+ async requestElevationGroup(market, elevationGroup, txOptions = {}) {
8198
+ if (!this.base.staging) {
8199
+ throw new Error("requestElevationGroup is only available in staging mode");
8200
+ }
8201
+ const tx = await this.txBuilder.requestElevationGroupTx(new web3_js_1.PublicKey(market), elevationGroup, txOptions);
8202
+ return await this.base.sendAndConfirm(tx);
8203
+ }
8024
8204
  /**
8025
8205
  * Repays asset to the lending market.
8026
8206
  */
@@ -8134,7 +8314,7 @@ const borsh_1 = __webpack_require__(30);
8134
8314
  const web3_js_1 = __webpack_require__(5);
8135
8315
  const utils_1 = __webpack_require__(32);
8136
8316
  const base_1 = __webpack_require__(65);
8137
- const decimal_js_1 = tslib_1.__importDefault(__webpack_require__(52));
8317
+ const decimal_js_1 = tslib_1.__importDefault(__webpack_require__(53));
8138
8318
  const constants_1 = __webpack_require__(34);
8139
8319
  const MAX_RESERVES = 25;
8140
8320
  class KVaultState extends base_1.Decodable {
@@ -8439,7 +8619,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
8439
8619
  exports.KaminoFarmClient = void 0;
8440
8620
  const anchor_1 = __webpack_require__(4);
8441
8621
  const web3_js_1 = __webpack_require__(5);
8442
- const base_1 = __webpack_require__(60);
8622
+ const base_1 = __webpack_require__(61);
8443
8623
  const spl_token_1 = __webpack_require__(26);
8444
8624
  const constants_1 = __webpack_require__(34);
8445
8625
  const rpc_1 = __webpack_require__(37);
@@ -8701,7 +8881,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
8701
8881
  exports.KaminoVaultsClient = void 0;
8702
8882
  const anchor_1 = __webpack_require__(4);
8703
8883
  const web3_js_1 = __webpack_require__(5);
8704
- const base_1 = __webpack_require__(60);
8884
+ const base_1 = __webpack_require__(61);
8705
8885
  const utils_1 = __webpack_require__(32);
8706
8886
  const spl_token_1 = __webpack_require__(26);
8707
8887
  const constants_1 = __webpack_require__(34);
@@ -8896,7 +9076,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
8896
9076
  exports.InvestClient = void 0;
8897
9077
  const web3_js_1 = __webpack_require__(5);
8898
9078
  const spl_token_1 = __webpack_require__(26);
8899
- const base_1 = __webpack_require__(60);
9079
+ const base_1 = __webpack_require__(61);
8900
9080
  const constants_1 = __webpack_require__(34);
8901
9081
  const glamPDAs_1 = __webpack_require__(43);
8902
9082
  const accounts_1 = __webpack_require__(33);
@@ -9225,7 +9405,7 @@ const anchor_1 = __webpack_require__(4);
9225
9405
  const assets_1 = __webpack_require__(68);
9226
9406
  const models_1 = __webpack_require__(24);
9227
9407
  const utils_1 = __webpack_require__(32);
9228
- const decimal_js_1 = tslib_1.__importDefault(__webpack_require__(52));
9408
+ const decimal_js_1 = tslib_1.__importDefault(__webpack_require__(53));
9229
9409
  const spl_token_1 = __webpack_require__(26);
9230
9410
  const constants_1 = __webpack_require__(34);
9231
9411
  const deser_1 = __webpack_require__(82);
@@ -9694,11 +9874,16 @@ class PriceClient {
9694
9874
  const { marketIndex, marketPda } = perpPosition;
9695
9875
  const { lastOraclePrice, cumulativeFundingRateLong, cumulativeFundingRateShort, } = perpMarketsMap.get(marketPda);
9696
9876
  const amount = perpPosition.getUsdValueScaled(lastOraclePrice, cumulativeFundingRateLong, cumulativeFundingRateShort);
9877
+ const baseAssetAmountUi = (0, utils_1.toUiAmount)(perpPosition.baseAssetAmount, 9);
9697
9878
  const { usdPrice, slot } = await this.getTokenPrice(constants_1.USDC, tokenPricesMap);
9698
9879
  const holding = new Holding(constants_1.USDC, 6, amount, usdPrice, { slot, source: priceSource }, "DriftProtocol", {
9699
9880
  user: userPda,
9700
9881
  marketIndex,
9701
9882
  marketType: "perp",
9883
+ // Preserve both USD value and signed base size for downstream UIs.
9884
+ usdValueUi: (0, utils_1.toUiAmount)(amount, 6),
9885
+ baseAssetAmount: perpPosition.baseAssetAmount.toString(),
9886
+ baseAssetAmountUi,
9702
9887
  });
9703
9888
  holdings.push(holding);
9704
9889
  }
@@ -9712,15 +9897,54 @@ class PriceClient {
9712
9897
  const dvaultUserData = accountsDataMap.get(dvault.user);
9713
9898
  const { spotPositions, perpPositions } = deser_1.DriftUser.decode(dvault.user, dvaultUserData);
9714
9899
  const aum = dvault.aumInBaseAsset(spotPositions, perpPositions, spotMarketsMap, perpMarketsMap);
9715
- const amount = depositor.netShares
9716
- .mul(aum)
9717
- .div(dvault.totalShares)
9718
- .add(depositor.lastWithdrawRequest.value);
9900
+ // Deduct accrued management fee from AUM (matches Rust logic)
9901
+ const clockData = accountsDataMap.get(web3_js_1.SYSVAR_CLOCK_PUBKEY);
9902
+ const nowTs = new anchor_1.BN(clockData ? clockData.readUInt32LE(32) : 0);
9903
+ let aumPostMgmt = aum;
9904
+ if (dvault.managementFee.gtn(0) && aum.gtn(0)) {
9905
+ const sinceLast = nowTs.sub(dvault.lastFeeUpdateTs);
9906
+ const depositorsAum = aum
9907
+ .mul(dvault.userShares)
9908
+ .div(dvault.totalShares);
9909
+ const mgmtFee = depositorsAum
9910
+ .mul(dvault.managementFee)
9911
+ .div(new anchor_1.BN(1000000))
9912
+ .mul(sinceLast)
9913
+ .div(new anchor_1.BN(31536000));
9914
+ aumPostMgmt = aum.sub(mgmtFee);
9915
+ }
9916
+ // Compute depositor position WITHOUT pending withdrawal (matches Rust logic)
9917
+ const depositorNetShares = depositor.netSharesRebased(dvault.sharesBase);
9918
+ const sharesPosition = depositorNetShares
9919
+ .mul(aumPostMgmt)
9920
+ .div(dvault.totalShares);
9921
+ const pendingWithdrawalValue = depositor.lastWithdrawRequest.value;
9922
+ // PnL & fee breakdown (perf fee is computed on shares position only)
9923
+ const costBasis = depositor.netDeposits.add(depositor.cumulativeProfitShareAmount);
9924
+ const pnlBeforeFees = sharesPosition.sub(costBasis);
9925
+ let pendingPerfFee = new anchor_1.BN(0);
9926
+ if (dvault.profitShare > 0) {
9927
+ const hurdleBaseline = costBasis
9928
+ .mul(new anchor_1.BN(dvault.hurdleRate))
9929
+ .div(new anchor_1.BN(1000000));
9930
+ if (pnlBeforeFees.gt(hurdleBaseline)) {
9931
+ pendingPerfFee = pnlBeforeFees
9932
+ .mul(new anchor_1.BN(dvault.profitShare))
9933
+ .div(new anchor_1.BN(1000000));
9934
+ }
9935
+ }
9936
+ // final = shares_position - perf_fee + pending_withdrawal
9937
+ const amount = sharesPosition
9938
+ .sub(pendingPerfFee)
9939
+ .add(pendingWithdrawalValue);
9719
9940
  const { mint, decimals } = dvault.getBaseAsset(spotMarketsMap);
9720
9941
  const { usdPrice, slot } = await this.getTokenPrice(mint, tokenPricesMap);
9721
9942
  const holding = new Holding(mint, decimals, amount, usdPrice, { slot, source: priceSource }, "DriftVaults", {
9722
9943
  vault: dvault.getAddress(),
9723
9944
  depositor: depositor.getAddress(),
9945
+ pnlBeforeFees,
9946
+ pendingPerfFee,
9947
+ profitSharePct: dvault.profitShare / 10000,
9724
9948
  });
9725
9949
  holdings.push(holding);
9726
9950
  }
@@ -9771,10 +9995,14 @@ class PriceClient {
9771
9995
  }
9772
9996
  async getKaminoVaultsHoldings(kvaultAtasAndStates, reservesMap, accountsDataMap, tokenPricesMap, priceSource) {
9773
9997
  const holdings = [];
9998
+ const FRACTION_SCALE = new decimal_js_1.default(2).pow(60); // U68F60 fixed-point scale
9999
+ const SECONDS_PER_YEAR_KAMINO = 31556926;
10000
+ const clockData = accountsDataMap.get(web3_js_1.SYSVAR_CLOCK_PUBKEY);
10001
+ const nowTs = clockData ? clockData.readUInt32LE(32) : 0;
9774
10002
  for (const [ata, kvaultState] of kvaultAtasAndStates.pkEntries()) {
9775
10003
  const ataData = accountsDataMap.get(ata);
9776
10004
  const tokenAccount = spl_token_1.AccountLayout.decode(ataData);
9777
- let aum = new decimal_js_1.default(kvaultState.tokenAvailable.toString());
10005
+ let aumAndFees = new decimal_js_1.default(kvaultState.tokenAvailable.toString());
9778
10006
  kvaultState.validAllocations.map((allocation) => {
9779
10007
  const reserve = reservesMap.get(allocation.reserve);
9780
10008
  const { collateralExchangeRate } = reserve;
@@ -9782,17 +10010,46 @@ class PriceClient {
9782
10010
  const liqAmount = new decimal_js_1.default(allocation.ctokenAllocation.toString())
9783
10011
  .div(collateralExchangeRate)
9784
10012
  .floor();
9785
- aum = aum.add(liqAmount);
10013
+ aumAndFees = aumAndFees.add(liqAmount);
9786
10014
  });
9787
- // calculate liquidity token amount
10015
+ // Deduct pending fees from AUM (matches Rust: aum = available + allocated - pending_fees)
10016
+ const pendingFees = new decimal_js_1.default(kvaultState.pendingFeesSf.toString()).div(FRACTION_SCALE);
10017
+ let vaultAum = aumAndFees.sub(pendingFees);
10018
+ const sharesIssued = new decimal_js_1.default(kvaultState.sharesIssued.toString());
10019
+ if (vaultAum.lte(0) || sharesIssued.lte(0)) {
10020
+ continue; // early return like Rust: if vault_aum == 0 || shares_issued == 0
10021
+ }
10022
+ // Management fee: prev_aum * from_bps(mgmt_fee_bps) * since_last / SECONDS_PER_YEAR
10023
+ const prevAum = new decimal_js_1.default(kvaultState.prevAumSf.toString()).div(FRACTION_SCALE);
10024
+ const sinceLast = Math.max(0, nowTs - kvaultState.lastFeeChargeTimestamp.toNumber());
10025
+ let mgmtCharge = new decimal_js_1.default(0);
10026
+ if (sinceLast > 0) {
10027
+ const mgmtFeeRate = new decimal_js_1.default(kvaultState.managementFeeBps.toString()).div(10000);
10028
+ mgmtCharge = prevAum
10029
+ .mul(mgmtFeeRate)
10030
+ .mul(sinceLast)
10031
+ .div(SECONDS_PER_YEAR_KAMINO);
10032
+ }
10033
+ // Performance fee: from_bps(perf_fee_bps) * max(0, vault_aum - prev_aum)
10034
+ const earnedInterest = decimal_js_1.default.max(0, vaultAum.sub(prevAum));
10035
+ const perfCharge = new decimal_js_1.default(kvaultState.performanceFeeBps.toString())
10036
+ .div(10000)
10037
+ .mul(earnedInterest);
10038
+ // Deduct fees from AUM (matches Rust: vault_aum = vault_aum - mgmt_charge - perf_charge)
10039
+ vaultAum = vaultAum.sub(mgmtCharge).sub(perfCharge);
10040
+ // calculate liquidity token amount: shares * vault_aum.floor() / shares_issued
9788
10041
  const amount = new decimal_js_1.default(tokenAccount.amount.toString())
9789
- .div(new decimal_js_1.default(kvaultState.sharesIssued.toString()))
9790
- .mul(aum)
10042
+ .mul(vaultAum.floor())
10043
+ .div(sharesIssued)
9791
10044
  .floor();
9792
10045
  const { usdPrice, slot } = await this.getTokenPrice(kvaultState.tokenMint, tokenPricesMap);
9793
10046
  const holding = new Holding(kvaultState.tokenMint, kvaultState.tokenMintDecimals.toNumber(), new anchor_1.BN(amount.toString()), usdPrice, { slot, source: priceSource }, "KaminoVaults", {
9794
10047
  kaminoVault: kvaultState._address,
9795
10048
  kaminoVaultAta: ata,
10049
+ pendingMgmtFee: mgmtCharge.toFixed(0),
10050
+ pendingPerfFee: perfCharge.toFixed(0),
10051
+ managementFeeBps: kvaultState.managementFeeBps.toNumber(),
10052
+ performanceFeeBps: kvaultState.performanceFeeBps.toNumber(),
9796
10053
  });
9797
10054
  holdings.push(holding);
9798
10055
  }
@@ -10227,7 +10484,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
10227
10484
  exports.FeesClient = void 0;
10228
10485
  const web3_js_1 = __webpack_require__(5);
10229
10486
  const spl_token_1 = __webpack_require__(26);
10230
- const base_1 = __webpack_require__(60);
10487
+ const base_1 = __webpack_require__(61);
10231
10488
  const accounts_1 = __webpack_require__(33);
10232
10489
  class TxBuilder extends base_1.BaseTxBuilder {
10233
10490
  async crystallizeFeesIxs(glamSigner) {
@@ -10403,13 +10660,13 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
10403
10660
  exports.MintClient = void 0;
10404
10661
  const anchor_1 = __webpack_require__(4);
10405
10662
  const web3_js_1 = __webpack_require__(5);
10406
- const base_1 = __webpack_require__(60);
10663
+ const base_1 = __webpack_require__(61);
10407
10664
  const spl_token_1 = __webpack_require__(26);
10408
10665
  const models_1 = __webpack_require__(24);
10409
10666
  const constants_1 = __webpack_require__(34);
10410
10667
  const utils_1 = __webpack_require__(32);
10411
10668
  const glamPDAs_1 = __webpack_require__(43);
10412
- const clientConfig_1 = __webpack_require__(58);
10669
+ const clientConfig_1 = __webpack_require__(59);
10413
10670
  const common_1 = __webpack_require__(28);
10414
10671
  class TxBuilder extends base_1.BaseTxBuilder {
10415
10672
  async setTokenAccountsStatesIx(tokenAccounts, frozen, glamSigner) {
@@ -10849,7 +11106,7 @@ exports.MintClient = MintClient;
10849
11106
 
10850
11107
  Object.defineProperty(exports, "__esModule", ({ value: true }));
10851
11108
  exports.AccessClient = void 0;
10852
- const base_1 = __webpack_require__(60);
11109
+ const base_1 = __webpack_require__(61);
10853
11110
  const models_1 = __webpack_require__(24);
10854
11111
  class TxBuilder extends base_1.BaseTxBuilder {
10855
11112
  async emergencyAccessUpdateIx(args, signer) {
@@ -10974,7 +11231,7 @@ exports.AccessClient = AccessClient;
10974
11231
 
10975
11232
  Object.defineProperty(exports, "__esModule", ({ value: true }));
10976
11233
  exports.TimelockClient = void 0;
10977
- const base_1 = __webpack_require__(60);
11234
+ const base_1 = __webpack_require__(61);
10978
11235
  const models_1 = __webpack_require__(24);
10979
11236
  class TxBuilder extends base_1.BaseTxBuilder {
10980
11237
  async applyStateTimelockIx(glamSigner) {
@@ -11078,7 +11335,7 @@ exports.StakeClient = void 0;
11078
11335
  const anchor_1 = __webpack_require__(4);
11079
11336
  const web3_js_1 = __webpack_require__(5);
11080
11337
  const constants_1 = __webpack_require__(34);
11081
- const base_1 = __webpack_require__(60);
11338
+ const base_1 = __webpack_require__(61);
11082
11339
  class TxBuilder extends base_1.BaseTxBuilder {
11083
11340
  async initializeAndDelegateStakeIxs(vote, amount, glamSigner) {
11084
11341
  const [stakeAccount, createStakeAccountIx] = await this.client.createStakeAccount(glamSigner);
@@ -11302,7 +11559,7 @@ exports.StakePoolClient = void 0;
11302
11559
  const anchor_1 = __webpack_require__(4);
11303
11560
  const web3_js_1 = __webpack_require__(5);
11304
11561
  const constants_1 = __webpack_require__(34);
11305
- const base_1 = __webpack_require__(60);
11562
+ const base_1 = __webpack_require__(61);
11306
11563
  const spl_stake_pool_1 = __webpack_require__(89);
11307
11564
  const spl_token_1 = __webpack_require__(26);
11308
11565
  const accounts_1 = __webpack_require__(33);
@@ -11523,7 +11780,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
11523
11780
  exports.CctpClient = exports.CctpBridgeEvent = void 0;
11524
11781
  const anchor_1 = __webpack_require__(4);
11525
11782
  const web3_js_1 = __webpack_require__(5);
11526
- const base_1 = __webpack_require__(60);
11783
+ const base_1 = __webpack_require__(61);
11527
11784
  const constants_1 = __webpack_require__(34);
11528
11785
  const utils_1 = __webpack_require__(32);
11529
11786
  const bytes_1 = __webpack_require__(36);
@@ -15505,17 +15762,10 @@ const defaultConfigPath = () => {
15505
15762
  return configPath;
15506
15763
  };
15507
15764
  const parseTxError = (error) => {
15508
- if (error instanceof web3_js_1.TransactionExpiredBlockheightExceededError) {
15509
- return "Transaction expired";
15510
- }
15511
15765
  if (error instanceof anchor_1.AnchorError) {
15512
15766
  return error.error.errorMessage;
15513
15767
  }
15514
- const message = error?.message || "Unknown error";
15515
- if (message.includes("encoding overruns Uint8Array")) {
15516
- return "Transaction too large: the transaction exceeds the maximum size limit. Try using an address lookup table (glam alt create) to reduce transaction size.";
15517
- }
15518
- return message;
15768
+ return (0, glam_sdk_1.parseTxError)(error);
15519
15769
  };
15520
15770
  exports.parseTxError = parseTxError;
15521
15771
  async function confirmOperation(message) {
@@ -48050,7 +48300,7 @@ exports.installKaminoLendCommands = installKaminoLendCommands;
48050
48300
  const glam_sdk_1 = __webpack_require__(1);
48051
48301
  const utils_1 = __webpack_require__(103);
48052
48302
  const web3_js_1 = __webpack_require__(5);
48053
- const decimal_js_1 = __webpack_require__(52);
48303
+ const decimal_js_1 = __webpack_require__(53);
48054
48304
  function installKaminoLendCommands(klend, context) {
48055
48305
  klend
48056
48306
  .command("view-policy")
@@ -48253,6 +48503,18 @@ function installKaminoLendCommands(klend, context) {
48253
48503
  message: `Confirm repaying ${amount} ${asset}`,
48254
48504
  }, (txSig) => `Repaid ${amount} ${asset}: ${txSig}`);
48255
48505
  });
48506
+ klend
48507
+ .command("request-elevation-group")
48508
+ .argument("<market>", "Kamino lending market public key", utils_1.validatePublicKey)
48509
+ .argument("<elevation-group>", "Elevation group number", parseInt)
48510
+ .option("-y, --yes", "Skip confirmation prompt", false)
48511
+ .description("Request elevation group for an obligation (staging only)")
48512
+ .action(async (market, elevationGroup, options) => {
48513
+ await (0, utils_1.executeTxWithErrorHandling)(() => context.glamClient.kaminoLending.requestElevationGroup(market, elevationGroup, context.txOptions), {
48514
+ skip: options?.yes,
48515
+ message: `Confirm requesting elevation group ${elevationGroup} for market ${market}`,
48516
+ }, (txSig) => `Requested elevation group ${elevationGroup} for market ${market}: ${txSig}`);
48517
+ });
48256
48518
  }
48257
48519
 
48258
48520
 
@@ -48648,6 +48910,7 @@ function installDelegateCommands(delegate, context) {
48648
48910
  Object.defineProperty(exports, "__esModule", ({ value: true }));
48649
48911
  exports.installJupiterCommands = installJupiterCommands;
48650
48912
  const glam_sdk_1 = __webpack_require__(1);
48913
+ const web3_js_1 = __webpack_require__(5);
48651
48914
  const utils_1 = __webpack_require__(103);
48652
48915
  async function findToken(jupApi, value) {
48653
48916
  const tokenList = await jupApi.fetchTokensList();
@@ -48761,12 +49024,13 @@ function installJupiterCommands(program, context) {
48761
49024
  .option("-s, --slippage-bps <bps>", "Slippage bps, defaults to 5 (0.05%)", "5")
48762
49025
  .option("--use-v1", "Use v1 instruction (default: v2)", false)
48763
49026
  .option("-d, --only-direct-routes", "Direct routes only")
49027
+ .option("-t, --tracking-account <pubkey>", "Tracking account public key")
48764
49028
  .option("-y, --yes", "Skip confirmation", false)
48765
49029
  .action(async (from, to, amount, options) => {
48766
49030
  const jupApi = context.glamClient.jupiterSwap.jupApi;
48767
49031
  const tokenFrom = await findToken(jupApi, from);
48768
49032
  const tokenTo = await findToken(jupApi, to);
48769
- const { maxAccounts, slippageBps, onlyDirectRoutes, useV1 } = options;
49033
+ const { maxAccounts, slippageBps, onlyDirectRoutes, useV1, trackingAccount, } = options;
48770
49034
  const quoteParams = {
48771
49035
  inputMint: tokenFrom.address,
48772
49036
  outputMint: tokenTo.address,
@@ -48779,7 +49043,12 @@ function installJupiterCommands(program, context) {
48779
49043
  ...(onlyDirectRoutes ? { onlyDirectRoutes } : {}),
48780
49044
  instructionVersion: useV1 ? "V1" : "V2",
48781
49045
  };
48782
- await (0, utils_1.executeTxWithErrorHandling)(() => context.glamClient.jupiterSwap.swap({ quoteParams }, context.txOptions), {
49046
+ await (0, utils_1.executeTxWithErrorHandling)(() => context.glamClient.jupiterSwap.swap({
49047
+ quoteParams,
49048
+ trackingAccount: trackingAccount
49049
+ ? new web3_js_1.PublicKey(trackingAccount)
49050
+ : undefined,
49051
+ }, context.txOptions), {
48783
49052
  skip: options?.yes,
48784
49053
  message: `Confirm swapping ${amount} ${tokenFrom.symbol} to ${tokenTo.symbol} with quote params: ${JSON.stringify(quoteParams, null, 2)}`,
48785
49054
  }, (txSig) => `Swapped ${amount} ${tokenFrom.symbol} to ${tokenTo.symbol}: ${txSig}`);
@@ -50319,7 +50588,7 @@ program
50319
50588
  initialize(config, skipSimulation);
50320
50589
  await (0, idl_1.idlCheck)(context.glamClient);
50321
50590
  })
50322
- .version("1.0.12-alpha.1");
50591
+ .version("1.0.12-alpha.2");
50323
50592
  program
50324
50593
  .command("env")
50325
50594
  .description("Display current environment setup")