@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.
- package/README.md +2 -0
- package/main.js +1834 -405
- 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__(
|
|
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__(
|
|
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__(
|
|
535
|
-
const jupiter_2 = __webpack_require__(
|
|
536
|
-
const marinade_1 = __webpack_require__(
|
|
537
|
-
const wsol_1 = __webpack_require__(
|
|
538
|
-
const staking_1 = __webpack_require__(
|
|
539
|
-
const state_1 = __webpack_require__(
|
|
540
|
-
const mint_1 = __webpack_require__(
|
|
541
|
-
const kamino_1 = __webpack_require__(
|
|
542
|
-
const meteora_1 = __webpack_require__(
|
|
543
|
-
const investor_1 = __webpack_require__(
|
|
544
|
-
const price_1 = __webpack_require__(
|
|
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
|
|
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
|
|
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,
|
|
1560
|
-
const tx = await this.depositTx(new web3_js_1.PublicKey(statePda), amount, marketIndex, subAccountId,
|
|
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,
|
|
1564
|
-
const tx = await this.withdrawTx(new web3_js_1.PublicKey(statePda), amount, marketIndex, subAccountId,
|
|
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,
|
|
1568
|
-
const tx = await this.placeOrderTx(new web3_js_1.PublicKey(statePda), orderParams, subAccountId,
|
|
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,
|
|
1572
|
-
const tx = await this.modifyOrderTx(new web3_js_1.PublicKey(statePda), modifyOrderParams, subAccountId,
|
|
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,
|
|
1576
|
-
const tx = await this.cancelOrdersTx(new web3_js_1.PublicKey(statePda), marketType, marketIndex, direction, subAccountId,
|
|
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,
|
|
1580
|
-
const tx = await this.cancelOrdersByIdsTx(new web3_js_1.PublicKey(statePda), orderIds, subAccountId,
|
|
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,
|
|
1584
|
-
const tx = await this.settlePnlTx(new web3_js_1.PublicKey(statePda), marketIndex, subAccountId,
|
|
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,
|
|
1588
|
-
const tx = await this.priceDriftTx(new web3_js_1.PublicKey(statePda),
|
|
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
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
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
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1701
|
+
return {
|
|
1702
|
+
user: this.getUserPda(vault, subAccountId),
|
|
1703
|
+
userStats: this.getUserStatsPda(vault),
|
|
1704
|
+
};
|
|
1600
1705
|
}
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
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
|
-
|
|
1607
|
-
return
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
const
|
|
1613
|
-
if (!
|
|
1614
|
-
throw new Error(
|
|
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
|
-
|
|
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
|
|
1619
|
-
const
|
|
1620
|
-
|
|
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
|
-
|
|
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(
|
|
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,
|
|
1649
|
-
const
|
|
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,
|
|
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,
|
|
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,
|
|
1665
|
-
this.marketTypeEquals(marketType,
|
|
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
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
const
|
|
1674
|
-
.map((
|
|
1675
|
-
.concat(
|
|
1676
|
-
|
|
1677
|
-
|
|
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
|
|
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
|
|
1710
|
-
const
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
2043
|
+
async depositTx(glamState, amount, marketIndex = 1, subAccountId = 0, txOptions = {}) {
|
|
1806
2044
|
const glamSigner = txOptions.signer || this.base.getSigner();
|
|
1807
|
-
const
|
|
1808
|
-
const
|
|
1809
|
-
|
|
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
|
-
|
|
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
|
|
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:
|
|
1845
|
-
userTokenAccount: this.base.getVaultAta(glamState,
|
|
2089
|
+
spotMarketVault: driftVault,
|
|
2090
|
+
userTokenAccount: this.base.getVaultAta(glamState, mint, tokenProgram),
|
|
1846
2091
|
glamSigner,
|
|
1847
|
-
tokenProgram
|
|
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,
|
|
2100
|
+
async withdrawTx(statePda, amount, marketIndex = 1, subAccountId = 0, txOptions = {}) {
|
|
1859
2101
|
const glamSigner = txOptions.signer || this.base.getSigner();
|
|
1860
|
-
const
|
|
1861
|
-
const
|
|
1862
|
-
const
|
|
1863
|
-
const
|
|
1864
|
-
const
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
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,
|
|
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:
|
|
1882
|
-
userTokenAccount:
|
|
1883
|
-
driftSigner:
|
|
1884
|
-
tokenProgram
|
|
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,
|
|
2136
|
+
async placeOrderTx(glamState, orderParams, subAccountId = 0, txOptions = {}) {
|
|
1892
2137
|
const { marketIndex, marketType } = orderParams;
|
|
1893
|
-
const
|
|
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
|
|
1896
|
-
|
|
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,
|
|
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
|
|
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:
|
|
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,
|
|
2182
|
+
async cancelOrdersTx(glamState, marketType, marketIndex, direction, subAccountId = 0, txOptions = {}) {
|
|
1936
2183
|
const glamSigner = txOptions.signer || this.base.getSigner();
|
|
1937
|
-
const
|
|
1938
|
-
const
|
|
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:
|
|
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,
|
|
2199
|
+
async cancelOrdersByIdsTx(glamState, orderIds, subAccountId = 0, txOptions = {}) {
|
|
1954
2200
|
const glamSigner = txOptions.signer || this.base.getSigner();
|
|
1955
|
-
const
|
|
1956
|
-
const
|
|
1957
|
-
|
|
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:
|
|
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,
|
|
2216
|
+
async settlePnlTx(glamState, marketIndex, subAccountId = 0, txOptions = {}) {
|
|
1971
2217
|
const glamSigner = txOptions.signer || this.base.getSigner();
|
|
1972
|
-
const
|
|
1973
|
-
const
|
|
1974
|
-
|
|
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:
|
|
1982
|
-
spotMarketVault:
|
|
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,
|
|
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
|
|
1991
|
-
const
|
|
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:
|
|
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
|
-
/***/ ((
|
|
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
|
-
/*
|
|
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__(
|
|
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
|
-
/*
|
|
3659
|
+
/* 25 */
|
|
2663
3660
|
/***/ ((module) => {
|
|
2664
3661
|
|
|
2665
3662
|
module.exports = require("@marinade.finance/marinade-ts-sdk");
|
|
2666
3663
|
|
|
2667
3664
|
/***/ }),
|
|
2668
|
-
/*
|
|
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
|
-
/*
|
|
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__(
|
|
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
|
-
/*
|
|
4160
|
+
/* 28 */
|
|
3164
4161
|
/***/ ((module) => {
|
|
3165
4162
|
|
|
3166
4163
|
module.exports = require("@solana/spl-stake-pool");
|
|
3167
4164
|
|
|
3168
4165
|
/***/ }),
|
|
3169
|
-
/*
|
|
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
|
-
/*
|
|
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
|
-
/*
|
|
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__(
|
|
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) :
|
|
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
|
-
}
|
|
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
|
-
}
|
|
5116
|
+
});
|
|
4123
5117
|
});
|
|
4124
5118
|
})
|
|
4125
5119
|
.flat();
|
|
4126
5120
|
}
|
|
4127
|
-
|
|
4128
|
-
|
|
4129
|
-
|
|
4130
|
-
|
|
4131
|
-
|
|
4132
|
-
|
|
4133
|
-
|
|
4134
|
-
|
|
4135
|
-
|
|
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 }
|
|
4141
|
-
...
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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 = {
|
|
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
|
-
|
|
4200
|
-
|
|
4201
|
-
|
|
4202
|
-
|
|
4203
|
-
|
|
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
|
|
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
|
-
|
|
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],
|
|
4231
|
-
return
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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,
|
|
4269
|
-
return
|
|
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({
|
|
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({
|
|
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({
|
|
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({
|
|
4614
|
-
|
|
4615
|
-
|
|
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
|
-
/*
|
|
5771
|
+
/* 32 */
|
|
4653
5772
|
/***/ ((module) => {
|
|
4654
5773
|
|
|
4655
5774
|
module.exports = require("@coral-xyz/borsh");
|
|
4656
5775
|
|
|
4657
5776
|
/***/ }),
|
|
4658
|
-
/*
|
|
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
|
-
/*
|
|
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
|
-
/*
|
|
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.
|
|
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
|
|
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
|
-
|
|
6448
|
+
...priceKaminoIxs,
|
|
5322
6449
|
];
|
|
5323
6450
|
}
|
|
5324
6451
|
}
|
|
@@ -5326,7 +6453,7 @@ exports.PriceClient = PriceClient;
|
|
|
5326
6453
|
|
|
5327
6454
|
|
|
5328
6455
|
/***/ }),
|
|
5329
|
-
/*
|
|
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
|
|
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
|
-
/*
|
|
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
|
-
/*
|
|
6551
|
+
/* 39 */
|
|
5374
6552
|
/***/ ((module) => {
|
|
5375
6553
|
|
|
5376
6554
|
module.exports = require("fs");
|
|
5377
6555
|
|
|
5378
6556
|
/***/ }),
|
|
5379
|
-
/*
|
|
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__(
|
|
5390
|
-
const inquirer_1 = tslib_1.__importDefault(__webpack_require__(
|
|
5391
|
-
const os_1 = tslib_1.__importDefault(__webpack_require__(
|
|
5392
|
-
const path_1 = tslib_1.__importDefault(__webpack_require__(
|
|
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
|
|
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
|
-
/*
|
|
6667
|
+
/* 41 */
|
|
5490
6668
|
/***/ ((module) => {
|
|
5491
6669
|
|
|
5492
6670
|
module.exports = require("inquirer");
|
|
5493
6671
|
|
|
5494
6672
|
/***/ }),
|
|
5495
|
-
/*
|
|
6673
|
+
/* 42 */
|
|
5496
6674
|
/***/ ((module) => {
|
|
5497
6675
|
|
|
5498
6676
|
module.exports = require("os");
|
|
5499
6677
|
|
|
5500
6678
|
/***/ }),
|
|
5501
|
-
/*
|
|
6679
|
+
/* 43 */
|
|
5502
6680
|
/***/ ((module) => {
|
|
5503
6681
|
|
|
5504
6682
|
module.exports = require("path");
|
|
5505
6683
|
|
|
5506
6684
|
/***/ }),
|
|
5507
|
-
/*
|
|
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__(
|
|
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
|
|
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("
|
|
6727
|
+
.command("positions")
|
|
5551
6728
|
.description("List drift positions")
|
|
5552
6729
|
.action(async () => {
|
|
5553
6730
|
try {
|
|
5554
|
-
const { spotPositions
|
|
5555
|
-
|
|
5556
|
-
|
|
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.
|
|
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,
|
|
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.
|
|
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,
|
|
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
|
-
/*
|
|
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__(
|
|
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
|
-
/*
|
|
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__(
|
|
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
|
-
/*
|
|
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__(
|
|
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
|
-
/*
|
|
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__(
|
|
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
|
-
/*
|
|
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__(
|
|
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
|
|
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
|
|
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,
|
|
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("
|
|
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}
|
|
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
|
|
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
|
-
/*
|
|
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__(
|
|
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(
|
|
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
|
-
/*
|
|
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__(
|
|
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
|
-
/*
|
|
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__(
|
|
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
|
-
|
|
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(
|
|
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(
|
|
6503
|
-
|
|
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
|
|
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
|
-
|
|
6518
|
-
|
|
6519
|
-
|
|
6520
|
-
console.
|
|
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__(
|
|
6569
|
-
const fs_1 = tslib_1.__importDefault(__webpack_require__(
|
|
6570
|
-
const utils_1 = __webpack_require__(
|
|
6571
|
-
const drift_1 = __webpack_require__(
|
|
6572
|
-
const mint_1 = __webpack_require__(
|
|
6573
|
-
const meteora_1 = __webpack_require__(
|
|
6574
|
-
const lst_1 = __webpack_require__(
|
|
6575
|
-
const marinade_1 = __webpack_require__(
|
|
6576
|
-
const klend_1 = __webpack_require__(
|
|
6577
|
-
const jup_1 = __webpack_require__(
|
|
6578
|
-
const integration_1 = __webpack_require__(
|
|
6579
|
-
const delegate_1 = __webpack_require__(
|
|
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.
|
|
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
|