@glamsystems/glam-cli 0.1.19 → 0.1.21

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 (3) hide show
  1. package/README.md +2 -0
  2. package/main.js +1834 -405
  3. package/package.json +2 -2
package/main.js CHANGED
@@ -25,11 +25,14 @@ tslib_1.__exportStar(__webpack_require__(4), exports);
25
25
  tslib_1.__exportStar(__webpack_require__(7), exports);
26
26
  tslib_1.__exportStar(__webpack_require__(11), exports);
27
27
  tslib_1.__exportStar(__webpack_require__(12), exports);
28
- tslib_1.__exportStar(__webpack_require__(22), exports);
28
+ tslib_1.__exportStar(__webpack_require__(23), exports);
29
29
  tslib_1.__exportStar(__webpack_require__(20), exports);
30
30
  tslib_1.__exportStar(__webpack_require__(13), exports);
31
31
  tslib_1.__exportStar(__webpack_require__(14), exports);
32
- tslib_1.__exportStar(__webpack_require__(35), exports);
32
+ tslib_1.__exportStar(__webpack_require__(36), exports);
33
+ tslib_1.__exportStar(__webpack_require__(37), exports);
34
+ tslib_1.__exportStar(__webpack_require__(21), exports);
35
+ tslib_1.__exportStar(__webpack_require__(22), exports);
33
36
  tslib_1.__exportStar(__webpack_require__(10), exports);
34
37
  tslib_1.__exportStar(__webpack_require__(17), exports);
35
38
  tslib_1.__exportStar(__webpack_require__(16), exports);
@@ -81,7 +84,7 @@ module.exports = require("@solana/web3.js");
81
84
  /* 6 */
82
85
  /***/ ((module) => {
83
86
 
84
- module.exports = /*#__PURE__*/JSON.parse('{"address":"GLAMbTqav9N9witRjswJ8enwp9vv5G8bsSJ2kPJ4rcyc","metadata":{"name":"glam_protocol","version":"0.4.16","spec":"0.1.0","description":"Glam Protocol"},"instructions":[{"name":"add_mint","discriminator":[171,222,111,37,60,166,208,108],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_signer","writable":true,"signer":true},{"name":"new_mint","writable":true},{"name":"extra_metas_account","writable":true,"optional":true},{"name":"openfunds_metadata","writable":true,"optional":true,"pda":{"seeds":[{"kind":"const","value":[109,101,116,97,100,97,116,97]},{"kind":"account","path":"glam_state"}]}},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"policies_program","address":"po1iCYakK3gHCLbuju4wGzFowTMpAJxkqK1iwUqMonY"}],"args":[{"name":"mint_model","type":{"defined":{"name":"MintModel"}}}]},{"name":"burn_tokens","discriminator":[76,15,51,254,229,215,121,66],"accounts":[{"name":"glam_state"},{"name":"glam_signer","writable":true,"signer":true},{"name":"glam_mint","writable":true},{"name":"from_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"from"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"from"},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"}],"args":[{"name":"mint_id","type":"u8"},{"name":"amount","type":"u64"}]},{"name":"claim","discriminator":[62,198,214,193,213,159,108,210],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_escrow","pda":{"seeds":[{"kind":"const","value":[101,115,99,114,111,119]},{"kind":"account","path":"glam_state"}]}},{"name":"signer","writable":true,"signer":true},{"name":"token_mint"},{"name":"signer_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"signer"},{"kind":"account","path":"token_program"},{"kind":"account","path":"token_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"escrow_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_escrow"},{"kind":"account","path":"token_program"},{"kind":"account","path":"token_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_program"}],"args":[{"name":"mint_id","type":"u8"}]},{"name":"close_mint","discriminator":[149,251,157,212,65,181,235,129],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"glam_mint","writable":true},{"name":"extra_metas_account","writable":true,"optional":true},{"name":"metadata","writable":true,"pda":{"seeds":[{"kind":"const","value":[109,101,116,97,100,97,116,97]},{"kind":"account","path":"glam_state"}]}},{"name":"policies_program","address":"po1iCYakK3gHCLbuju4wGzFowTMpAJxkqK1iwUqMonY"},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"mint_id","type":"u8"}]},{"name":"close_state","discriminator":[25,1,184,101,200,245,210,246],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"metadata","writable":true,"pda":{"seeds":[{"kind":"const","value":[109,101,116,97,100,97,116,97]},{"kind":"account","path":"glam_state"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"crystallize_fees","discriminator":[78,0,111,26,7,12,41,249],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_escrow","pda":{"seeds":[{"kind":"const","value":[101,115,99,114,111,119]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_mint","writable":true},{"name":"escrow_mint_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_escrow"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"signer","writable":true,"signer":true},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"}],"args":[{"name":"mint_id","type":"u8"}]},{"name":"drift_cancel_orders","discriminator":[98,107,48,79,97,60,99,58],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"state"},{"name":"user","writable":true}],"args":[{"name":"market_type","type":{"option":{"defined":{"name":"MarketType"}}}},{"name":"market_index","type":{"option":"u16"}},{"name":"direction","type":{"option":{"defined":{"name":"PositionDirection"}}}}]},{"name":"drift_cancel_orders_by_ids","discriminator":[172,99,108,14,81,89,228,183],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"state"},{"name":"user","writable":true}],"args":[{"name":"order_ids","type":{"vec":"u32"}}]},{"name":"drift_delete_user","discriminator":[179,118,20,212,145,146,49,130],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"user","writable":true},{"name":"user_stats","writable":true},{"name":"state","writable":true}],"args":[]},{"name":"drift_deposit","discriminator":[252,63,250,201,98,55,130,12],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"state"},{"name":"user","writable":true},{"name":"user_stats","writable":true},{"name":"spot_market_vault","writable":true},{"name":"user_token_account","writable":true},{"name":"token_program"}],"args":[{"name":"market_index","type":"u16"},{"name":"amount","type":"u64"},{"name":"reduce_only","type":"bool"}]},{"name":"drift_initialize_user","discriminator":[107,244,158,15,225,239,98,245],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"user","writable":true},{"name":"user_stats","writable":true},{"name":"state","writable":true},{"name":"payer","writable":true,"signer":true},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"sub_account_id","type":"u16"},{"name":"name","type":{"array":["u8",32]}}]},{"name":"drift_initialize_user_stats","discriminator":[133,185,103,162,90,161,78,143],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"user_stats","writable":true},{"name":"state","writable":true},{"name":"payer","writable":true,"signer":true},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"drift_modify_order","discriminator":[235,245,222,58,245,128,19,202],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"state"},{"name":"user","writable":true}],"args":[{"name":"order_id","type":{"option":"u32"}},{"name":"modify_order_params","type":{"defined":{"name":"ModifyOrderParams"}}}]},{"name":"drift_place_orders","discriminator":[117,18,210,6,238,174,135,167],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"state"},{"name":"user","writable":true}],"args":[{"name":"params","type":{"vec":{"defined":{"name":"OrderParams"}}}}]},{"name":"drift_settle_multiple_pnls","discriminator":[100,72,3,45,69,37,10,144],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"state"},{"name":"user","writable":true},{"name":"spot_market_vault"}],"args":[{"name":"market_indexes","type":{"vec":"u16"}},{"name":"mode","type":{"defined":{"name":"SettlePnlMode"}}}]},{"name":"drift_settle_pnl","discriminator":[161,254,255,100,140,113,169,175],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"state"},{"name":"user","writable":true},{"name":"spot_market_vault"}],"args":[{"name":"market_index","type":"u16"}]},{"name":"drift_update_user_custom_margin_ratio","discriminator":[4,47,193,177,128,62,228,14],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"user","writable":true}],"args":[{"name":"sub_account_id","type":"u16"},{"name":"margin_ratio","type":"u32"}]},{"name":"drift_update_user_delegate","discriminator":[36,181,34,31,22,77,36,154],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"user","writable":true}],"args":[{"name":"sub_account_id","type":"u16"},{"name":"delegate","type":"pubkey"}]},{"name":"drift_update_user_margin_trading_enabled","discriminator":[157,175,12,19,202,114,17,36],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"user","writable":true}],"args":[{"name":"sub_account_id","type":"u16"},{"name":"margin_trading_enabled","type":"bool"}]},{"name":"drift_withdraw","discriminator":[86,59,186,123,183,181,234,137],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"state"},{"name":"user","writable":true},{"name":"user_stats","writable":true},{"name":"spot_market_vault","writable":true},{"name":"drift_signer"},{"name":"user_token_account","writable":true},{"name":"token_program"}],"args":[{"name":"market_index","type":"u16"},{"name":"amount","type":"u64"},{"name":"reduce_only","type":"bool"}]},{"name":"force_transfer_tokens","discriminator":[185,34,78,211,192,13,160,37],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_signer","writable":true,"signer":true},{"name":"glam_mint","writable":true},{"name":"from_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"from"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"to_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"to"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"from"},{"name":"to"},{"name":"to_policy_account","writable":true,"optional":true},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"policies_program","address":"po1iCYakK3gHCLbuju4wGzFowTMpAJxkqK1iwUqMonY"}],"args":[{"name":"mint_id","type":"u8"},{"name":"amount","type":"u64"}]},{"name":"fulfill","discriminator":[143,2,52,206,174,164,247,72],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_escrow","pda":{"seeds":[{"kind":"const","value":[101,115,99,114,111,119]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_mint","writable":true},{"name":"signer","writable":true,"signer":true},{"name":"escrow_mint_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_escrow"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"asset"},{"name":"vault_asset_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_vault"},{"kind":"const","value":[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{"kind":"account","path":"asset"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"escrow_asset_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_escrow"},{"kind":"const","value":[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{"kind":"account","path":"asset"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_program","address":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"associated_token_program","address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],"args":[{"name":"mint_id","type":"u8"}]},{"name":"initialize_state","discriminator":[190,171,224,219,217,72,199,176],"accounts":[{"name":"glam_state","writable":true,"pda":{"seeds":[{"kind":"const","value":[115,116,97,116,101]},{"kind":"account","path":"glam_signer"},{"kind":"arg","path":"state_model.created"}]}},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"openfunds_metadata","writable":true,"optional":true,"pda":{"seeds":[{"kind":"const","value":[109,101,116,97,100,97,116,97]},{"kind":"account","path":"glam_state"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"state","type":{"defined":{"name":"StateModel"}}}]},{"name":"jupiter_gov_new_vote","discriminator":[235,179,170,64,64,57,17,69],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"GovaE4iu227srtG2s3tZzB4RmWBzw8sTwrCLZz7kN7rY"},{"name":"proposal"},{"name":"vote","writable":true},{"name":"payer","writable":true,"signer":true},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"voter","type":"pubkey"}]},{"name":"jupiter_set_max_swap_slippage","discriminator":[110,79,13,71,208,111,56,66],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_signer","writable":true,"signer":true}],"args":[{"name":"slippage","type":"u64"}]},{"name":"jupiter_swap","discriminator":[116,207,0,196,252,120,243,18],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"},{"name":"input_vault_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_vault"},{"kind":"account","path":"input_token_program"},{"kind":"account","path":"input_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"output_vault_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_vault"},{"kind":"account","path":"output_token_program"},{"kind":"account","path":"output_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"input_mint"},{"name":"output_mint"},{"name":"input_stake_pool","optional":true},{"name":"output_stake_pool","optional":true},{"name":"associated_token_program","address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"input_token_program"},{"name":"output_token_program"}],"args":[{"name":"data","type":"bytes"}]},{"name":"jupiter_vote_cast_vote","discriminator":[11,197,234,57,164,74,181,239],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker"},{"name":"escrow"},{"name":"proposal","writable":true},{"name":"vote","writable":true},{"name":"governor"},{"name":"govern_program"}],"args":[{"name":"side","type":"u8"}]},{"name":"jupiter_vote_cast_vote_checked","discriminator":[247,3,146,233,35,189,192,187],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker"},{"name":"escrow"},{"name":"proposal","writable":true},{"name":"vote","writable":true},{"name":"governor"},{"name":"govern_program"}],"args":[{"name":"side","type":"u8"},{"name":"expected_side","type":"u8"}]},{"name":"jupiter_vote_increase_locked_amount","discriminator":[225,38,201,123,148,23,47,128],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker","writable":true},{"name":"escrow","writable":true},{"name":"escrow_tokens","writable":true},{"name":"source_tokens","writable":true},{"name":"token_program"}],"args":[{"name":"amount","type":"u64"}]},{"name":"jupiter_vote_merge_partial_unstaking","discriminator":[93,226,122,120,130,35,189,208],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker","writable":true},{"name":"escrow","writable":true},{"name":"partial_unstake","writable":true}],"args":[]},{"name":"jupiter_vote_new_escrow","discriminator":[255,87,157,219,61,178,144,159],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker","writable":true},{"name":"escrow","writable":true},{"name":"payer","writable":true,"signer":true},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"jupiter_vote_open_partial_unstaking","discriminator":[84,7,113,220,212,63,237,218],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker","writable":true},{"name":"escrow","writable":true},{"name":"partial_unstake","writable":true,"signer":true},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"amount","type":"u64"},{"name":"memo","type":"string"}]},{"name":"jupiter_vote_toggle_max_lock","discriminator":[204,158,192,21,219,25,154,87],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker"},{"name":"escrow","writable":true}],"args":[{"name":"is_max_lock","type":"bool"}]},{"name":"jupiter_vote_withdraw","discriminator":[195,172,184,195,23,178,145,191],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker","writable":true},{"name":"escrow","writable":true},{"name":"escrow_tokens","writable":true},{"name":"destination_tokens","writable":true},{"name":"token_program"}],"args":[]},{"name":"jupiter_vote_withdraw_partial_unstaking","discriminator":[109,98,65,252,184,0,216,240],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker","writable":true},{"name":"escrow","writable":true},{"name":"partial_unstake","writable":true},{"name":"escrow_tokens","writable":true},{"name":"destination_tokens","writable":true},{"name":"token_program"}],"args":[]},{"name":"kamino_farm_harvest_reward","discriminator":[64,132,133,175,224,147,145,119],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr"},{"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":"kamino_lending_borrow_obligation_liquidity_v2","discriminator":[175,198,39,162,103,76,51,121],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"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":"kamino_lending_deposit_reserve_liquidity_and_obligation_collateral_v2","discriminator":[93,120,106,112,40,45,84,32],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"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":"kamino_lending_init_obligation","discriminator":[219,210,134,64,155,49,137,174],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"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":"kamino_lending_init_obligation_farms_for_reserve","discriminator":[227,61,130,2,117,226,78,1],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"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":"kamino_lending_init_user_metadata","discriminator":[200,95,140,132,190,65,17,161],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"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":"kamino_lending_repay_obligation_liquidity_v2","discriminator":[135,57,236,69,153,77,15,88],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"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":"kamino_lending_withdraw_obligation_collateral_and_redeem_reserve_collateral_v2","discriminator":[249,60,252,239,136,53,181,3],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"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":"marinade_claim","discriminator":[54,44,48,204,218,141,36,5],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD"},{"name":"state","writable":true},{"name":"reserve_pda","writable":true},{"name":"ticket_account","writable":true},{"name":"clock"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"marinade_deposit","discriminator":[62,236,248,28,222,232,182,73],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD"},{"name":"state","writable":true},{"name":"msol_mint","writable":true},{"name":"liq_pool_sol_leg_pda","writable":true},{"name":"liq_pool_msol_leg","writable":true},{"name":"liq_pool_msol_leg_authority"},{"name":"reserve_pda","writable":true},{"name":"mint_to","writable":true},{"name":"msol_mint_authority"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_program"}],"args":[{"name":"lamports","type":"u64"}]},{"name":"marinade_deposit_stake_account","discriminator":[141,230,58,103,56,205,159,138],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD"},{"name":"state","writable":true},{"name":"validator_list","writable":true},{"name":"stake_list","writable":true},{"name":"stake_account","writable":true},{"name":"duplication_flag","writable":true},{"name":"msol_mint","writable":true},{"name":"mint_to","writable":true},{"name":"msol_mint_authority"},{"name":"clock"},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_program"},{"name":"stake_program"}],"args":[{"name":"validator_idx","type":"u32"}]},{"name":"marinade_order_unstake","discriminator":[202,3,33,27,183,156,57,231],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD"},{"name":"state","writable":true},{"name":"msol_mint","writable":true},{"name":"burn_msol_from","writable":true},{"name":"new_ticket_account","writable":true},{"name":"clock"},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"token_program"}],"args":[{"name":"msol_amount","type":"u64"}]},{"name":"merkle_distributor_new_claim_and_stake","discriminator":[203,167,65,87,208,161,91,207],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"DiS3nNjFVMieMgmiQFm6wgJL7nevk4NrhXKLbtEH1Z2R"},{"name":"distributor","writable":true},{"name":"claim_status","writable":true},{"name":"from","writable":true},{"name":"token_program"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"voter_program"},{"name":"locker","writable":true},{"name":"escrow","writable":true},{"name":"escrow_tokens","writable":true}],"args":[{"name":"amount_unlocked","type":"u64"},{"name":"amount_locked","type":"u64"},{"name":"proof","type":{"vec":{"array":["u8",32]}}}]},{"name":"meteora_dlmm_add_liquidity2","discriminator":[248,123,81,94,137,10,79,81],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"position","writable":true},{"name":"lb_pair","writable":true},{"name":"bin_array_bitmap_extension","writable":true,"optional":true},{"name":"user_token_x","writable":true},{"name":"user_token_y","writable":true},{"name":"reserve_x","writable":true},{"name":"reserve_y","writable":true},{"name":"token_x_mint"},{"name":"token_y_mint"},{"name":"token_x_program"},{"name":"token_y_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"liquidity_parameter","type":{"defined":{"name":"LiquidityParameter"}}},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"meteora_dlmm_add_liquidity_by_strategy2","discriminator":[219,171,159,202,167,192,209,25],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"position","writable":true},{"name":"lb_pair","writable":true},{"name":"bin_array_bitmap_extension","writable":true,"optional":true},{"name":"user_token_x","writable":true},{"name":"user_token_y","writable":true},{"name":"reserve_x","writable":true},{"name":"reserve_y","writable":true},{"name":"token_x_mint"},{"name":"token_y_mint"},{"name":"token_x_program"},{"name":"token_y_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"liquidity_parameter","type":{"defined":{"name":"LiquidityParameterByStrategy"}}},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"meteora_dlmm_add_liquidity_one_side_precise2","discriminator":[60,137,107,235,107,209,19,106],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"position","writable":true},{"name":"lb_pair","writable":true},{"name":"bin_array_bitmap_extension","writable":true,"optional":true},{"name":"user_token","writable":true},{"name":"reserve","writable":true},{"name":"token_mint"},{"name":"token_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"parameter","type":{"defined":{"name":"AddLiquiditySingleSidePreciseParameter2"}}},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"meteora_dlmm_claim_fee2","discriminator":[152,214,221,166,191,34,17,189],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"lb_pair","writable":true},{"name":"position","writable":true},{"name":"reserve_x","writable":true},{"name":"reserve_y","writable":true},{"name":"user_token_x","writable":true},{"name":"user_token_y","writable":true},{"name":"token_x_mint"},{"name":"token_y_mint"},{"name":"token_program_x"},{"name":"token_program_y"},{"name":"memo_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"min_bin_id","type":"i32"},{"name":"max_bin_id","type":"i32"},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"meteora_dlmm_claim_reward2","discriminator":[73,232,244,62,123,103,114,39],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"lb_pair","writable":true},{"name":"position","writable":true},{"name":"reward_vault","writable":true},{"name":"reward_mint"},{"name":"user_token_account","writable":true},{"name":"token_program"},{"name":"memo_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"reward_index","type":"u64"},{"name":"min_bin_id","type":"i32"},{"name":"max_bin_id","type":"i32"},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"meteora_dlmm_close_position","discriminator":[186,117,42,24,221,194,34,143],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"position","writable":true},{"name":"lb_pair","writable":true},{"name":"bin_array_lower","writable":true},{"name":"bin_array_upper","writable":true},{"name":"rent_receiver","writable":true},{"name":"event_authority"},{"name":"program"}],"args":[]},{"name":"meteora_dlmm_initialize_position","discriminator":[223,94,215,96,175,181,195,204],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"payer","writable":true,"signer":true},{"name":"position","writable":true,"signer":true},{"name":"lb_pair"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"lower_bin_id","type":"i32"},{"name":"width","type":"i32"}]},{"name":"meteora_dlmm_initialize_position_pda","discriminator":[206,130,13,156,170,45,96,115],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"payer","writable":true,"signer":true},{"name":"position","writable":true},{"name":"lb_pair"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"lower_bin_id","type":"i32"},{"name":"width","type":"i32"}]},{"name":"meteora_dlmm_remove_liquidity2","discriminator":[118,111,170,14,224,187,21,119],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"position","writable":true},{"name":"lb_pair","writable":true},{"name":"bin_array_bitmap_extension","writable":true,"optional":true},{"name":"user_token_x","writable":true},{"name":"user_token_y","writable":true},{"name":"reserve_x","writable":true},{"name":"reserve_y","writable":true},{"name":"token_x_mint"},{"name":"token_y_mint"},{"name":"token_x_program"},{"name":"token_y_program"},{"name":"memo_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"bin_liquidity_removal","type":{"vec":{"defined":{"name":"BinLiquidityReduction"}}}},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"meteora_dlmm_remove_liquidity_by_range2","discriminator":[157,54,138,77,16,239,100,16],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"position","writable":true},{"name":"lb_pair","writable":true},{"name":"bin_array_bitmap_extension","writable":true,"optional":true},{"name":"user_token_x","writable":true},{"name":"user_token_y","writable":true},{"name":"reserve_x","writable":true},{"name":"reserve_y","writable":true},{"name":"token_x_mint"},{"name":"token_y_mint"},{"name":"token_x_program"},{"name":"token_y_program"},{"name":"memo_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"from_bin_id","type":"i32"},{"name":"to_bin_id","type":"i32"},{"name":"bps_to_remove","type":"u16"},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"meteora_dlmm_swap2","discriminator":[95,183,135,4,4,165,65,133],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"lb_pair","writable":true},{"name":"bin_array_bitmap_extension","optional":true},{"name":"reserve_x","writable":true},{"name":"reserve_y","writable":true},{"name":"user_token_in","writable":true},{"name":"user_token_out","writable":true},{"name":"token_x_mint"},{"name":"token_y_mint"},{"name":"oracle","writable":true},{"name":"host_fee_in","writable":true,"optional":true},{"name":"token_x_program"},{"name":"token_y_program"},{"name":"memo_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"amount_in","type":"u64"},{"name":"min_amount_out","type":"u64"},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"meteora_dlmm_swap_with_price_impact2","discriminator":[219,33,50,237,37,101,146,101],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"lb_pair","writable":true},{"name":"bin_array_bitmap_extension","optional":true},{"name":"reserve_x","writable":true},{"name":"reserve_y","writable":true},{"name":"user_token_in","writable":true},{"name":"user_token_out","writable":true},{"name":"token_x_mint"},{"name":"token_y_mint"},{"name":"oracle","writable":true},{"name":"host_fee_in","writable":true,"optional":true},{"name":"token_x_program"},{"name":"token_y_program"},{"name":"memo_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"amount_in","type":"u64"},{"name":"active_id","type":{"option":"i32"}},{"name":"max_price_impact_bps","type":"u16"},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"mint_tokens","discriminator":[59,132,24,246,122,39,8,243],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_signer","writable":true,"signer":true},{"name":"glam_mint","writable":true},{"name":"mint_to","writable":true,"pda":{"seeds":[{"kind":"account","path":"recipient"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"recipient","writable":true},{"name":"policy_account","writable":true,"optional":true},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"policies_program","address":"po1iCYakK3gHCLbuju4wGzFowTMpAJxkqK1iwUqMonY"}],"args":[{"name":"mint_id","type":"u8"},{"name":"amount","type":"u64"}]},{"name":"price_drift","discriminator":[240,91,209,89,155,0,97,133],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault"},{"name":"signer","writable":true,"signer":true},{"name":"sol_oracle"},{"name":"state"},{"name":"user"},{"name":"user_stats"}],"args":[{"name":"denom","type":{"defined":{"name":"PriceDenom"}}}]},{"name":"price_kamino_obligations","discriminator":[166,110,234,179,240,179,69,246],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"sol_oracle"}],"args":[{"name":"denom","type":{"defined":{"name":"PriceDenom"}}}]},{"name":"price_meteora_positions","discriminator":[186,22,157,249,185,176,253,133],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"sol_oracle"}],"args":[{"name":"denom","type":{"defined":{"name":"PriceDenom"}}}]},{"name":"price_stakes","discriminator":[0,60,60,103,201,94,72,223],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"sol_oracle"}],"args":[{"name":"denom","type":{"defined":{"name":"PriceDenom"}}}]},{"name":"price_tickets","discriminator":[253,18,224,98,226,43,65,76],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"sol_oracle"}],"args":[{"name":"denom","type":{"defined":{"name":"PriceDenom"}}}]},{"name":"price_vault","discriminator":[47,213,36,17,183,5,141,45],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"sol_oracle"}],"args":[{"name":"denom","type":{"defined":{"name":"PriceDenom"}}}]},{"name":"queued_redeem","discriminator":[82,242,202,93,170,196,215,113],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_escrow","pda":{"seeds":[{"kind":"const","value":[101,115,99,114,111,119]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_mint","writable":true},{"name":"signer","writable":true,"signer":true},{"name":"signer_mint_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"signer"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"escrow_mint_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_escrow"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"associated_token_program","address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],"args":[{"name":"mint_id","type":"u8"},{"name":"shares_in","type":"u64"}]},{"name":"queued_subscribe","discriminator":[107,180,212,63,146,0,159,255],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_escrow","pda":{"seeds":[{"kind":"const","value":[101,115,99,114,111,119]},{"kind":"account","path":"glam_state"}]}},{"name":"signer","writable":true,"signer":true},{"name":"deposit_asset"},{"name":"escrow_deposit_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_escrow"},{"kind":"const","value":[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{"kind":"account","path":"deposit_asset"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"signer_deposit_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"signer"},{"kind":"const","value":[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{"kind":"account","path":"deposit_asset"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_program","address":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{"name":"associated_token_program","address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],"args":[{"name":"mint_id","type":"u8"},{"name":"amount_in","type":"u64"}]},{"name":"set_redemption_paused","discriminator":[226,152,104,42,1,53,196,240],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_mint"},{"name":"glam_signer","writable":true,"signer":true}],"args":[{"name":"mint_id","type":"u8"},{"name":"paused","type":"bool"}]},{"name":"set_subscription_paused","discriminator":[220,144,129,4,136,251,85,234],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_mint"},{"name":"glam_signer","writable":true,"signer":true}],"args":[{"name":"mint_id","type":"u8"},{"name":"paused","type":"bool"}]},{"name":"set_token_accounts_states","discriminator":[50,133,45,86,117,66,115,195],"accounts":[{"name":"glam_state"},{"name":"glam_signer","writable":true,"signer":true},{"name":"glam_mint","writable":true},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"}],"args":[{"name":"mint_id","type":"u8"},{"name":"frozen","type":"bool"}]},{"name":"stake_authorize","discriminator":[127,247,88,164,201,0,79,7],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"stake","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"}],"args":[{"name":"new_authority","type":"pubkey"},{"name":"staker_with_withdrawer","type":"u32"}]},{"name":"stake_deactivate","discriminator":[224,10,93,175,175,145,237,169],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"stake","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"}],"args":[]},{"name":"stake_delegate_stake","discriminator":[202,40,152,239,175,251,66,228],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"stake","writable":true},{"name":"vote"},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"stake_history","address":"SysvarStakeHistory1111111111111111111111111"},{"name":"stake_config"}],"args":[]},{"name":"stake_initialize","discriminator":[68,66,118,79,15,144,190,190],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"stake","writable":true},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"stake_merge","discriminator":[46,181,125,12,51,179,134,176],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"destination_stake","writable":true},{"name":"source_stake","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"stake_history","address":"SysvarStakeHistory1111111111111111111111111"}],"args":[]},{"name":"stake_move_lamports","discriminator":[21,85,218,122,182,189,82,200],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"source_stake","writable":true},{"name":"destination_stake","writable":true}],"args":[{"name":"lamports","type":"u64"}]},{"name":"stake_move_stake","discriminator":[9,190,67,62,46,251,144,186],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"source_stake","writable":true},{"name":"destination_stake","writable":true}],"args":[{"name":"lamports","type":"u64"}]},{"name":"stake_pool_deposit_sol","discriminator":[147,187,91,151,158,187,247,79],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"stake_pool","writable":true},{"name":"stake_pool_withdraw_authority"},{"name":"reserve_stake","writable":true},{"name":"pool_tokens_to","writable":true},{"name":"fee_account","writable":true},{"name":"referrer_pool_tokens_account","writable":true},{"name":"pool_mint","writable":true},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_program"}],"args":[{"name":"lamports_in","type":"u64"}]},{"name":"stake_pool_deposit_sol_with_slippage","discriminator":[57,21,43,19,86,36,25,172],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"stake_pool","writable":true},{"name":"stake_pool_withdraw_authority"},{"name":"reserve_stake","writable":true},{"name":"pool_tokens_to","writable":true},{"name":"fee_account","writable":true},{"name":"referrer_pool_tokens_account","writable":true},{"name":"pool_mint","writable":true},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_program"}],"args":[{"name":"lamports_in","type":"u64"},{"name":"minimum_pool_tokens_out","type":"u64"}]},{"name":"stake_pool_deposit_stake","discriminator":[212,158,195,174,179,105,9,97],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"stake_pool","writable":true},{"name":"validator_list","writable":true},{"name":"stake_pool_withdraw_authority"},{"name":"deposit_stake","writable":true},{"name":"validator_stake_account","writable":true},{"name":"reserve_stake_account","writable":true},{"name":"pool_tokens_to","writable":true},{"name":"fee_account","writable":true},{"name":"referrer_pool_tokens_account","writable":true},{"name":"pool_mint","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"stake_history","address":"SysvarStakeHistory1111111111111111111111111"},{"name":"token_program"},{"name":"stake_program","address":"Stake11111111111111111111111111111111111111"}],"args":[]},{"name":"stake_pool_deposit_stake_with_slippage","discriminator":[185,104,64,97,108,243,239,165],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"stake_pool","writable":true},{"name":"validator_list","writable":true},{"name":"stake_pool_withdraw_authority"},{"name":"deposit_stake","writable":true},{"name":"validator_stake_account","writable":true},{"name":"reserve_stake_account","writable":true},{"name":"pool_tokens_to","writable":true},{"name":"fee_account","writable":true},{"name":"referrer_pool_tokens_account","writable":true},{"name":"pool_mint","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"stake_history","address":"SysvarStakeHistory1111111111111111111111111"},{"name":"token_program"},{"name":"stake_program","address":"Stake11111111111111111111111111111111111111"}],"args":[{"name":"minimum_pool_tokens_out","type":"u64"}]},{"name":"stake_pool_withdraw_sol","discriminator":[179,100,204,0,192,46,233,181],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"stake_pool","writable":true},{"name":"stake_pool_withdraw_authority"},{"name":"pool_tokens_from","writable":true},{"name":"reserve_stake","writable":true},{"name":"fee_account","writable":true},{"name":"pool_mint","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"stake_history","address":"SysvarStakeHistory1111111111111111111111111"},{"name":"stake_program","address":"Stake11111111111111111111111111111111111111"},{"name":"token_program"}],"args":[{"name":"pool_tokens_in","type":"u64"}]},{"name":"stake_pool_withdraw_sol_with_slippage","discriminator":[210,92,86,93,123,17,117,89],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"stake_pool","writable":true},{"name":"stake_pool_withdraw_authority"},{"name":"pool_tokens_from","writable":true},{"name":"reserve_stake","writable":true},{"name":"fee_account","writable":true},{"name":"pool_mint","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"stake_history","address":"SysvarStakeHistory1111111111111111111111111"},{"name":"stake_program","address":"Stake11111111111111111111111111111111111111"},{"name":"token_program"}],"args":[{"name":"pool_tokens_in","type":"u64"},{"name":"minimum_lamports_out","type":"u64"}]},{"name":"stake_pool_withdraw_stake","discriminator":[7,70,250,22,49,1,143,1],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"stake_pool","writable":true},{"name":"validator_list","writable":true},{"name":"stake_pool_withdraw_authority"},{"name":"validator_stake_account","writable":true},{"name":"stake","writable":true},{"name":"pool_tokens_from","writable":true},{"name":"fee_account","writable":true},{"name":"pool_mint","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"token_program"},{"name":"stake_program","address":"Stake11111111111111111111111111111111111111"}],"args":[{"name":"pool_tokens_in","type":"u64"}]},{"name":"stake_pool_withdraw_stake_with_slippage","discriminator":[74,83,151,22,32,149,154,141],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"stake_pool","writable":true},{"name":"validator_list","writable":true},{"name":"stake_pool_withdraw_authority"},{"name":"validator_stake_account","writable":true},{"name":"stake","writable":true},{"name":"pool_tokens_from","writable":true},{"name":"fee_account","writable":true},{"name":"pool_mint","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"token_program"},{"name":"stake_program","address":"Stake11111111111111111111111111111111111111"}],"args":[{"name":"pool_tokens_in","type":"u64"},{"name":"minimum_lamports_out","type":"u64"}]},{"name":"stake_redelegate","discriminator":[134,227,164,247,120,0,225,174],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"stake","writable":true},{"name":"new_stake","writable":true},{"name":"vote"},{"name":"stake_config"}],"args":[]},{"name":"stake_split","discriminator":[63,128,169,206,158,60,135,48],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"stake","writable":true},{"name":"split_stake","writable":true}],"args":[{"name":"lamports","type":"u64"}]},{"name":"stake_withdraw","discriminator":[199,13,168,20,92,151,29,56],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"stake","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"stake_history","address":"SysvarStakeHistory1111111111111111111111111"}],"args":[{"name":"lamports","type":"u64"}]},{"name":"subscribe","discriminator":[254,28,191,138,156,179,183,53],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_escrow","pda":{"seeds":[{"kind":"const","value":[101,115,99,114,111,119]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_mint","writable":true},{"name":"signer","writable":true,"signer":true},{"name":"signer_mint_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"signer"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"escrow_mint_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_escrow"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"deposit_asset"},{"name":"vault_deposit_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_vault"},{"kind":"const","value":[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{"kind":"account","path":"deposit_asset"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"signer_deposit_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"signer"},{"kind":"const","value":[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{"kind":"account","path":"deposit_asset"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"signer_policy","writable":true,"optional":true},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_program","address":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"associated_token_program","address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"policies_program","address":"po1iCYakK3gHCLbuju4wGzFowTMpAJxkqK1iwUqMonY"}],"args":[{"name":"mint_id","type":"u8"},{"name":"amount_in","type":"u64"}]},{"name":"system_transfer","discriminator":[167,164,195,155,219,152,191,230],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"11111111111111111111111111111111"},{"name":"to","writable":true}],"args":[{"name":"lamports","type":"u64"}]},{"name":"token_close_account","discriminator":[240,32,179,154,96,110,43,79],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_account","writable":true}],"args":[]},{"name":"token_transfer","discriminator":[210,16,52,5,247,164,59,18],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"from","writable":true},{"name":"to","writable":true}],"args":[{"name":"lamports","type":"u64"}]},{"name":"token_transfer_checked","discriminator":[169,178,117,156,169,191,199,116],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"from","writable":true},{"name":"mint"},{"name":"to","writable":true}],"args":[{"name":"lamports","type":"u64"},{"name":"decimals","type":"u8"}]},{"name":"update_mint","discriminator":[212,203,57,78,75,245,222,5],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_signer","writable":true,"signer":true},{"name":"glam_mint","writable":true},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"}],"args":[{"name":"mint_id","type":"u8"},{"name":"mint_model","type":{"defined":{"name":"MintModel"}}}]},{"name":"update_state","discriminator":[135,112,215,75,247,185,53,176],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_signer","writable":true,"signer":true}],"args":[{"name":"state","type":{"defined":{"name":"StateModel"}}}]},{"name":"withdraw","discriminator":[183,18,70,156,148,109,161,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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"asset"},{"name":"vault_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_vault"},{"kind":"account","path":"token_program"},{"kind":"account","path":"asset"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"signer_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_signer"},{"kind":"account","path":"token_program"},{"kind":"account","path":"asset"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"token_program"}],"args":[{"name":"amount","type":"u64"}]}],"accounts":[{"name":"OpenfundsMetadataAccount","discriminator":[5,89,20,76,255,158,209,219]},{"name":"StateAccount","discriminator":[142,247,54,95,85,133,249,103]}],"errors":[{"code":48000,"name":"NotAuthorized","msg":"Signer is not authorized"},{"code":48001,"name":"IntegrationDisabled","msg":"Integration is disabled"},{"code":48002,"name":"StateAccountDisabled","msg":"State account is disabled"},{"code":48003,"name":"InvalidSignerAccount","msg":"Invalid signer token account"},{"code":49000,"name":"InvalidAccountType","msg":"Invalid account type"},{"code":49001,"name":"InvalidName","msg":"Name too long: max 64 chars"},{"code":49002,"name":"InvalidSymbol","msg":"Symbol too long: max 32 chars"},{"code":49003,"name":"InvalidUri","msg":"Uri too long: max 128 chars"},{"code":49004,"name":"InvalidAssetsLen","msg":"Too many assets: max 100"},{"code":49005,"name":"GlamMintNotFound","msg":"Glam mint not found"},{"code":49006,"name":"CannotCloseState","msg":"Glam state cannot be closed, all mints must be closed first"},{"code":49007,"name":"InvalidMintId","msg":"Invalid mint id"},{"code":49008,"name":"InvalidRemainingAccounts","msg":"Invalid accounts: the transaction is malformed"},{"code":49009,"name":"InvalidVaultTokenAccount","msg":"Invalid vault ata"},{"code":49010,"name":"NonZeroSupply","msg":"Glam mint supply not zero"},{"code":49011,"name":"MissingAccount","msg":"An account required by the instruction is missing"},{"code":49012,"name":"InvalidTimestamp","msg":"Invalid timestamp"},{"code":49013,"name":"EngineFieldNotFound","msg":"Engine field not found"},{"code":50000,"name":"WithdrawDenied","msg":"Withdraw denied. Only vaults allow withdraws (funds and mints don\'t)"},{"code":50001,"name":"InvalidAssetForSwap","msg":"Asset cannot be swapped"},{"code":50002,"name":"UnsupportedSwapIx","msg":"Unsupported swap instruction"},{"code":50003,"name":"SlippageLimitExceeded","msg":"Max slippage exceeded"},{"code":50004,"name":"InvalidTokenAccount","msg":"Invalid token account"},{"code":50005,"name":"InvalidVoteSide","msg":"Invalid vote side"},{"code":50006,"name":"MultipleStakeAccountsDisallowed","msg":"Multiple stake accounts disallowed"},{"code":51000,"name":"InvalidAssetPrice","msg":"Invalid asset price"},{"code":51001,"name":"InvalidStableCoinPriceForSubscribe","msg":"Subscription not allowed: invalid stable coin price"},{"code":51002,"name":"ActionPaused","msg":"Requested action is paused"},{"code":51003,"name":"InvalidAsset","msg":"Asset not allowed to subscribe"},{"code":51004,"name":"LedgerNotFound","msg":"Ledger not found"},{"code":51005,"name":"InvalidLedgerEntry","msg":"Invalid ledger entry"},{"code":51006,"name":"InvalidAmount","msg":"Invalid amount for subscription or redemption"},{"code":51100,"name":"InvalidPricingOracle","msg":"Invalid oracle for asset price"},{"code":51101,"name":"PricingError","msg":"Pricing error"},{"code":51102,"name":"PriceTooOld","msg":"Price is too old"},{"code":51103,"name":"ExternalAccountsNotPriced","msg":"Not all external vault accounts are priced"},{"code":51104,"name":"VaultAssetsNotPriced","msg":"Not all vault assets are priced"},{"code":51105,"name":"VaultNotPriced","msg":"No priced assets found"},{"code":51106,"name":"PositiveAumRequired","msg":"AUM must be positive"},{"code":51107,"name":"MathError","msg":"Math error"},{"code":52000,"name":"TransfersDisabled","msg":"Policy violation: transfers disabled"},{"code":52001,"name":"InvalidPolicyAccount","msg":"Policy account is mandatory"},{"code":52002,"name":"AmountTooBig","msg":"Policy violation: amount too big"},{"code":52003,"name":"LockUp","msg":"Policy violation: lock-up has not expired"}],"types":[{"name":"AccountType","type":{"kind":"enum","variants":[{"name":"Vault"},{"name":"Mint"},{"name":"Fund"}]}},{"name":"AccountsType","type":{"kind":"enum","variants":[{"name":"TransferHookX"},{"name":"TransferHookY"},{"name":"TransferHookReward"}]}},{"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":"AddLiquiditySingleSidePreciseParameter2","type":{"kind":"struct","fields":[{"name":"bins","type":{"vec":{"defined":{"name":"CompressedBinDepositAmount"}}}},{"name":"decompress_multiplier","type":"u64"},{"name":"max_amount","type":"u64"}]}},{"name":"BinLiquidityDistribution","type":{"kind":"struct","fields":[{"name":"bin_id","type":"i32"},{"name":"distribution_x","type":"u16"},{"name":"distribution_y","type":"u16"}]}},{"name":"BinLiquidityReduction","type":{"kind":"struct","fields":[{"name":"bin_id","type":"i32"},{"name":"bps_to_remove","type":"u16"}]}},{"name":"CompanyField","type":{"kind":"struct","fields":[{"name":"name","type":{"defined":{"name":"CompanyFieldName"}}},{"name":"value","type":"string"}]}},{"name":"CompanyFieldName","type":{"kind":"enum","variants":[{"name":"FundGroupName"},{"name":"ManCo"},{"name":"DomicileOfManCo"},{"name":"BICOfCustodian"},{"name":"CollateralManagerName"},{"name":"CustodianBankName"},{"name":"DomicileOfCustodianBank"},{"name":"FundAdministratorName"},{"name":"FundAdvisorName"},{"name":"FundPromoterName"},{"name":"IsSelfManagedInvestmentCompany"},{"name":"LEIOfCustodianBank"},{"name":"LEIOfManCo"},{"name":"PortfolioManagingCompanyName"},{"name":"SecuritiesLendingCounterpartyName"},{"name":"SwapCounterpartyName"},{"name":"AddressofManCo"},{"name":"AuditorName"},{"name":"CityofManCo"},{"name":"EmailAddressOfManCo"},{"name":"FundWebsiteOfManCo"},{"name":"IsUNPRISignatory"},{"name":"PhoneCountryCodeofManCo"},{"name":"PhoneNumberofManCo"},{"name":"SubInvestmentAdvisorName"},{"name":"ZIPCodeofManCo"},{"name":"DomicileOfUmbrella"},{"name":"HasUmbrella"},{"name":"LEIOfUmbrella"},{"name":"Umbrella"},{"name":"GlobalIntermediaryIdentificationNumberOfUmbrella"}]}},{"name":"CompanyModel","type":{"kind":"struct","fields":[{"name":"fund_group_name","type":{"option":"string"}},{"name":"man_co","type":{"option":"string"}},{"name":"domicile_of_man_co","type":{"option":"string"}},{"name":"email_address_of_man_co","type":{"option":"string"}},{"name":"fund_website_of_man_co","type":{"option":"string"}}]}},{"name":"CompressedBinDepositAmount","type":{"kind":"struct","fields":[{"name":"bin_id","type":"i32"},{"name":"amount","type":"u32"}]}},{"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":"permissions","type":{"vec":{"defined":{"name":"Permission"}}}},{"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":"Allowlist"},{"name":"Blocklist"},{"name":"ExternalVaultAccounts"},{"name":"LockUp"},{"name":"DriftMarketIndexesPerp"},{"name":"DriftMarketIndexesSpot"},{"name":"DriftOrderTypes"},{"name":"MaxSwapSlippageBps"},{"name":"TransferToAllowlist"},{"name":"PricedAssets"},{"name":"BaseAsset"},{"name":"MaxCap"},{"name":"MinSubscription"},{"name":"MinRedemption"},{"name":"Valuation"},{"name":"Ledger"},{"name":"FeeStructure"},{"name":"FeeParams"},{"name":"ClaimableFees"},{"name":"ClaimedFees"},{"name":"SubscriptionPaused"},{"name":"RedemptionPaused"}]}},{"name":"EngineFieldValue","type":{"kind":"enum","variants":[{"name":"Boolean","fields":[{"name":"val","type":"bool"}]},{"name":"Date","fields":[{"name":"val","type":"string"}]},{"name":"Double","fields":[{"name":"val","type":"i64"}]},{"name":"Integer","fields":[{"name":"val","type":"i32"}]},{"name":"String","fields":[{"name":"val","type":"string"}]},{"name":"Time","fields":[{"name":"val","type":"string"}]},{"name":"U8","fields":[{"name":"val","type":"u8"}]},{"name":"U64","fields":[{"name":"val","type":"u64"}]},{"name":"Pubkey","fields":[{"name":"val","type":"pubkey"}]},{"name":"Percentage","fields":[{"name":"val","type":"u32"}]},{"name":"URI","fields":[{"name":"val","type":"string"}]},{"name":"Timestamp","fields":[{"name":"val","type":"i64"}]},{"name":"VecPubkey","fields":[{"name":"val","type":{"vec":"pubkey"}}]},{"name":"VecU32","fields":[{"name":"val","type":{"vec":"u32"}}]},{"name":"VecPricedAssets","fields":[{"name":"val","type":{"vec":{"defined":{"name":"PricedAssets"}}}}]},{"name":"Ledger","fields":[{"name":"val","type":{"vec":{"defined":{"name":"LedgerEntry"}}}}]},{"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":"Valuation","fields":[{"name":"val","type":{"defined":{"name":"Valuation"}}}]}]}},{"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":"FundField","type":{"kind":"struct","fields":[{"name":"name","type":{"defined":{"name":"FundFieldName"}}},{"name":"value","type":"string"}]}},{"name":"FundFieldName","type":{"kind":"enum","variants":[{"name":"FundDomicileAlpha2"},{"name":"FundDomicileAlpha3"},{"name":"LegalFundNameIncludingUmbrella"},{"name":"FiscalYearEnd"},{"name":"FundCurrency"},{"name":"FundLaunchDate"},{"name":"InvestmentObjective"},{"name":"IsETC"},{"name":"IsEUDirectiveRelevant"},{"name":"IsFundOfFunds"},{"name":"IsPassiveFund"},{"name":"IsREIT"},{"name":"LegalForm"},{"name":"LegalFundNameOnly"},{"name":"OpenEndedOrClosedEndedFundStructure"},{"name":"TypeOfEUDirective"},{"name":"UCITSVersion"},{"name":"CurrencyHedgePortfolio"},{"name":"DepositoryName"},{"name":"FundValuationPoint"},{"name":"FundValuationPointTimeZone"},{"name":"FundValuationPointTimeZoneUsingTZDatabase"},{"name":"HasCollateralManager"},{"name":"HasEmbeddedDerivatives"},{"name":"HasSecuritiesLending"},{"name":"HasSwap"},{"name":"IsLeveraged"},{"name":"IsShariaCompliant"},{"name":"IsShort"},{"name":"LEIofDepositoryBank"},{"name":"LEIOfFund"},{"name":"LocationOfBearerShare"},{"name":"LocationOfShareRegister"},{"name":"MaximumLeverageInFund"},{"name":"MiFIDSecuritiesClassification"},{"name":"MoneyMarketTypeOfFund"},{"name":"TrusteeName"},{"name":"AuMFund"},{"name":"AuMFundDate"},{"name":"NoSFund"},{"name":"NoSFundDate"}]}},{"name":"FundManagerField","type":{"kind":"struct","fields":[{"name":"name","type":{"defined":{"name":"FundManagerFieldName"}}},{"name":"value","type":"string"}]}},{"name":"FundManagerFieldName","type":{"kind":"enum","variants":[{"name":"PortfolioManagerForename"},{"name":"PortfolioManagerName"},{"name":"PortfolioManagerYearOfBirth"},{"name":"PortfolioManagerYearOfExperienceStart"},{"name":"PortfolioManagerBriefBiography"},{"name":"PortfolioManagerType"},{"name":"PortfolioManagerRoleStartingDate"},{"name":"PortfolioManagerRoleEndDate"}]}},{"name":"FundOpenfundsModel","type":{"kind":"struct","fields":[{"name":"fund_domicile_alpha_2","type":{"option":"string"}},{"name":"legal_fund_name_including_umbrella","type":{"option":"string"}},{"name":"fiscal_year_end","type":{"option":"string"}},{"name":"fund_currency","type":{"option":"string"}},{"name":"fund_launch_date","type":{"option":"string"}},{"name":"investment_objective","type":{"option":"string"}},{"name":"is_etc","type":{"option":"bool"}},{"name":"is_eu_directive_relevant","type":{"option":"bool"}},{"name":"is_fund_of_funds","type":{"option":"bool"}},{"name":"is_passive_fund","type":{"option":"bool"}},{"name":"is_reit","type":{"option":"bool"}},{"name":"legal_form","type":{"option":"string"}},{"name":"legal_fund_name_only","type":{"option":"string"}},{"name":"open_ended_or_closed_ended_fund_structure","type":{"option":"string"}},{"name":"type_of_eu_directive","type":{"option":"string"}},{"name":"ucits_version","type":{"option":"string"}}]}},{"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":"Integration","type":{"kind":"enum","variants":[{"name":"Drift"},{"name":"SplStakePool"},{"name":"SanctumStakePool"},{"name":"NativeStaking"},{"name":"Marinade"},{"name":"JupiterSwap"},{"name":"JupiterVote"},{"name":"KaminoLending"},{"name":"MeteoraDlmm"}]}},{"name":"LedgerEntry","type":{"kind":"struct","fields":[{"name":"user","type":"pubkey"},{"name":"created_at","type":"u64"},{"name":"fulfilled_at","type":"u64"},{"name":"time_unit","type":{"defined":{"name":"TimeUnit"}}},{"name":"kind","type":{"defined":{"name":"LedgerEntryKind"}}},{"name":"incoming","type":{"defined":{"name":"PubkeyAmount"}}},{"name":"value","type":"u64"},{"name":"outgoing","type":{"option":{"defined":{"name":"PubkeyAmount"}}}}]}},{"name":"LedgerEntryKind","type":{"kind":"enum","variants":[{"name":"Subscription"},{"name":"Redemption"}]}},{"name":"LiquidityParameter","type":{"kind":"struct","fields":[{"name":"amount_x","type":"u64"},{"name":"amount_y","type":"u64"},{"name":"bin_liquidity_dist","type":{"vec":{"defined":{"name":"BinLiquidityDistribution"}}}}]}},{"name":"LiquidityParameterByStrategy","type":{"kind":"struct","fields":[{"name":"amount_x","type":"u64"},{"name":"amount_y","type":"u64"},{"name":"active_id","type":"i32"},{"name":"max_active_bin_slippage","type":"i32"},{"name":"strategy_parameters","type":{"defined":{"name":"StrategyParameters"}}}]}},{"name":"ManagementFee","type":{"kind":"struct","fields":[{"name":"fee_bps","type":"u16"}]}},{"name":"ManagerKind","type":{"kind":"enum","variants":[{"name":"Wallet"},{"name":"Squads"}]}},{"name":"ManagerModel","type":{"kind":"struct","fields":[{"name":"portfolio_manager_name","type":{"option":"string"}},{"name":"pubkey","type":{"option":"pubkey"}},{"name":"kind","type":{"option":{"defined":{"name":"ManagerKind"}}}}]}},{"name":"MarketType","type":{"kind":"enum","variants":[{"name":"Spot"},{"name":"Perp"}]}},{"name":"Metadata","type":{"kind":"struct","fields":[{"name":"template","type":{"defined":{"name":"MetadataTemplate"}}},{"name":"pubkey","type":"pubkey"},{"name":"uri","type":"string"}]}},{"name":"MetadataTemplate","type":{"kind":"enum","variants":[{"name":"Openfunds"}]}},{"name":"MintModel","type":{"kind":"struct","fields":[{"name":"symbol","type":{"option":"string"}},{"name":"name","type":{"option":"string"}},{"name":"uri","type":{"option":"string"}},{"name":"state_pubkey","type":{"option":"pubkey"}},{"name":"asset","type":{"option":"pubkey"}},{"name":"image_uri","type":{"option":"string"}},{"name":"allowlist","type":{"option":{"vec":"pubkey"}}},{"name":"blocklist","type":{"option":{"vec":"pubkey"}}},{"name":"lock_up_period_in_seconds","type":{"option":"i32"}},{"name":"permanent_delegate","type":{"option":"pubkey"}},{"name":"default_account_state_frozen","type":{"option":"bool"}},{"name":"fee_structure","type":{"option":{"defined":{"name":"FeeStructure"}}}},{"name":"fee_params","type":{"option":{"defined":{"name":"FeeParams"}}}},{"name":"valuation","type":{"option":{"defined":{"name":"Valuation"}}}},{"name":"min_subscription","type":{"option":"u64"}},{"name":"min_redemption","type":{"option":"u64"}},{"name":"is_raw_openfunds","type":{"option":"bool"}},{"name":"raw_openfunds","type":{"option":{"defined":{"name":"MintOpenfundsModel"}}}}]}},{"name":"MintOpenfundsModel","type":{"kind":"struct","fields":[{"name":"isin","type":{"option":"string"}},{"name":"share_class_currency","type":{"option":"string"}},{"name":"full_share_class_name","type":{"option":"string"}},{"name":"has_performance_fee","type":{"option":"bool"}},{"name":"investment_status","type":{"option":"string"}},{"name":"minimal_initial_subscription_in_amount","type":{"option":"string"}},{"name":"minimal_initial_subscription_in_shares","type":{"option":"string"}},{"name":"minimal_subsequent_subscription_in_amount","type":{"option":"string"}},{"name":"minimal_subsequent_subscription_in_shares","type":{"option":"string"}},{"name":"share_class_launch_date","type":{"option":"string"}},{"name":"share_class_lifecycle","type":{"option":"string"}},{"name":"launch_price","type":{"option":"string"}},{"name":"launch_price_currency","type":{"option":"string"}},{"name":"launch_price_date","type":{"option":"string"}},{"name":"has_lock_up_for_redemption","type":{"option":"bool"}},{"name":"lock_up_comment","type":{"option":"string"}},{"name":"lock_up_period_in_days","type":{"option":"string"}},{"name":"minimal_initial_redemption_in_amount","type":{"option":"string"}},{"name":"minimal_initial_redemption_in_shares","type":{"option":"string"}},{"name":"minimal_subsequent_redemption_in_amount","type":{"option":"string"}},{"name":"minimal_subsequent_redemption_in_shares","type":{"option":"string"}},{"name":"rounding_method_for_prices","type":{"option":"string"}},{"name":"cusip","type":{"option":"string"}},{"name":"valor","type":{"option":"string"}}]}},{"name":"ModifyOrderParams","type":{"kind":"struct","fields":[{"name":"direction","type":{"option":{"defined":{"name":"PositionDirection"}}}},{"name":"base_asset_amount","type":{"option":"u64"}},{"name":"price","type":{"option":"u64"}},{"name":"reduce_only","type":{"option":"bool"}},{"name":"post_only","type":{"option":{"defined":{"name":"PostOnlyParam"}}}},{"name":"immediate_or_cancel","type":{"option":"bool"}},{"name":"max_ts","type":{"option":"i64"}},{"name":"trigger_price","type":{"option":"u64"}},{"name":"trigger_condition","type":{"option":{"defined":{"name":"OrderTriggerCondition"}}}},{"name":"oracle_price_offset","type":{"option":"i32"}},{"name":"auction_duration","type":{"option":"u8"}},{"name":"auction_start_price","type":{"option":"i64"}},{"name":"auction_end_price","type":{"option":"i64"}},{"name":"policy","type":{"option":"u8"}}]}},{"name":"NoticePeriodType","type":{"kind":"enum","variants":[{"name":"Hard"},{"name":"Soft"}]}},{"name":"OpenfundsMetadataAccount","type":{"kind":"struct","fields":[{"name":"fund_id","type":"pubkey"},{"name":"company","type":{"vec":{"defined":{"name":"CompanyField"}}}},{"name":"fund","type":{"vec":{"defined":{"name":"FundField"}}}},{"name":"share_classes","type":{"vec":{"vec":{"defined":{"name":"ShareClassField"}}}}},{"name":"fund_managers","type":{"vec":{"vec":{"defined":{"name":"FundManagerField"}}}}}]}},{"name":"OrderParams","type":{"kind":"struct","fields":[{"name":"order_type","type":{"defined":{"name":"OrderType"}}},{"name":"market_type","type":{"defined":{"name":"MarketType"}}},{"name":"direction","type":{"defined":{"name":"PositionDirection"}}},{"name":"user_order_id","type":"u8"},{"name":"base_asset_amount","type":"u64"},{"name":"price","type":"u64"},{"name":"market_index","type":"u16"},{"name":"reduce_only","type":"bool"},{"name":"post_only","type":{"defined":{"name":"PostOnlyParam"}}},{"name":"immediate_or_cancel","type":"bool"},{"name":"max_ts","type":{"option":"i64"}},{"name":"trigger_price","type":{"option":"u64"}},{"name":"trigger_condition","type":{"defined":{"name":"OrderTriggerCondition"}}},{"name":"oracle_price_offset","type":{"option":"i32"}},{"name":"auction_duration","type":{"option":"u8"}},{"name":"auction_start_price","type":{"option":"i64"}},{"name":"auction_end_price","type":{"option":"i64"}}]}},{"name":"OrderTriggerCondition","type":{"kind":"enum","variants":[{"name":"Above"},{"name":"Below"},{"name":"TriggeredAbove"},{"name":"TriggeredBelow"}]}},{"name":"OrderType","type":{"kind":"enum","variants":[{"name":"Market"},{"name":"Limit"},{"name":"TriggerMarket"},{"name":"TriggerLimit"},{"name":"Oracle"}]}},{"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":"Permission","docs":["* Delegate ACL"],"type":{"kind":"enum","variants":[{"name":"DriftInit"},{"name":"DriftUpdateUser"},{"name":"DriftDeleteUser"},{"name":"DriftDeposit"},{"name":"DriftWithdraw"},{"name":"DriftOrders"},{"name":"DriftBorrow"},{"name":"DriftPerpMarket"},{"name":"DriftSpotMarket"},{"name":"Stake"},{"name":"Unstake"},{"name":"__DeprecatedLiquidUnstake"},{"name":"JupiterSwapAllowlisted"},{"name":"JupiterSwapAny"},{"name":"WSol"},{"name":"__DeprecatedWSolUnwrap"},{"name":"MintMintTokens"},{"name":"MintBurnTokens"},{"name":"MintForceTransferTokens"},{"name":"MintSetTokenAccountState"},{"name":"JupiterGovStake"},{"name":"JupiterGovVoteOnProposal"},{"name":"JupiterGovUnstake"},{"name":"JupiterSwapLst"},{"name":"JupiterSwapPriceable"},{"name":"KaminoInit"},{"name":"KaminoDeposit"},{"name":"KaminoBorrow"},{"name":"KaminoWithdraw"},{"name":"KaminoClaim"},{"name":"MeteoraDlmmPosition"},{"name":"MeteoraDlmmLiquidity"},{"name":"MeteoraDlmmClaim"},{"name":"MeteoraDlmmSwap"},{"name":"TransferToAllowlisted"},{"name":"JupiterGovWithdraw"},{"name":"JupiterGovClaim"}]}},{"name":"PositionDirection","type":{"kind":"enum","variants":[{"name":"Long"},{"name":"Short"}]}},{"name":"PostOnlyParam","type":{"kind":"enum","variants":[{"name":"None"},{"name":"MustPostOnly"},{"name":"TryPostOnly"},{"name":"Slide"}]}},{"name":"PriceDenom","type":{"kind":"enum","variants":[{"name":"SOL"},{"name":"USD"},{"name":"ASSET6"}]}},{"name":"PricedAssets","type":{"kind":"struct","fields":[{"name":"denom","type":{"defined":{"name":"PriceDenom"}}},{"name":"accounts","type":{"vec":"pubkey"}},{"name":"rent","type":"u64"},{"name":"amount","type":"i128"},{"name":"decimals","type":"u8"},{"name":"last_updated_slot","type":"u64"},{"name":"integration","type":{"option":{"defined":{"name":"Integration"}}}}]}},{"name":"ProtocolFees","type":{"kind":"struct","fields":[{"name":"base_fee_bps","type":"u16"},{"name":"flow_fee_bps","type":"u16"}]}},{"name":"PubkeyAmount","type":{"kind":"struct","fields":[{"name":"pubkey","type":"pubkey"},{"name":"amount","type":"u64"},{"name":"decimals","type":"u8"}]}},{"name":"RemainingAccountsInfo","type":{"kind":"struct","fields":[{"name":"slices","type":{"vec":{"defined":{"name":"RemainingAccountsSlice"}}}}]}},{"name":"RemainingAccountsSlice","type":{"kind":"struct","fields":[{"name":"accounts_type","type":{"defined":{"name":"AccountsType"}}},{"name":"length","type":"u8"}]}},{"name":"SettlePnlMode","type":{"kind":"enum","variants":[{"name":"MustSettle"},{"name":"TrySettle"}]}},{"name":"ShareClassField","type":{"kind":"struct","fields":[{"name":"name","type":{"defined":{"name":"ShareClassFieldName"}}},{"name":"value","type":"string"}]}},{"name":"ShareClassFieldName","type":{"kind":"enum","variants":[{"name":"ISIN"},{"name":"ShareClassCurrency"},{"name":"AppliedSubscriptionFeeInFavourOfDistributor"},{"name":"AppliedSubscriptionFeeInFavourOfDistributorReferenceDate"},{"name":"CurrencyOfMinimalSubscription"},{"name":"FullShareClassName"},{"name":"HasPerformanceFee"},{"name":"HasSubscriptionFeeInFavourOfDistributor"},{"name":"InvestmentStatus"},{"name":"ManagementFeeApplied"},{"name":"ManagementFeeAppliedReferenceDate"},{"name":"ManagementFeeMaximum"},{"name":"MaximumSubscriptionFeeInFavourOfDistributor"},{"name":"MinimalInitialSubscriptionCategory"},{"name":"MinimalInitialSubscriptionInAmount"},{"name":"MinimalInitialSubscriptionInShares"},{"name":"MinimalSubsequentSubscriptionCategory"},{"name":"MinimalSubsequentSubscriptionInAmount"},{"name":"MinimalSubsequentSubscriptionInShares"},{"name":"MinimumSubscriptionFeeInFavourOfDistributor"},{"name":"ShareClassDistributionPolicy"},{"name":"ShareClassExtension"},{"name":"ShareClassLaunchDate"},{"name":"ShareClassLifecycle"},{"name":"SRRI"},{"name":"LaunchPrice"},{"name":"LaunchPriceCurrency"},{"name":"LaunchPriceDate"},{"name":"HasAppliedSubscriptionFeeInFavourOfFund"},{"name":"AppliedSubscriptionFeeInFavourOfFund"},{"name":"AppliedSubscriptionFeeInFavourOfFundReferenceDate"},{"name":"MaximumSubscriptionFeeInFavourOfFund"},{"name":"HasAppliedRedemptionFeeInFavourOfFund"},{"name":"AppliedRedemptionFeeInFavourOfFund"},{"name":"AppliedRedemptionFeeInFavourOfFundReferenceDate"},{"name":"MaximumRedemptionFeeInFavourOfFund"},{"name":"AppliedRedemptionFeeInFavourOfDistributor"},{"name":"AppliedRedemptionFeeInFavourOfDistributorReferenceDate"},{"name":"CurrencyOfMinimalOrMaximumRedemption"},{"name":"CutOffDateOffsetForRedemption"},{"name":"CutOffDateOffsetForSubscription"},{"name":"CutOffTimeForRedemption"},{"name":"CutOffTimeForSubscription"},{"name":"HasLockUpForRedemption"},{"name":"HasRedemptionFeeInFavourOfDistributor"},{"name":"IsValidISIN"},{"name":"LockUpComment"},{"name":"LockUpPeriodInDays"},{"name":"ManagementFeeMinimum"},{"name":"MaximalNumberOfPossibleDecimalsAmount"},{"name":"MaximalNumberOfPossibleDecimalsNAV"},{"name":"MaximalNumberOfPossibleDecimalsShares"},{"name":"MaximumInitialRedemptionInAmount"},{"name":"MaximumInitialRedemptionInShares"},{"name":"MaximumRedemptionFeeInFavourOfDistributor"},{"name":"MaximumSubsequentRedemptionInAmount"},{"name":"MaximumSubsequentRedemptionInShares"},{"name":"MinimalInitialRedemptionInAmount"},{"name":"MinimalInitialRedemptionInShares"},{"name":"MinimalRedemptionCategory"},{"name":"MinimalSubsequentRedemptionInAmount"},{"name":"MinimalSubsequentRedemptionInShares"},{"name":"MinimumRedemptionFeeInFavourOfDistributor"},{"name":"MinimumRedemptionFeeInFavourOfFund"},{"name":"MinimumSubscriptionFeeInFavourOfFund"},{"name":"PerformanceFeeMinimum"},{"name":"RoundingMethodForPrices"},{"name":"RoundingMethodForRedemptionInAmount"},{"name":"RoundingMethodForRedemptionInShares"},{"name":"RoundingMethodForSubscriptionInAmount"},{"name":"RoundingMethodForSubscriptionInShares"},{"name":"ShareClassDividendType"},{"name":"CUSIP"},{"name":"Valor"},{"name":"FundId"},{"name":"ImageUri"}]}},{"name":"StateAccount","type":{"kind":"struct","fields":[{"name":"account_type","type":{"defined":{"name":"AccountType"}}},{"name":"owner","type":"pubkey"},{"name":"vault","type":"pubkey"},{"name":"enabled","type":"bool"},{"name":"created","type":{"defined":{"name":"CreatedModel"}}},{"name":"engine","type":"pubkey"},{"name":"mints","type":{"vec":"pubkey"}},{"name":"metadata","type":{"option":{"defined":{"name":"Metadata"}}}},{"name":"name","type":"string"},{"name":"uri","type":"string"},{"name":"assets","type":{"vec":"pubkey"}},{"name":"delegate_acls","type":{"vec":{"defined":{"name":"DelegateAcl"}}}},{"name":"integrations","type":{"vec":{"defined":{"name":"Integration"}}}},{"name":"params","type":{"vec":{"vec":{"defined":{"name":"EngineField"}}}}}]}},{"name":"StateModel","type":{"kind":"struct","fields":[{"name":"id","type":{"option":"pubkey"}},{"name":"account_type","type":{"option":{"defined":{"name":"AccountType"}}}},{"name":"name","type":{"option":"string"}},{"name":"uri","type":{"option":"string"}},{"name":"enabled","type":{"option":"bool"}},{"name":"assets","type":{"option":{"vec":"pubkey"}}},{"name":"external_vault_accounts","type":{"option":{"vec":"pubkey"}}},{"name":"mints","type":{"option":{"vec":{"defined":{"name":"MintModel"}}}}},{"name":"company","type":{"option":{"defined":{"name":"CompanyModel"}}}},{"name":"owner","type":{"option":{"defined":{"name":"ManagerModel"}}}},{"name":"created","type":{"option":{"defined":{"name":"CreatedModel"}}}},{"name":"delegate_acls","type":{"option":{"vec":{"defined":{"name":"DelegateAcl"}}}}},{"name":"integrations","type":{"option":{"vec":{"defined":{"name":"Integration"}}}}},{"name":"drift_market_indexes_perp","type":{"option":{"vec":"u32"}}},{"name":"drift_market_indexes_spot","type":{"option":{"vec":"u32"}}},{"name":"drift_order_types","type":{"option":{"vec":"u32"}}},{"name":"base_asset","type":{"option":"pubkey"}},{"name":"max_cap","type":{"option":"u64"}},{"name":"metadata","type":{"option":{"defined":{"name":"Metadata"}}}},{"name":"raw_openfunds","type":{"option":{"defined":{"name":"FundOpenfundsModel"}}}}]}},{"name":"StrategyParameters","type":{"kind":"struct","fields":[{"name":"min_bin_id","type":"i32"},{"name":"max_bin_id","type":"i32"},{"name":"strategy_type","type":{"defined":{"name":"StrategyType"}}},{"name":"parameteres","type":{"array":["u8",64]}}]}},{"name":"StrategyType","type":{"kind":"enum","variants":[{"name":"SpotOneSide"},{"name":"CurveOneSide"},{"name":"BidAskOneSide"},{"name":"SpotBalanced"},{"name":"CurveBalanced"},{"name":"BidAskBalanced"},{"name":"SpotImBalanced"},{"name":"CurveImBalanced"},{"name":"BidAskImBalanced"}]}},{"name":"TimeUnit","type":{"kind":"enum","variants":[{"name":"Slot"},{"name":"Second"}]}},{"name":"Valuation","type":{"kind":"struct","fields":[{"name":"model","type":{"defined":{"name":"ValuationModel"}}},{"name":"notice_period","type":"u64"},{"name":"notice_period_type","type":{"defined":{"name":"NoticePeriodType"}}},{"name":"permissionless_fulfillment","type":"bool"},{"name":"settlement_period","type":"u64"},{"name":"cancellation_window","type":"u64"},{"name":"time_unit","type":{"defined":{"name":"TimeUnit"}}}]}},{"name":"ValuationModel","type":{"kind":"enum","variants":[{"name":"Continuous"},{"name":"Periodic"}]}}],"constants":[{"name":"SEED_ACCOUNT_POLICY","type":"string","value":"\\"account-policy\\""},{"name":"SEED_ESCROW","type":"string","value":"\\"escrow\\""},{"name":"SEED_METADATA","type":"string","value":"\\"metadata\\""},{"name":"SEED_MINT","type":"string","value":"\\"mint\\""},{"name":"SEED_STATE","type":"string","value":"\\"state\\""},{"name":"SEED_VAULT","type":"string","value":"\\"vault\\""}]}');
87
+ module.exports = /*#__PURE__*/JSON.parse('{"address":"GLAMbTqav9N9witRjswJ8enwp9vv5G8bsSJ2kPJ4rcyc","metadata":{"name":"glam_protocol","version":"0.4.16","spec":"0.1.0","description":"Glam Protocol"},"instructions":[{"name":"add_mint","discriminator":[171,222,111,37,60,166,208,108],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_signer","writable":true,"signer":true},{"name":"new_mint","writable":true},{"name":"extra_metas_account","writable":true,"optional":true},{"name":"openfunds_metadata","writable":true,"optional":true,"pda":{"seeds":[{"kind":"const","value":[109,101,116,97,100,97,116,97]},{"kind":"account","path":"glam_state"}]}},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"policies_program","address":"po1iCYakK3gHCLbuju4wGzFowTMpAJxkqK1iwUqMonY"}],"args":[{"name":"mint_model","type":{"defined":{"name":"MintModel"}}}]},{"name":"burn_tokens","discriminator":[76,15,51,254,229,215,121,66],"accounts":[{"name":"glam_state"},{"name":"glam_signer","writable":true,"signer":true},{"name":"glam_mint","writable":true},{"name":"from_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"from"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"from"},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"}],"args":[{"name":"mint_id","type":"u8"},{"name":"amount","type":"u64"}]},{"name":"claim","discriminator":[62,198,214,193,213,159,108,210],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_escrow","pda":{"seeds":[{"kind":"const","value":[101,115,99,114,111,119]},{"kind":"account","path":"glam_state"}]}},{"name":"signer","writable":true,"signer":true},{"name":"token_mint"},{"name":"signer_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"signer"},{"kind":"account","path":"token_program"},{"kind":"account","path":"token_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"escrow_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_escrow"},{"kind":"account","path":"token_program"},{"kind":"account","path":"token_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_program"}],"args":[{"name":"mint_id","type":"u8"}]},{"name":"close_mint","discriminator":[149,251,157,212,65,181,235,129],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"glam_mint","writable":true},{"name":"extra_metas_account","writable":true,"optional":true},{"name":"metadata","writable":true,"pda":{"seeds":[{"kind":"const","value":[109,101,116,97,100,97,116,97]},{"kind":"account","path":"glam_state"}]}},{"name":"policies_program","address":"po1iCYakK3gHCLbuju4wGzFowTMpAJxkqK1iwUqMonY"},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"mint_id","type":"u8"}]},{"name":"close_state","discriminator":[25,1,184,101,200,245,210,246],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"metadata","writable":true,"pda":{"seeds":[{"kind":"const","value":[109,101,116,97,100,97,116,97]},{"kind":"account","path":"glam_state"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"crystallize_fees","discriminator":[78,0,111,26,7,12,41,249],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_escrow","pda":{"seeds":[{"kind":"const","value":[101,115,99,114,111,119]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_mint","writable":true},{"name":"escrow_mint_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_escrow"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"signer","writable":true,"signer":true},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"}],"args":[{"name":"mint_id","type":"u8"}]},{"name":"drift_cancel_orders","discriminator":[98,107,48,79,97,60,99,58],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"state"},{"name":"user","writable":true}],"args":[{"name":"market_type","type":{"option":{"defined":{"name":"MarketType"}}}},{"name":"market_index","type":{"option":"u16"}},{"name":"direction","type":{"option":{"defined":{"name":"PositionDirection"}}}}]},{"name":"drift_cancel_orders_by_ids","discriminator":[172,99,108,14,81,89,228,183],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"state"},{"name":"user","writable":true}],"args":[{"name":"order_ids","type":{"vec":"u32"}}]},{"name":"drift_delete_user","discriminator":[179,118,20,212,145,146,49,130],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"user","writable":true},{"name":"user_stats","writable":true},{"name":"state","writable":true}],"args":[]},{"name":"drift_deposit","discriminator":[252,63,250,201,98,55,130,12],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"state"},{"name":"user","writable":true},{"name":"user_stats","writable":true},{"name":"spot_market_vault","writable":true},{"name":"user_token_account","writable":true},{"name":"token_program"}],"args":[{"name":"market_index","type":"u16"},{"name":"amount","type":"u64"},{"name":"reduce_only","type":"bool"}]},{"name":"drift_initialize_user","discriminator":[107,244,158,15,225,239,98,245],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"user","writable":true},{"name":"user_stats","writable":true},{"name":"state","writable":true},{"name":"payer","writable":true,"signer":true},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"sub_account_id","type":"u16"},{"name":"name","type":{"array":["u8",32]}}]},{"name":"drift_initialize_user_stats","discriminator":[133,185,103,162,90,161,78,143],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"user_stats","writable":true},{"name":"state","writable":true},{"name":"payer","writable":true,"signer":true},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"drift_modify_order","discriminator":[235,245,222,58,245,128,19,202],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"state"},{"name":"user","writable":true}],"args":[{"name":"order_id","type":{"option":"u32"}},{"name":"modify_order_params","type":{"defined":{"name":"ModifyOrderParams"}}}]},{"name":"drift_place_orders","discriminator":[117,18,210,6,238,174,135,167],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"state"},{"name":"user","writable":true}],"args":[{"name":"params","type":{"vec":{"defined":{"name":"OrderParams"}}}}]},{"name":"drift_settle_multiple_pnls","discriminator":[100,72,3,45,69,37,10,144],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"state"},{"name":"user","writable":true},{"name":"spot_market_vault"}],"args":[{"name":"market_indexes","type":{"vec":"u16"}},{"name":"mode","type":{"defined":{"name":"SettlePnlMode"}}}]},{"name":"drift_settle_pnl","discriminator":[161,254,255,100,140,113,169,175],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"state"},{"name":"user","writable":true},{"name":"spot_market_vault"}],"args":[{"name":"market_index","type":"u16"}]},{"name":"drift_update_user_custom_margin_ratio","discriminator":[4,47,193,177,128,62,228,14],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"user","writable":true}],"args":[{"name":"sub_account_id","type":"u16"},{"name":"margin_ratio","type":"u32"}]},{"name":"drift_update_user_delegate","discriminator":[36,181,34,31,22,77,36,154],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"user","writable":true}],"args":[{"name":"sub_account_id","type":"u16"},{"name":"delegate","type":"pubkey"}]},{"name":"drift_update_user_margin_trading_enabled","discriminator":[157,175,12,19,202,114,17,36],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"user","writable":true}],"args":[{"name":"sub_account_id","type":"u16"},{"name":"margin_trading_enabled","type":"bool"}]},{"name":"drift_withdraw","discriminator":[86,59,186,123,183,181,234,137],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"},{"name":"state"},{"name":"user","writable":true},{"name":"user_stats","writable":true},{"name":"spot_market_vault","writable":true},{"name":"drift_signer"},{"name":"user_token_account","writable":true},{"name":"token_program"}],"args":[{"name":"market_index","type":"u16"},{"name":"amount","type":"u64"},{"name":"reduce_only","type":"bool"}]},{"name":"force_transfer_tokens","discriminator":[185,34,78,211,192,13,160,37],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_signer","writable":true,"signer":true},{"name":"glam_mint","writable":true},{"name":"from_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"from"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"to_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"to"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"from"},{"name":"to"},{"name":"to_policy_account","writable":true,"optional":true},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"policies_program","address":"po1iCYakK3gHCLbuju4wGzFowTMpAJxkqK1iwUqMonY"}],"args":[{"name":"mint_id","type":"u8"},{"name":"amount","type":"u64"}]},{"name":"fulfill","discriminator":[143,2,52,206,174,164,247,72],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_escrow","pda":{"seeds":[{"kind":"const","value":[101,115,99,114,111,119]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_mint","writable":true},{"name":"signer","writable":true,"signer":true},{"name":"escrow_mint_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_escrow"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"asset"},{"name":"vault_asset_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_vault"},{"kind":"const","value":[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{"kind":"account","path":"asset"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"escrow_asset_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_escrow"},{"kind":"const","value":[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{"kind":"account","path":"asset"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_program","address":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"associated_token_program","address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],"args":[{"name":"mint_id","type":"u8"}]},{"name":"initialize_state","discriminator":[190,171,224,219,217,72,199,176],"accounts":[{"name":"glam_state","writable":true,"pda":{"seeds":[{"kind":"const","value":[115,116,97,116,101]},{"kind":"account","path":"glam_signer"},{"kind":"arg","path":"state_model.created"}]}},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"openfunds_metadata","writable":true,"optional":true,"pda":{"seeds":[{"kind":"const","value":[109,101,116,97,100,97,116,97]},{"kind":"account","path":"glam_state"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"state","type":{"defined":{"name":"StateModel"}}}]},{"name":"jupiter_gov_new_vote","discriminator":[235,179,170,64,64,57,17,69],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"GovaE4iu227srtG2s3tZzB4RmWBzw8sTwrCLZz7kN7rY"},{"name":"proposal"},{"name":"vote","writable":true},{"name":"payer","writable":true,"signer":true},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"voter","type":"pubkey"}]},{"name":"jupiter_set_max_swap_slippage","discriminator":[110,79,13,71,208,111,56,66],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_signer","writable":true,"signer":true}],"args":[{"name":"slippage","type":"u64"}]},{"name":"jupiter_swap","discriminator":[116,207,0,196,252,120,243,18],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"},{"name":"input_vault_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_vault"},{"kind":"account","path":"input_token_program"},{"kind":"account","path":"input_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"output_vault_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_vault"},{"kind":"account","path":"output_token_program"},{"kind":"account","path":"output_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"input_mint"},{"name":"output_mint"},{"name":"input_stake_pool","optional":true},{"name":"output_stake_pool","optional":true},{"name":"associated_token_program","address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"input_token_program"},{"name":"output_token_program"}],"args":[{"name":"data","type":"bytes"}]},{"name":"jupiter_vote_cast_vote","discriminator":[11,197,234,57,164,74,181,239],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker"},{"name":"escrow"},{"name":"proposal","writable":true},{"name":"vote","writable":true},{"name":"governor"},{"name":"govern_program"}],"args":[{"name":"side","type":"u8"}]},{"name":"jupiter_vote_cast_vote_checked","discriminator":[247,3,146,233,35,189,192,187],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker"},{"name":"escrow"},{"name":"proposal","writable":true},{"name":"vote","writable":true},{"name":"governor"},{"name":"govern_program"}],"args":[{"name":"side","type":"u8"},{"name":"expected_side","type":"u8"}]},{"name":"jupiter_vote_increase_locked_amount","discriminator":[225,38,201,123,148,23,47,128],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker","writable":true},{"name":"escrow","writable":true},{"name":"escrow_tokens","writable":true},{"name":"source_tokens","writable":true},{"name":"token_program"}],"args":[{"name":"amount","type":"u64"}]},{"name":"jupiter_vote_merge_partial_unstaking","discriminator":[93,226,122,120,130,35,189,208],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker","writable":true},{"name":"escrow","writable":true},{"name":"partial_unstake","writable":true}],"args":[]},{"name":"jupiter_vote_new_escrow","discriminator":[255,87,157,219,61,178,144,159],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker","writable":true},{"name":"escrow","writable":true},{"name":"payer","writable":true,"signer":true},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"jupiter_vote_open_partial_unstaking","discriminator":[84,7,113,220,212,63,237,218],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker","writable":true},{"name":"escrow","writable":true},{"name":"partial_unstake","writable":true,"signer":true},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"amount","type":"u64"},{"name":"memo","type":"string"}]},{"name":"jupiter_vote_toggle_max_lock","discriminator":[204,158,192,21,219,25,154,87],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker"},{"name":"escrow","writable":true}],"args":[{"name":"is_max_lock","type":"bool"}]},{"name":"jupiter_vote_withdraw","discriminator":[195,172,184,195,23,178,145,191],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker","writable":true},{"name":"escrow","writable":true},{"name":"escrow_tokens","writable":true},{"name":"destination_tokens","writable":true},{"name":"token_program"}],"args":[]},{"name":"jupiter_vote_withdraw_partial_unstaking","discriminator":[109,98,65,252,184,0,216,240],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj"},{"name":"locker","writable":true},{"name":"escrow","writable":true},{"name":"partial_unstake","writable":true},{"name":"escrow_tokens","writable":true},{"name":"destination_tokens","writable":true},{"name":"token_program"}],"args":[]},{"name":"kamino_farm_harvest_reward","discriminator":[64,132,133,175,224,147,145,119],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr"},{"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":"kamino_lending_borrow_obligation_liquidity_v2","discriminator":[175,198,39,162,103,76,51,121],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"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":"kamino_lending_deposit_reserve_liquidity_and_obligation_collateral_v2","discriminator":[93,120,106,112,40,45,84,32],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"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":"kamino_lending_init_obligation","discriminator":[219,210,134,64,155,49,137,174],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"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":"kamino_lending_init_obligation_farms_for_reserve","discriminator":[227,61,130,2,117,226,78,1],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"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":"kamino_lending_init_user_metadata","discriminator":[200,95,140,132,190,65,17,161],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"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":"kamino_lending_repay_obligation_liquidity_v2","discriminator":[135,57,236,69,153,77,15,88],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"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":"kamino_lending_withdraw_obligation_collateral_and_redeem_reserve_collateral_v2","discriminator":[249,60,252,239,136,53,181,3],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},{"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":"marinade_claim","discriminator":[54,44,48,204,218,141,36,5],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD"},{"name":"state","writable":true},{"name":"reserve_pda","writable":true},{"name":"ticket_account","writable":true},{"name":"clock"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"marinade_deposit","discriminator":[62,236,248,28,222,232,182,73],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD"},{"name":"state","writable":true},{"name":"msol_mint","writable":true},{"name":"liq_pool_sol_leg_pda","writable":true},{"name":"liq_pool_msol_leg","writable":true},{"name":"liq_pool_msol_leg_authority"},{"name":"reserve_pda","writable":true},{"name":"mint_to","writable":true},{"name":"msol_mint_authority"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_program"}],"args":[{"name":"lamports","type":"u64"}]},{"name":"marinade_deposit_stake_account","discriminator":[141,230,58,103,56,205,159,138],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD"},{"name":"state","writable":true},{"name":"validator_list","writable":true},{"name":"stake_list","writable":true},{"name":"stake_account","writable":true},{"name":"duplication_flag","writable":true},{"name":"msol_mint","writable":true},{"name":"mint_to","writable":true},{"name":"msol_mint_authority"},{"name":"clock"},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_program"},{"name":"stake_program"}],"args":[{"name":"validator_idx","type":"u32"}]},{"name":"marinade_order_unstake","discriminator":[202,3,33,27,183,156,57,231],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD"},{"name":"state","writable":true},{"name":"msol_mint","writable":true},{"name":"burn_msol_from","writable":true},{"name":"new_ticket_account","writable":true},{"name":"clock"},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"token_program"}],"args":[{"name":"msol_amount","type":"u64"}]},{"name":"merkle_distributor_new_claim_and_stake","discriminator":[203,167,65,87,208,161,91,207],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"DiS3nNjFVMieMgmiQFm6wgJL7nevk4NrhXKLbtEH1Z2R"},{"name":"distributor","writable":true},{"name":"claim_status","writable":true},{"name":"from","writable":true},{"name":"token_program"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"voter_program"},{"name":"locker","writable":true},{"name":"escrow","writable":true},{"name":"escrow_tokens","writable":true}],"args":[{"name":"amount_unlocked","type":"u64"},{"name":"amount_locked","type":"u64"},{"name":"proof","type":{"vec":{"array":["u8",32]}}}]},{"name":"meteora_dlmm_add_liquidity2","discriminator":[248,123,81,94,137,10,79,81],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"position","writable":true},{"name":"lb_pair","writable":true},{"name":"bin_array_bitmap_extension","writable":true,"optional":true},{"name":"user_token_x","writable":true},{"name":"user_token_y","writable":true},{"name":"reserve_x","writable":true},{"name":"reserve_y","writable":true},{"name":"token_x_mint"},{"name":"token_y_mint"},{"name":"token_x_program"},{"name":"token_y_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"liquidity_parameter","type":{"defined":{"name":"LiquidityParameter"}}},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"meteora_dlmm_add_liquidity_by_strategy2","discriminator":[219,171,159,202,167,192,209,25],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"position","writable":true},{"name":"lb_pair","writable":true},{"name":"bin_array_bitmap_extension","writable":true,"optional":true},{"name":"user_token_x","writable":true},{"name":"user_token_y","writable":true},{"name":"reserve_x","writable":true},{"name":"reserve_y","writable":true},{"name":"token_x_mint"},{"name":"token_y_mint"},{"name":"token_x_program"},{"name":"token_y_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"liquidity_parameter","type":{"defined":{"name":"LiquidityParameterByStrategy"}}},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"meteora_dlmm_add_liquidity_one_side_precise2","discriminator":[60,137,107,235,107,209,19,106],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"position","writable":true},{"name":"lb_pair","writable":true},{"name":"bin_array_bitmap_extension","writable":true,"optional":true},{"name":"user_token","writable":true},{"name":"reserve","writable":true},{"name":"token_mint"},{"name":"token_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"parameter","type":{"defined":{"name":"AddLiquiditySingleSidePreciseParameter2"}}},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"meteora_dlmm_claim_fee2","discriminator":[152,214,221,166,191,34,17,189],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"lb_pair","writable":true},{"name":"position","writable":true},{"name":"reserve_x","writable":true},{"name":"reserve_y","writable":true},{"name":"user_token_x","writable":true},{"name":"user_token_y","writable":true},{"name":"token_x_mint"},{"name":"token_y_mint"},{"name":"token_program_x"},{"name":"token_program_y"},{"name":"memo_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"min_bin_id","type":"i32"},{"name":"max_bin_id","type":"i32"},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"meteora_dlmm_claim_reward2","discriminator":[73,232,244,62,123,103,114,39],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"lb_pair","writable":true},{"name":"position","writable":true},{"name":"reward_vault","writable":true},{"name":"reward_mint"},{"name":"user_token_account","writable":true},{"name":"token_program"},{"name":"memo_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"reward_index","type":"u64"},{"name":"min_bin_id","type":"i32"},{"name":"max_bin_id","type":"i32"},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"meteora_dlmm_close_position","discriminator":[186,117,42,24,221,194,34,143],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"position","writable":true},{"name":"lb_pair","writable":true},{"name":"bin_array_lower","writable":true},{"name":"bin_array_upper","writable":true},{"name":"rent_receiver","writable":true},{"name":"event_authority"},{"name":"program"}],"args":[]},{"name":"meteora_dlmm_initialize_position","discriminator":[223,94,215,96,175,181,195,204],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"payer","writable":true,"signer":true},{"name":"position","writable":true,"signer":true},{"name":"lb_pair"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"lower_bin_id","type":"i32"},{"name":"width","type":"i32"}]},{"name":"meteora_dlmm_initialize_position_pda","discriminator":[206,130,13,156,170,45,96,115],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"payer","writable":true,"signer":true},{"name":"position","writable":true},{"name":"lb_pair"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"lower_bin_id","type":"i32"},{"name":"width","type":"i32"}]},{"name":"meteora_dlmm_remove_liquidity2","discriminator":[118,111,170,14,224,187,21,119],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"position","writable":true},{"name":"lb_pair","writable":true},{"name":"bin_array_bitmap_extension","writable":true,"optional":true},{"name":"user_token_x","writable":true},{"name":"user_token_y","writable":true},{"name":"reserve_x","writable":true},{"name":"reserve_y","writable":true},{"name":"token_x_mint"},{"name":"token_y_mint"},{"name":"token_x_program"},{"name":"token_y_program"},{"name":"memo_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"bin_liquidity_removal","type":{"vec":{"defined":{"name":"BinLiquidityReduction"}}}},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"meteora_dlmm_remove_liquidity_by_range2","discriminator":[157,54,138,77,16,239,100,16],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"position","writable":true},{"name":"lb_pair","writable":true},{"name":"bin_array_bitmap_extension","writable":true,"optional":true},{"name":"user_token_x","writable":true},{"name":"user_token_y","writable":true},{"name":"reserve_x","writable":true},{"name":"reserve_y","writable":true},{"name":"token_x_mint"},{"name":"token_y_mint"},{"name":"token_x_program"},{"name":"token_y_program"},{"name":"memo_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"from_bin_id","type":"i32"},{"name":"to_bin_id","type":"i32"},{"name":"bps_to_remove","type":"u16"},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"meteora_dlmm_swap2","discriminator":[95,183,135,4,4,165,65,133],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"lb_pair","writable":true},{"name":"bin_array_bitmap_extension","optional":true},{"name":"reserve_x","writable":true},{"name":"reserve_y","writable":true},{"name":"user_token_in","writable":true},{"name":"user_token_out","writable":true},{"name":"token_x_mint"},{"name":"token_y_mint"},{"name":"oracle","writable":true},{"name":"host_fee_in","writable":true,"optional":true},{"name":"token_x_program"},{"name":"token_y_program"},{"name":"memo_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"amount_in","type":"u64"},{"name":"min_amount_out","type":"u64"},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"meteora_dlmm_swap_with_price_impact2","discriminator":[219,33,50,237,37,101,146,101],"accounts":[{"name":"glam_state"},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"},{"name":"lb_pair","writable":true},{"name":"bin_array_bitmap_extension","optional":true},{"name":"reserve_x","writable":true},{"name":"reserve_y","writable":true},{"name":"user_token_in","writable":true},{"name":"user_token_out","writable":true},{"name":"token_x_mint"},{"name":"token_y_mint"},{"name":"oracle","writable":true},{"name":"host_fee_in","writable":true,"optional":true},{"name":"token_x_program"},{"name":"token_y_program"},{"name":"memo_program"},{"name":"event_authority"},{"name":"program"}],"args":[{"name":"amount_in","type":"u64"},{"name":"active_id","type":{"option":"i32"}},{"name":"max_price_impact_bps","type":"u16"},{"name":"remaining_accounts_info","type":{"defined":{"name":"RemainingAccountsInfo"}}}]},{"name":"mint_tokens","discriminator":[59,132,24,246,122,39,8,243],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_signer","writable":true,"signer":true},{"name":"glam_mint","writable":true},{"name":"mint_to","writable":true,"pda":{"seeds":[{"kind":"account","path":"recipient"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"recipient","writable":true},{"name":"policy_account","writable":true,"optional":true},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"policies_program","address":"po1iCYakK3gHCLbuju4wGzFowTMpAJxkqK1iwUqMonY"}],"args":[{"name":"mint_id","type":"u8"},{"name":"amount","type":"u64"}]},{"name":"price_drift","discriminator":[240,91,209,89,155,0,97,133],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault"},{"name":"signer","writable":true,"signer":true},{"name":"sol_oracle"},{"name":"state"},{"name":"user"},{"name":"user_stats"}],"args":[{"name":"denom","type":{"defined":{"name":"PriceDenom"}}}]},{"name":"price_kamino_obligations","discriminator":[166,110,234,179,240,179,69,246],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"sol_oracle"}],"args":[{"name":"denom","type":{"defined":{"name":"PriceDenom"}}}]},{"name":"price_meteora_positions","discriminator":[186,22,157,249,185,176,253,133],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"sol_oracle"}],"args":[{"name":"denom","type":{"defined":{"name":"PriceDenom"}}}]},{"name":"price_stakes","discriminator":[0,60,60,103,201,94,72,223],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"sol_oracle"}],"args":[{"name":"denom","type":{"defined":{"name":"PriceDenom"}}}]},{"name":"price_tickets","discriminator":[253,18,224,98,226,43,65,76],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"sol_oracle"}],"args":[{"name":"denom","type":{"defined":{"name":"PriceDenom"}}}]},{"name":"price_vault","discriminator":[47,213,36,17,183,5,141,45],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"sol_oracle"}],"args":[{"name":"denom","type":{"defined":{"name":"PriceDenom"}}}]},{"name":"queued_redeem","discriminator":[82,242,202,93,170,196,215,113],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_escrow","pda":{"seeds":[{"kind":"const","value":[101,115,99,114,111,119]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_mint","writable":true},{"name":"signer","writable":true,"signer":true},{"name":"signer_mint_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"signer"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"escrow_mint_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_escrow"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"associated_token_program","address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],"args":[{"name":"mint_id","type":"u8"},{"name":"shares_in","type":"u64"}]},{"name":"queued_subscribe","discriminator":[107,180,212,63,146,0,159,255],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_escrow","pda":{"seeds":[{"kind":"const","value":[101,115,99,114,111,119]},{"kind":"account","path":"glam_state"}]}},{"name":"signer","writable":true,"signer":true},{"name":"deposit_asset"},{"name":"escrow_deposit_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_escrow"},{"kind":"const","value":[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{"kind":"account","path":"deposit_asset"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"signer_deposit_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"signer"},{"kind":"const","value":[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{"kind":"account","path":"deposit_asset"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_program","address":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{"name":"associated_token_program","address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],"args":[{"name":"mint_id","type":"u8"},{"name":"amount_in","type":"u64"}]},{"name":"set_redemption_paused","discriminator":[226,152,104,42,1,53,196,240],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_mint"},{"name":"glam_signer","writable":true,"signer":true}],"args":[{"name":"mint_id","type":"u8"},{"name":"paused","type":"bool"}]},{"name":"set_subscription_paused","discriminator":[220,144,129,4,136,251,85,234],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_mint"},{"name":"glam_signer","writable":true,"signer":true}],"args":[{"name":"mint_id","type":"u8"},{"name":"paused","type":"bool"}]},{"name":"set_token_accounts_states","discriminator":[50,133,45,86,117,66,115,195],"accounts":[{"name":"glam_state"},{"name":"glam_signer","writable":true,"signer":true},{"name":"glam_mint","writable":true},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"}],"args":[{"name":"mint_id","type":"u8"},{"name":"frozen","type":"bool"}]},{"name":"stake_authorize","discriminator":[127,247,88,164,201,0,79,7],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"stake","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"}],"args":[{"name":"new_authority","type":"pubkey"},{"name":"staker_with_withdrawer","type":"u32"}]},{"name":"stake_deactivate","discriminator":[224,10,93,175,175,145,237,169],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"stake","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"}],"args":[]},{"name":"stake_delegate_stake","discriminator":[202,40,152,239,175,251,66,228],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"stake","writable":true},{"name":"vote"},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"stake_history","address":"SysvarStakeHistory1111111111111111111111111"},{"name":"stake_config"}],"args":[]},{"name":"stake_initialize","discriminator":[68,66,118,79,15,144,190,190],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"stake","writable":true},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"stake_merge","discriminator":[46,181,125,12,51,179,134,176],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"destination_stake","writable":true},{"name":"source_stake","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"stake_history","address":"SysvarStakeHistory1111111111111111111111111"}],"args":[]},{"name":"stake_move_lamports","discriminator":[21,85,218,122,182,189,82,200],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"source_stake","writable":true},{"name":"destination_stake","writable":true}],"args":[{"name":"lamports","type":"u64"}]},{"name":"stake_move_stake","discriminator":[9,190,67,62,46,251,144,186],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"source_stake","writable":true},{"name":"destination_stake","writable":true}],"args":[{"name":"lamports","type":"u64"}]},{"name":"stake_pool_deposit_sol","discriminator":[147,187,91,151,158,187,247,79],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"stake_pool","writable":true},{"name":"stake_pool_withdraw_authority"},{"name":"reserve_stake","writable":true},{"name":"pool_tokens_to","writable":true},{"name":"fee_account","writable":true},{"name":"referrer_pool_tokens_account","writable":true},{"name":"pool_mint","writable":true},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_program"}],"args":[{"name":"lamports_in","type":"u64"}]},{"name":"stake_pool_deposit_sol_with_slippage","discriminator":[57,21,43,19,86,36,25,172],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"stake_pool","writable":true},{"name":"stake_pool_withdraw_authority"},{"name":"reserve_stake","writable":true},{"name":"pool_tokens_to","writable":true},{"name":"fee_account","writable":true},{"name":"referrer_pool_tokens_account","writable":true},{"name":"pool_mint","writable":true},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_program"}],"args":[{"name":"lamports_in","type":"u64"},{"name":"minimum_pool_tokens_out","type":"u64"}]},{"name":"stake_pool_deposit_stake","discriminator":[212,158,195,174,179,105,9,97],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"stake_pool","writable":true},{"name":"validator_list","writable":true},{"name":"stake_pool_withdraw_authority"},{"name":"deposit_stake","writable":true},{"name":"validator_stake_account","writable":true},{"name":"reserve_stake_account","writable":true},{"name":"pool_tokens_to","writable":true},{"name":"fee_account","writable":true},{"name":"referrer_pool_tokens_account","writable":true},{"name":"pool_mint","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"stake_history","address":"SysvarStakeHistory1111111111111111111111111"},{"name":"token_program"},{"name":"stake_program","address":"Stake11111111111111111111111111111111111111"}],"args":[]},{"name":"stake_pool_deposit_stake_with_slippage","discriminator":[185,104,64,97,108,243,239,165],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"stake_pool","writable":true},{"name":"validator_list","writable":true},{"name":"stake_pool_withdraw_authority"},{"name":"deposit_stake","writable":true},{"name":"validator_stake_account","writable":true},{"name":"reserve_stake_account","writable":true},{"name":"pool_tokens_to","writable":true},{"name":"fee_account","writable":true},{"name":"referrer_pool_tokens_account","writable":true},{"name":"pool_mint","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"stake_history","address":"SysvarStakeHistory1111111111111111111111111"},{"name":"token_program"},{"name":"stake_program","address":"Stake11111111111111111111111111111111111111"}],"args":[{"name":"minimum_pool_tokens_out","type":"u64"}]},{"name":"stake_pool_withdraw_sol","discriminator":[179,100,204,0,192,46,233,181],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"stake_pool","writable":true},{"name":"stake_pool_withdraw_authority"},{"name":"pool_tokens_from","writable":true},{"name":"reserve_stake","writable":true},{"name":"fee_account","writable":true},{"name":"pool_mint","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"stake_history","address":"SysvarStakeHistory1111111111111111111111111"},{"name":"stake_program","address":"Stake11111111111111111111111111111111111111"},{"name":"token_program"}],"args":[{"name":"pool_tokens_in","type":"u64"}]},{"name":"stake_pool_withdraw_sol_with_slippage","discriminator":[210,92,86,93,123,17,117,89],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"stake_pool","writable":true},{"name":"stake_pool_withdraw_authority"},{"name":"pool_tokens_from","writable":true},{"name":"reserve_stake","writable":true},{"name":"fee_account","writable":true},{"name":"pool_mint","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"stake_history","address":"SysvarStakeHistory1111111111111111111111111"},{"name":"stake_program","address":"Stake11111111111111111111111111111111111111"},{"name":"token_program"}],"args":[{"name":"pool_tokens_in","type":"u64"},{"name":"minimum_lamports_out","type":"u64"}]},{"name":"stake_pool_withdraw_stake","discriminator":[7,70,250,22,49,1,143,1],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"stake_pool","writable":true},{"name":"validator_list","writable":true},{"name":"stake_pool_withdraw_authority"},{"name":"validator_stake_account","writable":true},{"name":"stake","writable":true},{"name":"pool_tokens_from","writable":true},{"name":"fee_account","writable":true},{"name":"pool_mint","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"token_program"},{"name":"stake_program","address":"Stake11111111111111111111111111111111111111"}],"args":[{"name":"pool_tokens_in","type":"u64"}]},{"name":"stake_pool_withdraw_stake_with_slippage","discriminator":[74,83,151,22,32,149,154,141],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"stake_pool","writable":true},{"name":"validator_list","writable":true},{"name":"stake_pool_withdraw_authority"},{"name":"validator_stake_account","writable":true},{"name":"stake","writable":true},{"name":"pool_tokens_from","writable":true},{"name":"fee_account","writable":true},{"name":"pool_mint","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"token_program"},{"name":"stake_program","address":"Stake11111111111111111111111111111111111111"}],"args":[{"name":"pool_tokens_in","type":"u64"},{"name":"minimum_lamports_out","type":"u64"}]},{"name":"stake_redelegate","discriminator":[134,227,164,247,120,0,225,174],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"stake","writable":true},{"name":"new_stake","writable":true},{"name":"vote"},{"name":"stake_config"}],"args":[]},{"name":"stake_split","discriminator":[63,128,169,206,158,60,135,48],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"stake","writable":true},{"name":"split_stake","writable":true}],"args":[{"name":"lamports","type":"u64"}]},{"name":"stake_withdraw","discriminator":[199,13,168,20,92,151,29,56],"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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"Stake11111111111111111111111111111111111111"},{"name":"stake","writable":true},{"name":"clock","address":"SysvarC1ock11111111111111111111111111111111"},{"name":"stake_history","address":"SysvarStakeHistory1111111111111111111111111"}],"args":[{"name":"lamports","type":"u64"}]},{"name":"subscribe","discriminator":[254,28,191,138,156,179,183,53],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_escrow","pda":{"seeds":[{"kind":"const","value":[101,115,99,114,111,119]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_vault","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_mint","writable":true},{"name":"signer","writable":true,"signer":true},{"name":"signer_mint_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"signer"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"escrow_mint_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_escrow"},{"kind":"account","path":"token_2022_program"},{"kind":"account","path":"glam_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"deposit_asset"},{"name":"vault_deposit_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_vault"},{"kind":"const","value":[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{"kind":"account","path":"deposit_asset"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"signer_deposit_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"signer"},{"kind":"const","value":[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{"kind":"account","path":"deposit_asset"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"signer_policy","writable":true,"optional":true},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_program","address":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"associated_token_program","address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"policies_program","address":"po1iCYakK3gHCLbuju4wGzFowTMpAJxkqK1iwUqMonY"}],"args":[{"name":"mint_id","type":"u8"},{"name":"amount_in","type":"u64"}]},{"name":"system_transfer","discriminator":[167,164,195,155,219,152,191,230],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program","address":"11111111111111111111111111111111"},{"name":"to","writable":true}],"args":[{"name":"lamports","type":"u64"}]},{"name":"token_close_account","discriminator":[240,32,179,154,96,110,43,79],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"token_account","writable":true}],"args":[]},{"name":"token_transfer","discriminator":[210,16,52,5,247,164,59,18],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"from","writable":true},{"name":"to","writable":true}],"args":[{"name":"lamports","type":"u64"}]},{"name":"token_transfer_checked","discriminator":[169,178,117,156,169,191,199,116],"accounts":[{"name":"glam_state"},{"name":"glam_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"glam_state"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"cpi_program"},{"name":"from","writable":true},{"name":"mint"},{"name":"to","writable":true}],"args":[{"name":"lamports","type":"u64"},{"name":"decimals","type":"u8"}]},{"name":"update_mint","discriminator":[212,203,57,78,75,245,222,5],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_signer","writable":true,"signer":true},{"name":"glam_mint","writable":true},{"name":"token_2022_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"}],"args":[{"name":"mint_id","type":"u8"},{"name":"mint_model","type":{"defined":{"name":"MintModel"}}}]},{"name":"update_state","discriminator":[135,112,215,75,247,185,53,176],"accounts":[{"name":"glam_state","writable":true},{"name":"glam_signer","writable":true,"signer":true}],"args":[{"name":"state","type":{"defined":{"name":"StateModel"}}}]},{"name":"withdraw","discriminator":[183,18,70,156,148,109,161,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"}]}},{"name":"glam_signer","writable":true,"signer":true},{"name":"asset"},{"name":"vault_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_vault"},{"kind":"account","path":"token_program"},{"kind":"account","path":"asset"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"signer_ata","writable":true,"pda":{"seeds":[{"kind":"account","path":"glam_signer"},{"kind":"account","path":"token_program"},{"kind":"account","path":"asset"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"token_program"}],"args":[{"name":"amount","type":"u64"}]}],"accounts":[{"name":"OpenfundsMetadataAccount","discriminator":[5,89,20,76,255,158,209,219]},{"name":"StateAccount","discriminator":[142,247,54,95,85,133,249,103]}],"errors":[{"code":48000,"name":"NotAuthorized","msg":"Signer is not authorized"},{"code":48001,"name":"IntegrationDisabled","msg":"Integration is disabled"},{"code":48002,"name":"StateAccountDisabled","msg":"State account is disabled"},{"code":48003,"name":"InvalidSignerAccount","msg":"Invalid signer token account"},{"code":49000,"name":"InvalidAccountType","msg":"Invalid account type"},{"code":49001,"name":"InvalidName","msg":"Name too long: max 64 chars"},{"code":49002,"name":"InvalidSymbol","msg":"Symbol too long: max 32 chars"},{"code":49003,"name":"InvalidUri","msg":"Uri too long: max 128 chars"},{"code":49004,"name":"InvalidAssetsLen","msg":"Too many assets: max 100"},{"code":49005,"name":"GlamMintNotFound","msg":"Glam mint not found"},{"code":49006,"name":"CannotCloseState","msg":"Glam state cannot be closed, all mints must be closed first"},{"code":49007,"name":"InvalidMintId","msg":"Invalid mint id"},{"code":49008,"name":"InvalidRemainingAccounts","msg":"Invalid accounts: the transaction is malformed"},{"code":49009,"name":"InvalidVaultTokenAccount","msg":"Invalid vault ata"},{"code":49010,"name":"NonZeroSupply","msg":"Glam mint supply not zero"},{"code":49011,"name":"MissingAccount","msg":"An account required by the instruction is missing"},{"code":49012,"name":"InvalidTimestamp","msg":"Invalid timestamp"},{"code":49013,"name":"EngineFieldNotFound","msg":"Engine field not found"},{"code":50000,"name":"WithdrawDenied","msg":"Withdraw denied. Only vaults allow withdraws (funds and mints don\'t)"},{"code":50001,"name":"InvalidAssetForSwap","msg":"Asset cannot be swapped"},{"code":50002,"name":"UnsupportedSwapIx","msg":"Unsupported swap instruction"},{"code":50003,"name":"SlippageLimitExceeded","msg":"Max slippage exceeded"},{"code":50004,"name":"InvalidPlatformFeeForSwap","msg":"Invalid platform fee"},{"code":50005,"name":"InvalidTokenAccount","msg":"Invalid token account"},{"code":50006,"name":"InvalidVoteSide","msg":"Invalid vote side"},{"code":50007,"name":"MultipleStakeAccountsDisallowed","msg":"Multiple stake accounts disallowed"},{"code":51000,"name":"InvalidAssetPrice","msg":"Invalid asset price"},{"code":51001,"name":"InvalidStableCoinPriceForSubscribe","msg":"Subscription not allowed: invalid stable coin price"},{"code":51002,"name":"ActionPaused","msg":"Requested action is paused"},{"code":51003,"name":"InvalidAsset","msg":"Asset not allowed to subscribe"},{"code":51004,"name":"LedgerNotFound","msg":"Ledger not found"},{"code":51005,"name":"InvalidLedgerEntry","msg":"Invalid ledger entry"},{"code":51006,"name":"InvalidAmount","msg":"Invalid amount for subscription or redemption"},{"code":51100,"name":"InvalidPricingOracle","msg":"Invalid oracle for asset price"},{"code":51101,"name":"PricingError","msg":"Pricing error"},{"code":51102,"name":"PriceTooOld","msg":"Price is too old"},{"code":51103,"name":"ExternalAccountsNotPriced","msg":"Not all external vault accounts are priced"},{"code":51104,"name":"VaultAssetsNotPriced","msg":"Not all vault assets are priced"},{"code":51105,"name":"VaultNotPriced","msg":"No priced assets found"},{"code":51106,"name":"PositiveAumRequired","msg":"AUM must be positive"},{"code":51107,"name":"MathError","msg":"Math error"},{"code":52000,"name":"TransfersDisabled","msg":"Policy violation: transfers disabled"},{"code":52001,"name":"InvalidPolicyAccount","msg":"Policy account is mandatory"},{"code":52002,"name":"AmountTooBig","msg":"Policy violation: amount too big"},{"code":52003,"name":"LockUp","msg":"Policy violation: lock-up has not expired"}],"types":[{"name":"AccountType","type":{"kind":"enum","variants":[{"name":"Vault"},{"name":"Mint"},{"name":"Fund"}]}},{"name":"AccountsType","type":{"kind":"enum","variants":[{"name":"TransferHookX"},{"name":"TransferHookY"},{"name":"TransferHookReward"}]}},{"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":"AddLiquiditySingleSidePreciseParameter2","type":{"kind":"struct","fields":[{"name":"bins","type":{"vec":{"defined":{"name":"CompressedBinDepositAmount"}}}},{"name":"decompress_multiplier","type":"u64"},{"name":"max_amount","type":"u64"}]}},{"name":"BinLiquidityDistribution","type":{"kind":"struct","fields":[{"name":"bin_id","type":"i32"},{"name":"distribution_x","type":"u16"},{"name":"distribution_y","type":"u16"}]}},{"name":"BinLiquidityReduction","type":{"kind":"struct","fields":[{"name":"bin_id","type":"i32"},{"name":"bps_to_remove","type":"u16"}]}},{"name":"CompanyField","type":{"kind":"struct","fields":[{"name":"name","type":{"defined":{"name":"CompanyFieldName"}}},{"name":"value","type":"string"}]}},{"name":"CompanyFieldName","type":{"kind":"enum","variants":[{"name":"FundGroupName"},{"name":"ManCo"},{"name":"DomicileOfManCo"},{"name":"BICOfCustodian"},{"name":"CollateralManagerName"},{"name":"CustodianBankName"},{"name":"DomicileOfCustodianBank"},{"name":"FundAdministratorName"},{"name":"FundAdvisorName"},{"name":"FundPromoterName"},{"name":"IsSelfManagedInvestmentCompany"},{"name":"LEIOfCustodianBank"},{"name":"LEIOfManCo"},{"name":"PortfolioManagingCompanyName"},{"name":"SecuritiesLendingCounterpartyName"},{"name":"SwapCounterpartyName"},{"name":"AddressofManCo"},{"name":"AuditorName"},{"name":"CityofManCo"},{"name":"EmailAddressOfManCo"},{"name":"FundWebsiteOfManCo"},{"name":"IsUNPRISignatory"},{"name":"PhoneCountryCodeofManCo"},{"name":"PhoneNumberofManCo"},{"name":"SubInvestmentAdvisorName"},{"name":"ZIPCodeofManCo"},{"name":"DomicileOfUmbrella"},{"name":"HasUmbrella"},{"name":"LEIOfUmbrella"},{"name":"Umbrella"},{"name":"GlobalIntermediaryIdentificationNumberOfUmbrella"}]}},{"name":"CompanyModel","type":{"kind":"struct","fields":[{"name":"fund_group_name","type":{"option":"string"}},{"name":"man_co","type":{"option":"string"}},{"name":"domicile_of_man_co","type":{"option":"string"}},{"name":"email_address_of_man_co","type":{"option":"string"}},{"name":"fund_website_of_man_co","type":{"option":"string"}}]}},{"name":"CompressedBinDepositAmount","type":{"kind":"struct","fields":[{"name":"bin_id","type":"i32"},{"name":"amount","type":"u32"}]}},{"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":"permissions","type":{"vec":{"defined":{"name":"Permission"}}}},{"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":"Allowlist"},{"name":"Blocklist"},{"name":"ExternalVaultAccounts"},{"name":"LockUp"},{"name":"DriftMarketIndexesPerp"},{"name":"DriftMarketIndexesSpot"},{"name":"DriftOrderTypes"},{"name":"MaxSwapSlippageBps"},{"name":"TransferToAllowlist"},{"name":"PricedAssets"},{"name":"BaseAsset"},{"name":"MaxCap"},{"name":"MinSubscription"},{"name":"MinRedemption"},{"name":"Valuation"},{"name":"Ledger"},{"name":"FeeStructure"},{"name":"FeeParams"},{"name":"ClaimableFees"},{"name":"ClaimedFees"},{"name":"SubscriptionPaused"},{"name":"RedemptionPaused"}]}},{"name":"EngineFieldValue","type":{"kind":"enum","variants":[{"name":"Boolean","fields":[{"name":"val","type":"bool"}]},{"name":"Date","fields":[{"name":"val","type":"string"}]},{"name":"Double","fields":[{"name":"val","type":"i64"}]},{"name":"Integer","fields":[{"name":"val","type":"i32"}]},{"name":"String","fields":[{"name":"val","type":"string"}]},{"name":"Time","fields":[{"name":"val","type":"string"}]},{"name":"U8","fields":[{"name":"val","type":"u8"}]},{"name":"U64","fields":[{"name":"val","type":"u64"}]},{"name":"Pubkey","fields":[{"name":"val","type":"pubkey"}]},{"name":"Percentage","fields":[{"name":"val","type":"u32"}]},{"name":"URI","fields":[{"name":"val","type":"string"}]},{"name":"Timestamp","fields":[{"name":"val","type":"i64"}]},{"name":"VecPubkey","fields":[{"name":"val","type":{"vec":"pubkey"}}]},{"name":"VecU32","fields":[{"name":"val","type":{"vec":"u32"}}]},{"name":"VecPricedAssets","fields":[{"name":"val","type":{"vec":{"defined":{"name":"PricedAssets"}}}}]},{"name":"Ledger","fields":[{"name":"val","type":{"vec":{"defined":{"name":"LedgerEntry"}}}}]},{"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":"Valuation","fields":[{"name":"val","type":{"defined":{"name":"Valuation"}}}]}]}},{"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":"FundField","type":{"kind":"struct","fields":[{"name":"name","type":{"defined":{"name":"FundFieldName"}}},{"name":"value","type":"string"}]}},{"name":"FundFieldName","type":{"kind":"enum","variants":[{"name":"FundDomicileAlpha2"},{"name":"FundDomicileAlpha3"},{"name":"LegalFundNameIncludingUmbrella"},{"name":"FiscalYearEnd"},{"name":"FundCurrency"},{"name":"FundLaunchDate"},{"name":"InvestmentObjective"},{"name":"IsETC"},{"name":"IsEUDirectiveRelevant"},{"name":"IsFundOfFunds"},{"name":"IsPassiveFund"},{"name":"IsREIT"},{"name":"LegalForm"},{"name":"LegalFundNameOnly"},{"name":"OpenEndedOrClosedEndedFundStructure"},{"name":"TypeOfEUDirective"},{"name":"UCITSVersion"},{"name":"CurrencyHedgePortfolio"},{"name":"DepositoryName"},{"name":"FundValuationPoint"},{"name":"FundValuationPointTimeZone"},{"name":"FundValuationPointTimeZoneUsingTZDatabase"},{"name":"HasCollateralManager"},{"name":"HasEmbeddedDerivatives"},{"name":"HasSecuritiesLending"},{"name":"HasSwap"},{"name":"IsLeveraged"},{"name":"IsShariaCompliant"},{"name":"IsShort"},{"name":"LEIofDepositoryBank"},{"name":"LEIOfFund"},{"name":"LocationOfBearerShare"},{"name":"LocationOfShareRegister"},{"name":"MaximumLeverageInFund"},{"name":"MiFIDSecuritiesClassification"},{"name":"MoneyMarketTypeOfFund"},{"name":"TrusteeName"},{"name":"AuMFund"},{"name":"AuMFundDate"},{"name":"NoSFund"},{"name":"NoSFundDate"}]}},{"name":"FundManagerField","type":{"kind":"struct","fields":[{"name":"name","type":{"defined":{"name":"FundManagerFieldName"}}},{"name":"value","type":"string"}]}},{"name":"FundManagerFieldName","type":{"kind":"enum","variants":[{"name":"PortfolioManagerForename"},{"name":"PortfolioManagerName"},{"name":"PortfolioManagerYearOfBirth"},{"name":"PortfolioManagerYearOfExperienceStart"},{"name":"PortfolioManagerBriefBiography"},{"name":"PortfolioManagerType"},{"name":"PortfolioManagerRoleStartingDate"},{"name":"PortfolioManagerRoleEndDate"}]}},{"name":"FundOpenfundsModel","type":{"kind":"struct","fields":[{"name":"fund_domicile_alpha_2","type":{"option":"string"}},{"name":"legal_fund_name_including_umbrella","type":{"option":"string"}},{"name":"fiscal_year_end","type":{"option":"string"}},{"name":"fund_currency","type":{"option":"string"}},{"name":"fund_launch_date","type":{"option":"string"}},{"name":"investment_objective","type":{"option":"string"}},{"name":"is_etc","type":{"option":"bool"}},{"name":"is_eu_directive_relevant","type":{"option":"bool"}},{"name":"is_fund_of_funds","type":{"option":"bool"}},{"name":"is_passive_fund","type":{"option":"bool"}},{"name":"is_reit","type":{"option":"bool"}},{"name":"legal_form","type":{"option":"string"}},{"name":"legal_fund_name_only","type":{"option":"string"}},{"name":"open_ended_or_closed_ended_fund_structure","type":{"option":"string"}},{"name":"type_of_eu_directive","type":{"option":"string"}},{"name":"ucits_version","type":{"option":"string"}}]}},{"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":"Integration","type":{"kind":"enum","variants":[{"name":"Drift"},{"name":"SplStakePool"},{"name":"SanctumStakePool"},{"name":"NativeStaking"},{"name":"Marinade"},{"name":"JupiterSwap"},{"name":"JupiterVote"},{"name":"KaminoLending"},{"name":"MeteoraDlmm"}]}},{"name":"LedgerEntry","type":{"kind":"struct","fields":[{"name":"user","type":"pubkey"},{"name":"created_at","type":"u64"},{"name":"fulfilled_at","type":"u64"},{"name":"time_unit","type":{"defined":{"name":"TimeUnit"}}},{"name":"kind","type":{"defined":{"name":"LedgerEntryKind"}}},{"name":"incoming","type":{"defined":{"name":"PubkeyAmount"}}},{"name":"value","type":"u64"},{"name":"outgoing","type":{"option":{"defined":{"name":"PubkeyAmount"}}}}]}},{"name":"LedgerEntryKind","type":{"kind":"enum","variants":[{"name":"Subscription"},{"name":"Redemption"}]}},{"name":"LiquidityParameter","type":{"kind":"struct","fields":[{"name":"amount_x","type":"u64"},{"name":"amount_y","type":"u64"},{"name":"bin_liquidity_dist","type":{"vec":{"defined":{"name":"BinLiquidityDistribution"}}}}]}},{"name":"LiquidityParameterByStrategy","type":{"kind":"struct","fields":[{"name":"amount_x","type":"u64"},{"name":"amount_y","type":"u64"},{"name":"active_id","type":"i32"},{"name":"max_active_bin_slippage","type":"i32"},{"name":"strategy_parameters","type":{"defined":{"name":"StrategyParameters"}}}]}},{"name":"ManagementFee","type":{"kind":"struct","fields":[{"name":"fee_bps","type":"u16"}]}},{"name":"ManagerKind","type":{"kind":"enum","variants":[{"name":"Wallet"},{"name":"Squads"}]}},{"name":"ManagerModel","type":{"kind":"struct","fields":[{"name":"portfolio_manager_name","type":{"option":"string"}},{"name":"pubkey","type":{"option":"pubkey"}},{"name":"kind","type":{"option":{"defined":{"name":"ManagerKind"}}}}]}},{"name":"MarketType","type":{"kind":"enum","variants":[{"name":"Spot"},{"name":"Perp"}]}},{"name":"Metadata","type":{"kind":"struct","fields":[{"name":"template","type":{"defined":{"name":"MetadataTemplate"}}},{"name":"pubkey","type":"pubkey"},{"name":"uri","type":"string"}]}},{"name":"MetadataTemplate","type":{"kind":"enum","variants":[{"name":"Openfunds"}]}},{"name":"MintModel","type":{"kind":"struct","fields":[{"name":"symbol","type":{"option":"string"}},{"name":"name","type":{"option":"string"}},{"name":"uri","type":{"option":"string"}},{"name":"state_pubkey","type":{"option":"pubkey"}},{"name":"asset","type":{"option":"pubkey"}},{"name":"image_uri","type":{"option":"string"}},{"name":"allowlist","type":{"option":{"vec":"pubkey"}}},{"name":"blocklist","type":{"option":{"vec":"pubkey"}}},{"name":"lock_up_period_in_seconds","type":{"option":"i32"}},{"name":"permanent_delegate","type":{"option":"pubkey"}},{"name":"default_account_state_frozen","type":{"option":"bool"}},{"name":"fee_structure","type":{"option":{"defined":{"name":"FeeStructure"}}}},{"name":"fee_params","type":{"option":{"defined":{"name":"FeeParams"}}}},{"name":"valuation","type":{"option":{"defined":{"name":"Valuation"}}}},{"name":"min_subscription","type":{"option":"u64"}},{"name":"min_redemption","type":{"option":"u64"}},{"name":"is_raw_openfunds","type":{"option":"bool"}},{"name":"raw_openfunds","type":{"option":{"defined":{"name":"MintOpenfundsModel"}}}}]}},{"name":"MintOpenfundsModel","type":{"kind":"struct","fields":[{"name":"isin","type":{"option":"string"}},{"name":"share_class_currency","type":{"option":"string"}},{"name":"full_share_class_name","type":{"option":"string"}},{"name":"has_performance_fee","type":{"option":"bool"}},{"name":"investment_status","type":{"option":"string"}},{"name":"minimal_initial_subscription_in_amount","type":{"option":"string"}},{"name":"minimal_initial_subscription_in_shares","type":{"option":"string"}},{"name":"minimal_subsequent_subscription_in_amount","type":{"option":"string"}},{"name":"minimal_subsequent_subscription_in_shares","type":{"option":"string"}},{"name":"share_class_launch_date","type":{"option":"string"}},{"name":"share_class_lifecycle","type":{"option":"string"}},{"name":"launch_price","type":{"option":"string"}},{"name":"launch_price_currency","type":{"option":"string"}},{"name":"launch_price_date","type":{"option":"string"}},{"name":"has_lock_up_for_redemption","type":{"option":"bool"}},{"name":"lock_up_comment","type":{"option":"string"}},{"name":"lock_up_period_in_days","type":{"option":"string"}},{"name":"minimal_initial_redemption_in_amount","type":{"option":"string"}},{"name":"minimal_initial_redemption_in_shares","type":{"option":"string"}},{"name":"minimal_subsequent_redemption_in_amount","type":{"option":"string"}},{"name":"minimal_subsequent_redemption_in_shares","type":{"option":"string"}},{"name":"rounding_method_for_prices","type":{"option":"string"}},{"name":"cusip","type":{"option":"string"}},{"name":"valor","type":{"option":"string"}}]}},{"name":"ModifyOrderParams","type":{"kind":"struct","fields":[{"name":"direction","type":{"option":{"defined":{"name":"PositionDirection"}}}},{"name":"base_asset_amount","type":{"option":"u64"}},{"name":"price","type":{"option":"u64"}},{"name":"reduce_only","type":{"option":"bool"}},{"name":"post_only","type":{"option":{"defined":{"name":"PostOnlyParam"}}}},{"name":"immediate_or_cancel","type":{"option":"bool"}},{"name":"max_ts","type":{"option":"i64"}},{"name":"trigger_price","type":{"option":"u64"}},{"name":"trigger_condition","type":{"option":{"defined":{"name":"OrderTriggerCondition"}}}},{"name":"oracle_price_offset","type":{"option":"i32"}},{"name":"auction_duration","type":{"option":"u8"}},{"name":"auction_start_price","type":{"option":"i64"}},{"name":"auction_end_price","type":{"option":"i64"}},{"name":"policy","type":{"option":"u8"}}]}},{"name":"NoticePeriodType","type":{"kind":"enum","variants":[{"name":"Hard"},{"name":"Soft"}]}},{"name":"OpenfundsMetadataAccount","type":{"kind":"struct","fields":[{"name":"fund_id","type":"pubkey"},{"name":"company","type":{"vec":{"defined":{"name":"CompanyField"}}}},{"name":"fund","type":{"vec":{"defined":{"name":"FundField"}}}},{"name":"share_classes","type":{"vec":{"vec":{"defined":{"name":"ShareClassField"}}}}},{"name":"fund_managers","type":{"vec":{"vec":{"defined":{"name":"FundManagerField"}}}}}]}},{"name":"OrderParams","type":{"kind":"struct","fields":[{"name":"order_type","type":{"defined":{"name":"OrderType"}}},{"name":"market_type","type":{"defined":{"name":"MarketType"}}},{"name":"direction","type":{"defined":{"name":"PositionDirection"}}},{"name":"user_order_id","type":"u8"},{"name":"base_asset_amount","type":"u64"},{"name":"price","type":"u64"},{"name":"market_index","type":"u16"},{"name":"reduce_only","type":"bool"},{"name":"post_only","type":{"defined":{"name":"PostOnlyParam"}}},{"name":"immediate_or_cancel","type":"bool"},{"name":"max_ts","type":{"option":"i64"}},{"name":"trigger_price","type":{"option":"u64"}},{"name":"trigger_condition","type":{"defined":{"name":"OrderTriggerCondition"}}},{"name":"oracle_price_offset","type":{"option":"i32"}},{"name":"auction_duration","type":{"option":"u8"}},{"name":"auction_start_price","type":{"option":"i64"}},{"name":"auction_end_price","type":{"option":"i64"}}]}},{"name":"OrderTriggerCondition","type":{"kind":"enum","variants":[{"name":"Above"},{"name":"Below"},{"name":"TriggeredAbove"},{"name":"TriggeredBelow"}]}},{"name":"OrderType","type":{"kind":"enum","variants":[{"name":"Market"},{"name":"Limit"},{"name":"TriggerMarket"},{"name":"TriggerLimit"},{"name":"Oracle"}]}},{"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":"Permission","docs":["* Delegate ACL"],"type":{"kind":"enum","variants":[{"name":"DriftInit"},{"name":"DriftUpdateUser"},{"name":"DriftDeleteUser"},{"name":"DriftDeposit"},{"name":"DriftWithdraw"},{"name":"DriftOrders"},{"name":"DriftBorrow"},{"name":"DriftPerpMarket"},{"name":"DriftSpotMarket"},{"name":"Stake"},{"name":"Unstake"},{"name":"__DeprecatedLiquidUnstake"},{"name":"JupiterSwapAllowlisted"},{"name":"JupiterSwapAny"},{"name":"WSol"},{"name":"__DeprecatedWSolUnwrap"},{"name":"MintMintTokens"},{"name":"MintBurnTokens"},{"name":"MintForceTransferTokens"},{"name":"MintSetTokenAccountState"},{"name":"JupiterGovStake"},{"name":"JupiterGovVoteOnProposal"},{"name":"JupiterGovUnstake"},{"name":"JupiterSwapLst"},{"name":"JupiterSwapPriceable"},{"name":"KaminoInit"},{"name":"KaminoDeposit"},{"name":"KaminoBorrow"},{"name":"KaminoWithdraw"},{"name":"KaminoClaim"},{"name":"MeteoraDlmmPosition"},{"name":"MeteoraDlmmLiquidity"},{"name":"MeteoraDlmmClaim"},{"name":"MeteoraDlmmSwap"},{"name":"TransferToAllowlisted"},{"name":"JupiterGovWithdraw"},{"name":"JupiterGovClaim"}]}},{"name":"PositionDirection","type":{"kind":"enum","variants":[{"name":"Long"},{"name":"Short"}]}},{"name":"PostOnlyParam","type":{"kind":"enum","variants":[{"name":"None"},{"name":"MustPostOnly"},{"name":"TryPostOnly"},{"name":"Slide"}]}},{"name":"PriceDenom","type":{"kind":"enum","variants":[{"name":"SOL"},{"name":"USD"},{"name":"ASSET6"}]}},{"name":"PricedAssets","type":{"kind":"struct","fields":[{"name":"denom","type":{"defined":{"name":"PriceDenom"}}},{"name":"accounts","type":{"vec":"pubkey"}},{"name":"rent","type":"u64"},{"name":"amount","type":"i128"},{"name":"decimals","type":"u8"},{"name":"last_updated_slot","type":"u64"},{"name":"integration","type":{"option":{"defined":{"name":"Integration"}}}}]}},{"name":"ProtocolFees","type":{"kind":"struct","fields":[{"name":"base_fee_bps","type":"u16"},{"name":"flow_fee_bps","type":"u16"}]}},{"name":"PubkeyAmount","type":{"kind":"struct","fields":[{"name":"pubkey","type":"pubkey"},{"name":"amount","type":"u64"},{"name":"decimals","type":"u8"}]}},{"name":"RemainingAccountsInfo","type":{"kind":"struct","fields":[{"name":"slices","type":{"vec":{"defined":{"name":"RemainingAccountsSlice"}}}}]}},{"name":"RemainingAccountsSlice","type":{"kind":"struct","fields":[{"name":"accounts_type","type":{"defined":{"name":"AccountsType"}}},{"name":"length","type":"u8"}]}},{"name":"SettlePnlMode","type":{"kind":"enum","variants":[{"name":"MustSettle"},{"name":"TrySettle"}]}},{"name":"ShareClassField","type":{"kind":"struct","fields":[{"name":"name","type":{"defined":{"name":"ShareClassFieldName"}}},{"name":"value","type":"string"}]}},{"name":"ShareClassFieldName","type":{"kind":"enum","variants":[{"name":"ISIN"},{"name":"ShareClassCurrency"},{"name":"AppliedSubscriptionFeeInFavourOfDistributor"},{"name":"AppliedSubscriptionFeeInFavourOfDistributorReferenceDate"},{"name":"CurrencyOfMinimalSubscription"},{"name":"FullShareClassName"},{"name":"HasPerformanceFee"},{"name":"HasSubscriptionFeeInFavourOfDistributor"},{"name":"InvestmentStatus"},{"name":"ManagementFeeApplied"},{"name":"ManagementFeeAppliedReferenceDate"},{"name":"ManagementFeeMaximum"},{"name":"MaximumSubscriptionFeeInFavourOfDistributor"},{"name":"MinimalInitialSubscriptionCategory"},{"name":"MinimalInitialSubscriptionInAmount"},{"name":"MinimalInitialSubscriptionInShares"},{"name":"MinimalSubsequentSubscriptionCategory"},{"name":"MinimalSubsequentSubscriptionInAmount"},{"name":"MinimalSubsequentSubscriptionInShares"},{"name":"MinimumSubscriptionFeeInFavourOfDistributor"},{"name":"ShareClassDistributionPolicy"},{"name":"ShareClassExtension"},{"name":"ShareClassLaunchDate"},{"name":"ShareClassLifecycle"},{"name":"SRRI"},{"name":"LaunchPrice"},{"name":"LaunchPriceCurrency"},{"name":"LaunchPriceDate"},{"name":"HasAppliedSubscriptionFeeInFavourOfFund"},{"name":"AppliedSubscriptionFeeInFavourOfFund"},{"name":"AppliedSubscriptionFeeInFavourOfFundReferenceDate"},{"name":"MaximumSubscriptionFeeInFavourOfFund"},{"name":"HasAppliedRedemptionFeeInFavourOfFund"},{"name":"AppliedRedemptionFeeInFavourOfFund"},{"name":"AppliedRedemptionFeeInFavourOfFundReferenceDate"},{"name":"MaximumRedemptionFeeInFavourOfFund"},{"name":"AppliedRedemptionFeeInFavourOfDistributor"},{"name":"AppliedRedemptionFeeInFavourOfDistributorReferenceDate"},{"name":"CurrencyOfMinimalOrMaximumRedemption"},{"name":"CutOffDateOffsetForRedemption"},{"name":"CutOffDateOffsetForSubscription"},{"name":"CutOffTimeForRedemption"},{"name":"CutOffTimeForSubscription"},{"name":"HasLockUpForRedemption"},{"name":"HasRedemptionFeeInFavourOfDistributor"},{"name":"IsValidISIN"},{"name":"LockUpComment"},{"name":"LockUpPeriodInDays"},{"name":"ManagementFeeMinimum"},{"name":"MaximalNumberOfPossibleDecimalsAmount"},{"name":"MaximalNumberOfPossibleDecimalsNAV"},{"name":"MaximalNumberOfPossibleDecimalsShares"},{"name":"MaximumInitialRedemptionInAmount"},{"name":"MaximumInitialRedemptionInShares"},{"name":"MaximumRedemptionFeeInFavourOfDistributor"},{"name":"MaximumSubsequentRedemptionInAmount"},{"name":"MaximumSubsequentRedemptionInShares"},{"name":"MinimalInitialRedemptionInAmount"},{"name":"MinimalInitialRedemptionInShares"},{"name":"MinimalRedemptionCategory"},{"name":"MinimalSubsequentRedemptionInAmount"},{"name":"MinimalSubsequentRedemptionInShares"},{"name":"MinimumRedemptionFeeInFavourOfDistributor"},{"name":"MinimumRedemptionFeeInFavourOfFund"},{"name":"MinimumSubscriptionFeeInFavourOfFund"},{"name":"PerformanceFeeMinimum"},{"name":"RoundingMethodForPrices"},{"name":"RoundingMethodForRedemptionInAmount"},{"name":"RoundingMethodForRedemptionInShares"},{"name":"RoundingMethodForSubscriptionInAmount"},{"name":"RoundingMethodForSubscriptionInShares"},{"name":"ShareClassDividendType"},{"name":"CUSIP"},{"name":"Valor"},{"name":"FundId"},{"name":"ImageUri"}]}},{"name":"StateAccount","type":{"kind":"struct","fields":[{"name":"account_type","type":{"defined":{"name":"AccountType"}}},{"name":"owner","type":"pubkey"},{"name":"vault","type":"pubkey"},{"name":"enabled","type":"bool"},{"name":"created","type":{"defined":{"name":"CreatedModel"}}},{"name":"engine","type":"pubkey"},{"name":"mints","type":{"vec":"pubkey"}},{"name":"metadata","type":{"option":{"defined":{"name":"Metadata"}}}},{"name":"name","type":"string"},{"name":"uri","type":"string"},{"name":"assets","type":{"vec":"pubkey"}},{"name":"delegate_acls","type":{"vec":{"defined":{"name":"DelegateAcl"}}}},{"name":"integrations","type":{"vec":{"defined":{"name":"Integration"}}}},{"name":"params","type":{"vec":{"vec":{"defined":{"name":"EngineField"}}}}}]}},{"name":"StateModel","type":{"kind":"struct","fields":[{"name":"id","type":{"option":"pubkey"}},{"name":"account_type","type":{"option":{"defined":{"name":"AccountType"}}}},{"name":"name","type":{"option":"string"}},{"name":"uri","type":{"option":"string"}},{"name":"enabled","type":{"option":"bool"}},{"name":"assets","type":{"option":{"vec":"pubkey"}}},{"name":"external_vault_accounts","type":{"option":{"vec":"pubkey"}}},{"name":"mints","type":{"option":{"vec":{"defined":{"name":"MintModel"}}}}},{"name":"company","type":{"option":{"defined":{"name":"CompanyModel"}}}},{"name":"owner","type":{"option":{"defined":{"name":"ManagerModel"}}}},{"name":"created","type":{"option":{"defined":{"name":"CreatedModel"}}}},{"name":"delegate_acls","type":{"option":{"vec":{"defined":{"name":"DelegateAcl"}}}}},{"name":"integrations","type":{"option":{"vec":{"defined":{"name":"Integration"}}}}},{"name":"drift_market_indexes_perp","type":{"option":{"vec":"u32"}}},{"name":"drift_market_indexes_spot","type":{"option":{"vec":"u32"}}},{"name":"drift_order_types","type":{"option":{"vec":"u32"}}},{"name":"base_asset","type":{"option":"pubkey"}},{"name":"max_cap","type":{"option":"u64"}},{"name":"metadata","type":{"option":{"defined":{"name":"Metadata"}}}},{"name":"raw_openfunds","type":{"option":{"defined":{"name":"FundOpenfundsModel"}}}}]}},{"name":"StrategyParameters","type":{"kind":"struct","fields":[{"name":"min_bin_id","type":"i32"},{"name":"max_bin_id","type":"i32"},{"name":"strategy_type","type":{"defined":{"name":"StrategyType"}}},{"name":"parameteres","type":{"array":["u8",64]}}]}},{"name":"StrategyType","type":{"kind":"enum","variants":[{"name":"SpotOneSide"},{"name":"CurveOneSide"},{"name":"BidAskOneSide"},{"name":"SpotBalanced"},{"name":"CurveBalanced"},{"name":"BidAskBalanced"},{"name":"SpotImBalanced"},{"name":"CurveImBalanced"},{"name":"BidAskImBalanced"}]}},{"name":"TimeUnit","type":{"kind":"enum","variants":[{"name":"Slot"},{"name":"Second"}]}},{"name":"Valuation","type":{"kind":"struct","fields":[{"name":"model","type":{"defined":{"name":"ValuationModel"}}},{"name":"notice_period","type":"u64"},{"name":"notice_period_type","type":{"defined":{"name":"NoticePeriodType"}}},{"name":"permissionless_fulfillment","type":"bool"},{"name":"settlement_period","type":"u64"},{"name":"cancellation_window","type":"u64"},{"name":"time_unit","type":{"defined":{"name":"TimeUnit"}}}]}},{"name":"ValuationModel","type":{"kind":"enum","variants":[{"name":"Continuous"},{"name":"Periodic"}]}}],"constants":[{"name":"SEED_ACCOUNT_POLICY","type":"string","value":"\\"account-policy\\""},{"name":"SEED_ESCROW","type":"string","value":"\\"escrow\\""},{"name":"SEED_METADATA","type":"string","value":"\\"metadata\\""},{"name":"SEED_MINT","type":"string","value":"\\"mint\\""},{"name":"SEED_STATE","type":"string","value":"\\"state\\""},{"name":"SEED_VAULT","type":"string","value":"\\"vault\\""}]}');
85
88
 
86
89
  /***/ }),
87
90
  /* 7 */
@@ -101,7 +104,8 @@ exports.GlamIntegrations = glamExports_1.GlamProtocolIdlJson?.types
101
104
  ?.type?.variants?.map((v) => v.name) ?? [];
102
105
  exports.GlamPermissions = glamExports_1.GlamProtocolIdlJson?.types
103
106
  ?.find((t) => t.name === "Permission")
104
- ?.type?.variants?.map((v) => v.name) ?? [];
107
+ ?.type?.variants?.map((v) => v.name)
108
+ .filter((v) => !v.startsWith("__")) ?? [];
105
109
  const GLAM_PROGRAM_ID_DEFAULT = new web3_js_1.PublicKey(glamExports_1.GlamProtocolIdlJson.address);
106
110
  class StateIdlModel {
107
111
  constructor(data) {
@@ -451,7 +455,7 @@ module.exports = require("@solana/spl-token-metadata");
451
455
 
452
456
 
453
457
  Object.defineProperty(exports, "__esModule", ({ value: true }));
454
- exports.JUPSOL_STAKE_POOL = exports.JITO_STAKE_POOL = exports.MEMO_PROGRAM = exports.KAMINO_FARM_PROGRAM = exports.KAMINO_LENDING_PROGRAM = exports.METEORA_DLMM_PROGRAM = exports.TRANSFER_HOOK_PROGRAM = exports.MERKLE_DISTRIBUTOR_PROGRAM = exports.JUP_VOTE_PROGRAM = exports.GOVERNANCE_PROGRAM_ID = exports.SANCTUM_STAKE_POOL_PROGRAM_ID = exports.JUPITER_PROGRAM_ID = exports.DRIFT_PROGRAM_ID = exports.MARINADE_PROGRAM_ID = exports.JUP = exports.WBTC = exports.WETH = exports.USDC = exports.JITOSOL = exports.MSOL = exports.WSOL = exports.JITO_TIP_DEFAULT = exports.KAMINO_OBTRIGATION_SIZE = exports.METEORA_POSITION_SIZE = exports.STAKE_ACCOUNT_SIZE = exports.MARINADE_TICKET_SIZE = exports.SEED_ESCROW = exports.SEED_VAULT = exports.SEED_STATE = exports.SEED_MINT = exports.SEED_METADATA = void 0;
458
+ exports.GLAM_REFERRER = exports.JUPSOL_STAKE_POOL = exports.JITO_STAKE_POOL = exports.MEMO_PROGRAM = exports.KAMINO_FARM_PROGRAM = exports.KAMINO_LENDING_PROGRAM = exports.METEORA_DLMM_PROGRAM = exports.TRANSFER_HOOK_PROGRAM = exports.MERKLE_DISTRIBUTOR_PROGRAM = exports.JUP_VOTE_PROGRAM = exports.GOVERNANCE_PROGRAM_ID = exports.SANCTUM_STAKE_POOL_PROGRAM_ID = exports.JUPITER_PROGRAM_ID = exports.DRIFT_PROGRAM_ID = exports.MARINADE_PROGRAM_ID = exports.JUP = exports.WBTC = exports.WETH = exports.USDC = exports.JITOSOL = exports.MSOL = exports.WSOL = exports.JITO_TIP_DEFAULT = exports.KAMINO_OBTRIGATION_SIZE = exports.METEORA_POSITION_SIZE = exports.STAKE_ACCOUNT_SIZE = exports.MARINADE_TICKET_SIZE = exports.SEED_ESCROW = exports.SEED_VAULT = exports.SEED_STATE = exports.SEED_MINT = exports.SEED_METADATA = void 0;
455
459
  const web3_js_1 = __webpack_require__(5);
456
460
  const glamExports_1 = __webpack_require__(4);
457
461
  exports.SEED_METADATA = (glamExports_1.GlamProtocolIdlJson.constants.find((x) => x.name === "SEED_METADATA")
@@ -504,6 +508,10 @@ exports.MEMO_PROGRAM = new web3_js_1.PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWC
504
508
  */
505
509
  exports.JITO_STAKE_POOL = new web3_js_1.PublicKey("Jito4APyf642JPZPx3hGc6WWJ8zPKtRbRs4P815Awbb");
506
510
  exports.JUPSOL_STAKE_POOL = new web3_js_1.PublicKey("8VpRhuxa7sUUepdY3kQiTmX9rS5vx4WgaXiAnXq4KCtr");
511
+ /**
512
+ * Referrers
513
+ */
514
+ exports.GLAM_REFERRER = new web3_js_1.PublicKey("GLAMrG37ZqioqvzBNQGCfCUueDz3tsr7MwMFyRk9PS89");
507
515
 
508
516
 
509
517
  /***/ }),
@@ -531,17 +539,17 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
531
539
  exports.GlamClient = exports.JUPITER_API_DEFAULT = void 0;
532
540
  const base_1 = __webpack_require__(13);
533
541
  const drift_1 = __webpack_require__(20);
534
- const jupiter_1 = __webpack_require__(22);
535
- const jupiter_2 = __webpack_require__(22);
536
- const marinade_1 = __webpack_require__(23);
537
- const wsol_1 = __webpack_require__(25);
538
- const staking_1 = __webpack_require__(26);
539
- const state_1 = __webpack_require__(28);
540
- const mint_1 = __webpack_require__(29);
541
- const kamino_1 = __webpack_require__(30);
542
- const meteora_1 = __webpack_require__(32);
543
- const investor_1 = __webpack_require__(33);
544
- const price_1 = __webpack_require__(34);
542
+ const jupiter_1 = __webpack_require__(23);
543
+ const jupiter_2 = __webpack_require__(23);
544
+ const marinade_1 = __webpack_require__(24);
545
+ const wsol_1 = __webpack_require__(26);
546
+ const staking_1 = __webpack_require__(27);
547
+ const state_1 = __webpack_require__(29);
548
+ const mint_1 = __webpack_require__(30);
549
+ const kamino_1 = __webpack_require__(31);
550
+ const meteora_1 = __webpack_require__(33);
551
+ const investor_1 = __webpack_require__(34);
552
+ const price_1 = __webpack_require__(35);
545
553
  var base_2 = __webpack_require__(13);
546
554
  Object.defineProperty(exports, "JUPITER_API_DEFAULT", ({ enumerable: true, get: function () { return base_2.JUPITER_API_DEFAULT; } }));
547
555
  /**
@@ -597,7 +605,7 @@ class GlamClient extends base_1.BaseClient {
597
605
  }
598
606
  get price() {
599
607
  if (!this._price) {
600
- this._price = new price_1.PriceClient(this);
608
+ this._price = new price_1.PriceClient(this, this.kaminoLending);
601
609
  }
602
610
  return this._price;
603
611
  }
@@ -619,6 +627,12 @@ class GlamClient extends base_1.BaseClient {
619
627
  }
620
628
  return this._kaminoLending;
621
629
  }
630
+ get kaminoFarm() {
631
+ if (!this._kaminoFarm) {
632
+ this._kaminoFarm = new kamino_1.KaminoFarmClient(this);
633
+ }
634
+ return this._kaminoFarm;
635
+ }
622
636
  get meteoraDlmm() {
623
637
  if (!this._meteoraDlmm) {
624
638
  this._meteoraDlmm = new meteora_1.MeteoraDlmmClient(this);
@@ -1140,7 +1154,7 @@ exports.BaseClient = BaseClient;
1140
1154
 
1141
1155
 
1142
1156
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1143
- exports.getSimulationComputeUnits = exports.parseMeteoraPosition = exports.fetchMeteoraPositions = exports.fetchKaminoObligations = exports.fetchMarinadeTicketAccounts = exports.fetchStakeAccounts = void 0;
1157
+ exports.setsAreEqual = exports.getSimulationComputeUnits = exports.parseMeteoraPosition = exports.fetchMeteoraPositions = exports.fetchKaminoObligations = exports.fetchMarinadeTicketAccounts = exports.fetchStakeAccounts = void 0;
1144
1158
  const web3_js_1 = __webpack_require__(5);
1145
1159
  const constants_1 = __webpack_require__(10);
1146
1160
  const dlmm_1 = __webpack_require__(15);
@@ -1292,6 +1306,16 @@ const getErrorFromRPCResponse = (rpcResponse) => {
1292
1306
  throw Error(error.toString());
1293
1307
  }
1294
1308
  };
1309
+ const setsAreEqual = (a, b) => {
1310
+ if (a.size !== b.size)
1311
+ return false;
1312
+ for (let item of a) {
1313
+ if (!b.has(item))
1314
+ return false;
1315
+ }
1316
+ return true;
1317
+ };
1318
+ exports.setsAreEqual = setsAreEqual;
1295
1319
 
1296
1320
 
1297
1321
  /***/ }),
@@ -1520,16 +1544,36 @@ exports.BlockhashWithCache = BlockhashWithCache;
1520
1544
 
1521
1545
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1522
1546
  exports.DriftClient = void 0;
1547
+ const tslib_1 = __webpack_require__(1);
1548
+ const anchor = tslib_1.__importStar(__webpack_require__(2));
1523
1549
  const web3_js_1 = __webpack_require__(5);
1524
- const sdk_1 = __webpack_require__(21);
1550
+ const driftTypes_1 = __webpack_require__(21);
1551
+ const driftUser_1 = __webpack_require__(22);
1525
1552
  const constants_1 = __webpack_require__(10);
1526
1553
  const spl_token_1 = __webpack_require__(8);
1527
1554
  const assets_1 = __webpack_require__(16);
1528
- const DRIFT_VAULT = new web3_js_1.PublicKey("JCNCMFXo5M5qwUPg2Utu1u6YWp3MbygxqBsBeXXJfrw");
1555
+ const anchor_1 = __webpack_require__(2);
1556
+ const DRIFT_SIGNER = new web3_js_1.PublicKey("JCNCMFXo5M5qwUPg2Utu1u6YWp3MbygxqBsBeXXJfrw");
1529
1557
  const DRIFT_MARGIN_PRECISION = 10000;
1530
1558
  class DriftClient {
1531
1559
  constructor(base) {
1532
1560
  this.base = base;
1561
+ this.spotMarkets = new Map();
1562
+ this.perpMarkets = new Map();
1563
+ this.marketConfigs = null;
1564
+ /*
1565
+ * Utils
1566
+ */
1567
+ this.getMarketPda = (marketType, marketIndex) => web3_js_1.PublicKey.findProgramAddressSync([
1568
+ Buffer.from(`${marketType === driftTypes_1.MarketType.PERP ? "perp" : "spot"}_market`),
1569
+ new anchor.BN(marketIndex).toArrayLike(Buffer, "le", 2),
1570
+ ], constants_1.DRIFT_PROGRAM_ID)[0];
1571
+ this.getUserPda = (authority, subAccountId = 0) => web3_js_1.PublicKey.findProgramAddressSync([
1572
+ Buffer.from("user"),
1573
+ authority.toBuffer(),
1574
+ new anchor.BN(subAccountId).toArrayLike(Buffer, "le", 2),
1575
+ ], constants_1.DRIFT_PROGRAM_ID)[0];
1576
+ this.getUserStatsPda = (authority) => web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("user_stats"), authority.toBuffer()], constants_1.DRIFT_PROGRAM_ID)[0];
1533
1577
  this.marketTypeEquals = (a, b) => a && Object.keys(a)[0] === Object.keys(b)[0];
1534
1578
  }
1535
1579
  /*
@@ -1556,81 +1600,267 @@ class DriftClient {
1556
1600
  const tx = await this.deleteUserTx(new web3_js_1.PublicKey(statePda), subAccountId, txOptions);
1557
1601
  return await this.base.sendAndConfirm(tx);
1558
1602
  }
1559
- async deposit(statePda, amount, marketIndex = 1, subAccountId = 0, marketConfigs, txOptions = {}) {
1560
- const tx = await this.depositTx(new web3_js_1.PublicKey(statePda), amount, marketIndex, subAccountId, marketConfigs, txOptions);
1603
+ async deposit(statePda, amount, marketIndex = 1, subAccountId = 0, txOptions = {}) {
1604
+ const tx = await this.depositTx(new web3_js_1.PublicKey(statePda), amount, marketIndex, subAccountId, txOptions);
1561
1605
  return await this.base.sendAndConfirm(tx);
1562
1606
  }
1563
- async withdraw(statePda, amount, marketIndex = 1, subAccountId = 0, marketConfigs, txOptions = {}) {
1564
- const tx = await this.withdrawTx(new web3_js_1.PublicKey(statePda), amount, marketIndex, subAccountId, marketConfigs, txOptions);
1607
+ async withdraw(statePda, amount, marketIndex = 1, subAccountId = 0, txOptions = {}) {
1608
+ const tx = await this.withdrawTx(new web3_js_1.PublicKey(statePda), amount, marketIndex, subAccountId, txOptions);
1565
1609
  return await this.base.sendAndConfirm(tx);
1566
1610
  }
1567
- async placeOrder(statePda, orderParams, subAccountId = 0, marketConfigs, txOptions = {}) {
1568
- const tx = await this.placeOrderTx(new web3_js_1.PublicKey(statePda), orderParams, subAccountId, marketConfigs, txOptions);
1611
+ async placeOrder(statePda, orderParams, subAccountId = 0, txOptions = {}) {
1612
+ const tx = await this.placeOrderTx(new web3_js_1.PublicKey(statePda), orderParams, subAccountId, txOptions);
1569
1613
  return await this.base.sendAndConfirm(tx);
1570
1614
  }
1571
- async modifyOrder(statePda, modifyOrderParams, subAccountId = 0, marketConfigs, txOptions = {}) {
1572
- const tx = await this.modifyOrderTx(new web3_js_1.PublicKey(statePda), modifyOrderParams, subAccountId, marketConfigs, txOptions);
1615
+ async modifyOrder(statePda, modifyOrderParams, subAccountId = 0, txOptions = {}) {
1616
+ const tx = await this.modifyOrderTx(new web3_js_1.PublicKey(statePda), modifyOrderParams, subAccountId, txOptions);
1573
1617
  return await this.base.sendAndConfirm(tx);
1574
1618
  }
1575
- async cancelOrders(statePda, marketType, marketIndex, direction, subAccountId = 0, marketConfigs, txOptions = {}) {
1576
- const tx = await this.cancelOrdersTx(new web3_js_1.PublicKey(statePda), marketType, marketIndex, direction, subAccountId, marketConfigs, txOptions);
1619
+ async cancelOrders(statePda, marketType, marketIndex, direction, subAccountId = 0, txOptions = {}) {
1620
+ const tx = await this.cancelOrdersTx(new web3_js_1.PublicKey(statePda), marketType, marketIndex, direction, subAccountId, txOptions);
1577
1621
  return await this.base.sendAndConfirm(tx);
1578
1622
  }
1579
- async cancelOrdersByIds(statePda, orderIds, subAccountId = 0, marketConfigs, txOptions = {}) {
1580
- const tx = await this.cancelOrdersByIdsTx(new web3_js_1.PublicKey(statePda), orderIds, subAccountId, marketConfigs, txOptions);
1623
+ async cancelOrdersByIds(statePda, orderIds, subAccountId = 0, txOptions = {}) {
1624
+ const tx = await this.cancelOrdersByIdsTx(new web3_js_1.PublicKey(statePda), orderIds, subAccountId, txOptions);
1581
1625
  return await this.base.sendAndConfirm(tx);
1582
1626
  }
1583
- async settlePnl(statePda, marketIndex, subAccountId = 0, marketConfigs, txOptions = {}) {
1584
- const tx = await this.settlePnlTx(new web3_js_1.PublicKey(statePda), marketIndex, subAccountId, marketConfigs, txOptions);
1627
+ async settlePnl(statePda, marketIndex, subAccountId = 0, txOptions = {}) {
1628
+ const tx = await this.settlePnlTx(new web3_js_1.PublicKey(statePda), marketIndex, subAccountId, txOptions);
1585
1629
  return await this.base.sendAndConfirm(tx);
1586
1630
  }
1587
- async priceDrift(statePda, marketConfigs, priceDenom, txOptions = {}) {
1588
- const tx = await this.priceDriftTx(new web3_js_1.PublicKey(statePda), marketConfigs, priceDenom, txOptions);
1631
+ async priceDrift(statePda, priceDenom, txOptions = {}) {
1632
+ const tx = await this.priceDriftTx(new web3_js_1.PublicKey(statePda), priceDenom, txOptions);
1589
1633
  return await this.base.sendAndConfirm(tx);
1590
1634
  }
1591
- /*
1592
- * Utils
1593
- */
1594
- getUser(statePda, subAccountId = 0) {
1635
+ getGlamReferrerPdas() {
1636
+ return {
1637
+ user: this.getUserPda(constants_1.GLAM_REFERRER, 0),
1638
+ userStats: this.getUserStatsPda(constants_1.GLAM_REFERRER),
1639
+ };
1640
+ }
1641
+ parsePerpMarket(data) {
1642
+ const marketPda = new web3_js_1.PublicKey(data.subarray(8, 40));
1643
+ const oracle = new web3_js_1.PublicKey(data.subarray(40, 72));
1644
+ const name = this.charsToName(data.subarray(1000, 1032));
1645
+ const oralceEnum = data.subarray(926, 927).readUint8();
1646
+ const oracleSource = driftTypes_1.OracleSource.get(oralceEnum);
1647
+ const marketIndex = data.subarray(1160, 1162).readUint16LE();
1648
+ return {
1649
+ name,
1650
+ marketPda,
1651
+ marketIndex,
1652
+ oracle,
1653
+ oracleSource,
1654
+ };
1655
+ }
1656
+ parseSpotMarket(data) {
1657
+ const marketPda = new web3_js_1.PublicKey(data.subarray(8, 40));
1658
+ const oracle = new web3_js_1.PublicKey(data.subarray(40, 72));
1659
+ const mint = new web3_js_1.PublicKey(data.subarray(72, 104));
1660
+ const vault = new web3_js_1.PublicKey(data.subarray(104, 136));
1661
+ const name = this.charsToName(data.subarray(136, 168));
1662
+ const cumulativeDepositInterest = new anchor_1.BN(data.subarray(464, 480), "le");
1663
+ const cumulativeBorrowInterest = new anchor_1.BN(data.subarray(480, 496), "le");
1664
+ const decimals = data.subarray(680, 684).readUint32LE();
1665
+ const marketIndex = data.subarray(684, 686).readUint16LE();
1666
+ const oralceEnum = data.subarray(687, 688).readUint8();
1667
+ const oracleSource = driftTypes_1.OracleSource.get(oralceEnum);
1668
+ const tokenProgram = data.subarray(734, 735).readUint8() == 0
1669
+ ? spl_token_1.TOKEN_PROGRAM_ID
1670
+ : spl_token_1.TOKEN_2022_PROGRAM_ID;
1671
+ return {
1672
+ name,
1673
+ marketIndex,
1674
+ marketPda,
1675
+ oracle,
1676
+ oracleSource,
1677
+ vault,
1678
+ mint,
1679
+ decimals,
1680
+ tokenProgram,
1681
+ cumulativeDepositInterest,
1682
+ cumulativeBorrowInterest,
1683
+ };
1684
+ }
1685
+ async calcSpotBalance(marketIndex, scaledBalance, scaledBalanceType) {
1686
+ const { decimals, cumulativeDepositInterest, cumulativeBorrowInterest } = await this.fetchAndParseSpotMarket(marketIndex);
1687
+ const precisionAdjustment = new anchor_1.BN(10 ** (19 - decimals));
1688
+ let interest = cumulativeDepositInterest;
1689
+ if (scaledBalanceType === driftTypes_1.SpotBalanceType.BORROW) {
1690
+ interest = cumulativeBorrowInterest;
1691
+ }
1692
+ const balance = scaledBalance.mul(interest).div(precisionAdjustment);
1693
+ const amount = scaledBalanceType === driftTypes_1.SpotBalanceType.BORROW
1694
+ ? balance.neg().toNumber()
1695
+ : balance.toNumber();
1696
+ const uiAmount = amount / 10 ** decimals;
1697
+ return { amount, uiAmount };
1698
+ }
1699
+ getDriftUserPdas(statePda, subAccountId = 0) {
1595
1700
  const vault = this.base.getVaultPda(new web3_js_1.PublicKey(statePda));
1596
- return [
1597
- (0, sdk_1.getUserAccountPublicKeySync)(constants_1.DRIFT_PROGRAM_ID, vault, subAccountId),
1598
- (0, sdk_1.getUserStatsAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID, vault),
1599
- ];
1701
+ return {
1702
+ user: this.getUserPda(vault, subAccountId),
1703
+ userStats: this.getUserStatsPda(vault),
1704
+ };
1600
1705
  }
1601
- async fetchMarketConfigs() {
1602
- const response = await fetch("https://api.glam.systems/v0/drift/market_configs/");
1603
- if (!response.ok) {
1604
- throw new Error(`Failed to fetch market configs: ${response.status}`);
1706
+ get driftStatePda() {
1707
+ return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("drift_state")], constants_1.DRIFT_PROGRAM_ID)[0];
1708
+ }
1709
+ async fetchAndParseSpotMarket(marketIndex) {
1710
+ const markets = await this.fetchAndParseSpotMarkets([marketIndex]);
1711
+ if (!markets || markets.length === 0) {
1712
+ throw new Error(`Spot market not found at index ${marketIndex}`);
1713
+ }
1714
+ return markets[0];
1715
+ }
1716
+ async fetchAndParseSpotMarkets(marketIndexes) {
1717
+ const indexesToFetch = marketIndexes.filter((marketIndex) => !this.spotMarkets.has(marketIndex));
1718
+ if (indexesToFetch.length > 0) {
1719
+ console.log("Fetching spot markets:", indexesToFetch);
1720
+ const marketPdas = indexesToFetch.map((marketIndex) => this.getMarketPda(driftTypes_1.MarketType.SPOT, marketIndex));
1721
+ const accounts = await this.base.provider.connection.getMultipleAccountsInfo(marketPdas);
1722
+ accounts.forEach((account) => {
1723
+ if (account) {
1724
+ const spotMarket = this.parseSpotMarket(account.data);
1725
+ this.spotMarkets.set(spotMarket.marketIndex, spotMarket);
1726
+ }
1727
+ });
1605
1728
  }
1606
- const data = await response.json();
1607
- return data;
1608
- }
1609
- async fetchGlamDriftUser(glamState, subAccountId = 0) {
1610
- const vault = this.base.getVaultPda(new web3_js_1.PublicKey(glamState));
1611
- const response = await fetch(`https://api.glam.systems/v0/drift/user?authority=${vault.toBase58()}&accountId=${subAccountId}`);
1612
- const data = await response.json();
1613
- if (!data) {
1614
- throw new Error("Failed to fetch drift user.");
1729
+ // At this point this.spotMarkets has all the requested markets
1730
+ return marketIndexes
1731
+ .map((marketIndex) => this.spotMarkets.get(marketIndex))
1732
+ .filter((m) => m);
1733
+ }
1734
+ async fetchAndParsePerpMarket(marketIndex) {
1735
+ const markets = await this.fetchAndParsePerpMarkets([marketIndex]);
1736
+ if (!markets || markets.length === 0) {
1737
+ throw new Error(`Perp market not found at index ${marketIndex}`);
1738
+ }
1739
+ return markets[0];
1740
+ }
1741
+ async fetchAndParsePerpMarkets(marketIndexes) {
1742
+ const indexesToFetch = marketIndexes.filter((marketIndex) => !this.perpMarkets.has(marketIndex));
1743
+ if (indexesToFetch.length > 0) {
1744
+ console.log("Fetching perp markets:", indexesToFetch);
1745
+ const marketPdas = marketIndexes.map((marketIndex) => this.getMarketPda(driftTypes_1.MarketType.PERP, marketIndex));
1746
+ const accounts = await this.base.provider.connection.getMultipleAccountsInfo(marketPdas);
1747
+ accounts.forEach((account) => {
1748
+ if (account) {
1749
+ const perpMarket = this.parsePerpMarket(account.data);
1750
+ this.perpMarkets.set(perpMarket.marketIndex, perpMarket);
1751
+ }
1752
+ });
1615
1753
  }
1616
- return data;
1754
+ else {
1755
+ console.log("Requested perp markets already cached:", marketIndexes);
1756
+ }
1757
+ return marketIndexes
1758
+ .map((marketIndex) => this.perpMarkets.get(marketIndex))
1759
+ .filter((m) => m);
1617
1760
  }
1618
- async getPositions(statePda, subAccountId = 0) {
1619
- const { spotPositions, perpPositions } = await this.fetchGlamDriftUser(new web3_js_1.PublicKey(statePda), subAccountId);
1620
- return { spotPositions, perpPositions };
1761
+ async fetchMarketConfigs() {
1762
+ // const response = await fetch(
1763
+ // "https://api.glam.systems/v0/drift/market_configs/",
1764
+ // );
1765
+ // if (!response.ok) {
1766
+ // throw new Error(`Failed to fetch market configs: ${response.status}`);
1767
+ // }
1768
+ // const data = await response.json();
1769
+ // const { orderConstants, perp, spot } = data;
1770
+ // // Transform perp market from API to `PerpMarket` type
1771
+ // const perpMarkets = perp.map((m: any) => ({
1772
+ // marketIndex: m.marketIndex,
1773
+ // marketPda: m.marketPDA,
1774
+ // oracle: new PublicKey(m.oracle),
1775
+ // }));
1776
+ // // Transform spot market from API to `SpotMarket` type
1777
+ // const spotMarkets = spot.map((m: any) => ({
1778
+ // marketIndex: m.marketIndex,
1779
+ // marketPda: m.marketPDA,
1780
+ // oracle: new PublicKey(m.oracle),
1781
+ // mint: new PublicKey(m.mint),
1782
+ // vault: new PublicKey(m.vaultPDA),
1783
+ // decimals: m.decimals,
1784
+ // }));
1785
+ if (!this.marketConfigs) {
1786
+ const perpMarkets = await this.fetchAndParsePerpMarkets(Array.from(Array(100).keys()));
1787
+ const spotMarkets = await this.fetchAndParseSpotMarkets(Array.from(Array(100).keys()));
1788
+ this.marketConfigs = {
1789
+ orderConstants: { perpBaseScale: 9, quoteScale: 6 },
1790
+ perpMarkets,
1791
+ spotMarkets,
1792
+ };
1793
+ }
1794
+ return this.marketConfigs;
1795
+ }
1796
+ // public async fetchGlamDriftUser(
1797
+ // glamState: PublicKey | string,
1798
+ // subAccountId: number = 0,
1799
+ // ): Promise<GlamDriftUser> {
1800
+ // const vault = this.base.getVaultPda(new PublicKey(glamState));
1801
+ // const response = await fetch(
1802
+ // `https://api.glam.systems/v0/drift/user?authority=${vault.toBase58()}&accountId=${subAccountId}`,
1803
+ // );
1804
+ // const data = await response.json();
1805
+ // if (!data) {
1806
+ // throw new Error("Failed to fetch drift user.");
1807
+ // }
1808
+ // return data as GlamDriftUser;
1809
+ // }
1810
+ charsToName(chars) {
1811
+ return String.fromCharCode(...chars)
1812
+ .replace(/\0/g, "")
1813
+ .trim();
1814
+ }
1815
+ async fetchDriftUser(statePda, subAccountId = 0) {
1816
+ const { user } = this.getDriftUserPdas(new web3_js_1.PublicKey(statePda), subAccountId);
1817
+ const accountInfo = await this.base.provider.connection.getAccountInfo(user);
1818
+ if (!accountInfo) {
1819
+ return null;
1820
+ }
1821
+ const { delegate, name, spotPositions, marginMode, perpPositions, isMarginTradingEnabled, maxMarginRatio, orders, } = (0, driftUser_1.decodeUser)(accountInfo.data);
1822
+ // Prefetch market configs
1823
+ const marketConfigs = await this.fetchMarketConfigs();
1824
+ const spotPositionsExt = await Promise.all(spotPositions.map(async (p) => {
1825
+ const { amount, uiAmount } = await this.calcSpotBalance(p.marketIndex, p.scaledBalance, p.balanceType);
1826
+ const spotMarket = marketConfigs.spotMarkets.find((m) => m.marketIndex === p.marketIndex);
1827
+ return {
1828
+ ...p,
1829
+ amount,
1830
+ uiAmount,
1831
+ mint: spotMarket.mint,
1832
+ decimals: spotMarket.decimals,
1833
+ marketName: spotMarket.name,
1834
+ };
1835
+ }));
1836
+ return {
1837
+ delegate,
1838
+ name: this.charsToName(name),
1839
+ spotPositions: spotPositionsExt,
1840
+ perpPositions,
1841
+ orders,
1842
+ marginMode,
1843
+ subAccountId,
1844
+ isMarginTradingEnabled,
1845
+ maxMarginRatio,
1846
+ };
1621
1847
  }
1848
+ // async getPositions(statePda: PublicKey | string, subAccountId: number = 0) {
1849
+ // const driftUser = await this.fetchDriftUser(
1850
+ // new PublicKey(statePda),
1851
+ // subAccountId,
1852
+ // );
1853
+ // if (!driftUser) {
1854
+ // return { spotPositions: [], perpPositions: [] };
1855
+ // }
1856
+ // const marketConfigs = await this.fetchMarketConfigs();
1857
+ // const { spotPositions, perpPositions } = driftUser;
1858
+ // return { spotPositions, perpPositions };
1859
+ // }
1622
1860
  async fetchPolicyConfig(glamState) {
1623
- let driftUserAccount;
1624
- if (glamState && glamState.id) {
1625
- const [driftUserAddress] = this.getUser(glamState.id);
1626
- const connection = this.base.provider.connection;
1627
- const info = await connection.getAccountInfo(driftUserAddress, connection.commitment);
1628
- if (info) {
1629
- driftUserAccount = (0, sdk_1.decodeUser)(info.data);
1630
- }
1631
- }
1861
+ const driftUserAccount = glamState && glamState.id && (await this.fetchDriftUser(glamState.id));
1632
1862
  let delegate = driftUserAccount?.delegate;
1633
- if (delegate && delegate.equals(new web3_js_1.PublicKey(0))) {
1863
+ if (delegate && delegate.equals(web3_js_1.PublicKey.default)) {
1634
1864
  delegate = undefined;
1635
1865
  }
1636
1866
  return {
@@ -1645,36 +1875,43 @@ class DriftClient {
1645
1875
  driftMarketIndexesSpot: glamState?.driftMarketIndexesSpot || [],
1646
1876
  };
1647
1877
  }
1648
- async composeRemainingAccounts(glamState, subAccountId, marketConfigs, marketType, marketIndex) {
1649
- const { spotPositions, perpPositions } = await this.getPositions(glamState, subAccountId);
1878
+ async composeRemainingAccounts(glamState, subAccountId, marketType, marketIndex) {
1879
+ const driftUser = await this.fetchDriftUser(glamState, subAccountId);
1880
+ if (!driftUser) {
1881
+ throw new Error("Drift user not found");
1882
+ }
1883
+ const { spotPositions, perpPositions } = driftUser;
1650
1884
  const spotMarketIndexes = spotPositions.map((p) => p.marketIndex);
1651
1885
  const perpMarketIndexes = perpPositions.map((p) => p.marketIndex);
1652
1886
  // Note that marketIndex is could be 0, need to explicitly check undefined
1653
- if (this.marketTypeEquals(marketType, sdk_1.MarketType.SPOT) &&
1887
+ if (this.marketTypeEquals(marketType, driftTypes_1.MarketType.SPOT) &&
1654
1888
  marketIndex !== undefined &&
1655
1889
  !spotMarketIndexes.includes(marketIndex)) {
1656
1890
  spotMarketIndexes.push(marketIndex);
1657
1891
  }
1658
- else if (this.marketTypeEquals(marketType, sdk_1.MarketType.PERP) &&
1892
+ else if (this.marketTypeEquals(marketType, driftTypes_1.MarketType.PERP) &&
1659
1893
  marketIndex !== undefined &&
1660
1894
  !perpMarketIndexes.includes(marketIndex)) {
1661
1895
  perpMarketIndexes.push(marketIndex);
1662
1896
  }
1663
1897
  // Also include USDC spot market if we're composing remaining accounts for spot or perp orders
1664
- if (this.marketTypeEquals(marketType, sdk_1.MarketType.PERP) ||
1665
- this.marketTypeEquals(marketType, sdk_1.MarketType.SPOT)) {
1898
+ if (this.marketTypeEquals(marketType, driftTypes_1.MarketType.PERP) ||
1899
+ this.marketTypeEquals(marketType, driftTypes_1.MarketType.SPOT)) {
1666
1900
  if (!spotMarketIndexes.includes(0)) {
1667
1901
  spotMarketIndexes.push(0);
1668
1902
  }
1669
1903
  }
1670
- const oracles = spotMarketIndexes
1671
- .map((i) => marketConfigs.spot[i].oracle)
1672
- .concat(perpMarketIndexes.map((i) => marketConfigs.perp[i].oracle));
1673
- const markets = spotMarketIndexes
1674
- .map((i) => marketConfigs.spot[i].marketPDA)
1675
- .concat(perpMarketIndexes.map((i) => marketConfigs.perp[i].marketPDA));
1676
- console.log("[composeRemainingAccounts] markets:", markets);
1677
- console.log("[composeRemainingAccounts] oracles:", oracles);
1904
+ const spotMarkets = await this.fetchAndParseSpotMarkets(spotMarketIndexes);
1905
+ const perpMarkets = await this.fetchAndParsePerpMarkets(perpMarketIndexes);
1906
+ console.log("[composeRemainingAccounts] perpMarkets:", perpMarkets);
1907
+ const oracles = spotMarkets
1908
+ .map((m) => m.oracle)
1909
+ .concat(perpMarkets.map((m) => m.oracle));
1910
+ const markets = spotMarkets
1911
+ .map((m) => m.marketPda)
1912
+ .concat(perpMarkets.map((m) => m.marketPda));
1913
+ console.log("[composeRemainingAccounts] markets:", markets.map((m) => m.toBase58()));
1914
+ console.log("[composeRemainingAccounts] oracles:", oracles.map((o) => o.toBase58()));
1678
1915
  return oracles
1679
1916
  .map((o) => ({
1680
1917
  pubkey: new web3_js_1.PublicKey(o),
@@ -1688,15 +1925,14 @@ class DriftClient {
1688
1925
  })));
1689
1926
  }
1690
1927
  async initializeUserStatsIx(glamState, glamSigner) {
1691
- const [_, userStats] = this.getUser(glamState);
1692
- const state = await (0, sdk_1.getDriftStateAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID);
1928
+ const { userStats } = this.getDriftUserPdas(glamState);
1693
1929
  // @ts-ignore
1694
1930
  return await this.base.program.methods
1695
1931
  .driftInitializeUserStats()
1696
1932
  .accounts({
1697
1933
  glamState,
1698
1934
  glamSigner,
1699
- state,
1935
+ state: this.driftStatePda,
1700
1936
  userStats,
1701
1937
  })
1702
1938
  .instruction();
@@ -1706,26 +1942,29 @@ class DriftClient {
1706
1942
  .split("")
1707
1943
  .map((char) => char.charCodeAt(0))
1708
1944
  .concat(Array(24).fill(0));
1709
- const [user, userStats] = this.getUser(glamState, subAccountId);
1710
- const state = await (0, sdk_1.getDriftStateAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID);
1945
+ const { user, userStats } = this.getDriftUserPdas(glamState, subAccountId);
1946
+ const { user: referrer, userStats: referrerStats } = this.getGlamReferrerPdas();
1947
+ const remainingAccounts = [
1948
+ { pubkey: referrer, isWritable: true, isSigner: false },
1949
+ { pubkey: referrerStats, isWritable: true, isSigner: false },
1950
+ ];
1711
1951
  return await this.base.program.methods
1712
1952
  .driftInitializeUser(subAccountId, name)
1713
1953
  .accounts({
1714
1954
  glamState,
1715
1955
  user,
1716
1956
  userStats,
1717
- state,
1957
+ state: this.driftStatePda,
1718
1958
  glamSigner,
1719
1959
  })
1720
- // We should only try to add referrer if it is the first user (subAccountId == 0)
1721
- // .remainingAccounts([]) TODO: set glam referral account
1960
+ .remainingAccounts(remainingAccounts)
1722
1961
  .instruction();
1723
1962
  }
1724
1963
  async initializeTx(glamState, subAccountId = 0, txOptions = {}) {
1725
1964
  const glamSigner = txOptions.signer || this.base.getSigner();
1726
1965
  const tx = new web3_js_1.Transaction();
1727
1966
  // Create userStats account if it doesn't exist
1728
- const [_, userStats] = this.getUser(glamState);
1967
+ const { userStats } = this.getDriftUserPdas(glamState);
1729
1968
  const userStatsInfo = await this.base.provider.connection.getAccountInfo(userStats);
1730
1969
  if (!userStatsInfo) {
1731
1970
  tx.add(await this.initializeUserStatsIx(glamState, glamSigner));
@@ -1737,7 +1976,7 @@ class DriftClient {
1737
1976
  async updateUserCustomMarginRatioIx(glamState, maxLeverage, // 1=1x, 2=2x ... 50=50x leverage
1738
1977
  subAccountId = 0, txOptions = {}) {
1739
1978
  const glamSigner = txOptions.signer || this.base.getSigner();
1740
- const [user] = this.getUser(glamState, subAccountId);
1979
+ const { user } = this.getDriftUserPdas(glamState, subAccountId);
1741
1980
  // https://github.com/drift-labs/protocol-v2/blob/babed162b08b1fe34e49a81c5aa3e4ec0a88ecdf/programs/drift/src/math/constants.rs#L183-L184
1742
1981
  const marginRatio = DRIFT_MARGIN_PRECISION / maxLeverage;
1743
1982
  return await this.base.program.methods
@@ -1756,7 +1995,7 @@ class DriftClient {
1756
1995
  }
1757
1996
  async updateUserMarginTradingEnabledIx(glamState, marginTradingEnabled, subAccountId = 0, txOptions = {}) {
1758
1997
  const glamSigner = txOptions.signer || this.base.getSigner();
1759
- const [user] = this.getUser(glamState, subAccountId);
1998
+ const { user } = this.getDriftUserPdas(glamState, subAccountId);
1760
1999
  return await this.base.program.methods
1761
2000
  .driftUpdateUserMarginTradingEnabled(subAccountId, marginTradingEnabled)
1762
2001
  .accounts({
@@ -1772,7 +2011,7 @@ class DriftClient {
1772
2011
  }
1773
2012
  async updateUserDelegateIx(glamState, delegate, subAccountId = 0, txOptions = {}) {
1774
2013
  const glamSigner = txOptions.signer || this.base.getSigner();
1775
- const [user] = this.getUser(glamState, subAccountId);
2014
+ const { user } = this.getDriftUserPdas(glamState, subAccountId);
1776
2015
  return await this.base.program.methods
1777
2016
  .driftUpdateUserDelegate(subAccountId, new web3_js_1.PublicKey(delegate))
1778
2017
  .accounts({
@@ -1788,13 +2027,12 @@ class DriftClient {
1788
2027
  }
1789
2028
  async deleteUserTx(glamState, subAccountId = 0, txOptions = {}) {
1790
2029
  const glamSigner = txOptions.signer || this.base.getSigner();
1791
- const [user, userStats] = this.getUser(glamState, subAccountId);
1792
- const state = await (0, sdk_1.getDriftStateAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID);
2030
+ const { user, userStats } = this.getDriftUserPdas(glamState, subAccountId);
1793
2031
  const tx = await this.base.program.methods
1794
2032
  .driftDeleteUser()
1795
2033
  .accounts({
1796
2034
  glamState,
1797
- state,
2035
+ state: this.driftStatePda,
1798
2036
  user,
1799
2037
  userStats,
1800
2038
  glamSigner,
@@ -1802,22 +2040,18 @@ class DriftClient {
1802
2040
  .transaction();
1803
2041
  return await this.base.intoVersionedTransaction(tx, txOptions);
1804
2042
  }
1805
- async depositTx(glamState, amount, marketIndex = 1, subAccountId = 0, marketConfigs, txOptions = {}) {
2043
+ async depositTx(glamState, amount, marketIndex = 1, subAccountId = 0, txOptions = {}) {
1806
2044
  const glamSigner = txOptions.signer || this.base.getSigner();
1807
- const [user, userStats] = this.getUser(glamState, subAccountId);
1808
- const state = await (0, sdk_1.getDriftStateAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID);
1809
- const { mint, oracle, marketPDA, vaultPDA } = marketConfigs.spot[marketIndex];
1810
- console.log("mint, oracle, marketPDA, vaultPDA", mint, oracle, marketPDA, vaultPDA);
2045
+ const { user, userStats } = this.getDriftUserPdas(glamState, subAccountId);
2046
+ const { mint, oracle, tokenProgram, marketPda, vault: driftVault, } = await this.fetchAndParseSpotMarket(marketIndex);
2047
+ console.log(`Spot market ${marketIndex} mint ${mint}, oracle: ${oracle}, marketPda: ${marketPda}, vault: ${driftVault}`);
1811
2048
  const preInstructions = [];
1812
2049
  const postInstructions = [];
1813
2050
  // If drift user doesn't exist, prepend initializeUserStats and initializeUser instructions
1814
- try {
1815
- await this.fetchGlamDriftUser(glamState, subAccountId);
1816
- }
1817
- catch (_) {
2051
+ if (!(await this.fetchDriftUser(glamState, subAccountId))) {
1818
2052
  preInstructions.push(await this.initializeUserStatsIx(glamState, glamSigner), await this.initializeUserIx(glamState, glamSigner, subAccountId));
1819
2053
  }
1820
- if (mint === constants_1.WSOL.toBase58()) {
2054
+ if (mint.equals(constants_1.WSOL)) {
1821
2055
  const wrapSolIxs = await this.base.maybeWrapSol(glamState, amount, glamSigner);
1822
2056
  preInstructions.push(...wrapSolIxs);
1823
2057
  // If we need to wrap SOL, it means the wSOL balance will be drained,
@@ -1834,80 +2068,94 @@ class DriftClient {
1834
2068
  .instruction();
1835
2069
  postInstructions.push(closeTokenAccountIx);
1836
2070
  }
2071
+ const remainingAccounts = [
2072
+ { pubkey: new web3_js_1.PublicKey(oracle), isSigner: false, isWritable: false },
2073
+ { pubkey: new web3_js_1.PublicKey(marketPda), isSigner: false, isWritable: true },
2074
+ ];
2075
+ if (tokenProgram.equals(spl_token_1.TOKEN_2022_PROGRAM_ID)) {
2076
+ remainingAccounts.push({
2077
+ pubkey: mint,
2078
+ isSigner: false,
2079
+ isWritable: false,
2080
+ });
2081
+ }
1837
2082
  const tx = await this.base.program.methods
1838
2083
  .driftDeposit(marketIndex, amount, false)
1839
2084
  .accounts({
1840
2085
  glamState,
1841
- state,
2086
+ state: this.driftStatePda,
1842
2087
  user,
1843
2088
  userStats,
1844
- spotMarketVault: new web3_js_1.PublicKey(vaultPDA),
1845
- userTokenAccount: this.base.getVaultAta(glamState, new web3_js_1.PublicKey(mint)),
2089
+ spotMarketVault: driftVault,
2090
+ userTokenAccount: this.base.getVaultAta(glamState, mint, tokenProgram),
1846
2091
  glamSigner,
1847
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
2092
+ tokenProgram,
1848
2093
  })
1849
- .remainingAccounts([
1850
- { pubkey: new web3_js_1.PublicKey(oracle), isSigner: false, isWritable: false },
1851
- { pubkey: new web3_js_1.PublicKey(marketPDA), isSigner: false, isWritable: true },
1852
- ])
2094
+ .remainingAccounts(remainingAccounts)
1853
2095
  .preInstructions(preInstructions)
1854
2096
  .postInstructions(postInstructions)
1855
2097
  .transaction();
1856
2098
  return await this.base.intoVersionedTransaction(tx, txOptions);
1857
2099
  }
1858
- async withdrawTx(statePda, amount, marketIndex = 1, subAccountId = 0, marketConfigs, txOptions = {}) {
2100
+ async withdrawTx(statePda, amount, marketIndex = 1, subAccountId = 0, txOptions = {}) {
1859
2101
  const glamSigner = txOptions.signer || this.base.getSigner();
1860
- const [user, userStats] = this.getUser(statePda, subAccountId);
1861
- const state = await (0, sdk_1.getDriftStateAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID);
1862
- const { mint: m, vaultPDA: d } = marketConfigs.spot[marketIndex];
1863
- const mint = new web3_js_1.PublicKey(m);
1864
- const driftAta = new web3_js_1.PublicKey(d); // drift vault ata
1865
- const vault = this.base.getVaultPda(statePda);
1866
- const vaultAta = this.base.getVaultAta(statePda, mint); // glam vault ata
1867
- const remainingAccounts = await this.composeRemainingAccounts(statePda, subAccountId, marketConfigs, sdk_1.MarketType.SPOT, marketIndex);
1868
- const { tokenProgram } = await this.base.fetchMintWithOwner(mint);
2102
+ const { user, userStats } = this.getDriftUserPdas(statePda, subAccountId);
2103
+ const { mint, tokenProgram, vault: driftVault, } = await this.fetchAndParseSpotMarket(marketIndex);
2104
+ const glamVault = this.base.getVaultPda(statePda);
2105
+ const glamVaultAta = this.base.getVaultAta(statePda, mint, tokenProgram);
2106
+ const remainingAccounts = await this.composeRemainingAccounts(statePda, subAccountId, driftTypes_1.MarketType.SPOT, marketIndex);
2107
+ if (tokenProgram.equals(spl_token_1.TOKEN_2022_PROGRAM_ID)) {
2108
+ remainingAccounts.push({
2109
+ pubkey: mint,
2110
+ isSigner: false,
2111
+ isWritable: false,
2112
+ });
2113
+ }
1869
2114
  // Create vault ata in case it doesn't exist
1870
2115
  const preInstructions = [
1871
- (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(glamSigner, vaultAta, vault, mint, tokenProgram),
2116
+ (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(glamSigner, glamVaultAta, glamVault, mint, tokenProgram),
1872
2117
  ];
1873
2118
  const tx = await this.base.program.methods
1874
2119
  .driftWithdraw(marketIndex, amount, false)
1875
2120
  .accounts({
1876
2121
  glamState: statePda,
1877
- state,
2122
+ state: this.driftStatePda,
1878
2123
  user,
1879
2124
  userStats,
1880
2125
  glamSigner,
1881
- spotMarketVault: driftAta,
1882
- userTokenAccount: vaultAta,
1883
- driftSigner: DRIFT_VAULT,
1884
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
2126
+ spotMarketVault: driftVault,
2127
+ userTokenAccount: glamVaultAta,
2128
+ driftSigner: DRIFT_SIGNER,
2129
+ tokenProgram,
1885
2130
  })
1886
2131
  .remainingAccounts(remainingAccounts)
1887
2132
  .preInstructions(preInstructions)
1888
2133
  .transaction();
1889
2134
  return await this.base.intoVersionedTransaction(tx, txOptions);
1890
2135
  }
1891
- async placeOrderTx(glamState, orderParams, subAccountId = 0, marketConfigs, txOptions = {}) {
2136
+ async placeOrderTx(glamState, orderParams, subAccountId = 0, txOptions = {}) {
1892
2137
  const { marketIndex, marketType } = orderParams;
1893
- const remainingAccounts = await this.composeRemainingAccounts(glamState, subAccountId, marketConfigs, marketType, marketIndex);
2138
+ const { user: referrer, userStats: referrerStats } = this.getGlamReferrerPdas();
2139
+ const remainingAccounts = (await this.composeRemainingAccounts(glamState, subAccountId, marketType, marketIndex)).concat([
2140
+ { pubkey: referrer, isWritable: true, isSigner: false },
2141
+ { pubkey: referrerStats, isWritable: true, isSigner: false },
2142
+ ]);
1894
2143
  const glamSigner = txOptions.signer || this.base.getSigner();
1895
- const [user] = this.getUser(glamState, subAccountId);
1896
- const state = await (0, sdk_1.getDriftStateAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID);
2144
+ const { user } = this.getDriftUserPdas(glamState, subAccountId);
2145
+ // @ts-ignore
1897
2146
  const tx = await this.base.program.methods
1898
- // @ts-ignore
1899
2147
  .driftPlaceOrders([orderParams])
1900
2148
  .accounts({
1901
2149
  glamState,
1902
2150
  user,
1903
- state,
2151
+ state: this.driftStatePda,
1904
2152
  glamSigner,
1905
2153
  })
1906
2154
  .remainingAccounts(remainingAccounts)
1907
2155
  .transaction();
1908
2156
  return await this.base.intoVersionedTransaction(tx, txOptions);
1909
2157
  }
1910
- async modifyOrderTx(statePda, modifyOrderParams, subAccountId = 0, marketConfigs, txOptions = {}) {
2158
+ async modifyOrderTx(statePda, modifyOrderParams, subAccountId = 0, txOptions = {}) {
1911
2159
  // const { marketIndex, marketType } = orderParams;
1912
2160
  // const remainingAccounts = await this.composeRemainingAccounts(
1913
2161
  // statePda,
@@ -1917,8 +2165,7 @@ class DriftClient {
1917
2165
  // marketIndex,
1918
2166
  // );
1919
2167
  const signer = txOptions.signer || this.base.getSigner();
1920
- const [user] = this.getUser(statePda, subAccountId);
1921
- const driftState = await (0, sdk_1.getDriftStateAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID);
2168
+ const { user } = this.getDriftUserPdas(statePda, subAccountId);
1922
2169
  const tx = await this.base.program.methods
1923
2170
  // @ts-ignore
1924
2171
  .driftModifyOrder(1, modifyOrderParams)
@@ -1926,17 +2173,16 @@ class DriftClient {
1926
2173
  glamState: statePda,
1927
2174
  glamSigner: signer,
1928
2175
  user,
1929
- state: driftState,
2176
+ state: this.driftStatePda,
1930
2177
  })
1931
2178
  // .remainingAccounts(remainingAccounts)
1932
2179
  .transaction();
1933
2180
  return await this.base.intoVersionedTransaction(tx, txOptions);
1934
2181
  }
1935
- async cancelOrdersTx(glamState, marketType, marketIndex, direction, subAccountId = 0, marketConfigs, txOptions = {}) {
2182
+ async cancelOrdersTx(glamState, marketType, marketIndex, direction, subAccountId = 0, txOptions = {}) {
1936
2183
  const glamSigner = txOptions.signer || this.base.getSigner();
1937
- const [user] = this.getUser(glamState, subAccountId);
1938
- const driftState = await (0, sdk_1.getDriftStateAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID);
1939
- const remainingAccounts = await this.composeRemainingAccounts(glamState, subAccountId, marketConfigs, marketType, marketIndex);
2184
+ const { user } = this.getDriftUserPdas(glamState, subAccountId);
2185
+ const remainingAccounts = await this.composeRemainingAccounts(glamState, subAccountId, marketType, marketIndex);
1940
2186
  // @ts-ignore
1941
2187
  const tx = await this.base.program.methods
1942
2188
  .driftCancelOrders(marketType, marketIndex, direction)
@@ -1944,52 +2190,51 @@ class DriftClient {
1944
2190
  glamState,
1945
2191
  glamSigner,
1946
2192
  user,
1947
- state: driftState,
2193
+ state: this.driftStatePda,
1948
2194
  })
1949
2195
  .remainingAccounts(remainingAccounts)
1950
2196
  .transaction();
1951
2197
  return await this.base.intoVersionedTransaction(tx, txOptions);
1952
2198
  }
1953
- async cancelOrdersByIdsTx(glamState, orderIds, subAccountId = 0, marketConfigs, txOptions = {}) {
2199
+ async cancelOrdersByIdsTx(glamState, orderIds, subAccountId = 0, txOptions = {}) {
1954
2200
  const glamSigner = txOptions.signer || this.base.getSigner();
1955
- const [user] = this.getUser(glamState, subAccountId);
1956
- const driftState = await (0, sdk_1.getDriftStateAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID);
1957
- const remainingAccounts = await this.composeRemainingAccounts(glamState, subAccountId, marketConfigs);
2201
+ const { user } = this.getDriftUserPdas(glamState, subAccountId);
2202
+ const remainingAccounts = await this.composeRemainingAccounts(glamState, subAccountId);
2203
+ // @ts-ignore
1958
2204
  const tx = await this.base.program.methods
1959
2205
  .driftCancelOrdersByIds(orderIds)
1960
2206
  .accounts({
1961
2207
  glamState,
1962
2208
  glamSigner,
1963
2209
  user,
1964
- state: driftState,
2210
+ state: this.driftStatePda,
1965
2211
  })
1966
2212
  .remainingAccounts(remainingAccounts)
1967
2213
  .transaction();
1968
2214
  return await this.base.intoVersionedTransaction(tx, txOptions);
1969
2215
  }
1970
- async settlePnlTx(glamState, marketIndex, subAccountId = 0, marketConfigs, txOptions = {}) {
2216
+ async settlePnlTx(glamState, marketIndex, subAccountId = 0, txOptions = {}) {
1971
2217
  const glamSigner = txOptions.signer || this.base.getSigner();
1972
- const [user] = this.getUser(glamState, subAccountId);
1973
- const driftState = await (0, sdk_1.getDriftStateAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID);
1974
- const { vaultPDA } = marketConfigs.spot[marketIndex];
2218
+ const { user } = this.getDriftUserPdas(glamState, subAccountId);
2219
+ const { vault: driftVault } = await this.fetchAndParseSpotMarket(marketIndex);
2220
+ // @ts-ignore
1975
2221
  const tx = await this.base.program.methods
1976
2222
  .driftSettlePnl(marketIndex)
1977
2223
  .accounts({
1978
2224
  glamState,
1979
2225
  glamSigner,
1980
2226
  user,
1981
- state: driftState,
1982
- spotMarketVault: new web3_js_1.PublicKey(vaultPDA),
2227
+ state: this.driftStatePda,
2228
+ spotMarketVault: driftVault,
1983
2229
  })
1984
2230
  .transaction();
1985
2231
  return await this.base.intoVersionedTransaction(tx, txOptions);
1986
2232
  }
1987
- async priceDriftTx(glamState, marketConfigs, priceDenom, txOptions = {}) {
2233
+ async priceDriftTx(glamState, priceDenom, txOptions = {}) {
1988
2234
  const signer = txOptions.signer || this.base.getSigner();
1989
2235
  const glamVault = this.base.getVaultPda(glamState);
1990
- const [user, userStats] = this.getUser(glamState);
1991
- const driftState = await (0, sdk_1.getDriftStateAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID);
1992
- const remainingAccounts = await this.composeRemainingAccounts(glamState, 0, marketConfigs);
2236
+ const { user, userStats } = this.getDriftUserPdas(glamState);
2237
+ const remainingAccounts = await this.composeRemainingAccounts(glamState, 0);
1993
2238
  const tx = await this.base.program.methods
1994
2239
  .priceDrift(priceDenom)
1995
2240
  .accounts({
@@ -1999,7 +2244,7 @@ class DriftClient {
1999
2244
  user,
2000
2245
  userStats,
2001
2246
  solOracle: assets_1.SOL_ORACLE,
2002
- state: driftState,
2247
+ state: this.driftStatePda,
2003
2248
  })
2004
2249
  .remainingAccounts(remainingAccounts)
2005
2250
  .transaction();
@@ -2011,15 +2256,767 @@ exports.DriftClient = DriftClient;
2011
2256
 
2012
2257
  /***/ }),
2013
2258
  /* 21 */
2014
- /***/ ((module) => {
2259
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2260
+
2261
+
2262
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2263
+ exports.SwapReduceOnly = exports.PlaceAndTakeOrderSuccessCondition = exports.FuelOverflowStatus = exports.ReferrerStatus = exports.DefaultOrderParams = exports.ModifyOrderPolicy = exports.PostOnlyParams = exports.LiquidationType = exports.LPAction = exports.TradeSide = exports.SettlePnlMode = exports.StakeAction = exports.SpotFulfillmentConfigStatus = exports.SettlePnlExplanation = exports.DepositExplanation = exports.SpotFulfillmentStatus = exports.SpotFulfillmentType = exports.OrderTriggerCondition = exports.OrderActionExplanation = exports.OrderAction = exports.OrderStatus = exports.MarketType = exports.OrderType = exports.OracleSourceNum = exports.OracleSource = exports.DepositDirection = exports.PositionDirection = exports.SpotBalanceType = exports.SwapDirection = exports.AssetTier = exports.ContractTier = exports.ContractType = exports.MarginMode = exports.UserStatus = exports.InsuranceFundOperation = exports.SpotOperation = exports.PerpOperation = exports.MarketStatus = exports.ExchangeStatus = exports.ZERO = void 0;
2264
+ exports.isVariant = isVariant;
2265
+ exports.isOneOfVariant = isOneOfVariant;
2266
+ exports.getVariant = getVariant;
2267
+ const anchor_1 = __webpack_require__(2);
2268
+ exports.ZERO = new anchor_1.BN(0);
2269
+ // # Utility Types / Enums / Constants
2270
+ var ExchangeStatus;
2271
+ (function (ExchangeStatus) {
2272
+ ExchangeStatus[ExchangeStatus["ACTIVE"] = 0] = "ACTIVE";
2273
+ ExchangeStatus[ExchangeStatus["DEPOSIT_PAUSED"] = 1] = "DEPOSIT_PAUSED";
2274
+ ExchangeStatus[ExchangeStatus["WITHDRAW_PAUSED"] = 2] = "WITHDRAW_PAUSED";
2275
+ ExchangeStatus[ExchangeStatus["AMM_PAUSED"] = 4] = "AMM_PAUSED";
2276
+ ExchangeStatus[ExchangeStatus["FILL_PAUSED"] = 8] = "FILL_PAUSED";
2277
+ ExchangeStatus[ExchangeStatus["LIQ_PAUSED"] = 16] = "LIQ_PAUSED";
2278
+ ExchangeStatus[ExchangeStatus["FUNDING_PAUSED"] = 32] = "FUNDING_PAUSED";
2279
+ ExchangeStatus[ExchangeStatus["SETTLE_PNL_PAUSED"] = 64] = "SETTLE_PNL_PAUSED";
2280
+ ExchangeStatus[ExchangeStatus["AMM_IMMEDIATE_FILL_PAUSED"] = 128] = "AMM_IMMEDIATE_FILL_PAUSED";
2281
+ ExchangeStatus[ExchangeStatus["PAUSED"] = 255] = "PAUSED";
2282
+ })(ExchangeStatus || (exports.ExchangeStatus = ExchangeStatus = {}));
2283
+ class MarketStatus {
2284
+ }
2285
+ exports.MarketStatus = MarketStatus;
2286
+ MarketStatus.INITIALIZED = { initialized: {} };
2287
+ MarketStatus.ACTIVE = { active: {} };
2288
+ MarketStatus.FUNDING_PAUSED = { fundingPaused: {} };
2289
+ MarketStatus.AMM_PAUSED = { ammPaused: {} };
2290
+ MarketStatus.FILL_PAUSED = { fillPaused: {} };
2291
+ MarketStatus.WITHDRAW_PAUSED = { withdrawPaused: {} };
2292
+ MarketStatus.REDUCE_ONLY = { reduceOnly: {} };
2293
+ MarketStatus.SETTLEMENT = { settlement: {} };
2294
+ MarketStatus.DELISTED = { delisted: {} };
2295
+ var PerpOperation;
2296
+ (function (PerpOperation) {
2297
+ PerpOperation[PerpOperation["UPDATE_FUNDING"] = 1] = "UPDATE_FUNDING";
2298
+ PerpOperation[PerpOperation["AMM_FILL"] = 2] = "AMM_FILL";
2299
+ PerpOperation[PerpOperation["FILL"] = 4] = "FILL";
2300
+ PerpOperation[PerpOperation["SETTLE_PNL"] = 8] = "SETTLE_PNL";
2301
+ PerpOperation[PerpOperation["SETTLE_PNL_WITH_POSITION"] = 16] = "SETTLE_PNL_WITH_POSITION";
2302
+ PerpOperation[PerpOperation["LIQUIDATION"] = 32] = "LIQUIDATION";
2303
+ })(PerpOperation || (exports.PerpOperation = PerpOperation = {}));
2304
+ var SpotOperation;
2305
+ (function (SpotOperation) {
2306
+ SpotOperation[SpotOperation["UPDATE_CUMULATIVE_INTEREST"] = 1] = "UPDATE_CUMULATIVE_INTEREST";
2307
+ SpotOperation[SpotOperation["FILL"] = 2] = "FILL";
2308
+ SpotOperation[SpotOperation["DEPOSIT"] = 4] = "DEPOSIT";
2309
+ SpotOperation[SpotOperation["WITHDRAW"] = 8] = "WITHDRAW";
2310
+ SpotOperation[SpotOperation["LIQUIDATION"] = 16] = "LIQUIDATION";
2311
+ })(SpotOperation || (exports.SpotOperation = SpotOperation = {}));
2312
+ var InsuranceFundOperation;
2313
+ (function (InsuranceFundOperation) {
2314
+ InsuranceFundOperation[InsuranceFundOperation["INIT"] = 1] = "INIT";
2315
+ InsuranceFundOperation[InsuranceFundOperation["ADD"] = 2] = "ADD";
2316
+ InsuranceFundOperation[InsuranceFundOperation["REQUEST_REMOVE"] = 4] = "REQUEST_REMOVE";
2317
+ InsuranceFundOperation[InsuranceFundOperation["REMOVE"] = 8] = "REMOVE";
2318
+ })(InsuranceFundOperation || (exports.InsuranceFundOperation = InsuranceFundOperation = {}));
2319
+ var UserStatus;
2320
+ (function (UserStatus) {
2321
+ UserStatus[UserStatus["BEING_LIQUIDATED"] = 1] = "BEING_LIQUIDATED";
2322
+ UserStatus[UserStatus["BANKRUPT"] = 2] = "BANKRUPT";
2323
+ UserStatus[UserStatus["REDUCE_ONLY"] = 4] = "REDUCE_ONLY";
2324
+ UserStatus[UserStatus["ADVANCED_LP"] = 8] = "ADVANCED_LP";
2325
+ UserStatus[UserStatus["PROTECTED_MAKER"] = 16] = "PROTECTED_MAKER";
2326
+ })(UserStatus || (exports.UserStatus = UserStatus = {}));
2327
+ class MarginMode {
2328
+ }
2329
+ exports.MarginMode = MarginMode;
2330
+ MarginMode.DEFAULT = { default: {} };
2331
+ MarginMode.HIGH_LEVERAGE = { highLeverage: {} };
2332
+ class ContractType {
2333
+ }
2334
+ exports.ContractType = ContractType;
2335
+ ContractType.PERPETUAL = { perpetual: {} };
2336
+ ContractType.FUTURE = { future: {} };
2337
+ ContractType.PREDICTION = { prediction: {} };
2338
+ class ContractTier {
2339
+ }
2340
+ exports.ContractTier = ContractTier;
2341
+ ContractTier.A = { a: {} };
2342
+ ContractTier.B = { b: {} };
2343
+ ContractTier.C = { c: {} };
2344
+ ContractTier.SPECULATIVE = { speculative: {} };
2345
+ ContractTier.HIGHLY_SPECULATIVE = { highlySpeculative: {} };
2346
+ ContractTier.ISOLATED = { isolated: {} };
2347
+ class AssetTier {
2348
+ }
2349
+ exports.AssetTier = AssetTier;
2350
+ AssetTier.COLLATERAL = { collateral: {} };
2351
+ AssetTier.PROTECTED = { protected: {} };
2352
+ AssetTier.CROSS = { cross: {} };
2353
+ AssetTier.ISOLATED = { isolated: {} };
2354
+ AssetTier.UNLISTED = { unlisted: {} };
2355
+ class SwapDirection {
2356
+ }
2357
+ exports.SwapDirection = SwapDirection;
2358
+ SwapDirection.ADD = { add: {} };
2359
+ SwapDirection.REMOVE = { remove: {} };
2360
+ class SpotBalanceType {
2361
+ }
2362
+ exports.SpotBalanceType = SpotBalanceType;
2363
+ SpotBalanceType.DEPOSIT = { deposit: {} };
2364
+ SpotBalanceType.BORROW = { borrow: {} };
2365
+ class PositionDirection {
2366
+ }
2367
+ exports.PositionDirection = PositionDirection;
2368
+ PositionDirection.LONG = { long: {} };
2369
+ PositionDirection.SHORT = { short: {} };
2370
+ class DepositDirection {
2371
+ }
2372
+ exports.DepositDirection = DepositDirection;
2373
+ DepositDirection.DEPOSIT = { deposit: {} };
2374
+ DepositDirection.WITHDRAW = { withdraw: {} };
2375
+ class OracleSource {
2376
+ static get(n) {
2377
+ const name = Object.entries(OracleSourceNum).find(([, v]) => v === n)?.[0];
2378
+ const source = Object.entries(OracleSource).find(([key, _]) => key.toLocaleLowerCase() === name?.toLocaleLowerCase())?.[1];
2379
+ if (!source) {
2380
+ throw new Error(`Invalid oracle source enum value: ${n}`);
2381
+ }
2382
+ return source;
2383
+ }
2384
+ }
2385
+ exports.OracleSource = OracleSource;
2386
+ OracleSource.PYTH = { pyth: {} };
2387
+ OracleSource.PYTH_1K = { pyth1K: {} };
2388
+ OracleSource.PYTH_1M = { pyth1M: {} };
2389
+ OracleSource.PYTH_PULL = { pythPull: {} };
2390
+ OracleSource.PYTH_1K_PULL = { pyth1KPull: {} };
2391
+ OracleSource.PYTH_1M_PULL = { pyth1MPull: {} };
2392
+ OracleSource.SWITCHBOARD = { switchboard: {} };
2393
+ OracleSource.QUOTE_ASSET = { quoteAsset: {} };
2394
+ OracleSource.PYTH_STABLE_COIN = { pythStableCoin: {} };
2395
+ OracleSource.PYTH_STABLE_COIN_PULL = { pythStableCoinPull: {} };
2396
+ OracleSource.Prelaunch = { prelaunch: {} };
2397
+ OracleSource.SWITCHBOARD_ON_DEMAND = { switchboardOnDemand: {} };
2398
+ OracleSource.PYTH_LAZER = { pythLazer: {} };
2399
+ OracleSource.PYTH_LAZER_1K = { pythLazer1K: {} };
2400
+ OracleSource.PYTH_LAZER_1M = { pythLazer1M: {} };
2401
+ OracleSource.PYTH_LAZER_STABLE_COIN = { pythLazerStableCoin: {} };
2402
+ class OracleSourceNum {
2403
+ }
2404
+ exports.OracleSourceNum = OracleSourceNum;
2405
+ OracleSourceNum.PYTH = 0;
2406
+ OracleSourceNum.PYTH_1K = 1;
2407
+ OracleSourceNum.PYTH_1M = 2;
2408
+ OracleSourceNum.PYTH_PULL = 3;
2409
+ OracleSourceNum.PYTH_1K_PULL = 4;
2410
+ OracleSourceNum.PYTH_1M_PULL = 5;
2411
+ OracleSourceNum.SWITCHBOARD = 6;
2412
+ OracleSourceNum.QUOTE_ASSET = 7;
2413
+ OracleSourceNum.PYTH_STABLE_COIN = 8;
2414
+ OracleSourceNum.PYTH_STABLE_COIN_PULL = 9;
2415
+ OracleSourceNum.PRELAUNCH = 10;
2416
+ OracleSourceNum.SWITCHBOARD_ON_DEMAND = 11;
2417
+ OracleSourceNum.PYTH_LAZER = 12;
2418
+ OracleSourceNum.PYTH_LAZER_1K = 13;
2419
+ OracleSourceNum.PYTH_LAZER_1M = 14;
2420
+ OracleSourceNum.PYTH_LAZER_STABLE_COIN = 15;
2421
+ class OrderType {
2422
+ }
2423
+ exports.OrderType = OrderType;
2424
+ OrderType.LIMIT = { limit: {} };
2425
+ OrderType.TRIGGER_MARKET = { triggerMarket: {} };
2426
+ OrderType.TRIGGER_LIMIT = { triggerLimit: {} };
2427
+ OrderType.MARKET = { market: {} };
2428
+ OrderType.ORACLE = { oracle: {} };
2429
+ class MarketType {
2430
+ }
2431
+ exports.MarketType = MarketType;
2432
+ MarketType.SPOT = { spot: {} };
2433
+ MarketType.PERP = { perp: {} };
2434
+ class OrderStatus {
2435
+ }
2436
+ exports.OrderStatus = OrderStatus;
2437
+ OrderStatus.INIT = { init: {} };
2438
+ OrderStatus.OPEN = { open: {} };
2439
+ OrderStatus.FILLED = { filled: {} };
2440
+ OrderStatus.CANCELED = { canceled: {} };
2441
+ class OrderAction {
2442
+ }
2443
+ exports.OrderAction = OrderAction;
2444
+ OrderAction.PLACE = { place: {} };
2445
+ OrderAction.CANCEL = { cancel: {} };
2446
+ OrderAction.EXPIRE = { expire: {} };
2447
+ OrderAction.FILL = { fill: {} };
2448
+ OrderAction.TRIGGER = { trigger: {} };
2449
+ class OrderActionExplanation {
2450
+ }
2451
+ exports.OrderActionExplanation = OrderActionExplanation;
2452
+ OrderActionExplanation.NONE = { none: {} };
2453
+ OrderActionExplanation.INSUFFICIENT_FREE_COLLATERAL = {
2454
+ insufficientFreeCollateral: {},
2455
+ };
2456
+ OrderActionExplanation.ORACLE_PRICE_BREACHED_LIMIT_PRICE = {
2457
+ oraclePriceBreachedLimitPrice: {},
2458
+ };
2459
+ OrderActionExplanation.MARKET_ORDER_FILLED_TO_LIMIT_PRICE = {
2460
+ marketOrderFilledToLimitPrice: {},
2461
+ };
2462
+ OrderActionExplanation.ORDER_EXPIRED = {
2463
+ orderExpired: {},
2464
+ };
2465
+ OrderActionExplanation.LIQUIDATION = {
2466
+ liquidation: {},
2467
+ };
2468
+ OrderActionExplanation.ORDER_FILLED_WITH_AMM = {
2469
+ orderFilledWithAmm: {},
2470
+ };
2471
+ OrderActionExplanation.ORDER_FILLED_WITH_AMM_JIT = {
2472
+ orderFilledWithAmmJit: {},
2473
+ };
2474
+ OrderActionExplanation.ORDER_FILLED_WITH_AMM_JIT_LP_SPLIT = {
2475
+ orderFilledWithAmmJitLpSplit: {},
2476
+ };
2477
+ OrderActionExplanation.ORDER_FILLED_WITH_LP_JIT = {
2478
+ orderFilledWithLpJit: {},
2479
+ };
2480
+ OrderActionExplanation.ORDER_FILLED_WITH_MATCH = {
2481
+ orderFilledWithMatch: {},
2482
+ };
2483
+ OrderActionExplanation.ORDER_FILLED_WITH_MATCH_JIT = {
2484
+ orderFilledWithMatchJit: {},
2485
+ };
2486
+ OrderActionExplanation.MARKET_EXPIRED = {
2487
+ marketExpired: {},
2488
+ };
2489
+ OrderActionExplanation.RISK_INCREASING_ORDER = {
2490
+ riskingIncreasingOrder: {},
2491
+ };
2492
+ OrderActionExplanation.ORDER_FILLED_WITH_SERUM = {
2493
+ orderFillWithSerum: {},
2494
+ };
2495
+ OrderActionExplanation.ORDER_FILLED_WITH_OPENBOOK_V2 = {
2496
+ orderFilledWithOpenbookV2: {},
2497
+ };
2498
+ OrderActionExplanation.ORDER_FILLED_WITH_PHOENIX = {
2499
+ orderFillWithPhoenix: {},
2500
+ };
2501
+ OrderActionExplanation.REDUCE_ONLY_ORDER_INCREASED_POSITION = {
2502
+ reduceOnlyOrderIncreasedPosition: {},
2503
+ };
2504
+ OrderActionExplanation.DERISK_LP = {
2505
+ deriskLp: {},
2506
+ };
2507
+ OrderActionExplanation.TRANSFER_PERP_POSITION = {
2508
+ transferPerpPosition: {},
2509
+ };
2510
+ class OrderTriggerCondition {
2511
+ }
2512
+ exports.OrderTriggerCondition = OrderTriggerCondition;
2513
+ OrderTriggerCondition.ABOVE = { above: {} };
2514
+ OrderTriggerCondition.BELOW = { below: {} };
2515
+ OrderTriggerCondition.TRIGGERED_ABOVE = { triggeredAbove: {} }; // above condition has been triggered
2516
+ OrderTriggerCondition.TRIGGERED_BELOW = { triggeredBelow: {} }; // below condition has been triggered
2517
+ class SpotFulfillmentType {
2518
+ }
2519
+ exports.SpotFulfillmentType = SpotFulfillmentType;
2520
+ SpotFulfillmentType.EXTERNAL = { external: {} };
2521
+ SpotFulfillmentType.MATCH = { match: {} };
2522
+ class SpotFulfillmentStatus {
2523
+ }
2524
+ exports.SpotFulfillmentStatus = SpotFulfillmentStatus;
2525
+ SpotFulfillmentStatus.ENABLED = { enabled: {} };
2526
+ SpotFulfillmentStatus.DISABLED = { disabled: {} };
2527
+ class DepositExplanation {
2528
+ }
2529
+ exports.DepositExplanation = DepositExplanation;
2530
+ DepositExplanation.NONE = { none: {} };
2531
+ DepositExplanation.TRANSFER = { transfer: {} };
2532
+ DepositExplanation.BORROW = { borrow: {} };
2533
+ DepositExplanation.REPAY_BORROW = { repayBorrow: {} };
2534
+ class SettlePnlExplanation {
2535
+ }
2536
+ exports.SettlePnlExplanation = SettlePnlExplanation;
2537
+ SettlePnlExplanation.NONE = { none: {} };
2538
+ SettlePnlExplanation.EXPIRED_POSITION = { expiredPosition: {} };
2539
+ class SpotFulfillmentConfigStatus {
2540
+ }
2541
+ exports.SpotFulfillmentConfigStatus = SpotFulfillmentConfigStatus;
2542
+ SpotFulfillmentConfigStatus.ENABLED = { enabled: {} };
2543
+ SpotFulfillmentConfigStatus.DISABLED = { disabled: {} };
2544
+ class StakeAction {
2545
+ }
2546
+ exports.StakeAction = StakeAction;
2547
+ StakeAction.STAKE = { stake: {} };
2548
+ StakeAction.UNSTAKE_REQUEST = { unstakeRequest: {} };
2549
+ StakeAction.UNSTAKE_CANCEL_REQUEST = { unstakeCancelRequest: {} };
2550
+ StakeAction.UNSTAKE = { unstake: {} };
2551
+ StakeAction.UNSTAKE_TRANSFER = { unstakeTransfer: {} };
2552
+ StakeAction.STAKE_TRANSFER = { stakeTransfer: {} };
2553
+ class SettlePnlMode {
2554
+ }
2555
+ exports.SettlePnlMode = SettlePnlMode;
2556
+ SettlePnlMode.TRY_SETTLE = { trySettle: {} };
2557
+ SettlePnlMode.MUST_SETTLE = { mustSettle: {} };
2558
+ function isVariant(object, type) {
2559
+ return object.hasOwnProperty(type);
2560
+ }
2561
+ function isOneOfVariant(object, types) {
2562
+ return types.reduce((result, type) => {
2563
+ return result || object.hasOwnProperty(type);
2564
+ }, false);
2565
+ }
2566
+ function getVariant(object) {
2567
+ return Object.keys(object)[0];
2568
+ }
2569
+ var TradeSide;
2570
+ (function (TradeSide) {
2571
+ TradeSide[TradeSide["None"] = 0] = "None";
2572
+ TradeSide[TradeSide["Buy"] = 1] = "Buy";
2573
+ TradeSide[TradeSide["Sell"] = 2] = "Sell";
2574
+ })(TradeSide || (exports.TradeSide = TradeSide = {}));
2575
+ class LPAction {
2576
+ }
2577
+ exports.LPAction = LPAction;
2578
+ LPAction.ADD_LIQUIDITY = { addLiquidity: {} };
2579
+ LPAction.REMOVE_LIQUIDITY = { removeLiquidity: {} };
2580
+ LPAction.SETTLE_LIQUIDITY = { settleLiquidity: {} };
2581
+ LPAction.REMOVE_LIQUIDITY_DERISK = { removeLiquidityDerisk: {} };
2582
+ class LiquidationType {
2583
+ }
2584
+ exports.LiquidationType = LiquidationType;
2585
+ LiquidationType.LIQUIDATE_PERP = { liquidatePerp: {} };
2586
+ LiquidationType.LIQUIDATE_BORROW_FOR_PERP_PNL = {
2587
+ liquidateBorrowForPerpPnl: {},
2588
+ };
2589
+ LiquidationType.LIQUIDATE_PERP_PNL_FOR_DEPOSIT = {
2590
+ liquidatePerpPnlForDeposit: {},
2591
+ };
2592
+ LiquidationType.PERP_BANKRUPTCY = {
2593
+ perpBankruptcy: {},
2594
+ };
2595
+ LiquidationType.SPOT_BANKRUPTCY = {
2596
+ spotBankruptcy: {},
2597
+ };
2598
+ LiquidationType.LIQUIDATE_SPOT = {
2599
+ liquidateSpot: {},
2600
+ };
2601
+ class PostOnlyParams {
2602
+ }
2603
+ exports.PostOnlyParams = PostOnlyParams;
2604
+ PostOnlyParams.NONE = { none: {} };
2605
+ PostOnlyParams.MUST_POST_ONLY = { mustPostOnly: {} }; // Tx fails if order can't be post only
2606
+ PostOnlyParams.TRY_POST_ONLY = { tryPostOnly: {} }; // Tx succeeds and order not placed if can't be post only
2607
+ PostOnlyParams.SLIDE = { slide: {} }; // Modify price to be post only if can't be post only
2608
+ var ModifyOrderPolicy;
2609
+ (function (ModifyOrderPolicy) {
2610
+ ModifyOrderPolicy[ModifyOrderPolicy["MustModify"] = 1] = "MustModify";
2611
+ ModifyOrderPolicy[ModifyOrderPolicy["ExcludePreviousFill"] = 2] = "ExcludePreviousFill";
2612
+ })(ModifyOrderPolicy || (exports.ModifyOrderPolicy = ModifyOrderPolicy = {}));
2613
+ exports.DefaultOrderParams = {
2614
+ orderType: OrderType.MARKET,
2615
+ marketType: MarketType.PERP,
2616
+ userOrderId: 0,
2617
+ direction: PositionDirection.LONG,
2618
+ baseAssetAmount: exports.ZERO,
2619
+ price: exports.ZERO,
2620
+ marketIndex: 0,
2621
+ reduceOnly: false,
2622
+ postOnly: PostOnlyParams.NONE,
2623
+ immediateOrCancel: false,
2624
+ triggerPrice: null,
2625
+ triggerCondition: OrderTriggerCondition.ABOVE,
2626
+ oraclePriceOffset: null,
2627
+ auctionDuration: null,
2628
+ maxTs: null,
2629
+ auctionStartPrice: null,
2630
+ auctionEndPrice: null,
2631
+ };
2632
+ var ReferrerStatus;
2633
+ (function (ReferrerStatus) {
2634
+ ReferrerStatus[ReferrerStatus["IsReferrer"] = 1] = "IsReferrer";
2635
+ ReferrerStatus[ReferrerStatus["IsReferred"] = 2] = "IsReferred";
2636
+ })(ReferrerStatus || (exports.ReferrerStatus = ReferrerStatus = {}));
2637
+ var FuelOverflowStatus;
2638
+ (function (FuelOverflowStatus) {
2639
+ FuelOverflowStatus[FuelOverflowStatus["Exists"] = 1] = "Exists";
2640
+ })(FuelOverflowStatus || (exports.FuelOverflowStatus = FuelOverflowStatus = {}));
2641
+ var PlaceAndTakeOrderSuccessCondition;
2642
+ (function (PlaceAndTakeOrderSuccessCondition) {
2643
+ PlaceAndTakeOrderSuccessCondition[PlaceAndTakeOrderSuccessCondition["PartialFill"] = 1] = "PartialFill";
2644
+ PlaceAndTakeOrderSuccessCondition[PlaceAndTakeOrderSuccessCondition["FullFill"] = 2] = "FullFill";
2645
+ })(PlaceAndTakeOrderSuccessCondition || (exports.PlaceAndTakeOrderSuccessCondition = PlaceAndTakeOrderSuccessCondition = {}));
2646
+ class SwapReduceOnly {
2647
+ }
2648
+ exports.SwapReduceOnly = SwapReduceOnly;
2649
+ SwapReduceOnly.In = { in: {} };
2650
+ SwapReduceOnly.Out = { out: {} };
2015
2651
 
2016
- module.exports = require("@drift-labs/sdk");
2017
2652
 
2018
2653
  /***/ }),
2019
2654
  /* 22 */
2020
2655
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2021
2656
 
2022
2657
 
2658
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2659
+ exports.decodeUser = decodeUser;
2660
+ const driftTypes_1 = __webpack_require__(21);
2661
+ const web3_js_1 = __webpack_require__(5);
2662
+ const anchor_1 = __webpack_require__(2);
2663
+ const driftTypes_2 = __webpack_require__(21);
2664
+ function readUnsignedBigInt64LE(buffer, offset) {
2665
+ return new anchor_1.BN(buffer.subarray(offset, offset + 8), 10, "le");
2666
+ }
2667
+ function readSignedBigInt64LE(buffer, offset) {
2668
+ const unsignedValue = new anchor_1.BN(buffer.subarray(offset, offset + 8), 10, "le");
2669
+ if (unsignedValue.testn(63)) {
2670
+ const inverted = unsignedValue.notn(64).addn(1);
2671
+ return inverted.neg();
2672
+ }
2673
+ else {
2674
+ return unsignedValue;
2675
+ }
2676
+ }
2677
+ function decodeUser(buffer) {
2678
+ let offset = 8;
2679
+ const authority = new web3_js_1.PublicKey(buffer.slice(offset, offset + 32));
2680
+ offset += 32;
2681
+ const delegate = new web3_js_1.PublicKey(buffer.slice(offset, offset + 32));
2682
+ offset += 32;
2683
+ const name = [];
2684
+ for (let i = 0; i < 32; i++) {
2685
+ name.push(buffer.readUint8(offset + i));
2686
+ }
2687
+ offset += 32;
2688
+ const spotPositions = [];
2689
+ for (let i = 0; i < 8; i++) {
2690
+ const scaledBalance = readUnsignedBigInt64LE(buffer, offset);
2691
+ const openOrders = buffer.readUInt8(offset + 35);
2692
+ if (scaledBalance.eq(driftTypes_2.ZERO) && openOrders === 0) {
2693
+ offset += 40;
2694
+ continue;
2695
+ }
2696
+ offset += 8;
2697
+ const openBids = readSignedBigInt64LE(buffer, offset);
2698
+ offset += 8;
2699
+ const openAsks = readSignedBigInt64LE(buffer, offset);
2700
+ offset += 8;
2701
+ const cumulativeDeposits = readSignedBigInt64LE(buffer, offset);
2702
+ offset += 8;
2703
+ const marketIndex = buffer.readUInt16LE(offset);
2704
+ offset += 2;
2705
+ const balanceTypeNum = buffer.readUInt8(offset);
2706
+ let balanceType;
2707
+ if (balanceTypeNum === 0) {
2708
+ balanceType = driftTypes_1.SpotBalanceType.DEPOSIT;
2709
+ }
2710
+ else {
2711
+ balanceType = driftTypes_1.SpotBalanceType.BORROW;
2712
+ }
2713
+ offset += 6;
2714
+ spotPositions.push({
2715
+ scaledBalance,
2716
+ openBids,
2717
+ openAsks,
2718
+ cumulativeDeposits,
2719
+ marketIndex,
2720
+ balanceType,
2721
+ openOrders,
2722
+ });
2723
+ }
2724
+ const perpPositions = [];
2725
+ for (let i = 0; i < 8; i++) {
2726
+ const baseAssetAmount = readSignedBigInt64LE(buffer, offset + 8);
2727
+ const quoteAssetAmount = readSignedBigInt64LE(buffer, offset + 16);
2728
+ const lpShares = readUnsignedBigInt64LE(buffer, offset + 64);
2729
+ const openOrders = buffer.readUInt8(offset + 94);
2730
+ if (baseAssetAmount.eq(driftTypes_2.ZERO) &&
2731
+ openOrders === 0 &&
2732
+ quoteAssetAmount.eq(driftTypes_2.ZERO) &&
2733
+ lpShares.eq(driftTypes_2.ZERO)) {
2734
+ offset += 96;
2735
+ continue;
2736
+ }
2737
+ const lastCumulativeFundingRate = readSignedBigInt64LE(buffer, offset);
2738
+ offset += 24;
2739
+ const quoteBreakEvenAmount = readSignedBigInt64LE(buffer, offset);
2740
+ offset += 8;
2741
+ const quoteEntryAmount = readSignedBigInt64LE(buffer, offset);
2742
+ offset += 8;
2743
+ const openBids = readSignedBigInt64LE(buffer, offset);
2744
+ offset += 8;
2745
+ const openAsks = readSignedBigInt64LE(buffer, offset);
2746
+ offset += 8;
2747
+ const settledPnl = readSignedBigInt64LE(buffer, offset);
2748
+ offset += 16;
2749
+ const lastBaseAssetAmountPerLp = readSignedBigInt64LE(buffer, offset);
2750
+ offset += 8;
2751
+ const lastQuoteAssetAmountPerLp = readSignedBigInt64LE(buffer, offset);
2752
+ offset += 8;
2753
+ const remainderBaseAssetAmount = buffer.readInt32LE(offset);
2754
+ offset += 4;
2755
+ const marketIndex = buffer.readUInt16LE(offset);
2756
+ offset += 3;
2757
+ const perLpBase = buffer.readUInt8(offset);
2758
+ offset += 1;
2759
+ perpPositions.push({
2760
+ lastCumulativeFundingRate,
2761
+ baseAssetAmount,
2762
+ quoteAssetAmount,
2763
+ quoteBreakEvenAmount,
2764
+ quoteEntryAmount,
2765
+ openBids,
2766
+ openAsks,
2767
+ settledPnl,
2768
+ lpShares,
2769
+ lastBaseAssetAmountPerLp,
2770
+ lastQuoteAssetAmountPerLp,
2771
+ remainderBaseAssetAmount,
2772
+ marketIndex,
2773
+ openOrders,
2774
+ perLpBase,
2775
+ });
2776
+ }
2777
+ const orders = [];
2778
+ for (let i = 0; i < 32; i++) {
2779
+ // skip order if it's not open
2780
+ if (buffer.readUint8(offset + 82) !== 1) {
2781
+ offset += 96;
2782
+ continue;
2783
+ }
2784
+ const slot = readUnsignedBigInt64LE(buffer, offset);
2785
+ offset += 8;
2786
+ const price = readUnsignedBigInt64LE(buffer, offset);
2787
+ offset += 8;
2788
+ const baseAssetAmount = readUnsignedBigInt64LE(buffer, offset);
2789
+ offset += 8;
2790
+ const baseAssetAmountFilled = readUnsignedBigInt64LE(buffer, offset);
2791
+ offset += 8;
2792
+ const quoteAssetAmountFilled = readUnsignedBigInt64LE(buffer, offset);
2793
+ offset += 8;
2794
+ const triggerPrice = readUnsignedBigInt64LE(buffer, offset);
2795
+ offset += 8;
2796
+ const auctionStartPrice = readSignedBigInt64LE(buffer, offset);
2797
+ offset += 8;
2798
+ const auctionEndPrice = readSignedBigInt64LE(buffer, offset);
2799
+ offset += 8;
2800
+ const maxTs = readSignedBigInt64LE(buffer, offset);
2801
+ offset += 8;
2802
+ const oraclePriceOffset = buffer.readInt32LE(offset);
2803
+ offset += 4;
2804
+ const orderId = buffer.readUInt32LE(offset);
2805
+ offset += 4;
2806
+ const marketIndex = buffer.readUInt16LE(offset);
2807
+ offset += 2;
2808
+ const orderStatusNum = buffer.readUInt8(offset);
2809
+ let status = driftTypes_1.OrderStatus.INIT;
2810
+ if (orderStatusNum === 0) {
2811
+ status = driftTypes_1.OrderStatus.INIT;
2812
+ }
2813
+ else if (orderStatusNum === 1) {
2814
+ status = driftTypes_1.OrderStatus.OPEN;
2815
+ }
2816
+ else if (orderStatusNum === 2) {
2817
+ status = driftTypes_1.OrderStatus.FILLED;
2818
+ }
2819
+ else if (orderStatusNum === 3) {
2820
+ status = driftTypes_1.OrderStatus.CANCELED;
2821
+ }
2822
+ offset += 1;
2823
+ const orderTypeNum = buffer.readUInt8(offset);
2824
+ let orderType = driftTypes_1.OrderType.MARKET;
2825
+ if (orderTypeNum === 0) {
2826
+ orderType = driftTypes_1.OrderType.MARKET;
2827
+ }
2828
+ else if (orderTypeNum === 1) {
2829
+ orderType = driftTypes_1.OrderType.LIMIT;
2830
+ }
2831
+ else if (orderTypeNum === 2) {
2832
+ orderType = driftTypes_1.OrderType.TRIGGER_MARKET;
2833
+ }
2834
+ else if (orderTypeNum === 3) {
2835
+ orderType = driftTypes_1.OrderType.TRIGGER_LIMIT;
2836
+ }
2837
+ else if (orderTypeNum === 4) {
2838
+ orderType = driftTypes_1.OrderType.ORACLE;
2839
+ }
2840
+ offset += 1;
2841
+ const marketTypeNum = buffer.readUInt8(offset);
2842
+ let marketType;
2843
+ if (marketTypeNum === 0) {
2844
+ marketType = driftTypes_1.MarketType.SPOT;
2845
+ }
2846
+ else {
2847
+ marketType = driftTypes_1.MarketType.PERP;
2848
+ }
2849
+ offset += 1;
2850
+ const userOrderId = buffer.readUint8(offset);
2851
+ offset += 1;
2852
+ const existingPositionDirectionNum = buffer.readUInt8(offset);
2853
+ let existingPositionDirection;
2854
+ if (existingPositionDirectionNum === 0) {
2855
+ existingPositionDirection = driftTypes_1.PositionDirection.LONG;
2856
+ }
2857
+ else {
2858
+ existingPositionDirection = driftTypes_1.PositionDirection.SHORT;
2859
+ }
2860
+ offset += 1;
2861
+ const positionDirectionNum = buffer.readUInt8(offset);
2862
+ let direction;
2863
+ if (positionDirectionNum === 0) {
2864
+ direction = driftTypes_1.PositionDirection.LONG;
2865
+ }
2866
+ else {
2867
+ direction = driftTypes_1.PositionDirection.SHORT;
2868
+ }
2869
+ offset += 1;
2870
+ const reduceOnly = buffer.readUInt8(offset) === 1;
2871
+ offset += 1;
2872
+ const postOnly = buffer.readUInt8(offset) === 1;
2873
+ offset += 1;
2874
+ const immediateOrCancel = buffer.readUInt8(offset) === 1;
2875
+ offset += 1;
2876
+ const triggerConditionNum = buffer.readUInt8(offset);
2877
+ let triggerCondition = driftTypes_1.OrderTriggerCondition.ABOVE;
2878
+ if (triggerConditionNum === 0) {
2879
+ triggerCondition = driftTypes_1.OrderTriggerCondition.ABOVE;
2880
+ }
2881
+ else if (triggerConditionNum === 1) {
2882
+ triggerCondition = driftTypes_1.OrderTriggerCondition.BELOW;
2883
+ }
2884
+ else if (triggerConditionNum === 2) {
2885
+ triggerCondition = driftTypes_1.OrderTriggerCondition.TRIGGERED_ABOVE;
2886
+ }
2887
+ else if (triggerConditionNum === 3) {
2888
+ triggerCondition = driftTypes_1.OrderTriggerCondition.TRIGGERED_BELOW;
2889
+ }
2890
+ offset += 1;
2891
+ const auctionDuration = buffer.readUInt8(offset);
2892
+ offset += 1;
2893
+ const postedSlotTail = buffer.readUint8(offset);
2894
+ offset += 1;
2895
+ const bitFlags = buffer.readUint8(offset);
2896
+ offset += 1;
2897
+ offset += 1; // padding
2898
+ orders.push({
2899
+ slot,
2900
+ price,
2901
+ baseAssetAmount,
2902
+ quoteAssetAmount: undefined,
2903
+ baseAssetAmountFilled,
2904
+ quoteAssetAmountFilled,
2905
+ triggerPrice,
2906
+ auctionStartPrice,
2907
+ auctionEndPrice,
2908
+ maxTs,
2909
+ oraclePriceOffset,
2910
+ orderId,
2911
+ marketIndex,
2912
+ status,
2913
+ orderType,
2914
+ marketType,
2915
+ userOrderId,
2916
+ existingPositionDirection,
2917
+ direction,
2918
+ reduceOnly,
2919
+ postOnly,
2920
+ immediateOrCancel,
2921
+ triggerCondition,
2922
+ auctionDuration,
2923
+ bitFlags,
2924
+ postedSlotTail,
2925
+ });
2926
+ }
2927
+ const lastAddPerpLpSharesTs = readSignedBigInt64LE(buffer, offset);
2928
+ offset += 8;
2929
+ const totalDeposits = readUnsignedBigInt64LE(buffer, offset);
2930
+ offset += 8;
2931
+ const totalWithdraws = readUnsignedBigInt64LE(buffer, offset);
2932
+ offset += 8;
2933
+ const totalSocialLoss = readUnsignedBigInt64LE(buffer, offset);
2934
+ offset += 8;
2935
+ const settledPerpPnl = readSignedBigInt64LE(buffer, offset);
2936
+ offset += 8;
2937
+ const cumulativeSpotFees = readSignedBigInt64LE(buffer, offset);
2938
+ offset += 8;
2939
+ const cumulativePerpFunding = readSignedBigInt64LE(buffer, offset);
2940
+ offset += 8;
2941
+ const liquidationMarginFreed = readUnsignedBigInt64LE(buffer, offset);
2942
+ offset += 8;
2943
+ const lastActiveSlot = readUnsignedBigInt64LE(buffer, offset);
2944
+ offset += 8;
2945
+ const nextOrderId = buffer.readUInt32LE(offset);
2946
+ offset += 4;
2947
+ const maxMarginRatio = buffer.readUInt32LE(offset);
2948
+ offset += 4;
2949
+ const nextLiquidationId = buffer.readUInt16LE(offset);
2950
+ offset += 2;
2951
+ const subAccountId = buffer.readUInt16LE(offset);
2952
+ offset += 2;
2953
+ const status = buffer.readUInt8(offset);
2954
+ offset += 1;
2955
+ const isMarginTradingEnabled = buffer.readUInt8(offset) === 1;
2956
+ offset += 1;
2957
+ const idle = buffer.readUInt8(offset) === 1;
2958
+ offset += 1;
2959
+ const openOrders = buffer.readUInt8(offset);
2960
+ offset += 1;
2961
+ const hasOpenOrder = buffer.readUInt8(offset) === 1;
2962
+ offset += 1;
2963
+ const openAuctions = buffer.readUInt8(offset);
2964
+ offset += 1;
2965
+ const hasOpenAuction = buffer.readUInt8(offset) === 1;
2966
+ offset += 1;
2967
+ let marginMode;
2968
+ const marginModeNum = buffer.readUInt8(offset);
2969
+ if (marginModeNum === 0) {
2970
+ marginMode = driftTypes_1.MarginMode.DEFAULT;
2971
+ }
2972
+ else {
2973
+ marginMode = driftTypes_1.MarginMode.HIGH_LEVERAGE;
2974
+ }
2975
+ offset += 1;
2976
+ const poolId = buffer.readUint8(offset);
2977
+ offset += 1;
2978
+ offset += 3; // padding
2979
+ const lastFuelBonusUpdateTs = buffer.readUint32LE(offset);
2980
+ offset += 4;
2981
+ return {
2982
+ authority,
2983
+ delegate,
2984
+ name,
2985
+ spotPositions,
2986
+ perpPositions,
2987
+ orders,
2988
+ lastAddPerpLpSharesTs,
2989
+ totalDeposits,
2990
+ totalWithdraws,
2991
+ totalSocialLoss,
2992
+ settledPerpPnl,
2993
+ cumulativeSpotFees,
2994
+ cumulativePerpFunding,
2995
+ liquidationMarginFreed,
2996
+ lastActiveSlot,
2997
+ nextOrderId,
2998
+ maxMarginRatio,
2999
+ nextLiquidationId,
3000
+ subAccountId,
3001
+ status,
3002
+ isMarginTradingEnabled,
3003
+ idle,
3004
+ openOrders,
3005
+ hasOpenOrder,
3006
+ openAuctions,
3007
+ hasOpenAuction,
3008
+ marginMode,
3009
+ poolId,
3010
+ lastFuelBonusUpdateTs,
3011
+ };
3012
+ }
3013
+
3014
+
3015
+ /***/ }),
3016
+ /* 23 */
3017
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3018
+
3019
+
2023
3020
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2024
3021
  exports.JupiterVoteClient = exports.JupiterSwapClient = void 0;
2025
3022
  const anchor_1 = __webpack_require__(2);
@@ -2447,7 +3444,7 @@ exports.JupiterVoteClient = JupiterVoteClient;
2447
3444
 
2448
3445
 
2449
3446
  /***/ }),
2450
- /* 23 */
3447
+ /* 24 */
2451
3448
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2452
3449
 
2453
3450
 
@@ -2455,7 +3452,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
2455
3452
  exports.MarinadeClient = void 0;
2456
3453
  const web3_js_1 = __webpack_require__(5);
2457
3454
  const spl_token_1 = __webpack_require__(8);
2458
- const marinade_ts_sdk_1 = __webpack_require__(24);
3455
+ const marinade_ts_sdk_1 = __webpack_require__(25);
2459
3456
  const constants_1 = __webpack_require__(10);
2460
3457
  const helpers_1 = __webpack_require__(14);
2461
3458
  class MarinadeClient {
@@ -2659,13 +3656,13 @@ exports.MarinadeClient = MarinadeClient;
2659
3656
 
2660
3657
 
2661
3658
  /***/ }),
2662
- /* 24 */
3659
+ /* 25 */
2663
3660
  /***/ ((module) => {
2664
3661
 
2665
3662
  module.exports = require("@marinade.finance/marinade-ts-sdk");
2666
3663
 
2667
3664
  /***/ }),
2668
- /* 25 */
3665
+ /* 26 */
2669
3666
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2670
3667
 
2671
3668
 
@@ -2729,7 +3726,7 @@ exports.WSolClient = WSolClient;
2729
3726
 
2730
3727
 
2731
3728
  /***/ }),
2732
- /* 26 */
3729
+ /* 27 */
2733
3730
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2734
3731
 
2735
3732
 
@@ -2738,7 +3735,7 @@ exports.StakingClient = void 0;
2738
3735
  const anchor_1 = __webpack_require__(2);
2739
3736
  const web3_js_1 = __webpack_require__(5);
2740
3737
  const constants_1 = __webpack_require__(10);
2741
- const spl_stake_pool_1 = __webpack_require__(27);
3738
+ const spl_stake_pool_1 = __webpack_require__(28);
2742
3739
  const spl_token_1 = __webpack_require__(8);
2743
3740
  class StakingClient {
2744
3741
  constructor(base, marinade) {
@@ -3160,13 +4157,13 @@ exports.StakingClient = StakingClient;
3160
4157
 
3161
4158
 
3162
4159
  /***/ }),
3163
- /* 27 */
4160
+ /* 28 */
3164
4161
  /***/ ((module) => {
3165
4162
 
3166
4163
  module.exports = require("@solana/spl-stake-pool");
3167
4164
 
3168
4165
  /***/ }),
3169
- /* 28 */
4166
+ /* 29 */
3170
4167
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3171
4168
 
3172
4169
 
@@ -3530,7 +4527,7 @@ exports.StateClient = StateClient;
3530
4527
 
3531
4528
 
3532
4529
  /***/ }),
3533
- /* 29 */
4530
+ /* 30 */
3534
4531
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3535
4532
 
3536
4533
 
@@ -3868,22 +4865,22 @@ exports.MintClient = MintClient;
3868
4865
 
3869
4866
 
3870
4867
  /***/ }),
3871
- /* 30 */
4868
+ /* 31 */
3872
4869
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3873
4870
 
3874
4871
 
3875
4872
  Object.defineProperty(exports, "__esModule", ({ value: true }));
3876
- exports.KaminoLendingClient = void 0;
4873
+ exports.KaminoFarmClient = exports.KaminoLendingClient = void 0;
3877
4874
  const tslib_1 = __webpack_require__(1);
3878
4875
  const anchor_1 = __webpack_require__(2);
3879
4876
  const web3_js_1 = __webpack_require__(5);
3880
- const borsh = tslib_1.__importStar(__webpack_require__(31));
4877
+ const borsh = tslib_1.__importStar(__webpack_require__(32));
3881
4878
  const spl_token_1 = __webpack_require__(8);
3882
4879
  const constants_1 = __webpack_require__(10);
3883
4880
  const LOOKUP_TABLE = new web3_js_1.PublicKey("284iwGtA9X9aLy3KsyV8uT2pXLARhYbiSi5SiM2g47M2");
3884
4881
  const DEFAULT_OBLIGATION_ARGS = { tag: 0, id: 0 };
3885
4882
  const SCOPE_PRICES = new web3_js_1.PublicKey("3NJYftD5sjVfxSnUdZ1wVML8f3aC6mp1CXCL6L7TnU8C");
3886
- function refreshObligation(accounts, programId) {
4883
+ function refreshObligation(accounts, programId = constants_1.KAMINO_LENDING_PROGRAM) {
3887
4884
  const keys = [
3888
4885
  { pubkey: accounts.lendingMarket, isSigner: false, isWritable: false },
3889
4886
  { pubkey: accounts.obligation, isSigner: false, isWritable: true },
@@ -3896,7 +4893,7 @@ function refreshObligation(accounts, programId) {
3896
4893
  const ix = new web3_js_1.TransactionInstruction({ keys, programId, data });
3897
4894
  return ix;
3898
4895
  }
3899
- function refreshReserve(accounts, programId) {
4896
+ function refreshReserve(accounts, programId = constants_1.KAMINO_LENDING_PROGRAM) {
3900
4897
  const keys = [
3901
4898
  { pubkey: accounts.reserve, isSigner: false, isWritable: true },
3902
4899
  { pubkey: accounts.lendingMarket, isSigner: false, isWritable: false },
@@ -3918,7 +4915,7 @@ function refreshReserve(accounts, programId) {
3918
4915
  const ix = new web3_js_1.TransactionInstruction({ keys, programId, data });
3919
4916
  return ix;
3920
4917
  }
3921
- function refreshObligationFarmsForReserve(args, accounts, programId) {
4918
+ function refreshObligationFarmsForReserve(args, accounts, programId = constants_1.KAMINO_LENDING_PROGRAM) {
3922
4919
  const keys = [
3923
4920
  { pubkey: accounts.crank, isSigner: true, isWritable: false },
3924
4921
  {
@@ -3988,7 +4985,7 @@ class KaminoLendingClient {
3988
4985
  * @returns
3989
4986
  */
3990
4987
  async initUserMetadata(statePda, referrer, txOptions = {}) {
3991
- const tx = await this.initUserMetadataTx(new web3_js_1.PublicKey(statePda), referrer ? new web3_js_1.PublicKey(referrer) : web3_js_1.PublicKey.default, txOptions);
4988
+ const tx = await this.initUserMetadataTx(new web3_js_1.PublicKey(statePda), referrer ? new web3_js_1.PublicKey(referrer) : null, txOptions);
3992
4989
  return await this.base.sendAndConfirm(tx);
3993
4990
  }
3994
4991
  /**
@@ -4067,14 +5064,11 @@ class KaminoLendingClient {
4067
5064
  const [obligationFarm] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("user"), farm.toBuffer(), obligation.toBuffer()], constants_1.KAMINO_FARM_PROGRAM);
4068
5065
  return obligationFarm;
4069
5066
  }
4070
- async initUserMetadataTx(glamState, referrer, txOptions) {
5067
+ async initUserMetadataTx(glamState, referrer, txOptions = {}) {
4071
5068
  const glamSigner = txOptions.signer || this.base.getSigner();
4072
5069
  const vault = this.base.getVaultPda(glamState);
4073
5070
  const userMetadata = this.getUserMetadataPda(vault);
4074
5071
  const lookupTable = new web3_js_1.PublicKey(0); // FIXME: create lookup table
4075
- const referrerUserMetadata = referrer.equals(web3_js_1.PublicKey.default)
4076
- ? constants_1.KAMINO_LENDING_PROGRAM
4077
- : referrer;
4078
5072
  // @ts-ignore
4079
5073
  const tx = await this.base.program.methods
4080
5074
  .kaminoLendingInitUserMetadata(lookupTable)
@@ -4082,7 +5076,7 @@ class KaminoLendingClient {
4082
5076
  glamState,
4083
5077
  glamSigner,
4084
5078
  userMetadata,
4085
- referrerUserMetadata,
5079
+ referrerUserMetadata: referrer,
4086
5080
  })
4087
5081
  .transaction();
4088
5082
  const vTx = await this.base.intoVersionedTransaction(tx, txOptions);
@@ -4096,7 +5090,7 @@ class KaminoLendingClient {
4096
5090
  switchboardPriceOracle: constants_1.KAMINO_LENDING_PROGRAM,
4097
5091
  switchboardTwapOracle: constants_1.KAMINO_LENDING_PROGRAM,
4098
5092
  scopePrices: SCOPE_PRICES,
4099
- }, constants_1.KAMINO_LENDING_PROGRAM));
5093
+ }));
4100
5094
  }
4101
5095
  refreshObligationFarmsForReserveIxs(obligation, lendingMarket, parsedReserves) {
4102
5096
  return parsedReserves
@@ -4119,26 +5113,30 @@ class KaminoLendingClient {
4119
5113
  farmsProgram: constants_1.KAMINO_FARM_PROGRAM,
4120
5114
  rent: web3_js_1.SYSVAR_RENT_PUBKEY,
4121
5115
  systemProgram: web3_js_1.SystemProgram.programId,
4122
- }, constants_1.KAMINO_LENDING_PROGRAM);
5116
+ });
4123
5117
  });
4124
5118
  })
4125
5119
  .flat();
4126
5120
  }
4127
- /**
4128
- * Returns an array of instructions for refreshing an existing obligation and reserves it depends on.
4129
- */
4130
- async getRefreshIxs(obligation, lendingMarket) {
4131
- // If obligation has deposits or borrows, we need the following refresh ixs:
4132
- // - refreshReserve x N_reserves
4133
- // - refreshObligation
4134
- // - refreshObligationFarmsForReserve x M_farms
4135
- const { deposits, borrows } = await this.fetchAndParseObligation(obligation);
5121
+ // If obligation has deposits or borrows, we need the following refresh ixs:
5122
+ // - refreshReserve x N_reserves
5123
+ // - refreshObligation
5124
+ // - refreshObligationFarmsForReserve x M_farms
5125
+ //
5126
+ // For pricing purpose, we don't need to refresh farm states
5127
+ async getRefreshIxs(obligation, refreshFarms = true) {
5128
+ const { lendingMarket, deposits, borrows } = await this.fetchAndParseObligation(obligation);
5129
+ if (!lendingMarket) {
5130
+ throw new Error("Lending market not found");
5131
+ }
4136
5132
  const reserves = deposits.concat(borrows).map((d) => d.reserve);
4137
5133
  const parsedReserves = await this.fetchAndParseReserves(reserves);
4138
5134
  return [
4139
5135
  ...this.refreshReserveIxs(lendingMarket, reserves),
4140
- refreshObligation({ lendingMarket, obligation, reserves }, constants_1.KAMINO_LENDING_PROGRAM),
4141
- ...this.refreshObligationFarmsForReserveIxs(obligation, lendingMarket, parsedReserves),
5136
+ refreshObligation({ lendingMarket, obligation, reserves }),
5137
+ ...(refreshFarms
5138
+ ? this.refreshObligationFarmsForReserveIxs(obligation, lendingMarket, parsedReserves)
5139
+ : []),
4142
5140
  ];
4143
5141
  }
4144
5142
  getMarketAuthority(market) {
@@ -4170,9 +5168,15 @@ class KaminoLendingClient {
4170
5168
  }
4171
5169
  const obligationAccount = await this.base.provider.connection.getAccountInfo(obligation);
4172
5170
  if (!obligationAccount) {
4173
- return { deposits: [], borrows: [] };
5171
+ return {
5172
+ address: obligation,
5173
+ lendingMarket: null,
5174
+ deposits: [],
5175
+ borrows: [],
5176
+ };
4174
5177
  }
4175
5178
  const data = obligationAccount.data;
5179
+ const lendingMarket = new web3_js_1.PublicKey(data.subarray(32, 64));
4176
5180
  // read deposits
4177
5181
  let depositsOffset = 96;
4178
5182
  let depositSize = 136;
@@ -4180,7 +5184,8 @@ class KaminoLendingClient {
4180
5184
  const depositsData = data.subarray(depositsOffset, depositsOffset + numDeposits * depositSize);
4181
5185
  const deposits = Array.from({ length: numDeposits }, (_, i) => {
4182
5186
  const depositData = depositsData.subarray(i * depositSize, (i + 1) * depositSize);
4183
- return { reserve: new web3_js_1.PublicKey(depositData.subarray(0, 32)) };
5187
+ const reserve = new web3_js_1.PublicKey(depositData.subarray(0, 32));
5188
+ return { reserve };
4184
5189
  }).filter((d) => !d.reserve.equals(web3_js_1.PublicKey.default));
4185
5190
  // read borrows
4186
5191
  let borrowsOffset = 1208;
@@ -4189,19 +5194,32 @@ class KaminoLendingClient {
4189
5194
  const borrowsData = data.subarray(borrowsOffset, borrowsOffset + numBorrows * borrowSize);
4190
5195
  const borrows = Array.from({ length: numBorrows }, (_, i) => {
4191
5196
  const borrowData = borrowsData.subarray(i * borrowSize, (i + 1) * borrowSize);
4192
- return { reserve: new web3_js_1.PublicKey(borrowData.subarray(0, 32)) };
5197
+ const reserve = new web3_js_1.PublicKey(borrowData.subarray(0, 32));
5198
+ return { reserve };
4193
5199
  }).filter((d) => !d.reserve.equals(web3_js_1.PublicKey.default));
4194
- const parsedObligation = { deposits, borrows };
5200
+ const parsedObligation = {
5201
+ address: obligation,
5202
+ lendingMarket,
5203
+ deposits,
5204
+ borrows,
5205
+ };
4195
5206
  this.obligations.set(obligation, parsedObligation);
4196
5207
  return parsedObligation;
4197
5208
  }
4198
- /**
4199
- * We only need pubkeys that don't change over time. No need to fetch them every time.
4200
- *
4201
- * @param market
4202
- * @param asset
4203
- * @returns
4204
- */
5209
+ _parseReserveAccount(data) {
5210
+ const market = new web3_js_1.PublicKey(data.subarray(32, 64));
5211
+ const farmCollateral = new web3_js_1.PublicKey(data.subarray(64, 96));
5212
+ const farmDebt = new web3_js_1.PublicKey(data.subarray(96, 128));
5213
+ const liquidityMint = new web3_js_1.PublicKey(data.subarray(128, 160));
5214
+ return {
5215
+ farmCollateral: farmCollateral.equals(web3_js_1.PublicKey.default)
5216
+ ? null
5217
+ : farmCollateral,
5218
+ farmDebt: farmDebt.equals(web3_js_1.PublicKey.default) ? null : farmDebt,
5219
+ liquidityMint,
5220
+ ...this.reservePdas(market, liquidityMint),
5221
+ };
5222
+ }
4205
5223
  async fetchAndParseReserves(reserves) {
4206
5224
  if (this.pubkeyArraysEqual(reserves, Array.from(this.reserves.keys()))) {
4207
5225
  return Array.from(this.reserves.values());
@@ -4213,60 +5231,32 @@ class KaminoLendingClient {
4213
5231
  return reserveAccounts
4214
5232
  .filter((a) => !!a)
4215
5233
  .map((account, i) => {
4216
- const data = account.data;
4217
- const market = new web3_js_1.PublicKey(data.subarray(32, 64));
4218
- const farmCollateral = new web3_js_1.PublicKey(data.subarray(64, 96));
4219
- const farmDebt = new web3_js_1.PublicKey(data.subarray(96, 128));
4220
- const liquidityMint = new web3_js_1.PublicKey(data.subarray(128, 160));
4221
- const parsed = {
5234
+ const parsedReserve = {
4222
5235
  address: reserves[i],
4223
- farmCollateral: farmCollateral.equals(web3_js_1.PublicKey.default)
4224
- ? null
4225
- : farmCollateral,
4226
- farmDebt: farmDebt.equals(web3_js_1.PublicKey.default) ? null : farmDebt,
4227
- liquidityMint,
4228
- ...this.reservePdas(market, liquidityMint),
5236
+ ...this._parseReserveAccount(account.data),
4229
5237
  };
4230
- this.reserves.set(reserves[i], parsed);
4231
- return parsed;
5238
+ this.reserves.set(reserves[i], parsedReserve);
5239
+ return parsedReserve;
4232
5240
  });
4233
5241
  }
4234
5242
  async findAndParseReserve(market, asset) {
4235
5243
  const accounts = await this.base.provider.connection.getProgramAccounts(constants_1.KAMINO_LENDING_PROGRAM, {
4236
5244
  filters: [
4237
5245
  { dataSize: 8624 },
4238
- {
4239
- memcmp: {
4240
- offset: 32,
4241
- bytes: market.toBase58(),
4242
- },
4243
- },
4244
- {
4245
- memcmp: {
4246
- offset: 128,
4247
- bytes: asset.toBase58(),
4248
- },
4249
- },
5246
+ { memcmp: { offset: 32, bytes: market.toBase58() } },
5247
+ { memcmp: { offset: 128, bytes: asset.toBase58() } },
4250
5248
  ],
4251
5249
  });
4252
5250
  if (accounts.length === 0) {
4253
5251
  throw new Error("Reserve not found");
4254
5252
  }
4255
5253
  const account = accounts[0];
4256
- const data = account.account.data;
4257
- const farmCollateral = new web3_js_1.PublicKey(data.subarray(64, 96));
4258
- const farmDebt = new web3_js_1.PublicKey(data.subarray(96, 128));
4259
- const parsed = {
5254
+ const parsedReserve = {
4260
5255
  address: account.pubkey,
4261
- farmCollateral: farmCollateral.equals(web3_js_1.PublicKey.default)
4262
- ? null
4263
- : farmCollateral,
4264
- farmDebt: farmDebt.equals(web3_js_1.PublicKey.default) ? null : farmDebt,
4265
- liquidityMint: asset,
4266
- ...this.reservePdas(market, asset),
5256
+ ...this._parseReserveAccount(account.account.data),
4267
5257
  };
4268
- this.reserves.set(account.pubkey, parsed);
4269
- return parsed;
5258
+ this.reserves.set(account.pubkey, parsedReserve);
5259
+ return parsedReserve;
4270
5260
  }
4271
5261
  async depositTx(glamState, market, asset, amount, txOptions) {
4272
5262
  const glamSigner = txOptions.signer || this.base.getSigner();
@@ -4326,7 +5316,11 @@ class KaminoLendingClient {
4326
5316
  // Refresh reserves, including deposit reserve and reserves in use
4327
5317
  preInstructions.push(...this.refreshReserveIxs(market, reservesToRefresh));
4328
5318
  // Refresh obligation with reserves in use
4329
- preInstructions.push(refreshObligation({ lendingMarket: market, obligation, reserves: reservesInUse }, constants_1.KAMINO_LENDING_PROGRAM));
5319
+ preInstructions.push(refreshObligation({
5320
+ lendingMarket: market,
5321
+ obligation,
5322
+ reserves: reservesInUse,
5323
+ }));
4330
5324
  if (depositReserve.farmCollateral) {
4331
5325
  const ixs = this.refreshObligationFarmsForReserveIxs(obligation, market, [
4332
5326
  depositReserve,
@@ -4428,7 +5422,11 @@ class KaminoLendingClient {
4428
5422
  // Refresh reserves, including deposit reserve and reserves in use
4429
5423
  preInstructions.push(...this.refreshReserveIxs(market, reservesToRefresh));
4430
5424
  // Refresh obligation with reserves in use
4431
- preInstructions.push(refreshObligation({ lendingMarket: market, obligation, reserves: reservesInUse }, constants_1.KAMINO_LENDING_PROGRAM));
5425
+ preInstructions.push(refreshObligation({
5426
+ lendingMarket: market,
5427
+ obligation,
5428
+ reserves: reservesInUse,
5429
+ }));
4432
5430
  if (withdrawReserve.farmCollateral) {
4433
5431
  const ixs = this.refreshObligationFarmsForReserveIxs(obligation, market, [
4434
5432
  withdrawReserve,
@@ -4520,7 +5518,11 @@ class KaminoLendingClient {
4520
5518
  // Refresh reserves, including deposit reserve and reserves in use
4521
5519
  preInstructions.push(...this.refreshReserveIxs(market, reservesToRefresh));
4522
5520
  // Refresh obligation with reserves in use
4523
- preInstructions.push(refreshObligation({ lendingMarket: market, obligation, reserves: reservesInUse }, constants_1.KAMINO_LENDING_PROGRAM));
5521
+ preInstructions.push(refreshObligation({
5522
+ lendingMarket: market,
5523
+ obligation,
5524
+ reserves: reservesInUse,
5525
+ }));
4524
5526
  // Don't need to refresh debt farm for borrow
4525
5527
  /*
4526
5528
  if (borrowReserve.farmDebt) {
@@ -4610,9 +5612,13 @@ class KaminoLendingClient {
4610
5612
  // Refresh reserves, including deposit reserve and reserves in use
4611
5613
  preInstructions.push(...this.refreshReserveIxs(market, reservesToRefresh));
4612
5614
  // Refresh obligation with reserves in use
4613
- preInstructions.push(refreshObligation({ lendingMarket: market, obligation, reserves: reservesInUse }, constants_1.KAMINO_LENDING_PROGRAM));
4614
- const repayIx = await this.base.program.methods
4615
- .kaminoLendingRepayObligationLiquidityV2(amount)
5615
+ preInstructions.push(refreshObligation({
5616
+ lendingMarket: market,
5617
+ obligation,
5618
+ reserves: reservesInUse,
5619
+ }));
5620
+ const repayIx = await this.base.program.methods
5621
+ .kaminoLendingRepayObligationLiquidityV2(amount)
4616
5622
  .accounts({
4617
5623
  glamState,
4618
5624
  glamSigner,
@@ -4646,16 +5652,129 @@ class KaminoLendingClient {
4646
5652
  }
4647
5653
  }
4648
5654
  exports.KaminoLendingClient = KaminoLendingClient;
5655
+ class KaminoFarmClient {
5656
+ constructor(base) {
5657
+ this.base = base;
5658
+ this.farmVaultsAuthority = (farm) => web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("authority"), farm.toBuffer()], constants_1.KAMINO_FARM_PROGRAM)[0];
5659
+ this.rewardsTreasuryVault = (globalConfig, mint) => web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("tvault"), globalConfig.toBuffer(), mint.toBuffer()], constants_1.KAMINO_FARM_PROGRAM)[0];
5660
+ }
5661
+ async findAndParseFarmStates(owner) {
5662
+ const accounts = await this.base.provider.connection.getProgramAccounts(constants_1.KAMINO_FARM_PROGRAM, {
5663
+ filters: [
5664
+ { dataSize: 920 },
5665
+ { memcmp: { offset: 48, bytes: owner.toBase58() } },
5666
+ ],
5667
+ });
5668
+ return accounts.map((account) => {
5669
+ const data = account.account.data;
5670
+ const farmState = new web3_js_1.PublicKey(data.subarray(16, 48));
5671
+ return {
5672
+ userFarmState: account.pubkey,
5673
+ farmState,
5674
+ };
5675
+ });
5676
+ }
5677
+ async parseFarm(data) {
5678
+ const globalConfig = new web3_js_1.PublicKey(data.subarray(40, 72));
5679
+ const rewardsOffset = 192;
5680
+ const numRewards = 10;
5681
+ const rewardSize = 704;
5682
+ const rewardsData = data.subarray(rewardsOffset, rewardsOffset + numRewards * rewardSize);
5683
+ const rewards = Array.from({ length: numRewards }, (_, i) => {
5684
+ const rewardData = rewardsData.subarray(i * rewardSize, (i + 1) * rewardSize);
5685
+ const mint = new web3_js_1.PublicKey(rewardData.subarray(0, 32));
5686
+ const tokenProgram = new web3_js_1.PublicKey(rewardData.subarray(40, 72));
5687
+ const rewardsVault = new web3_js_1.PublicKey(rewardData.subarray(120, 152));
5688
+ const minClaimDurationSeconds = new anchor_1.BN(rewardData.subarray(480, 488), "le");
5689
+ return {
5690
+ index: i,
5691
+ mint,
5692
+ minClaimDurationSeconds,
5693
+ tokenProgram,
5694
+ rewardsVault,
5695
+ };
5696
+ }).filter((r) => {
5697
+ if (r.mint.equals(web3_js_1.PublicKey.default)) {
5698
+ return false;
5699
+ }
5700
+ // Filter out rewards with minClaimDurationSeconds > 1 year, they are considered disabled
5701
+ if (r.minClaimDurationSeconds.div(new anchor_1.BN(365 * 24 * 60 * 60)).gt(new anchor_1.BN(1))) {
5702
+ return false;
5703
+ }
5704
+ return true;
5705
+ });
5706
+ return { globalConfig, rewards };
5707
+ }
5708
+ async fetchAndParseFarms(farms) {
5709
+ const farmAccounts = await this.base.provider.connection.getMultipleAccountsInfo(farms);
5710
+ const map = new Map();
5711
+ for (let i = 0; i < farmAccounts.length; i++) {
5712
+ const account = farmAccounts[i];
5713
+ if (!account) {
5714
+ continue;
5715
+ }
5716
+ const data = account.data;
5717
+ const parsedFarm = await this.parseFarm(data);
5718
+ map.set(farms[i].toBase58(), parsedFarm);
5719
+ }
5720
+ return map;
5721
+ }
5722
+ async harvest(statePda, txOptions = {}) {
5723
+ const tx = await this.harvestTx(new web3_js_1.PublicKey(statePda), txOptions);
5724
+ return await this.base.sendAndConfirm(tx);
5725
+ }
5726
+ async harvestTx(glamState, txOptions = {}) {
5727
+ const glamSigner = txOptions.signer || this.base.getSigner();
5728
+ const vault = this.base.getVaultPda(glamState);
5729
+ const farmStates = await this.findAndParseFarmStates(vault);
5730
+ const parsedFarms = await this.fetchAndParseFarms(farmStates.map((f) => f.farmState));
5731
+ const tx = new web3_js_1.Transaction();
5732
+ for (const { userFarmState, farmState } of farmStates) {
5733
+ const { globalConfig, rewards } = parsedFarms.get(farmState.toBase58());
5734
+ for (const { index, mint, tokenProgram, rewardsVault } of rewards) {
5735
+ console.log("Reward token:", mint.toBase58());
5736
+ const vaultAta = this.base.getVaultAta(glamState, mint, tokenProgram);
5737
+ const createAtaIx = (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(glamSigner, vaultAta, vault, mint, tokenProgram);
5738
+ const harvestIx = await this.base.program.methods
5739
+ .kaminoFarmHarvestReward(new anchor_1.BN(index))
5740
+ .accounts({
5741
+ glamState,
5742
+ glamSigner,
5743
+ userState: userFarmState,
5744
+ farmState,
5745
+ globalConfig,
5746
+ rewardMint: mint,
5747
+ userRewardAta: vaultAta,
5748
+ rewardsVault,
5749
+ rewardsTreasuryVault: this.rewardsTreasuryVault(globalConfig, mint),
5750
+ farmVaultsAuthority: this.farmVaultsAuthority(farmState),
5751
+ scopePrices: null,
5752
+ tokenProgram,
5753
+ })
5754
+ .instruction();
5755
+ tx.add(createAtaIx, harvestIx);
5756
+ }
5757
+ }
5758
+ const lookupTables = txOptions.lookupTables ||
5759
+ (await this.base.getAdressLookupTableAccounts([LOOKUP_TABLE]));
5760
+ const vTx = await this.base.intoVersionedTransaction(tx, {
5761
+ ...txOptions,
5762
+ lookupTables,
5763
+ });
5764
+ return vTx;
5765
+ }
5766
+ }
5767
+ exports.KaminoFarmClient = KaminoFarmClient;
4649
5768
 
4650
5769
 
4651
5770
  /***/ }),
4652
- /* 31 */
5771
+ /* 32 */
4653
5772
  /***/ ((module) => {
4654
5773
 
4655
5774
  module.exports = require("@coral-xyz/borsh");
4656
5775
 
4657
5776
  /***/ }),
4658
- /* 32 */
5777
+ /* 33 */
4659
5778
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4660
5779
 
4661
5780
 
@@ -4911,7 +6030,7 @@ exports.MeteoraDlmmClient = MeteoraDlmmClient;
4911
6030
 
4912
6031
 
4913
6032
  /***/ }),
4914
- /* 33 */
6033
+ /* 34 */
4915
6034
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4916
6035
 
4917
6036
 
@@ -5183,7 +6302,7 @@ exports.InvestorClient = InvestorClient;
5183
6302
 
5184
6303
 
5185
6304
  /***/ }),
5186
- /* 34 */
6305
+ /* 35 */
5187
6306
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
5188
6307
 
5189
6308
 
@@ -5194,17 +6313,9 @@ const anchor_1 = __webpack_require__(2);
5194
6313
  const assets_1 = __webpack_require__(16);
5195
6314
  const helpers_1 = __webpack_require__(14);
5196
6315
  class PriceClient {
5197
- constructor(base) {
6316
+ constructor(base, klend) {
5198
6317
  this.base = base;
5199
- this.remainingAccountsForPricingKamino = async (glamState) => {
5200
- const glamVault = this.base.getVaultPda(glamState);
5201
- const obligationAccounts = await (0, helpers_1.fetchKaminoObligations)(this.base.provider.connection, glamVault);
5202
- return obligationAccounts.map((a) => ({
5203
- pubkey: a,
5204
- isSigner: false,
5205
- isWritable: false,
5206
- }));
5207
- };
6318
+ this.klend = klend;
5208
6319
  this.remainingAccountsForPricingMeteora = async (glamState) => {
5209
6320
  const glamVault = this.base.getVaultPda(glamState);
5210
6321
  const positions = await (0, helpers_1.fetchMeteoraPositions)(this.base.provider.connection, glamVault);
@@ -5260,6 +6371,29 @@ class PriceClient {
5260
6371
  });
5261
6372
  return pricedAssets.reduce((sum, p) => new anchor_1.BN(p.amount).add(sum), new anchor_1.BN(0));
5262
6373
  }
6374
+ async priceKaminoIxs(glamState, priceDenom) {
6375
+ const glamVault = this.base.getVaultPda(glamState);
6376
+ const obligations = await (0, helpers_1.fetchKaminoObligations)(this.base.provider.connection, glamVault);
6377
+ const refreshIxs = [];
6378
+ for (const obligation of obligations) {
6379
+ const ixs = await this.klend.getRefreshIxs(obligation, false); // skip farms
6380
+ refreshIxs.push(...ixs);
6381
+ }
6382
+ // @ts-ignore
6383
+ const priceIx = await this.base.program.methods
6384
+ .priceKaminoObligations(priceDenom)
6385
+ .accounts({
6386
+ glamState,
6387
+ solOracle: assets_1.SOL_ORACLE,
6388
+ })
6389
+ .remainingAccounts(obligations.map((o) => ({
6390
+ pubkey: o,
6391
+ isSigner: false,
6392
+ isWritable: false,
6393
+ })))
6394
+ .instruction();
6395
+ return [...refreshIxs, priceIx];
6396
+ }
5263
6397
  async priceVaultIxs(glamState, priceDenom) {
5264
6398
  const vault = this.base.getVaultPda(glamState);
5265
6399
  const tickets = await (0, helpers_1.fetchMarinadeTicketAccounts)(this.base.provider.connection, vault);
@@ -5305,20 +6439,13 @@ class PriceClient {
5305
6439
  })
5306
6440
  .remainingAccounts(await this.remainingAccountsForPricingMeteora(glamState))
5307
6441
  .instruction();
5308
- const priceKaminoIx = await this.base.program.methods
5309
- .priceKaminoObligations(priceDenom)
5310
- .accounts({
5311
- glamState,
5312
- solOracle: assets_1.SOL_ORACLE,
5313
- })
5314
- .remainingAccounts(await this.remainingAccountsForPricingKamino(glamState))
5315
- .instruction();
6442
+ const priceKaminoIxs = await this.priceKaminoIxs(glamState, priceDenom);
5316
6443
  return [
5317
6444
  priceTicketsIx,
5318
6445
  priceStakesIx,
5319
6446
  priceVaultIx,
5320
6447
  priceMeteoraIx,
5321
- priceKaminoIx,
6448
+ ...priceKaminoIxs,
5322
6449
  ];
5323
6450
  }
5324
6451
  }
@@ -5326,7 +6453,7 @@ exports.PriceClient = PriceClient;
5326
6453
 
5327
6454
 
5328
6455
  /***/ }),
5329
- /* 35 */
6456
+ /* 36 */
5330
6457
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
5331
6458
 
5332
6459
 
@@ -5337,7 +6464,9 @@ const getPriorityFeeEstimate = async (heliusApiKey, tx, accountKeys, priorityLev
5337
6464
  if (!tx && !accountKeys) {
5338
6465
  throw new Error("Either tx or accountKeys must be provided");
5339
6466
  }
5340
- const options = priorityLevel ? { priorityLevel } : { recommended: true };
6467
+ const options = priorityLevel && priorityLevel !== "Recommended"
6468
+ ? { priorityLevel }
6469
+ : { recommended: true };
5341
6470
  const param = tx
5342
6471
  ? { transaction: bytes_1.bs58.encode(tx.serialize()) }
5343
6472
  : { accountKeys };
@@ -5364,19 +6493,68 @@ exports.getPriorityFeeEstimate = getPriorityFeeEstimate;
5364
6493
 
5365
6494
 
5366
6495
  /***/ }),
5367
- /* 36 */
6496
+ /* 37 */
6497
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
6498
+
6499
+
6500
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
6501
+ exports.getLimitOrderParams = getLimitOrderParams;
6502
+ exports.getTriggerMarketOrderParams = getTriggerMarketOrderParams;
6503
+ exports.getTriggerLimitOrderParams = getTriggerLimitOrderParams;
6504
+ exports.getMarketOrderParams = getMarketOrderParams;
6505
+ exports.getOrderParams = getOrderParams;
6506
+ const driftTypes_1 = __webpack_require__(21);
6507
+ function getLimitOrderParams(params) {
6508
+ return getOrderParams(Object.assign({}, params, {
6509
+ orderType: driftTypes_1.OrderType.LIMIT,
6510
+ }));
6511
+ }
6512
+ function getTriggerMarketOrderParams(params) {
6513
+ return getOrderParams(Object.assign({}, params, {
6514
+ orderType: driftTypes_1.OrderType.TRIGGER_MARKET,
6515
+ }));
6516
+ }
6517
+ function getTriggerLimitOrderParams(params) {
6518
+ return getOrderParams(Object.assign({}, params, {
6519
+ orderType: driftTypes_1.OrderType.TRIGGER_LIMIT,
6520
+ }));
6521
+ }
6522
+ function getMarketOrderParams(params) {
6523
+ return getOrderParams(Object.assign({}, params, {
6524
+ orderType: driftTypes_1.OrderType.MARKET,
6525
+ }));
6526
+ }
6527
+ /**
6528
+ * Creates an OrderParams object with the given OptionalOrderParams and any params to override.
6529
+ *
6530
+ * example:
6531
+ * ```
6532
+ * const orderParams = getOrderParams(optionalOrderParams, { marketType: MarketType.PERP });
6533
+ * ```
6534
+ *
6535
+ * @param optionalOrderParams
6536
+ * @param overridingParams
6537
+ * @returns
6538
+ */
6539
+ function getOrderParams(optionalOrderParams, overridingParams = {}) {
6540
+ return Object.assign({}, driftTypes_1.DefaultOrderParams, optionalOrderParams, overridingParams);
6541
+ }
6542
+
6543
+
6544
+ /***/ }),
6545
+ /* 38 */
5368
6546
  /***/ ((module) => {
5369
6547
 
5370
6548
  module.exports = require("commander");
5371
6549
 
5372
6550
  /***/ }),
5373
- /* 37 */
6551
+ /* 39 */
5374
6552
  /***/ ((module) => {
5375
6553
 
5376
6554
  module.exports = require("fs");
5377
6555
 
5378
6556
  /***/ }),
5379
- /* 38 */
6557
+ /* 40 */
5380
6558
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
5381
6559
 
5382
6560
 
@@ -5386,10 +6564,10 @@ exports.confirmOperation = confirmOperation;
5386
6564
  const tslib_1 = __webpack_require__(1);
5387
6565
  const anchor_1 = __webpack_require__(2);
5388
6566
  const web3_js_1 = __webpack_require__(5);
5389
- const fs_1 = tslib_1.__importDefault(__webpack_require__(37));
5390
- const inquirer_1 = tslib_1.__importDefault(__webpack_require__(39));
5391
- const os_1 = tslib_1.__importDefault(__webpack_require__(40));
5392
- const path_1 = tslib_1.__importDefault(__webpack_require__(41));
6567
+ const fs_1 = tslib_1.__importDefault(__webpack_require__(39));
6568
+ const inquirer_1 = tslib_1.__importDefault(__webpack_require__(41));
6569
+ const os_1 = tslib_1.__importDefault(__webpack_require__(42));
6570
+ const path_1 = tslib_1.__importDefault(__webpack_require__(43));
5393
6571
  class CliConfig {
5394
6572
  constructor(config = {}) {
5395
6573
  this.cluster = config.cluster || "";
@@ -5408,7 +6586,7 @@ class CliConfig {
5408
6586
  set glamState(state) {
5409
6587
  const configPath = getConfigPath();
5410
6588
  const config = fs_1.default.readFileSync(configPath, "utf8");
5411
- const updated = { ...JSON.parse(config), glam_state: state.toBase58() };
6589
+ const updated = { ...JSON.parse(config), glam_state: state?.toBase58() };
5412
6590
  fs_1.default.writeFileSync(configPath, JSON.stringify(updated, null, 2), "utf8");
5413
6591
  CliConfig.reset();
5414
6592
  CliConfig.get();
@@ -5486,25 +6664,25 @@ async function confirmOperation(message) {
5486
6664
 
5487
6665
 
5488
6666
  /***/ }),
5489
- /* 39 */
6667
+ /* 41 */
5490
6668
  /***/ ((module) => {
5491
6669
 
5492
6670
  module.exports = require("inquirer");
5493
6671
 
5494
6672
  /***/ }),
5495
- /* 40 */
6673
+ /* 42 */
5496
6674
  /***/ ((module) => {
5497
6675
 
5498
6676
  module.exports = require("os");
5499
6677
 
5500
6678
  /***/ }),
5501
- /* 41 */
6679
+ /* 43 */
5502
6680
  /***/ ((module) => {
5503
6681
 
5504
6682
  module.exports = require("path");
5505
6683
 
5506
6684
  /***/ }),
5507
- /* 42 */
6685
+ /* 44 */
5508
6686
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
5509
6687
 
5510
6688
 
@@ -5512,15 +6690,14 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
5512
6690
  exports.installDriftCommands = installDriftCommands;
5513
6691
  const anchor_1 = __webpack_require__(2);
5514
6692
  const glam_sdk_1 = __webpack_require__(3);
5515
- const utils_1 = __webpack_require__(38);
6693
+ const utils_1 = __webpack_require__(40);
5516
6694
  function installDriftCommands(drift, glamClient, cliConfig, txOptions = {}) {
5517
6695
  drift
5518
6696
  .command("price")
5519
6697
  .description("Price drift")
5520
6698
  .action(async () => {
5521
6699
  try {
5522
- const marketConfigs = await glamClient.drift.fetchMarketConfigs();
5523
- const txSig = await glamClient.drift.priceDrift(cliConfig.glamState, marketConfigs, glam_sdk_1.PriceDenom.USD, txOptions);
6700
+ const txSig = await glamClient.drift.priceDrift(cliConfig.glamState, glam_sdk_1.PriceDenom.USD, txOptions);
5524
6701
  console.log(`Pricing tx: ${txSig}`);
5525
6702
  }
5526
6703
  catch (e) {
@@ -5547,13 +6724,15 @@ function installDriftCommands(drift, glamClient, cliConfig, txOptions = {}) {
5547
6724
  }
5548
6725
  });
5549
6726
  drift
5550
- .command("list")
6727
+ .command("positions")
5551
6728
  .description("List drift positions")
5552
6729
  .action(async () => {
5553
6730
  try {
5554
- const { spotPositions, perpPositions } = await glamClient.drift.getPositions(cliConfig.glamState, 0);
5555
- console.log("Spot positions:", spotPositions);
5556
- console.log("Perp positions:", perpPositions);
6731
+ const { spotPositions } = await glamClient.drift.fetchDriftUser(cliConfig.glamState);
6732
+ for (const { marketIndex, uiAmount, marketName } of spotPositions) {
6733
+ console.log(`${uiAmount} ${marketName} (market index: ${marketIndex})`);
6734
+ }
6735
+ // TODO: print perp positions
5557
6736
  }
5558
6737
  catch (e) {
5559
6738
  console.error(e);
@@ -5566,9 +6745,9 @@ function installDriftCommands(drift, glamClient, cliConfig, txOptions = {}) {
5566
6745
  .action(async (market_index, amount) => {
5567
6746
  try {
5568
6747
  const marketConfigs = await glamClient.drift.fetchMarketConfigs();
5569
- const marketConfig = marketConfigs.spot.find((m) => m.marketIndex === parseInt(market_index));
6748
+ const marketConfig = marketConfigs.spotMarkets.find((m) => m.marketIndex === parseInt(market_index));
5570
6749
  const amountBn = new anchor_1.BN(Number(amount) * 10 ** marketConfig.decimals);
5571
- const txSig = await glamClient.drift.withdraw(cliConfig.glamState, amountBn, marketConfig.marketIndex, 0, marketConfigs, txOptions);
6750
+ const txSig = await glamClient.drift.withdraw(cliConfig.glamState, amountBn, marketConfig.marketIndex, 0, txOptions);
5572
6751
  console.log(`Withdraw from drift: ${txSig}`);
5573
6752
  }
5574
6753
  catch (e) {
@@ -5582,9 +6761,9 @@ function installDriftCommands(drift, glamClient, cliConfig, txOptions = {}) {
5582
6761
  .action(async (market_index, amount) => {
5583
6762
  try {
5584
6763
  const marketConfigs = await glamClient.drift.fetchMarketConfigs();
5585
- const marketConfig = marketConfigs.spot.find((m) => m.marketIndex === parseInt(market_index));
6764
+ const marketConfig = marketConfigs.spotMarkets.find((m) => m.marketIndex === parseInt(market_index));
5586
6765
  const amountBn = new anchor_1.BN(Number(amount) * 10 ** marketConfig.decimals);
5587
- const txSig = await glamClient.drift.deposit(cliConfig.glamState, amountBn, marketConfig.marketIndex, 0, marketConfigs, txOptions);
6766
+ const txSig = await glamClient.drift.deposit(cliConfig.glamState, amountBn, marketConfig.marketIndex, 0, txOptions);
5588
6767
  console.log(`Deposited to drift: ${txSig}`);
5589
6768
  }
5590
6769
  catch (e) {
@@ -5592,6 +6771,154 @@ function installDriftCommands(drift, glamClient, cliConfig, txOptions = {}) {
5592
6771
  process.exit(1);
5593
6772
  }
5594
6773
  });
6774
+ drift
6775
+ .command("spot <direction> <market_index> <amount> <price_limit>")
6776
+ .description("Place a limit spot order. Price limit is in USD.")
6777
+ .option("-y, --yes", "Skip confirmation prompt")
6778
+ .action(async (direction, market_index, amount, price_limit, options) => {
6779
+ if (!["long", "short"].includes(direction)) {
6780
+ console.error("Invalid direction. Must be 'long' or 'short'");
6781
+ process.exit(1);
6782
+ }
6783
+ const marketConfigs = await glamClient.drift.fetchMarketConfigs();
6784
+ const spotMarket = marketConfigs?.spotMarkets?.find((m) => m.marketIndex === parseInt(market_index));
6785
+ if (!spotMarket) {
6786
+ console.error(`Invalid market index: ${market_index}`);
6787
+ process.exit(1);
6788
+ }
6789
+ const baseAssetAmount = new anchor_1.BN(Number(amount) * 10 ** spotMarket.decimals);
6790
+ const price = new anchor_1.BN(Number(price_limit) * 10 ** marketConfigs.orderConstants.quoteScale);
6791
+ const orderParams = (0, glam_sdk_1.getOrderParams)({
6792
+ orderType: glam_sdk_1.OrderType.LIMIT,
6793
+ marketType: glam_sdk_1.MarketType.SPOT,
6794
+ direction: direction === "long"
6795
+ ? glam_sdk_1.PositionDirection.LONG
6796
+ : glam_sdk_1.PositionDirection.SHORT,
6797
+ marketIndex: spotMarket.marketIndex,
6798
+ baseAssetAmount,
6799
+ price,
6800
+ });
6801
+ options?.yes ||
6802
+ (await (0, utils_1.confirmOperation)(`Confirm placing ${direction} order for ${amount} ${spotMarket.name} at ${price_limit} USD?`));
6803
+ try {
6804
+ const txSig = await glamClient.drift.placeOrder(cliConfig.glamState, orderParams, 0, txOptions);
6805
+ console.log(`Spot order placed: ${txSig}`);
6806
+ }
6807
+ catch (e) {
6808
+ console.error((0, utils_1.parseTxError)(e));
6809
+ process.exit(1);
6810
+ }
6811
+ });
6812
+ drift
6813
+ .command("perp <direction> <market_index> <amount> <price_limit>")
6814
+ .description("Place a limit perp order. Price limit is in USD.")
6815
+ .option("-y, --yes", "Skip confirmation prompt")
6816
+ .action(async (direction, market_index, amount, price_limit, options) => {
6817
+ if (!["long", "short"].includes(direction)) {
6818
+ console.error("Invalid direction. Must be 'long' or 'short'");
6819
+ process.exit(1);
6820
+ }
6821
+ const marketConfigs = await glamClient.drift.fetchMarketConfigs();
6822
+ const perpMarket = marketConfigs?.perpMarkets?.find((m) => m.marketIndex === parseInt(market_index));
6823
+ if (!perpMarket) {
6824
+ console.error(`Invalid market index: ${market_index}`);
6825
+ process.exit(1);
6826
+ }
6827
+ const baseAssetAmount = new anchor_1.BN(Number(amount) * 10 ** marketConfigs.orderConstants.perpBaseScale);
6828
+ const price = new anchor_1.BN(Number(price_limit) * 10 ** marketConfigs.orderConstants.quoteScale);
6829
+ const orderParams = (0, glam_sdk_1.getOrderParams)({
6830
+ orderType: glam_sdk_1.OrderType.LIMIT,
6831
+ marketType: glam_sdk_1.MarketType.PERP,
6832
+ direction: direction === "long"
6833
+ ? glam_sdk_1.PositionDirection.LONG
6834
+ : glam_sdk_1.PositionDirection.SHORT,
6835
+ marketIndex: perpMarket.marketIndex,
6836
+ baseAssetAmount,
6837
+ price,
6838
+ });
6839
+ options?.yes ||
6840
+ (await (0, utils_1.confirmOperation)(`Confirm placing ${direction} order for ${amount} ${perpMarket.name} at ${price_limit} USD?`));
6841
+ try {
6842
+ const txSig = await glamClient.drift.placeOrder(cliConfig.glamState, orderParams, 0, txOptions);
6843
+ console.log(`Perp order placed: ${txSig}`);
6844
+ }
6845
+ catch (e) {
6846
+ console.error((0, utils_1.parseTxError)(e));
6847
+ process.exit(1);
6848
+ }
6849
+ });
6850
+ drift
6851
+ .command("orders")
6852
+ .description("List open orders")
6853
+ .action(async () => {
6854
+ const driftUser = await glamClient.drift.fetchDriftUser(cliConfig.glamState);
6855
+ if (!driftUser) {
6856
+ console.error("Drift user not found");
6857
+ process.exit(1);
6858
+ }
6859
+ const marketConfigs = await glamClient.drift.fetchMarketConfigs();
6860
+ const { orders } = driftUser;
6861
+ for (const { orderId, marketIndex, direction, baseAssetAmount, price, orderType, marketType, } of orders) {
6862
+ const orderTypeStr = Object.entries(orderType)[0][0];
6863
+ const directionStr = Object.entries(direction)[0][0];
6864
+ if (marketType === glam_sdk_1.MarketType.SPOT) {
6865
+ const marketConfig = marketConfigs.spotMarkets.find((m) => m.marketIndex === marketIndex);
6866
+ const amount = baseAssetAmount.toNumber() / 10 ** marketConfig.decimals;
6867
+ const priceStr = price.toNumber() / 10 ** marketConfigs.orderConstants.quoteScale;
6868
+ const marketName = marketConfig.name;
6869
+ console.log(`Order ID ${orderId}: ${orderTypeStr} ${directionStr} order for ${amount} ${marketName} at $${priceStr}`);
6870
+ }
6871
+ else {
6872
+ const marketConfig = marketConfigs.perpMarkets.find((m) => m.marketIndex === marketIndex);
6873
+ const amount = baseAssetAmount.toNumber() /
6874
+ 10 ** marketConfigs.orderConstants.perpBaseScale;
6875
+ const priceStr = price.toNumber() / 10 ** marketConfigs.orderConstants.quoteScale;
6876
+ const marketName = marketConfig.name;
6877
+ console.log(`Order ID ${orderId}: ${orderTypeStr} ${directionStr} order for ${amount} ${marketName} at $${priceStr}`);
6878
+ }
6879
+ }
6880
+ });
6881
+ drift
6882
+ .command("cancel")
6883
+ .argument("<order_ids...>", "A space-separated list of order IDs. Use `drift orders` to list open orders.")
6884
+ .description("Cancel order")
6885
+ .action(async (order_ids) => {
6886
+ try {
6887
+ const txSig = await glamClient.drift.cancelOrdersByIds(cliConfig.glamState, order_ids.map((id) => Number(id)), 0, txOptions);
6888
+ console.log(`Order cancelled: ${txSig}`);
6889
+ }
6890
+ catch (e) {
6891
+ console.error((0, utils_1.parseTxError)(e));
6892
+ process.exit(1);
6893
+ }
6894
+ });
6895
+ drift
6896
+ .command("margin <enabled>")
6897
+ .description("Enable margin trading")
6898
+ .action(async (enabled) => {
6899
+ let shouldEnable = false;
6900
+ if (["true", "1", "yes", "y", "enabled"].includes(enabled)) {
6901
+ shouldEnable = true;
6902
+ }
6903
+ const driftUser = await glamClient.drift.fetchDriftUser(cliConfig.glamState);
6904
+ if (!driftUser) {
6905
+ console.error("Drift user not found");
6906
+ process.exit(1);
6907
+ }
6908
+ const { isMarginTradingEnabled } = driftUser;
6909
+ if (isMarginTradingEnabled === shouldEnable) {
6910
+ console.log(`Margin trading already ${shouldEnable ? "enabled" : "disabled"}`);
6911
+ return;
6912
+ }
6913
+ try {
6914
+ const txSig = await glamClient.drift.updateUserMarginTradingEnabled(cliConfig.glamState, shouldEnable, 0, txOptions);
6915
+ console.log(`Margin trading ${shouldEnable ? "enabled" : "disabled"}: ${txSig}`);
6916
+ }
6917
+ catch (e) {
6918
+ console.error((0, utils_1.parseTxError)(e));
6919
+ process.exit(1);
6920
+ }
6921
+ });
5595
6922
  drift
5596
6923
  .command("delete")
5597
6924
  .description("Delete a drift user")
@@ -5609,7 +6936,7 @@ function installDriftCommands(drift, glamClient, cliConfig, txOptions = {}) {
5609
6936
 
5610
6937
 
5611
6938
  /***/ }),
5612
- /* 43 */
6939
+ /* 45 */
5613
6940
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
5614
6941
 
5615
6942
 
@@ -5617,7 +6944,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
5617
6944
  exports.installMintCommands = installMintCommands;
5618
6945
  const anchor_1 = __webpack_require__(2);
5619
6946
  const web3_js_1 = __webpack_require__(5);
5620
- const utils_1 = __webpack_require__(38);
6947
+ const utils_1 = __webpack_require__(40);
5621
6948
  function installMintCommands(mint, glamClient, cliConfig, txOptions = {}) {
5622
6949
  mint
5623
6950
  .command("holders")
@@ -5814,7 +7141,7 @@ function installMintCommands(mint, glamClient, cliConfig, txOptions = {}) {
5814
7141
 
5815
7142
 
5816
7143
  /***/ }),
5817
- /* 44 */
7144
+ /* 46 */
5818
7145
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
5819
7146
 
5820
7147
 
@@ -5822,7 +7149,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
5822
7149
  exports.installMeteoraCommands = installMeteoraCommands;
5823
7150
  const anchor_1 = __webpack_require__(2);
5824
7151
  const glam_sdk_1 = __webpack_require__(3);
5825
- const utils_1 = __webpack_require__(38);
7152
+ const utils_1 = __webpack_require__(40);
5826
7153
  function installMeteoraCommands(meteora, glamClient, cliConfig, txOptions = {}) {
5827
7154
  meteora
5828
7155
  .command("init <pool>")
@@ -5921,7 +7248,7 @@ function installMeteoraCommands(meteora, glamClient, cliConfig, txOptions = {})
5921
7248
 
5922
7249
 
5923
7250
  /***/ }),
5924
- /* 45 */
7251
+ /* 47 */
5925
7252
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
5926
7253
 
5927
7254
 
@@ -5929,7 +7256,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
5929
7256
  exports.installLstCommands = installLstCommands;
5930
7257
  const anchor_1 = __webpack_require__(2);
5931
7258
  const web3_js_1 = __webpack_require__(5);
5932
- const utils_1 = __webpack_require__(38);
7259
+ const utils_1 = __webpack_require__(40);
5933
7260
  function installLstCommands(lst, glamClient, cliConfig, txOptions = {}) {
5934
7261
  lst
5935
7262
  .command("stake <stakepool> <amount>")
@@ -6023,14 +7350,14 @@ function installLstCommands(lst, glamClient, cliConfig, txOptions = {}) {
6023
7350
 
6024
7351
 
6025
7352
  /***/ }),
6026
- /* 46 */
7353
+ /* 48 */
6027
7354
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
6028
7355
 
6029
7356
 
6030
7357
  Object.defineProperty(exports, "__esModule", ({ value: true }));
6031
7358
  exports.installMarinadeCommands = installMarinadeCommands;
6032
7359
  const anchor_1 = __webpack_require__(2);
6033
- const utils_1 = __webpack_require__(38);
7360
+ const utils_1 = __webpack_require__(40);
6034
7361
  const web3_js_1 = __webpack_require__(5);
6035
7362
  function installMarinadeCommands(marinade, glamClient, cliConfig, txOptions = {}) {
6036
7363
  marinade
@@ -6099,24 +7426,24 @@ function installMarinadeCommands(marinade, glamClient, cliConfig, txOptions = {}
6099
7426
 
6100
7427
 
6101
7428
  /***/ }),
6102
- /* 47 */
7429
+ /* 49 */
6103
7430
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
6104
7431
 
6105
7432
 
6106
7433
  Object.defineProperty(exports, "__esModule", ({ value: true }));
6107
7434
  exports.installKlendCommands = installKlendCommands;
6108
7435
  const glam_sdk_1 = __webpack_require__(3);
6109
- const utils_1 = __webpack_require__(38);
7436
+ const utils_1 = __webpack_require__(40);
6110
7437
  const web3_js_1 = __webpack_require__(5);
6111
7438
  function installKlendCommands(klend, glamClient, cliConfig, txOptions = {}) {
6112
7439
  klend
6113
7440
  .command("init")
6114
- .description("Initialize Kamino Lending account")
7441
+ .description("Initialize Kamino user")
6115
7442
  .action(async () => {
6116
7443
  const glamState = cliConfig.glamState;
6117
7444
  try {
6118
7445
  const txSig = await glamClient.kaminoLending.initUserMetadata(glamState, null, txOptions);
6119
- console.log(`Initialized Kamino Lending:`, txSig);
7446
+ console.log(`Initialized Kamino user:`, txSig);
6120
7447
  }
6121
7448
  catch (e) {
6122
7449
  console.error((0, utils_1.parseTxError)(e));
@@ -6141,19 +7468,19 @@ function installKlendCommands(klend, glamClient, cliConfig, txOptions = {}) {
6141
7468
  const vault = glamClient.getVaultPda(glamState);
6142
7469
  const obligation = glamClient.kaminoLending.getObligationPda(vault, new web3_js_1.PublicKey(market));
6143
7470
  const tx = new web3_js_1.Transaction();
6144
- const refreshIxs = await glamClient.kaminoLending.getRefreshIxs(obligation, new web3_js_1.PublicKey(market));
7471
+ const refreshIxs = await glamClient.kaminoLending.getRefreshIxs(obligation, false);
6145
7472
  tx.add(...refreshIxs);
6146
7473
  try {
6147
7474
  const vTx = await glamClient.intoVersionedTransaction(tx, txOptions);
6148
7475
  const txSig = await glamClient.sendAndConfirm(vTx);
6149
- console.log(`Refreshed Kamino obligation:`, txSig);
7476
+ console.log(`Refreshed Kamino obligation for pricing:`, txSig);
6150
7477
  }
6151
7478
  catch (e) {
6152
7479
  console.error((0, utils_1.parseTxError)(e));
6153
7480
  throw e;
6154
7481
  }
6155
7482
  const obligations = await (0, glam_sdk_1.fetchKaminoObligations)(glamClient.provider.connection, vault);
6156
- console.log("Obligations:", obligations);
7483
+ console.log("Priced Kamino obligations:", obligations.map((o) => o.toBase58()));
6157
7484
  });
6158
7485
  klend
6159
7486
  .command("deposit <market> <asset> <amount>")
@@ -6170,7 +7497,7 @@ function installKlendCommands(klend, glamClient, cliConfig, txOptions = {}) {
6170
7497
  }
6171
7498
  try {
6172
7499
  const txSig = await glamClient.kaminoLending.deposit(statePda, market, asset, parseFloat(amount) * 10 ** decimals, txOptions);
6173
- console.log(`Deposit ${amount} SOL to Kamino from vault:`, txSig);
7500
+ console.log(`Deposit ${amount} ${asset} to Kamino from vault:`, txSig);
6174
7501
  }
6175
7502
  catch (e) {
6176
7503
  console.error((0, utils_1.parseTxError)(e));
@@ -6184,7 +7511,7 @@ function installKlendCommands(klend, glamClient, cliConfig, txOptions = {}) {
6184
7511
  .action(async (market, asset, amount, options) => {
6185
7512
  const statePda = cliConfig.glamState;
6186
7513
  options?.yes ||
6187
- (await (0, utils_1.confirmOperation)(`Confirm repay of ${amount} ${asset}?`));
7514
+ (await (0, utils_1.confirmOperation)(`Confirm withdrawing ${amount} ${asset}?`));
6188
7515
  const decimals = glam_sdk_1.ASSETS_MAINNET.get(asset)?.decimals;
6189
7516
  if (!decimals) {
6190
7517
  console.error(`Asset ${asset} not supported`);
@@ -6243,18 +7570,32 @@ function installKlendCommands(klend, glamClient, cliConfig, txOptions = {}) {
6243
7570
  throw e;
6244
7571
  }
6245
7572
  });
7573
+ klend
7574
+ .command("harvest")
7575
+ .description("Harvest Kamino farms rewards")
7576
+ .action(async () => {
7577
+ const statePda = cliConfig.glamState;
7578
+ try {
7579
+ const txSig = await glamClient.kaminoFarm.harvest(statePda, txOptions);
7580
+ console.log(`Harvested farm rewards:`, txSig);
7581
+ }
7582
+ catch (e) {
7583
+ console.error((0, utils_1.parseTxError)(e));
7584
+ throw e;
7585
+ }
7586
+ });
6246
7587
  }
6247
7588
 
6248
7589
 
6249
7590
  /***/ }),
6250
- /* 48 */
7591
+ /* 50 */
6251
7592
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
6252
7593
 
6253
7594
 
6254
7595
  Object.defineProperty(exports, "__esModule", ({ value: true }));
6255
7596
  exports.installJupCommands = installJupCommands;
6256
7597
  const anchor_1 = __webpack_require__(2);
6257
- const utils_1 = __webpack_require__(38);
7598
+ const utils_1 = __webpack_require__(40);
6258
7599
  const web3_js_1 = __webpack_require__(5);
6259
7600
  function installJupCommands(jup, glamClient, cliConfig, txOptions = {}) {
6260
7601
  jup
@@ -6345,7 +7686,7 @@ function installJupCommands(jup, glamClient, cliConfig, txOptions = {}) {
6345
7686
  }
6346
7687
  try {
6347
7688
  const txId = await glamClient.jupiterVote.voteOnProposal(statePda, proposal, Number(side));
6348
- console.log("castVote:", txId);
7689
+ console.log(`Cast vote on proposal ${proposal.toBase58()} with side ${side}:`, txId);
6349
7690
  }
6350
7691
  catch (e) {
6351
7692
  console.error((0, utils_1.parseTxError)(e));
@@ -6356,14 +7697,14 @@ function installJupCommands(jup, glamClient, cliConfig, txOptions = {}) {
6356
7697
 
6357
7698
 
6358
7699
  /***/ }),
6359
- /* 49 */
7700
+ /* 51 */
6360
7701
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
6361
7702
 
6362
7703
 
6363
7704
  Object.defineProperty(exports, "__esModule", ({ value: true }));
6364
7705
  exports.installIntegrationCommands = installIntegrationCommands;
6365
7706
  const glam_sdk_1 = __webpack_require__(3);
6366
- const utils_1 = __webpack_require__(38);
7707
+ const utils_1 = __webpack_require__(40);
6367
7708
  const web3_js_1 = __webpack_require__(5);
6368
7709
  function installIntegrationCommands(integration, glamClient, cliConfig, txOptions = {}) {
6369
7710
  integration
@@ -6415,7 +7756,7 @@ function installIntegrationCommands(integration, glamClient, cliConfig, txOption
6415
7756
  integrations: [...stateModel.integrations, { [integration]: {} }],
6416
7757
  });
6417
7758
  try {
6418
- const txSig = await glamClient.state.updateState(statePda, updated);
7759
+ const txSig = await glamClient.state.updateState(statePda, updated, txOptions);
6419
7760
  console.log(`${integration} enabled: ${txSig}`);
6420
7761
  }
6421
7762
  catch (e) {
@@ -6440,7 +7781,7 @@ function installIntegrationCommands(integration, glamClient, cliConfig, txOption
6440
7781
  integrations: stateModel.integrations.filter((integ) => Object.keys(integ)[0] !== integration),
6441
7782
  });
6442
7783
  try {
6443
- const txSig = await glamClient.state.updateState(statePda, updated);
7784
+ const txSig = await glamClient.state.updateState(statePda, updated, txOptions);
6444
7785
  console.log(`${integration} disabled: ${txSig}`);
6445
7786
  }
6446
7787
  catch (e) {
@@ -6452,7 +7793,7 @@ function installIntegrationCommands(integration, glamClient, cliConfig, txOption
6452
7793
 
6453
7794
 
6454
7795
  /***/ }),
6455
- /* 50 */
7796
+ /* 52 */
6456
7797
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
6457
7798
 
6458
7799
 
@@ -6460,12 +7801,21 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
6460
7801
  exports.installDelegateCommands = installDelegateCommands;
6461
7802
  const anchor_1 = __webpack_require__(2);
6462
7803
  const glam_sdk_1 = __webpack_require__(3);
6463
- const utils_1 = __webpack_require__(38);
7804
+ const utils_1 = __webpack_require__(40);
6464
7805
  const web3_js_1 = __webpack_require__(5);
7806
+ const allowedPermissions = glam_sdk_1.GlamPermissions.map((p) => p.slice(0, 1).toLowerCase() + p.slice(1));
7807
+ const validate = (permissions) => {
7808
+ permissions.forEach((p) => {
7809
+ if (!allowedPermissions.includes(p)) {
7810
+ console.error(`Invalid permission: ${p}. Value must be among: ${allowedPermissions.join(", ")}`);
7811
+ process.exit(1);
7812
+ }
7813
+ });
7814
+ };
6465
7815
  function installDelegateCommands(delegate, glamClient, cliConfig, txOptions = {}) {
6466
7816
  delegate
6467
7817
  .command("list")
6468
- .description("List delegates and permissions")
7818
+ .description("List delegates and their permissions")
6469
7819
  .action(async () => {
6470
7820
  const statePda = cliConfig.glamState;
6471
7821
  const stateModel = await glamClient.fetchState(statePda);
@@ -6477,20 +7827,19 @@ function installDelegateCommands(delegate, glamClient, cliConfig, txOptions = {}
6477
7827
  acl.permissions.map((p) => Object.keys(p)[0]).join(", "));
6478
7828
  }
6479
7829
  });
6480
- const allowedPermissions = glam_sdk_1.GlamPermissions.map((p) => p.slice(0, 1).toLowerCase() + p.slice(1));
6481
7830
  delegate
6482
7831
  .command("set")
6483
7832
  .argument("<pubkey>", "Delegate pubkey")
6484
7833
  .argument("<permissions...>", `A space-separated list of permissions to grant. Allowed values: ${allowedPermissions.join(", ")}.`)
6485
- .description("Set delegate permissions")
7834
+ .description("(Deprecated. Use `delegate grant` instead.) Set delegate permissions")
6486
7835
  .action(async (pubkey, permissions) => {
6487
- const statePda = cliConfig.glamState;
7836
+ console.warn("This command is deprecated and will be removed in the future. Use `delegate grant` instead.");
6488
7837
  if (!permissions.every((p) => allowedPermissions.includes(p))) {
6489
7838
  console.error(`Invalid permissions: ${permissions}. Values must be among: ${allowedPermissions.join(", ")}`);
6490
7839
  process.exit(1);
6491
7840
  }
6492
7841
  try {
6493
- const txSig = await glamClient.state.upsertDelegateAcls(statePda, [
7842
+ const txSig = await glamClient.state.upsertDelegateAcls(cliConfig.glamState, [
6494
7843
  {
6495
7844
  pubkey: new web3_js_1.PublicKey(pubkey),
6496
7845
  permissions: permissions.map((p) => ({
@@ -6498,9 +7847,72 @@ function installDelegateCommands(delegate, glamClient, cliConfig, txOptions = {}
6498
7847
  })),
6499
7848
  expiresAt: new anchor_1.BN(0),
6500
7849
  },
6501
- ]);
6502
- console.log("txSig:", txSig);
6503
- console.log(`Granted ${pubkey} permissions ${permissions}`);
7850
+ ], txOptions);
7851
+ console.log(`Granted ${pubkey} permissions ${permissions}: ${txSig}`);
7852
+ }
7853
+ catch (e) {
7854
+ console.error((0, utils_1.parseTxError)(e));
7855
+ process.exit(1);
7856
+ }
7857
+ });
7858
+ delegate
7859
+ .command("grant")
7860
+ .argument("<pubkey>", "Delegate pubkey")
7861
+ .argument("<permissions...>", `A space-separated list of permissions to grant. Allowed values: ${allowedPermissions.join(", ")}.`)
7862
+ .description("Grant delegate new permissions")
7863
+ .action(async (pubkey, permissions) => {
7864
+ validate(permissions);
7865
+ const stateModel = await glamClient.fetchState(cliConfig.glamState);
7866
+ const acl = stateModel.delegateAcls.find((acl) => acl.pubkey.toBase58() === pubkey);
7867
+ // if acl doesn't exist, it's a new delegate to add, and we add `wSol` automatically
7868
+ const existingPermissionKeys = new Set(acl ? acl.permissions.map((p) => Object.keys(p)[0]) : ["wSol"]);
7869
+ const newPermissionKeys = permissions.filter((p) => !existingPermissionKeys.has(p));
7870
+ if (newPermissionKeys.length === 0) {
7871
+ console.log(`Delegate ${pubkey} already has permissions: ${permissions.join(", ")}`);
7872
+ return;
7873
+ }
7874
+ const updatedPermissions = Array.from(new Set([...existingPermissionKeys, ...newPermissionKeys])).map((p) => ({ [p]: {} }));
7875
+ try {
7876
+ const txSig = await glamClient.state.upsertDelegateAcls(cliConfig.glamState, [
7877
+ {
7878
+ pubkey: new web3_js_1.PublicKey(pubkey),
7879
+ permissions: updatedPermissions,
7880
+ expiresAt: new anchor_1.BN(0),
7881
+ },
7882
+ ], txOptions);
7883
+ console.log(`Granted ${pubkey} permissions ${permissions}: ${txSig}`);
7884
+ }
7885
+ catch (e) {
7886
+ console.error((0, utils_1.parseTxError)(e));
7887
+ process.exit(1);
7888
+ }
7889
+ });
7890
+ delegate
7891
+ .command("revoke")
7892
+ .argument("<pubkey>", "Delegate pubkey")
7893
+ .argument("<permissions...>", `A space-separated list of permissions to revoke. Allowed values: ${allowedPermissions.join(", ")}.`)
7894
+ .description("Revoke delegate permissions")
7895
+ .action(async (pubkey, permissions) => {
7896
+ validate(permissions);
7897
+ const stateModel = await glamClient.fetchState(cliConfig.glamState);
7898
+ const acl = stateModel.delegateAcls.find((acl) => acl.pubkey.toBase58() === pubkey);
7899
+ if (!acl) {
7900
+ console.error(`Delegate ${pubkey} not found. No need to revoke.`);
7901
+ return;
7902
+ }
7903
+ const existingPermissionKeys = new Set(acl.permissions.map((p) => Object.keys(p)[0]));
7904
+ const updatedPermissions = Array.from(existingPermissionKeys)
7905
+ .filter((p) => !permissions.includes(p))
7906
+ .map((p) => ({ [p]: {} }));
7907
+ try {
7908
+ const txSig = await glamClient.state.upsertDelegateAcls(cliConfig.glamState, [
7909
+ {
7910
+ pubkey: new web3_js_1.PublicKey(pubkey),
7911
+ permissions: updatedPermissions,
7912
+ expiresAt: new anchor_1.BN(0),
7913
+ },
7914
+ ], txOptions);
7915
+ console.log(`Revoked ${pubkey} permissions ${permissions}: ${txSig}`);
6504
7916
  }
6505
7917
  catch (e) {
6506
7918
  console.error((0, utils_1.parseTxError)(e));
@@ -6509,15 +7921,77 @@ function installDelegateCommands(delegate, glamClient, cliConfig, txOptions = {}
6509
7921
  });
6510
7922
  delegate
6511
7923
  .command("delete <pubkey>")
6512
- .description("Revoke all delegate permissions for a pubkey")
7924
+ .description("Revoke delegate access entirely")
6513
7925
  .action(async (pubkey) => {
6514
7926
  const statePda = cliConfig.glamState;
7927
+ const stateModel = await glamClient.fetchState(statePda);
7928
+ const acl = stateModel.delegateAcls.find((acl) => acl.pubkey.toBase58() === pubkey);
7929
+ if (!acl) {
7930
+ console.error(`Delegate ${pubkey} not found. No need to delete.`);
7931
+ return;
7932
+ }
6515
7933
  try {
6516
- const txSig = await glamClient.state.deleteDelegateAcls(statePda, [
6517
- new web3_js_1.PublicKey(pubkey),
6518
- ]);
6519
- console.log("txSig:", txSig);
6520
- console.log(`Revoked ${pubkey} access to ${statePda.toBase58()}`);
7934
+ const txSig = await glamClient.state.deleteDelegateAcls(statePda, [new web3_js_1.PublicKey(pubkey)], txOptions);
7935
+ console.log(`Revoked ${pubkey} access to ${statePda.toBase58()}: ${txSig}`);
7936
+ }
7937
+ catch (e) {
7938
+ console.error((0, utils_1.parseTxError)(e));
7939
+ process.exit(1);
7940
+ }
7941
+ });
7942
+ }
7943
+
7944
+
7945
+ /***/ }),
7946
+ /* 53 */
7947
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
7948
+
7949
+
7950
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
7951
+ exports.installSwapCommands = installSwapCommands;
7952
+ const utils_1 = __webpack_require__(40);
7953
+ function installSwapCommands(program, glamClient, cliConfig, txOptions = {}) {
7954
+ program
7955
+ .command("swap <from> <to> <amount>")
7956
+ .description("Swap assets held in the vault")
7957
+ .option("-m, --max-accounts <num>", "Specify max accounts allowed")
7958
+ .option("-s, --slippage-bps <bps>", "Specify slippage bps")
7959
+ .option("-d, --only-direct-routes", "Direct routes only")
7960
+ .action(async (from, to, amount, options) => {
7961
+ const statePda = cliConfig.glamState;
7962
+ const { maxAccounts, slippageBps, onlyDirectRoutes } = options;
7963
+ const response = await fetch("https://tokens.jup.ag/tokens?tags=verified");
7964
+ const data = await response.json(); // an array of tokens
7965
+ const tokenFrom = data.find((t) => t.address === from || t.symbol.toLowerCase() === from.toLowerCase());
7966
+ const tokenTo = data.find((t) => t.address === to || t.symbol.toLowerCase() === to.toLowerCase());
7967
+ if (!tokenFrom || !tokenTo) {
7968
+ console.error("Error: cannot swap unverified token");
7969
+ process.exit(1);
7970
+ }
7971
+ let quoteParams = {
7972
+ inputMint: tokenFrom.address,
7973
+ outputMint: tokenTo.address,
7974
+ amount: Math.floor(parseFloat(amount) * 10 ** tokenFrom.decimals),
7975
+ swapMode: "ExactIn",
7976
+ slippageBps: slippageBps ? parseInt(slippageBps) : 5,
7977
+ asLegacyTransaction: false,
7978
+ };
7979
+ if (maxAccounts) {
7980
+ quoteParams = {
7981
+ ...quoteParams,
7982
+ maxAccounts: parseInt(maxAccounts),
7983
+ };
7984
+ }
7985
+ if (onlyDirectRoutes) {
7986
+ quoteParams = {
7987
+ ...quoteParams,
7988
+ onlyDirectRoutes,
7989
+ };
7990
+ }
7991
+ console.log("Quote params:", quoteParams);
7992
+ try {
7993
+ const txSig = await glamClient.jupiterSwap.swap(statePda, { quoteParams }, txOptions);
7994
+ console.log(`Swapped ${amount} ${from} to ${to}: ${txSig}`);
6521
7995
  }
6522
7996
  catch (e) {
6523
7997
  console.error((0, utils_1.parseTxError)(e));
@@ -6565,18 +8039,19 @@ const tslib_1 = __webpack_require__(1);
6565
8039
  const anchor = tslib_1.__importStar(__webpack_require__(2));
6566
8040
  const glam_sdk_1 = __webpack_require__(3);
6567
8041
  const web3_js_1 = __webpack_require__(5);
6568
- const commander_1 = __webpack_require__(36);
6569
- const fs_1 = tslib_1.__importDefault(__webpack_require__(37));
6570
- const utils_1 = __webpack_require__(38);
6571
- const drift_1 = __webpack_require__(42);
6572
- const mint_1 = __webpack_require__(43);
6573
- const meteora_1 = __webpack_require__(44);
6574
- const lst_1 = __webpack_require__(45);
6575
- const marinade_1 = __webpack_require__(46);
6576
- const klend_1 = __webpack_require__(47);
6577
- const jup_1 = __webpack_require__(48);
6578
- const integration_1 = __webpack_require__(49);
6579
- const delegate_1 = __webpack_require__(50);
8042
+ const commander_1 = __webpack_require__(38);
8043
+ const fs_1 = tslib_1.__importDefault(__webpack_require__(39));
8044
+ const utils_1 = __webpack_require__(40);
8045
+ const drift_1 = __webpack_require__(44);
8046
+ const mint_1 = __webpack_require__(45);
8047
+ const meteora_1 = __webpack_require__(46);
8048
+ const lst_1 = __webpack_require__(47);
8049
+ const marinade_1 = __webpack_require__(48);
8050
+ const klend_1 = __webpack_require__(49);
8051
+ const jup_1 = __webpack_require__(50);
8052
+ const integration_1 = __webpack_require__(51);
8053
+ const delegate_1 = __webpack_require__(52);
8054
+ const swap_1 = __webpack_require__(53);
6580
8055
  const cliConfig = utils_1.CliConfig.get();
6581
8056
  const glamClient = new glam_sdk_1.GlamClient();
6582
8057
  const txOptions = {
@@ -6601,7 +8076,7 @@ let globalOpts = { skipSimulation: false };
6601
8076
  program
6602
8077
  .name("glam-cli")
6603
8078
  .description("CLI for interacting with the GLAM Protocol")
6604
- .version("0.1.19")
8079
+ .version("0.1.21")
6605
8080
  .option("-S, --skip-simulation", "Skip transaction simulation");
6606
8081
  program
6607
8082
  .command("env")
@@ -6613,7 +8088,7 @@ program
6613
8088
  if (cliConfig.glam_state) {
6614
8089
  const vault = glamClient.getVaultPda(cliConfig.glamState);
6615
8090
  console.log("GLAM state:", cliConfig.glam_state);
6616
- console.log("Active vault:", vault.toBase58());
8091
+ console.log("Active vault:", vault.toBase58());
6617
8092
  }
6618
8093
  else {
6619
8094
  console.log("No active GLAM specified");
@@ -6845,53 +8320,7 @@ program
6845
8320
  }
6846
8321
  });
6847
8322
  });
6848
- program
6849
- .command("swap <from> <to> <amount>")
6850
- .description("Swap assets held in the vault")
6851
- .option("-m, --max-accounts <num>", "Specify max accounts allowed")
6852
- .option("-s, --slippage-bps <bps>", "Specify slippage bps")
6853
- .option("-d, --only-direct-routes", "Direct routes only")
6854
- .action(async (from, to, amount, options) => {
6855
- const statePda = cliConfig.glamState;
6856
- const { maxAccounts, slippageBps, onlyDirectRoutes } = options;
6857
- const response = await fetch("https://tokens.jup.ag/tokens?tags=verified");
6858
- const data = await response.json(); // an array of tokens
6859
- const tokenFrom = data.find((t) => t.address === from || t.symbol.toLowerCase() === from.toLowerCase());
6860
- const tokenTo = data.find((t) => t.address === to || t.symbol.toLowerCase() === to.toLowerCase());
6861
- if (!tokenFrom || !tokenTo) {
6862
- console.error("Error: cannot swap unverified token");
6863
- process.exit(1);
6864
- }
6865
- let quoteParams = {
6866
- inputMint: tokenFrom.address,
6867
- outputMint: tokenTo.address,
6868
- amount: Math.floor(parseFloat(amount) * 10 ** tokenFrom.decimals),
6869
- swapMode: "ExactIn",
6870
- slippageBps: slippageBps ? parseInt(slippageBps) : 5,
6871
- asLegacyTransaction: false,
6872
- };
6873
- if (maxAccounts) {
6874
- quoteParams = {
6875
- ...quoteParams,
6876
- maxAccounts: parseInt(maxAccounts),
6877
- };
6878
- }
6879
- if (onlyDirectRoutes) {
6880
- quoteParams = {
6881
- ...quoteParams,
6882
- onlyDirectRoutes,
6883
- };
6884
- }
6885
- console.log("Quote params:", quoteParams);
6886
- try {
6887
- const txSig = await glamClient.jupiterSwap.swap(statePda, { quoteParams }, { ...txOptions, simulate: !globalOpts.skipSimulation });
6888
- console.log(`Swapped ${amount} ${from} to ${to}: ${txSig}`);
6889
- }
6890
- catch (e) {
6891
- console.error((0, utils_1.parseTxError)(e));
6892
- process.exit(1);
6893
- }
6894
- });
8323
+ (0, swap_1.installSwapCommands)(program, glamClient, cliConfig, txOptions);
6895
8324
  const delegate = program.command("delegate").description("Manage delegates");
6896
8325
  (0, delegate_1.installDelegateCommands)(delegate, glamClient, cliConfig, txOptions);
6897
8326
  const integration = program