# Table of Contents - [Unknown](#unknown) - [Assets - Heaven Docs](#assets-heaven-docs) - [What is Heaven? - Heaven Docs](#what-is-heaven-heaven-docs) - [Certora Audit - Heaven Docs](#certora-audit-heaven-docs) - [No bonding curve - Heaven Docs](#no-bonding-curve-heaven-docs) - [The god flywheel - Heaven Docs](#the-god-flywheel-heaven-docs) - [Genesis - Heaven Docs](#genesis-heaven-docs) - [Brand guidelines - Heaven Docs](#brand-guidelines-heaven-docs) - [What is $LIGHT? - Heaven Docs](#what-is-light-heaven-docs) - [Intro - Heaven Docs](#intro-heaven-docs) - [Flywheel - Heaven Docs](#flywheel-heaven-docs) - [Fees - Heaven Docs](#fees-heaven-docs) - [Permissionless launches - Heaven Docs](#permissionless-launches-heaven-docs) - [Why did we build this? - Heaven Docs](#why-did-we-build-this-heaven-docs) - [Addresses - Heaven Docs](#addresses-heaven-docs) - [Permissioned fees - Heaven Docs](#permissioned-fees-heaven-docs) - [Highly profitable - Heaven Docs](#highly-profitable-heaven-docs) - [Who did we build this for? - Heaven Docs](#who-did-we-build-this-for-heaven-docs) - [Accounts - Heaven Docs](#accounts-heaven-docs) - [Standardized - Heaven Docs](#standardized-heaven-docs) - [All-in-one - Heaven Docs](#all-in-one-heaven-docs) - [Rust - Heaven Docs](#rust-heaven-docs) - [IDL - Heaven Docs](#idl-heaven-docs) --- # Unknown Error 500 Error loading page ================== An unexpected error occurred. Please [contact support](mailto:support@mintlify.com) to get help. ; --- # Assets - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation Brand Assets [​](https://docs.heaven.xyz/assets#transparent-static) Transparent (static) ------------------------------------------------------------------------------ ![lighthalo.png](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/lighthalo.png) ![darkhalo.png](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/darkhalo.png) ![lightheaven.png](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/lightheaven.png) ![darkheaven.png](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/darkheaven.png) ![lighthalotext.png](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/lighthalotext.png) ![darkhalotext.png](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/darkhalotext.png) [​](https://docs.heaven.xyz/assets#transparent-animated) Transparent (animated) ---------------------------------------------------------------------------------- The below files are low-res gifs. Access high-res transparent mov’s or webm’s [here](https://drive.google.com/drive/folders/14vLJI8Wsv0WIdCoUVrQzlmFG9fiD67mS?usp=sharing) . ![01_Heaven_Logo_Reveal_014_Black_600px.gif](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/01_Heaven_Logo_Reveal_014_Black_600px.gif "01_Heaven_Logo_Reveal_014_Black_600px.gif") ![01_Heaven_Logo_Reveal_014_White_600px.gif](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/01_Heaven_Logo_Reveal_014_White_600px.gif "01_Heaven_Logo_Reveal_014_White_600px.gif") [​](https://docs.heaven.xyz/assets#opaque-static) Opaque (static) -------------------------------------------------------------------- ![Frame 3.png](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Frame3.png) ![Frame 10.png](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Frame10.png) ![Frame 8.png](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Frame8.png) ![Frame 9.png](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Frame9.png) ![ia.png](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/ia.png) [Previous](https://docs.heaven.xyz/guidelines) [Certora Audit\ \ Next](https://docs.heaven.xyz/certora) On this page * [Transparent (static)](https://docs.heaven.xyz/assets#transparent-static) * [Transparent (animated)](https://docs.heaven.xyz/assets#transparent-animated) * [Opaque (static)](https://docs.heaven.xyz/assets#opaque-static) Assistant Responses are generated using AI and may contain mistakes. --- # What is Heaven? - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation About heaven What is Heaven? Heaven is an AMM and launchpad designed to house great ideas on Solana. One place for _everything_ to live, from memes to companies. Heaven is a highly profitable This section is non-technical. If you want to jump into the codebase, you can [head here](https://docs.heaven.xyz/sdk/quickstart/rust) . Below are some quick access points for this section: [Why did we build this?\ ----------------------\ \ _Another_ launchpad… unless?](https://docs.heaven.xyz/why) [Who did we build this for?\ --------------------------\ \ Tldr: _everyone_.](https://docs.heaven.xyz/who) [Features\ --------\ \ What does Heaven actually do?](https://docs.heaven.xyz/together) [$LIGHT\ ------\ \ Heaven’s native token.](https://docs.heaven.xyz/light) [Previous](https://docs.heaven.xyz/intro) [Why did we build this?\ \ Next](https://docs.heaven.xyz/why) Assistant Responses are generated using AI and may contain mistakes. --- # Certora Audit - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation Security Certora Audit Find a downloadable PDF [here](https://doc-asset.heaven.xyz/Heaven-Certora-Security-Assessment.pdf) . ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0001.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0001.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0002.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0002.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0003.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0003.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0004.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0004.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0005.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0005.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0006.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0006.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0007.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0007.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0008.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0008.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0009.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0009.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0010.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0010.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0011.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0011.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0012.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0012.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0013.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0013.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0014.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0014.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0015.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0015.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0016.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0016.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0017.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0017.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0018.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0018.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0019.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0019.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0020.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0020.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0021.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0021.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0022.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0022.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0023.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0023.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0024.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0024.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0025.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0025.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0026.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0026.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0027.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0027.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0028.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0028.jpg) ![Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0029.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/Heaven_Certora_Security_Assessment_Final_v2_Report_June_2025_page-0029.jpg) [Previous\ \ AssetsAll of the heaven iconography, both static and animated.](https://docs.heaven.xyz/assets) Assistant Responses are generated using AI and may contain mistakes. --- # No bonding curve - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation Features No bonding curve Pump’s original bonding curve mechanism was a genius way to bootstrap liquidity without requiring any LP funding from the deployer. At a certain threshold, the bonding curve would migrate over to Raydium and add real LP to a pool. **When you own the AMM, none of this is required.** Heaven uses a small amount of “virtual SOL” to set the floor for all launches. **Here’s how it works:** Each pool on Heaven moves algorithmically as though it was seeded with 35 SOL, even though each pool is free to launch. No one can “sell into” the virtual SOL in the LP, as it marks the floor for every new launch. This means that all pools have enough liquidity to begin trading, similar to as if they were trading on a standard bonding curve. The difference is that there is no need to “migrate” on to a different AMM. Pools start trading on Heaven’s AMM from day 1. With this mechanism, creators can buy as much dev supply as they want (the $LIGHT TGE happened on these very rails). It also means that users can pay for dex immediately after launching. There is still a “virtual migration” cap set at $100k, so that visualization tools like Axiom’s Pulse, Photon’s memescope, or even Heaven’s own [ideas page](https://heaven.xyz/ideas) can function in a way that people are familiar with. Ultimately though, all pairs are trading directly on Heaven’s AMM immediately. [​](https://docs.heaven.xyz/curve#lp-breakdown) LP breakdown --------------------------------------------------------------- **We are still experimenting with the optimal amount of opening virtual SOL for each LP on Heaven**. The LP ratio can easily be scaled up or down by changing the starting SOL balance for each pool. More SOL means that tokens will have thicker LP to marketcap ratios. Currently, this is a breakdown of how LP the mc ratio scales: | Pool SOL Balance | USD Value of Pool | Pool % Left | Market Cap | | --- | --- | --- | --- | | 35 | $12,600.00 | 100.00% | $6,300.00 | | 115 | $41,400.00 | 30.43% | $68,014.29 | | 200 | $72,000.00 | 17.50% | $205,714.29 | | 300 | $108,000.00 | 11.67% | $462,857.14 | | 400 | $144,000.00 | 8.75% | $822,857.14 | | 500 | $180,000.00 | 7.00% | $1,285,714.29 | | 600 | $216,000.00 | 5.83% | $1,851,428.57 | | 700 | $252,000.00 | 5.00% | $2,520,000.00 | | 800 | $288,000.00 | 4.38% | $3,291,428.57 | | 900 | $324,000.00 | 3.89% | $4,165,714.29 | | 1000 | $360,000.00 | 3.50% | $5,142,857.14 | | 1100 | $396,000.00 | 3.18% | $6,222,857.14 | | 1200 | $432,000.00 | 2.92% | $7,405,714.29 | | 1300 | $468,000.00 | 2.69% | $8,691,428.57 | | 1400 | $504,000.00 | 2.50% | $10,080,000.00 | | 1500 | $540,000.00 | 2.33% | $11,571,428.57 | | 1600 | $576,000.00 | 2.19% | $13,165,714.29 | | 1700 | $612,000.00 | 2.06% | $14,862,857.14 | | 1800 | $648,000.00 | 1.94% | $16,662,857.14 | | 1900 | $684,000.00 | 1.84% | $18,565,714.29 | | 2000 | $720,000.00 | 1.75% | $20,571,428.57 | [Previous](https://docs.heaven.xyz/profit) [Fees\ \ Next](https://docs.heaven.xyz/fees) On this page * [LP breakdown](https://docs.heaven.xyz/curve#lp-breakdown) Assistant Responses are generated using AI and may contain mistakes. --- # The god flywheel - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation About $LIGHT The god flywheel It’s not enough just to build the flywheel machine. We need to put it to use. **100% of the revenue earned by Heaven as a protocol will go towards buying back $LIGHT from day 1 onwards**. The protocol earns trading fees from all swaps on the platform (see our fees [here](https://docs.heaven.xyz/fees) ). 100% of the fees collected by Heaven will buy and burn [$LIGHT](https://docs.heaven.xyz/light) programmatically in realtime, forever. Heaven as a project will earn money the same way we propose other projects earn money on our platform, through $LIGHT’s trading fees and our tokens vesting. Directly leveraging Heaven’s creator mechanisms, and aligning us fully with the success of $LIGHT. **Why are we doing this?** Because the ethos you hold as you create a launchpad attracts devs who hold a similar ethos. It is very hard to shake that bond once it has been made. Pump’s founding ethos was: “_the most fun place on the internet_”. Believe’s founding ethos was: “_launch a memecoin for your business_”. _**Heaven’s founding ethos is: “great ideas live here”.**_ **A flywheel is not an afterthought. It’s the entire reason that Heaven exists**. It’s everything that we believe in. That is why there is a felt difference in how Heaven _feels_ as a project vs. everything else in the market. All our protocol revenue goes back into [$LIGHT](https://x.com/search?q=%24LIGHT&src=cashtag_click) , forever. **Because if we’re not creating the god flywheel for our native token then what kind of an example do we set as a launchpad?** [Previous](https://docs.heaven.xyz/light) [GenesisAll of the details for the $LIGHT ICO.\ \ Next](https://docs.heaven.xyz/ico) Assistant Responses are generated using AI and may contain mistakes. --- # Genesis - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation About $LIGHT Genesis The Genesis Initial Coin Offering is how $LIGHT enters into the world. An ICO that gives everyone an equal opportunity to purchase $LIGHT. It also marks the opening of Heaven as a platform. ### [​](https://docs.heaven.xyz/ico#terms) Terms * Sale starts at a $0 mc * Opening market cap = the total $ amount contributed to the sale * $1 contributed = $1 worth of $LIGHT at market open * Sale lasts for a maximum of 48h * **Sale can be closed at any time within these 48h by the team** * Partial refunds for **all contributors** may be issued after the sale in USDC-SOL, to reduce the total amount raised / opening mc. * Partial refunds to **select contributors** who purchased large amounts of supply may be issued to reduce their holdings and create better distribution for the launch. ### [​](https://docs.heaven.xyz/ico#timing) Timing * Genesis ICO begins on Wednesday, August 6th at 15:00 UTC ([genesis.heaven.xyz](https://genesis.heaven.xyz/) ). * Ends on Friday, August 8th at 15:00 UTC **OR** whenever the team chooses to end the sale. * $LIGHT will begin trading on Monday, August 11th, 2025 . * Heaven as a launchpad opens 72h hours after $LIGHT begins trading. ### [​](https://docs.heaven.xyz/ico#how-to-participate) How to participate There is no “connect wallet” or hot wallet signing necessary to participate in the Genesis ICO. At the beginning of the sale, you enter your receiving SOL wallet address. This is the wallet address that will receive your $LIGHT tokens (and any proportionate refunds) to. Then, you receive a dedicated address to send SOL/USDC/USDT to. This wallet address is linked to your receiving wallet. Any funds sent to this receiving address will mark your contribution to the the ICO. ### [​](https://docs.heaven.xyz/ico#tokenomics-and-vesting) Tokenomics and vesting For more information on $LIGHT, please head [here](https://docs.heaven.xyz/light) . ### [​](https://docs.heaven.xyz/ico#why-launch-like-this%3F-who-is-the-marginal-buyer%3F) Why launch like this? Who is the marginal buyer? An uncapped ICO **that we are able to end at any time** is the best possible route to allow the market to find a fair opening price for $LIGHT and ensure even distribution amongst sale participants. There are a number of dynamics within the sale to incentivize marginal buy pressure on market open: 1. **We can end the sale at any time**. The sale can last anywhere from 10 minutes to 72h. Many people who are waiting to see where the price is headed before buying will be sidelined by the sale closing early, and forced to buy on market open. 2. **We can issue proportionate refunds in SOL**. The team holds the right to partially refund everyone proportionately to bring the total amount raised (and opening mc) down. This incentivizes buy pressure from existing sale participants on market open.
 3. **“It’s just another launchpad”**. Heaven is far from a consensus trade or platform, and many people will initially fade $LIGHT for that reason. Once the platform has launched and is generating revenue, those who initially faded will be sidelined and circle back. [Previous](https://docs.heaven.xyz/god) [Rust\ \ Next](https://docs.heaven.xyz/sdk/quickstart/rust) On this page * [Terms](https://docs.heaven.xyz/ico#terms) * [Timing](https://docs.heaven.xyz/ico#timing) * [How to participate](https://docs.heaven.xyz/ico#how-to-participate) * [Tokenomics and vesting](https://docs.heaven.xyz/ico#tokenomics-and-vesting) * [Why launch like this? Who is the marginal buyer?](https://docs.heaven.xyz/ico#why-launch-like-this%3F-who-is-the-marginal-buyer%3F) Assistant Responses are generated using AI and may contain mistakes. --- # Brand guidelines - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation Brand Brand guidelines ![Brand Guidelines 1 Pn](https://doc-asset.heaven.xyz/images/1brand-guidelines.png) ![Brand Guidelines 2 Pn](https://doc-asset.heaven.xyz/images/2brand-guidelines.png) ![Brand Guidelines 3 Pn](https://doc-asset.heaven.xyz/images/3brand-guidelines.png) ![Brand Guidelines 4 Pn](https://doc-asset.heaven.xyz/images/4brand-guidelines.png) ![Brand Guidelines 5 Pn](https://doc-asset.heaven.xyz/images/5brand-guidelines.png) ![Brand Guidelines 6 Pn](https://doc-asset.heaven.xyz/images/6brand-guidelines.png) ![Brand Guidelines 7 Pn](https://doc-asset.heaven.xyz/images/7brand-guidelines.png) ![Brand Guidelines 8 Pn](https://doc-asset.heaven.xyz/images/8brand-guidelines.png) ![Brand Guidelines 9 Pn](https://doc-asset.heaven.xyz/images/9brand-guidelines.png) ![Brand Guidelines 10 Pn](https://doc-asset.heaven.xyz/images/10brand-guidelines.png) ![Brand Guidelines 11 Pn](https://doc-asset.heaven.xyz/images/11brand-guidelines.png) ![Brand Guidelines 12 Pn](https://doc-asset.heaven.xyz/images/12brand-guidelines.png) ![Brand Guidelines 13 Pn](https://doc-asset.heaven.xyz/images/13brand-guidelines.png) ![Brand Guidelines 14 Pn](https://doc-asset.heaven.xyz/images/14brand-guidelines.png) ![Brand Guidelines 15 Pn](https://doc-asset.heaven.xyz/images/15brand-guidelines.png) ![Brand Guidelines 17 Pn](https://doc-asset.heaven.xyz/images/17brand-guidelines.png) ![Brand Guidelines 18 Pn](https://doc-asset.heaven.xyz/images/18brand-guidelines.png) ![Brand Guidelines 19 Pn](https://doc-asset.heaven.xyz/images/19brand-guidelines.png) ![Brand Guidelines 20 Pn](https://doc-asset.heaven.xyz/images/20brand-guidelines.png) ![Brand Guidelines 21 Pn](https://doc-asset.heaven.xyz/images/21brand-guidelines.png) ![Brand Guidelines 22 Pn](https://doc-asset.heaven.xyz/images/22brand-guidelines.png) ![Brand Guidelines 23 Pn](https://doc-asset.heaven.xyz/images/23brand-guidelines.png) [Previous](https://docs.heaven.xyz/sdk/contract/accounts) [AssetsAll of the heaven iconography, both static and animated.\ \ Next](https://docs.heaven.xyz/assets) Assistant Responses are generated using AI and may contain mistakes. --- # What is $LIGHT? - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation About $LIGHT What is $LIGHT? $LIGHT is Heaven’s native token. It is the first token to launch on Heaven, and will be deployed through Heaven’s [Genesis ICO](https://docs.heaven.xyz/ico) . $LIGHT is an invitation to take back our industry. 100% of Heaven’s revenue programmatically repurchases $LIGHT in realtime from the open market and burns it. We call this [the god flywheel](https://docs.heaven.xyz/god) . ### [​](https://docs.heaven.xyz/light#token-properties) Token Properties | Ticker | **LIGHT** | | --- | --- | | Address | **N/A** | | Supply Cap | **1,000,000,000** | | Mintable | **No** | | Deployed on | **Heaven** | ### [​](https://docs.heaven.xyz/light#token-distribution) Token Distribution **Genesis ICO (50%)**: For the public during [Heaven’s genesis](https://genesis.heaven.xyz/) . **Team (20%)**: For Heaven’s founders and team members. **Community (10%)**: For Heaven’s incubator program & community incentives. **Investors (5%)**: For investors & advisors. **Liquidity (5%)**: For seeding Heaven’s initial DEX liquidity as well as future CEX liquidity. **Foundation (10%)**: For supporting the ongoing operation of the Heaven Labs Foundation (salaries, audits, listings, etc). **Foundation spending will be disclosed on a quarterly basis.** ### [​](https://docs.heaven.xyz/light#vesting-schedule-original) Vesting Schedule - Original The original $LIGHT vesting schedule is shown below. This remains the way that all vests are technically setup on Streamflow today. ### [​](https://docs.heaven.xyz/light#vesting-schedule-modified) Vesting Schedule - Modified The modified vesting schedule pledges the team’s vested tokens each to a cliff vesting structure. On the first of each month, a new subsequent vest will be created by the team to adhere to this structure, outlined below: **Genesis ICO (50%)** - Fully vested upfront **Team (20%)** - Two year linear vest, one year cliff ([vesting](https://app.streamflow.finance/contract/solana/mainnet/9VdJcu4sYQjDpqi9gqQJGz8mNeoTUXPo16KehWrfUw2c) ). On the first of each month the team will re-vest tokens to adhere to this structure. **Community (10%)** - Two year linear vest ([vesting](https://app.streamflow.finance/contract/solana/mainnet/6NDwo1qiTJNNYtQ3vc6xNZHhgP7U6Kis6bM8VpcEgFDx) ). **Investors (5%)** - Two year linear vest ([2.5% colosseum vest](https://app.streamflow.finance/contract/solana/mainnet/HFWcUmT5L96ksTWKoNPtwutjqfhUzJTpfY7J64sCCKa3) , [1.7% vested to strategic pool 1](https://app.streamflow.finance/contract/solana/mainnet/J5MGRQnsYZGgU9m6Noa285p6VmCqBypCmVw58Xbt6ZX7) , [0.3% to be distributed manually by the team](https://app.streamflow.finance/contract/solana/mainnet/9VdJcu4sYQjDpqi9gqQJGz8mNeoTUXPo16KehWrfUw2c) , [0.1% vested to strategic pool 2](https://app.streamflow.finance/contract/solana/mainnet/7Cjmmv8RUbGBBDhgyAEFNTMiusnCk9GiMwRCCtx1SKt8) ). **Liquidity (5%)** - 2.5% unlocked upfront. 2.5% locked until required for CEX listings ([vesting](https://app.streamflow.finance/contract/solana/mainnet/AFzMefWhEpPtVNkictcp3CKJszft4wxCSn4AS8KNWfGP) ). **Foundation (10%)** - Two year linear vest ([vesting](https://app.streamflow.finance/contract/solana/mainnet/7kCivVZVMF1v4PXRUgi4mrDk9TMWAGH3yjddW95qSGqH) ). [​](https://docs.heaven.xyz/light#supply-query-api) Supply Query API ----------------------------------------------------------------------- Given that $LIGHT is deflationary due to the [god flywheel](https://docs.heaven.xyz/god) , and there are multiple different tranches of supply vesting, Heaven has built an endpoint that outputs the total supply, circulating supply, and locked supply for $LIGHT. That endpoint can be viewed [here](https://supply.api.heaven.xyz/supply?mint=LiGHtkg3uTa9836RaNkKLLriqTNRcMdRAhqjGWNv777) . [​](https://docs.heaven.xyz/light#access) Access --------------------------------------------------- Below are some quick access points for this section: [The god flywheel\ ----------------\ \ The 100% buyback flywheel that powers $LIGHT.](https://docs.heaven.xyz/god) [The genesis ICO\ ---------------\ \ The Initial Coin Offering to launch $LIGHT into the world.](https://docs.heaven.xyz/ico) [Previous](https://docs.heaven.xyz/fees) [The god flywheel\ \ Next](https://docs.heaven.xyz/god) On this page * [Token Properties](https://docs.heaven.xyz/light#token-properties) * [Token Distribution](https://docs.heaven.xyz/light#token-distribution) * [Vesting Schedule - Original](https://docs.heaven.xyz/light#vesting-schedule-original) * [Vesting Schedule - Modified](https://docs.heaven.xyz/light#vesting-schedule-modified) * [Supply Query API](https://docs.heaven.xyz/light#supply-query-api) * [Access](https://docs.heaven.xyz/light#access) Assistant Responses are generated using AI and may contain mistakes. --- # Intro - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation ![](https://doc-asset.heaven.xyz/logo.gif) [​](https://docs.heaven.xyz/intro#meet-heaven) Meet Heaven ============================================================= The final launchpad & AMM on Solana. [🪽](https://docs.heaven.xyz/about) ### [](https://docs.heaven.xyz/about) [](https://docs.heaven.xyz/about) [​](https://docs.heaven.xyz/intro#what-is-heaven%3F) What is Heaven? What Heaven is, and why we built it. [💡](https://docs.heaven.xyz/light) ### [](https://docs.heaven.xyz/light) [](https://docs.heaven.xyz/light) [​](https://docs.heaven.xyz/intro#what-is-%24light%3F) What is $LIGHT? Understanding Heaven’s native token. [⚡️](https://docs.heaven.xyz/sdk/quickstart/rust) ### [](https://docs.heaven.xyz/sdk/quickstart/rust) [](https://docs.heaven.xyz/sdk/quickstart/rust) [​](https://docs.heaven.xyz/intro#quickstart) Quickstart Begin interacting with Heaven’s program. [🛠️](https://docs.heaven.xyz/sdk/contract/idl) ### [](https://docs.heaven.xyz/sdk/contract/idl) [](https://docs.heaven.xyz/sdk/contract/idl) [​](https://docs.heaven.xyz/intro#developers) Developers Home to all developers building on Heaven. [What is Heaven?\ \ Next](https://docs.heaven.xyz/about) On this page * [Meet Heaven](https://docs.heaven.xyz/intro#meet-heaven) * [What is Heaven?](https://docs.heaven.xyz/intro#what-is-heaven%3F) * [What is $LIGHT?](https://docs.heaven.xyz/intro#what-is-%24light%3F) * [Quickstart](https://docs.heaven.xyz/intro#quickstart) * [Developers](https://docs.heaven.xyz/intro#developers) Assistant Responses are generated using AI and may contain mistakes. --- # Flywheel - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation Features Flywheel Every [“creator” token](https://docs.heaven.xyz/permissioned) on Heaven gets its own flywheel address. If a creator enables the flywheel, everything sent to that address will be aped into their token and burned programmatically. If their native token is sent, it will be burnt directly. It’s time to move on from governance and token gating “utilities”, and step into the era of revenue. Heaven will forge a new path forward for builders, displaying data for each project that has enabled their flywheel directly on Heaven’s screener, with an accessible endpoint for other screeners and terminals to pull continuous buyback data from tokens. We will lead the charge by using the [flywheel mechanism ourselves](https://docs.heaven.xyz/god) with Heaven’s native token [$LIGHT](https://docs.heaven.xyz/light) . This is just the beginning of the flywheel machine, and the builder API for _real_ internet capital markets. [Previous](https://docs.heaven.xyz/permissioned) [Highly profitable\ \ Next](https://docs.heaven.xyz/profit) Assistant Responses are generated using AI and may contain mistakes. --- # Fees - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation Features Fees There are two categories of fees on Heaven: **protocol fees** ([which go to $LIGHT’s flywheel](https://docs.heaven.xyz/god) ), and **creator fees**. These fees change based on whether a coin is [categorized](https://docs.heaven.xyz/permissioned) as a “community” or a “creator” coin. Let’s break down both fee structures separately: ### [​](https://docs.heaven.xyz/fees#protocol-fees) Protocol fees | Action | Fee | | --- | --- | | Create a coin | Free | | When a coin is trading < $100k mc | 1% protocol fee | | When a community coin is trading > $100k mc | 0.25% protocol fee | | When a creator coin is trading > $100k mc | 0.5% protocol fee | ### [​](https://docs.heaven.xyz/fees#creator-fees) Creator fees | Action | Fee | | --- | --- | | Creator fee for a “community” coin | 0.1% | | Creator fee for a “creator” coin | 1% | ### [​](https://docs.heaven.xyz/fees#transfer-fees) Transfer fees There is a 1.5% transfer fee on $LIGHT. This will be disabled at the end of epoch 838 (Sunday, August 24th). Currently, when you swap $LIGHT on Heaven’s pools, this transfer fee does not apply, Heaven reverts the fee in the same transaction and sends the tokens back to you, and takes the fee from the SOL side of the transaction. All fees collected are re-invested back into [the god flywheel](https://docs.heaven.xyz/god) . ### [​](https://docs.heaven.xyz/fees#additional-links) Additional links To learn more about how coins are categorized as “creator”, or “community”, head [here](https://docs.heaven.xyz/permissioned) . Heaven doesn’t have any LP fees for primary pool providers. Find out why here. [Previous](https://docs.heaven.xyz/curve) [What is $LIGHT?A deep dive into everything regarding Heaven's native token, $LIGHT.\ \ Next](https://docs.heaven.xyz/light) On this page * [Protocol fees](https://docs.heaven.xyz/fees#protocol-fees) * [Creator fees](https://docs.heaven.xyz/fees#creator-fees) * [Transfer fees](https://docs.heaven.xyz/fees#transfer-fees) * [Additional links](https://docs.heaven.xyz/fees#additional-links) Assistant Responses are generated using AI and may contain mistakes. --- # Permissionless launches - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation Features Permissionless launches Every token launch on Heaven is free and takes under five seconds. We do not monitor or restrict launches. The more new deploys there are, the less room there is for AFK snipes to be profitable. [Previous](https://docs.heaven.xyz/standardized) [Permissioned fees\ \ Next](https://docs.heaven.xyz/permissioned) Assistant Responses are generated using AI and may contain mistakes. --- # Why did we build this? - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation About heaven Why did we build this? The bonding curve is an incredible mechanism to bootstrap ideas for free and to launch them out into the world. It also has _literally no moat_. Since the development of pump.fun, there have been hundreds of launchpads who have cloned their mechanism. Meteora and Raydium have made it easy for anyone to spin up a launchpad in a few days. This “leasing” model has created a much more cabal environment, as fragmented launchpads inject into their ecosystem coins to try to stick out and get noticed. At times it feels as though much of the hard work that pump did to dethrone the cabal and low float vc launches is slowly unravelling. **Heaven is a call back to unity. A fresh start.** We are not another AMM wrapper, we are an AMM _and_ a wrapper. A full stack ecosystem to launch ideas into the world with [100% of protocol revenues flowing back into our token $LIGHT, forever](https://docs.heaven.xyz/light) . We’re here to take on the world’s largest challenges for new asset creation. Building our own AMM from scratch offers us far more precision to do so. How do we _really_ tackle snipers, and bundling, and pvp, while still preserving the raw free market nature of the trenches, and the anonymity of onchain? **Heaven is a home for projects, memes, and art. A single place for great ideas to live.** [Previous](https://docs.heaven.xyz/about) [Who did we build this for?\ \ Next](https://docs.heaven.xyz/who) Assistant Responses are generated using AI and may contain mistakes. --- # Addresses - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation Protocol Addresses The current address is only temporary meant for integration testing and development purposes. It is not the final address for the Heaven AMM on Solana. The final address will be announced in the future. ### [​](https://docs.heaven.xyz/sdk/contract/addresses#mainnet) Mainnet | Description | Address | | --- | --- | | Heaven AMM | GgE4QoiM8VYoQNZkiNLHNbzXEkKyynzsApC8BvBY4b1V | | Chainlink SOL/USD Feed | CH31Xns5z3M1cTAbKW34jcxPPciazARpijcHj9rxtemt | | Chainlink Program | HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny | [Previous](https://docs.heaven.xyz/sdk/quickstart/rust) [IDLFor advanced users, you may want to use the IDL to interact with the Heaven program directly.\ \ Next](https://docs.heaven.xyz/sdk/contract/idl) On this page * [Mainnet](https://docs.heaven.xyz/sdk/contract/addresses#mainnet) Assistant Responses are generated using AI and may contain mistakes. --- # Permissioned fees - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation Features Permissioned fees This section is solely speaking about deployer fees, not protocol fees. If you want learn more about Heaven’s full fee structure, [head here](https://docs.heaven.xyz/fees) . A creator fee is a necessary component for legitimate ideas to get off the ground and get funding without having to sell supply. But it doesn’t make sense for the original creator to earn fees on a community takeover. It also doesn’t make sense to have scams or larp launches earning creator fees. This is where our permissioned fee structure comes in. > _“Permissionless launches, permissioned fees” - Ghandi_ _Here’s how it works:_ Each launch on heaven that passes $100k in volume is reviewed and grouped into three distinct categories by our admins: It’s important to note that anyone can launch instantly on Heaven without restrictions, and the token will continue to trade throughout the following review process. * **“Creator”** - There is an actual builder, team, or artist behind the coin. A 1% trading fee goes to the creator in SOL. * **“Community / meme”** - A meme that was spawned organically (ex: a tiktok trend), there is no creator or team behind it. A 0.1% trading fee goes to the creator in SOL. * **“Blocked”** - A larp or scam token designed to purely extract value from the ecosystem. 100% of the collected creator fees go towards [$LIGHT buybacks](https://docs.heaven.xyz/god) . ### [​](https://docs.heaven.xyz/permissioned#self-categorization) Self-categorization When someone is launching on Heaven, the deployer chooses whether to categorize their token as “Creator” or “Community”. **If they categorize their launch as “Creator”, then the above review process begins and the coin receives an “In review” tag**. If this is the case, the 1% creator fee is held back for the creator by Heaven’s contract, but they are not able to access it. **After the review is complete, the launch is grouped into one of the three categories**: * **If the launch is categorized as “Creator”**: the 1% in [fees collected](https://docs.heaven.xyz/fees) are released and the creator can claim fees ongoing, or even route a portion of them back towards the flywheel address. * **If the launch is categorized as “Community”**: 90% of the initial fees that were collected are go back into that coin’s [flywheel address](https://docs.heaven.xyz/flywheel) , repurchasing and burning the token. The remaining 10% of fees ([a 0.1% tax](https://docs.heaven.xyz/fees) ) is then claimable by the deployer of the coin, and that 0.1% fee is then made available to claim ongoing. **If they categorize their launch as “Community”, then they skip this review process entirely**. This is useful for tools like RapidLaunch to have their launches auto-categorized as memes before deploying, ensuring that excess fees are not collected for attention coins right away. ### [​](https://docs.heaven.xyz/permissioned#%E2%80%9Dcreator-%E2%80%9D-%E2%89%A0-high-quality) ”Creator ” ≠ high quality **Being categorized as a “creator” is not a safety check or stamp of approval from Heaven**. It simply means that we have seen proof on the project’s X or website that shows that has been deployed by the actual team, artist, or builder that it’s claiming to be deployed by. After that, the fees are released. ### [​](https://docs.heaven.xyz/permissioned#fee-routing) Fee routing As a bonus, if someone launches a coin for an artist’s work that goes viral (like the trencher and [@grizzle\_art](https://x.com/grizzle_art) ), a permissioned fee structure allows us to route the creator tax to the actual artist’s wallet. That means that with a 1% creator tax (in a vacuum with the same amount of volume), Grizz would’ve earned over $790k from her TRENCHER artpiece. Instead she earned nothing while the fnf’s ate off of her art. I think Heaven’s permissioned fee structure will empower many artists this way, and it’s something we’re really looking forward to enabling. ### [​](https://docs.heaven.xyz/permissioned#summary) Summary To sum up, this categorization system means that anyone can launch on Heaven, but devs need to show that they are the creator, team, or artist behind the project to get access to the project’s primary creator fees, otherwise the project is deemed a “community” coin. This helps us to block fees for illegitimate devs, and protect creators. It also ensures that memes are able to live on Heaven with the same fee structure as other launchpads. ![permissioned.jpg](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/permissioned.jpg) [Previous](https://docs.heaven.xyz/permissionless) [Flywheel\ \ Next](https://docs.heaven.xyz/flywheel) On this page * [Self-categorization](https://docs.heaven.xyz/permissioned#self-categorization) * [”Creator ” ≠ high quality](https://docs.heaven.xyz/permissioned#%E2%80%9Dcreator-%E2%80%9D-%E2%89%A0-high-quality) * [Fee routing](https://docs.heaven.xyz/permissioned#fee-routing) * [Summary](https://docs.heaven.xyz/permissioned#summary) Assistant Responses are generated using AI and may contain mistakes. --- # Highly profitable - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation Features Highly profitable [​](https://docs.heaven.xyz/profit#full-stack) Full stack ------------------------------------------------------------ Heaven is not just a launchpad, it is also a closed-loop AMM. This means that [the god flywheel](https://docs.heaven.xyz/god) earns typical launchpad fees, _and_ typical AMM fees. “Wrapper” launchpads that are built on top of existing AMM’s need to charge fees on top of what the AMM is charging. Instead, by [owning every aspect of the stack](https://docs.heaven.xyz/together) , **Heaven earns 5-10x more revenue per dollar of volume** when compared with other “wrapper” launchpads, **without passing on any of the additional fees to users**. [​](https://docs.heaven.xyz/profit#no-lp-fees) No LP fees ------------------------------------------------------------ There are no LP fees on Heaven’s pools. Instead, Heaven’s pools naturally have a thicker initial LP to market cap ratio than pools on Bonk or Pump. Instead of relying on volume to thicken a pool as it’s traded, that pool is algorithmically thicker on Heaven. Why do this, and what does it mean for protocol profitability? ### [​](https://docs.heaven.xyz/profit#why-do-this%3F) Why do this? LP fees were initially implemented on Curve and Uniswap, where there was a vision for global collective liquidity to be bootstrapped and provided by token holders. In todays age, LP typically comes from a singular source for new token deploys, yet the LP fee has remained enshrined in existing AMM systems as a relic of the past. When you deploy on Heaven, a significant amount of LP is then seeded and burned upon token creation with a relatively thick LP to market cap ratio. In this case there is no need for additional LPs. The token has plenty of LP to work with in the first place. Many people have been trained to immediately equate “thicker LP” with “LP fees”, but the two of these are mutually exclusive. By [algorithmically setting the “initial LP” in a pool](https://docs.heaven.xyz/curve) , Heaven is able to dictate the thickness of that pool algorithmically. It removes the guesswork, and ensures that there is adequate LP throughout the token’s lifespan. ### [​](https://docs.heaven.xyz/profit#how-does-this-impact-heaven-as-a-protocol%3F) How does this impact Heaven as a protocol? Because Heaven isn’t paying any additional LP fees, and instead opting to have an [algorithmically thicker pool](https://docs.heaven.xyz.curve/) , this allows the standard 0.2% LP fee charged by AMMs today to instead be taken and [reinvested back into $LIGHT’s god flywheel](https://docs.heaven.xyz/god) . The impacts of this cannot be understated. After graduation, Pump earns 0.05% of every trade on PumpSwap, while Heaven earns 0.25%. This is means that Heaven is 5x more profitable than Pump on “graduated” pairs, with no additional net fees being passed to the end user while retaining a thick LP to market cap ratio algorithmically, rather than by volume. This scaled even more aggressively when compared with Bonk. An additional benefit of this fee structure is that it aligns Heaven’s incentives for tokens launched on Heaven to be successful. Heaven doesn’t _need_ there to be a ton of new pairs to be profitable. [​](https://docs.heaven.xyz/profit#additional-revenue-streams) Additional revenue streams -------------------------------------------------------------------------------------------- ### [​](https://docs.heaven.xyz/profit#creator-tokens) Creator tokens Due to Heaven’s permissioned fee structure, creator tokens have a 0.5% protocol fee rather than a 0.25% fee. Heaven provides far more support and functionality for Creator tokens and this is reflected here. This means 2x more money flowing back towards [the god flywheel](https://docs.heaven.xyz/god) . ### [​](https://docs.heaven.xyz/profit#a-1%25-fee-when-a-token-is-less-than-%24100k) A 1% fee when a token is less than $100k Heaven’s 1% “pre-bond” fee kicks in whenever a pair is trading under a $100k marketcap, not just before the pair “bonds”. Traders are more willing to pay within this range due to high volatility, so this shouldn’t be a single binary fee switch that turns off. By implementing tiered fees, tokens that are ranging at lower levels after graduating, are generating more money for Heaven’s flywheel. [​](https://docs.heaven.xyz/profit#to-sum) To sum ---------------------------------------------------- Heaven earns a significant amount more money than traditional AMM’s and launchpads on the market today, without passing on any additional net fees to the end user, while [algorithmically ensuring that LP is healthy](https://docs.heaven.xyz/curve) on all Heaven pairs. All of this additional margin goes back towards [the god flywheel](https://docs.heaven.xyz/god) . [Previous](https://docs.heaven.xyz/flywheel) [No bonding curve\ \ Next](https://docs.heaven.xyz/curve) On this page * [Full stack](https://docs.heaven.xyz/profit#full-stack) * [No LP fees](https://docs.heaven.xyz/profit#no-lp-fees) * [Why do this?](https://docs.heaven.xyz/profit#why-do-this%3F) * [How does this impact Heaven as a protocol?](https://docs.heaven.xyz/profit#how-does-this-impact-heaven-as-a-protocol%3F) * [Additional revenue streams](https://docs.heaven.xyz/profit#additional-revenue-streams) * [Creator tokens](https://docs.heaven.xyz/profit#creator-tokens) * [A 1% fee when a token is less than $100k](https://docs.heaven.xyz/profit#a-1%25-fee-when-a-token-is-less-than-%24100k) * [To sum](https://docs.heaven.xyz/profit#to-sum) Assistant Responses are generated using AI and may contain mistakes. --- # Who did we build this for? - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation About heaven Who did we build this for? ### [​](https://docs.heaven.xyz/who#for-projects) For projects In the future, it will be as easy to create novel software as it is to write a post on X. In a world where it takes no time or money to build a great product, a company’s success will ultimately be predicated on their distribution and ability to communicate. It will eventually become the norm for builders to launch a coin at the outset of their project. Why? Simply put, coins solve most of the problems that the builders of tomorrow will face. Launching a coin provides projects with: 1. Immediate initial funding through the trading fees on their launch. 2. Instant global feedback and attention on their idea from engaged speculators. 3. Far better product retention by turning users into owners. Heaven will pioneer this future into existence. By launching with a [100% flywheel](https://docs.heaven.xyz/god) , and equipping projects who launch on heaven with [their own flywheels](https://docs.heaven.xyz/flywheel) , we’re positioned ahead of the inevitable shift towards more onchain funding and distribution of net new assets. But companies are only one part of Heaven’s vision. We believe it is imperative for Heaven to also become the go-to place to deploy memes. ### [​](https://docs.heaven.xyz/who#for-memes) For memes During the “AI meta” of 2024, we saw a world in which memes and projects began to merge together. Truth terminal started tweeting, someone made a coin, and a new narrative was formed. From that moment, an entire spectrum of projects were birthed. From slop reply bots, to novel open-source agentic frameworks. It quickly became clear that we had moved into a new landscape altogether. One where the line between a meme and a legitimate project was permanently blurred. In a world in which any idea can be made manifest immediately, memetic energy will be a core tenet of every company. That’s why Heaven is designed to house tokens for both memes, and companies. Because we believe the line between them will continue to blur. We do this through using our [permissioned fee structure](https://docs.heaven.xyz/permissioned) . [Previous](https://docs.heaven.xyz/why) [All-in-one\ \ Next](https://docs.heaven.xyz/together) On this page * [For projects](https://docs.heaven.xyz/who#for-projects) * [For memes](https://docs.heaven.xyz/who#for-memes) Assistant Responses are generated using AI and may contain mistakes. --- # Accounts - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation Protocol Accounts [​](https://docs.heaven.xyz/sdk/contract/accounts#pool-state) Pool State --------------------------------------------------------------------------- You can decode the pool state using the IDL or the SDK. The pool state contains all the information about the pool, including the tokens, reserves, fees, and other parameters. state.rs Copy Ask AI pub struct LiquidityPoolState { pub info: LiquidityPoolInfo, pub market_cap_based_fees: LiquidityPoolMarketCapBasedFees, pub reserve: LiquidityPoolReserve, pub lp_token: LiquidityPoolLpTokenInfo, pub protocol_trading_fees: u64, pub creator_trading_fees: u64, pub creator_trading_fees_claimed_by_creator: u64, pub creator_trading_fees_claimed_by_others: u64, pub liquidity_provider_trading_fees: u64, pub creator_trading_fee_protocol_fees: u64, pub reflection_trading_fees: u64, pub created_at_slot: u64, pub trading_volume_usd: f64, pub creator_trading_fee_trading_volume_threshold: f64, pub creator_trading_fee_trading_volume_threshold_reached_unix_timestamp: u64, pub token_a_vault: Pubkey, pub token_b_vault: Pubkey, pub protocol_config: Pubkey, pub key: Pubkey, pub token_a: LiquidityPoolTokenInfo, pub token_b: LiquidityPoolTokenInfo, pub permissions: LiquidityPoolPermissions, pub feature_flags: LiquidityPoolFeatureFlags, pub taxable_side: u8, pub taxable_side_type: u8, pub creator_trading_fee_distribution: u8, pub creator_trading_fee_claim_status: u8, pub fee_configuration_mode: u8, pub is_migrated: u8, _pad: [u8; 13], pub slot_offset_based_fees: LiquidityPoolSlotOffsetBasedFees, pub creator_trading_fee_receiver: Pubkey, } See all 39 lines ### [​](https://docs.heaven.xyz/sdk/contract/accounts#key-information) Key Information * **Fees** * `protocol_trading_fees`: Total **Protocol Fee** collected. * `creator_trading_fees`: Total **Creator Fee** collected. * `creator_trading_fees_claimed_by_creator`: Total **Creator Fee** claimed by the creator. * `creator_trading_fees_claimed_by_others`: Total **Creator Fee** claimed by others. * `liquidity_provider_trading_fees`: Total liquidity provider trading fees collected. * `creator_trading_fee_protocol_fees`: Total **Creator-Protocol Fee** collected. * `reflection_trading_fees`: Total **Reflection Fee** collected. * **Creator Fee Claim Status** * `creator_trading_fee_claim_status`: Indicates if the creator fee verification is pending or completed. * `0`: Unclaimed - The default state when the pool is created. * `1`: Submitted - The creator has submitted an application for verification. * `2`: Processed - The application has been processed. * **Trading Volume** * `trading_volume_usd`: The current trading volume (buy/sell) in USD. * `creator_trading_fee_trading_volume_threshold`: The threshold for **Creator Fee** claim. * `creator_trading_fee_trading_volume_threshold_reached_unix_timestamp`: Timestamp when the threshold was reached. * **Creator Fee Distribution** * `creator_trading_fee_distribution`: Indicates how the **Creator Fee** is to be distributed. * `0`: Community - By default, the fee is distributed to the community as additional reflections. * `1`: Creator - A creator can submit verification to claim the fee. Once approved, `creator_trading_fee_distribution` is set to `1`. * `2`: Blocked - Cannot be claimed by creator. * `3`: Shared - The fee is split between the creator and the flywheel. * **Migration** * You can use the `is_migrated` field to check if the pool has surpassed the market cap threshold (e.g. $100k) * `0`: Not migrated * `1`: Migrated * * * [Previous](https://docs.heaven.xyz/sdk/contract/idl) [Brand guidelinesAn outline that explains how to use Heaven's logo, colors, typography, and illustrations.\ \ Next](https://docs.heaven.xyz/guidelines) On this page * [Pool State](https://docs.heaven.xyz/sdk/contract/accounts#pool-state) * [Key Information](https://docs.heaven.xyz/sdk/contract/accounts#key-information) Assistant Responses are generated using AI and may contain mistakes. --- # Standardized - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation Features Standardized Standardization is a big part of what makes trading on Solana glorious. It is the opposite of diving into an ERC contract to check if it’s a honeypot or when the LP taxes will drop. All launches on Heaven are deployed with the exact same parameters. The only thing customizable will be the token logo, name, ticker, description, and social links. In our view, it’s a way more useful quest to find the best set of global parameters to take ideas to market than it is to let developers customize everything. Somewhere out there, there is an LP ratio, opening mc, creator tax, protocol tax, etc, that will work for the deployment of 99.9% of ideas. It is our intention to find that blend, and we feel that we’re already off to a great start. [Previous](https://docs.heaven.xyz/together) [Permissionless launches\ \ Next](https://docs.heaven.xyz/permissionless) Assistant Responses are generated using AI and may contain mistakes. --- # All-in-one - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation Features All-in-one > _“People who are really serious about software should make their own hardware” - Alan Kay, 1982_ **Similarly…** > _“Launchpads who are really serious about deploying great ideas should build their own AMM’s” - GCR (not true)_ There is a precision that you can get to with your own AMM that you simply cannot achieve as a Meteora or Raydium wrapper. That’s why we built both. The AMM, and the wrapper. Heaven’s AMM serves as an extension of our launchpad. Any token on Heaven’s dex needs to be deployed through our launchpad with no exceptions. It is a closed container. This means that when you trade a token and see Heaven as the dex, you know that it’s gone through the “Heaven gauntlet”. We don’t want to be generalists that house stablecoin pools or existing tokens. We want to be the unequivocal best place to launch great new ideas into the world. ![stevejobs.png](https://mintlify.s3.us-west-1.amazonaws.com/hdocs/images/stevejobs.png) [Previous](https://docs.heaven.xyz/who) [Standardized\ \ Next](https://docs.heaven.xyz/standardized) Assistant Responses are generated using AI and may contain mistakes. --- # Rust - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation Quickstart Rust The SDK is currently in private beta. Reach out if your team wants to integrate. 1 Install Dependencies heaven-integration-sdk Copy Ask AI cargo add heaven-integration-sdk --git https://github.com/heavenxyz/heaven-integration-sdk.git -rev 0c61785e24f92226e1b3a0b288cfa21ade3672ef solana-sdk Copy Ask AI cargo add solana-sdk solana-client Copy Ask AI cargo add solana-client spl-token Copy Ask AI cargo add spl-token --features no-entrypoint spl-associated-token-account Copy Ask AI cargo add spl-associated-token-account --features no-entrypoint spl-token-2022 Copy Ask AI cargo add spl-token-2022 --features no-entrypoint 2 Create an RPC Connection Copy Ask AI let rpc_client = RpcClient::new("https://api.mainnet-beta.solana.com"); 3 Create a Pool Creating a pool requires several steps, including creating a mint, initializing the transfer fee config, and creating the pool itself. Here’s a simplified version of how to do this: Currently, only protocol version 2 supports permissionless pool creation. quickstart.rs Copy Ask AI // 1. Set up an RPC client pointing at mainnet-beta. let rpc_client = solana_client::rpc_client::RpcClient::new("https://api.mainnet-beta.solana.com"); // 2. Define the fee-payer address (must be funded) and a fresh creator keypair. let payer = pubkey!("2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S"); let creator = Pubkey::new_unique(); // 3. Specify which version of the protocol config to use, and the program ID. // Permissionless pool creation is only supported in version 2 and should be used for development and testing purposes. // Until version 1 is updated to support permissionless pool creation, it is recommended to use version 2. let protocol_config_version = 2; let program_id = heaven::ID; // 4. Derive the PDA for the protocol config state, then fetch & parse it. let protocol_config_key = derive_protocol_config_state(protocol_config_version, &program_id).0; let protocol_config_account = rpc_client .get_account(&protocol_config_key) .expect("Failed to get protocol config account"); let protocol_config = parse_protocol_config(&protocol_config_account.data) .expect("Failed to parse protocol config"); // ─── Prepare a new SPL-Token 2022 mint for token A ──────────────────────────── // 5. Generate a new keypair for the mint; this account will hold mint metadata. let mint_signer = Keypair::new(); let token_a_mint = mint_signer.pubkey(); // Use the SPL-Token 2022 program for extended features (transfer fees). let token_a_program = spl_token_2022::ID; let token_a_mint_authority = creator; // creator will initially have minting rights // 6. Compute how much space the mint needs to include the transfer-fee extension. let mint_space = ExtensionType::try_calculate_account_len::(&vec![\ ExtensionType::TransferFeeConfig,\ ]) .unwrap(); // 7. Query minimum lamports for rent exemption for that account size. let rent_exempt = rpc_client .get_minimum_balance_for_rent_exemption(mint_space as usize) .expect("Failed to get rent exemption"); // 8. Build the CPI to initialize the transfer-fee config on the mint. let initialize_transfer_fee_ix = spl_token_2022::extension::transfer_fee::instruction::initialize_transfer_fee_config( &spl_token_2022::ID, &token_a_mint, Some(&protocol_config_key), // fee config authority Some(&protocol_config_key), // withdraw authority 0, // transfer fee numerator u64::MAX, // transfer fee denominator (max precision) ) .unwrap(); // 9. Build the CPI to initialize the mint itself (decimals from protocol config). let initialize_mint_ix = spl_token_2022::instruction::initialize_mint( &spl_token_2022::ID, &token_a_mint, &token_a_mint_authority, None, // no freeze authority protocol_config.token_a_decimals, // decimals as configured ) .unwrap(); // 10. Build the system instruction to create the mint account on-chain. let create_mint_ix = system_instruction::create_account( &payer, &token_a_mint, rent_exempt, mint_space as u64, &token_a_program, ); // ─── Create and fund the creator’s ATA, then mint tokens ────────────────────── // 11. Derive the Associated Token Account (ATA) address for (creator, token A). let ata_key = get_associated_token_address_with_program_id(&creator, &token_a_mint, &token_a_program); // Build the idempotent CPI to create the ATA (no-op if it already exists). let create_ata_ix = create_associated_token_account_idempotent( &payer, &creator, &token_a_mint, &token_a_program, ); // Mint the initial token A supply into the creator’s ATA. let mint_tokens_ix = spl_token_2022::instruction::mint_to( &spl_token_2022::ID, &token_a_mint, &ata_key, &token_a_mint_authority, &[], // no multisig signers protocol_config.initial_token_a_amount, ) .unwrap(); // 12. Revoke mint authority so no further minting is possible. let revoke_mint_authority_ix = spl_token_2022::instruction::set_authority( &spl_token_2022::ID, &token_a_mint, None, // new authority = none (lock forever) spl_token_2022::instruction::AuthorityType::MintTokens, &token_a_mint_authority, &[], ) .unwrap(); // ─── Quote how much SOL is needed for the pool’s initial purchase ─────────────── // 13. Convert a human-readable UI amount into raw token amount. let initial_purchase_amount = ui_amount_to_amount(10_000_000.0, protocol_config.token_a_decimals); // 14. Ask the bonding-curve logic how much SOL to spend for that many tokens. let max_sol_spend = quote_initial_purchase_amount(&protocol_config, initial_purchase_amount) .expect("Failed to quote initial purchase amount"); // ─── Build the Heaven AMM “create pool” instruction ─────────────────────────── // 15. Construct the CPI to call our on-chain program and create the pool. let create_pool_ix = create_initialize_pool_ix( &payer, &creator, initial_purchase_amount, max_sol_spend, &token_a_program, &token_a_mint, protocol_config_version, &program_id, ) .unwrap(); // ─── (Optional) Bump compute-unit limits for heavy CPI workloads ──────────────── let set_compute_unit_limit_ix = ComputeBudgetInstruction::set_compute_unit_limit(200_000); let set_compute_unit_price_ix = ComputeBudgetInstruction::set_compute_unit_price(1_000_000); // ─── Aggregate all instructions into one transaction ────────────────────────── let ixs = vec![\ set_compute_unit_limit_ix,\ set_compute_unit_price_ix,\ create_mint_ix,\ initialize_transfer_fee_ix,\ initialize_mint_ix,\ create_ata_ix,\ mint_tokens_ix,\ revoke_mint_authority_ix,\ create_pool_ix,\ ]; // ─── Compile, sign, and simulate the transaction ────────────────────────────── // 16. For simplicity, use a dummy recent blockhash. let recent_blockhash = Hash::default(); // 17. Build a versioned Message from payer + all instructions. let message = Message::try_compile(&payer, &ixs.as_ref(), &[], recent_blockhash) .expect("Failed to compile message"); let versioned_message = VersionedMessage::V0(message); // 18. Collect the required signers: payer, creator, and the mint keypair. let signers: [&dyn Signer; 3] = [\ &NullSigner::new(&payer),\ &NullSigner::new(&creator),\ &mint_signer,\ ]; // 19. Create the VersionedTransaction object. let versioned_tx = VersionedTransaction::try_new(versioned_message, &signers) .expect("Failed to create versioned transaction"); // 20. Submit the transaction to the RPC and check for errors. // ... See all 174 lines 4 Fetch Pool State You can derive the pool address using the token mint addresses and the Heaven program ID. quickstart.rs Copy Ask AI let token_mint = pubkey!("88aUGeGXFNaEyzL48fkzSPWUPhJr3gWrMDD8EH8tCb1"); let program_id = heaven::ID; let pool_key = derive_standard_liquidity_pool_state(&token_mint, &spl_token::native_mint::ID, &program_id) .0; let pool_account = rpc_client.get_account(&pool_key).unwrap(); let pool_state = parse_liquidity_pool_state(&pool_account.data).unwrap(); 5 Fetch Protocol Configuration You can derive the protocol configuration address using a protocol version number and the Heaven program ID.Currently, only version 1 is supported. In the future, this may change to support multiple protocol versions.Each with a different configuration. quickstart.rs Copy Ask AI let protocol_config_version = 1; let protocol_config_key = derive_protocol_config_state(protocol_config_version, &program_id).0; let protocol_config_account = rpc_client.get_account(&protocol_config_key).unwrap(); let protocol_config = parse_protocol_config(&protocol_config_account.data).unwrap(); 6 Initialize the Heaven Client Once you have the pool state, protocol configuration and program ID, you can initialize the HeavenAMM client. quickstart.rs Copy Ask AI let amm = HeavenAmm { state: &pool_state, program_id: &program_id, protocol_config: &protocol_config, }; 7 Quote Buy You can quote a buy operation using the `quote_buy` method. This will return the amount of tokens you will receive, the fee, and the fee percentage. quickstart.rs Copy Ask AI let max_sol_spend = (0.01 * 1e9) as u64; // 0.1 SOL in lamports let ata = get_associated_token_address_with_program_id( &user, &pool_state.token_a.mint, &pool_state.token_a.owner, ); let current_balance = rpc_client .get_token_account_balance(&ata) .map(|balance| balance.amount.parse::().unwrap_or(0)) .unwrap_or_default(); let (token_output, fee, fee_pct) = amm .quote_buy( max_sol_spend, current_slot, current_balance, current_sol_usd_price, ) .unwrap(); println!( "Buy Quote: Output: {}, Fee: {}, Fee Percentage: {}%", amount_to_ui_amount(token_output, pool_state.token_a_decimals()), fee, fee_pct * 100.0 ); 8 Create Buy Instruction Once you have the quote, you can create the buy instruction.Here `max_sol_spend` is the maximum amount of SOL you are willing to spend, and `minimum_token_output` is the minimum amount of tokens you want to receive. quickstart.rs Copy Ask AI let minimum_token_output = token_output; let buy_ix = amm .buy_ix(max_sol_spend, minimum_token_output, &user) .unwrap(); 9 Quote Sell You can quote a sell operation using the `quote_sell` method. This will return the amount of SOL you will receive, the fee, and the fee percentage. quickstart.rs Copy Ask AI let token_amount = token_output; let (sol_output, fee, fee_pct) = amm .quote_sell(token_amount, current_slot, current_sol_usd_price) .unwrap(); 10 Create Sell Instruction Once you have the quote, you can create the sell instruction. quickstart.rs Copy Ask AI let sell_ix = amm .sell_ix(token_amount, sol_output, &user) .unwrap(); [​](https://docs.heaven.xyz/sdk/quickstart/rust#full-example) Full Example ----------------------------------------------------------------------------- quickstart.rs Copy Ask AI use heaven_integration_sdk::heaven::{ self, amm::{ HeavenAmm, create_close_wrapped_sol_ix, derive_protocol_config_state, derive_standard_liquidity_pool_state, parse_liquidity_pool_state, parse_protocol_config, wrap_sol_ixs, }, oracle::{CHAINLINK_SOL_USD_FEED, state::get_latest_sol_usd_price}, }; use solana_client::rpc_config::RpcSimulateTransactionConfig; use solana_sdk::{ compute_budget::ComputeBudgetInstruction, hash::Hash, message::{VersionedMessage, v0::Message}, pubkey, signature::NullSigner, transaction::VersionedTransaction, }; use spl_associated_token_account::{ get_associated_token_address_with_program_id, instruction::create_associated_token_account_idempotent, }; use spl_token::amount_to_ui_amount; fn main() { let rpc_client = solana_client::rpc_client::RpcClient::new("https://api.mainnet-beta.solana.com"); let account = rpc_client.get_account(&CHAINLINK_SOL_USD_FEED).unwrap(); let data = account.data; let token_mint = pubkey!("88aUGeGXFNaEyzL48fkzSPWUPhJr3gWrMDD8EH8tCb1"); let protocol_config_version = 1; let user = pubkey!("FrXg2ceCwbpSCcW3eLMuzt2xqBp727zqoSC93TkRixvC"); let program_id = heaven::ID; let current_sol_usd_price = get_latest_sol_usd_price(&data).unwrap(); let pool_key = derive_standard_liquidity_pool_state(&token_mint, &spl_token::native_mint::ID, &program_id) .0; let pool_account = rpc_client.get_account(&pool_key).unwrap(); let pool_state = parse_liquidity_pool_state(&pool_account.data).expect("Failed to parse pool state"); let protocol_config_key = derive_protocol_config_state(protocol_config_version, &program_id).0; let protocol_config_account = rpc_client .get_account(&protocol_config_key) .expect("Failed to get protocol config account"); let protocol_config = parse_protocol_config(&protocol_config_account.data) .expect("Failed to parse protocol config"); let amm = HeavenAmm { state: &pool_state, program_id: &program_id, protocol_config: &protocol_config, }; let current_slot = rpc_client.get_slot().unwrap(); // Calculate buy quote let max_sol_spend = (0.01 * 1e9) as u64; // 0.1 SOL in lamports let ata = get_associated_token_address_with_program_id( &user, &pool_state.token_a.mint, &pool_state.token_a.owner, ); let current_balance = rpc_client .get_token_account_balance(&ata) .map(|balance| balance.amount.parse::().unwrap_or(0)) .unwrap_or_default(); let (token_output, fee, fee_pct) = amm .quote_buy( max_sol_spend, current_slot, current_balance, current_sol_usd_price, ) .expect("Failed to get buy quote"); println!( "Buy Quote: Output: {}, Fee: {}, Fee Percentage: {}%", amount_to_ui_amount(token_output, pool_state.token_a_decimals()), fee, fee_pct * 100.0 ); assert!(token_output > 0); let (sol_output, fee, fee_pct) = amm .quote_sell(token_output, current_slot, current_sol_usd_price) .expect("Failed to get sell quote"); println!( "Sell Quote: Output: {}, Fee: {}, Fee Percentage: {}%", amount_to_ui_amount(sol_output, pool_state.token_b_decimals()), fee, fee_pct * 100.0 ); // Create buy instruction based on the quote let buy_ix = amm .buy_ix(max_sol_spend, token_output, &user) .expect("Failed to create buy instruction"); let sell_ix = amm .sell_ix(token_output, sol_output, &user) .expect("Failed to create sell instruction"); let set_compute_unit_limit_ix = ComputeBudgetInstruction::set_compute_unit_limit(200_000); let set_compute_unit_price_ix = ComputeBudgetInstruction::set_compute_unit_price(1000_000); let (mut ixs, ata) = wrap_sol_ixs(max_sol_spend, &user); let create_ata_ix = create_associated_token_account_idempotent( &user, &user, &pool_state.token_a.mint, &spl_token_2022::ID, ); ixs.insert(0, create_ata_ix); ixs.insert(0, set_compute_unit_price_ix); ixs.insert(0, set_compute_unit_limit_ix); ixs.push(buy_ix); ixs.push(sell_ix); let close_wrapped_sol_ix = create_close_wrapped_sol_ix(&user, &ata); ixs.push(close_wrapped_sol_ix); let recent_blockhash = Hash::default(); let message = Message::try_compile(&user, &ixs.as_ref(), &[], recent_blockhash) .expect("Failed to compile message"); let versioned_message = VersionedMessage::V0(message); let versioned_tx = VersionedTransaction::try_new(versioned_message, &[NullSigner::new(&user)]) .expect("Failed to create versioned transaction"); let logs = rpc_client.simulate_transaction_with_config( &versioned_tx, RpcSimulateTransactionConfig { replace_recent_blockhash: true, ..Default::default() }, ); assert!(logs.is_ok()); assert!( logs.as_ref().unwrap().value.err.is_none(), "Simulation error: {:#?}", logs.unwrap().value.err ); } See all 162 lines For a more comprehensive example and source code, please refer to the [Heaven Integration SDK repository](https://github.com/heavenxyz/heaven-integration) [Previous](https://docs.heaven.xyz/ico) [AddressesAddresses of the Heaven AMM on Solana\ \ Next](https://docs.heaven.xyz/sdk/contract/addresses) On this page * [Full Example](https://docs.heaven.xyz/sdk/quickstart/rust#full-example) Assistant Responses are generated using AI and may contain mistakes. --- # IDL - Heaven Docs [Heaven Docs home page![light logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)![dark logo](https://doc-asset.heaven.xyz/images/heaven-favicon.png)](https://docs.heaven.xyz/) Search... ⌘KAsk AI Search... Navigation Protocol IDL heaven.json Copy Ask AI { "address": "GgE4QoiM8VYoQNZkiNLHNbzXEkKyynzsApC8BvBY4b1V", "metadata": { "name": "Heaven", "version": "0.2.0", "spec": "0.1.0", "description": "Created with Anchor" }, "instructions": [\ {\ "name": "admin_borrow_sol",\ "discriminator": [204, 72, 95, 215, 172, 192, 137, 252],\ "accounts": [\ {\ "name": "token_program",\ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "admin",\ "signer": true\ },\ {\ "name": "protocol_config_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 99, 111, 110, 102, 105, 103,\ 95, 115, 116, 97, 116, 101\ ]\ },\ {\ "kind": "arg",\ "path": "version"\ }\ ]\ }\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "protocol_staking_admin_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 115, 116, 97, 107, 105, 110,\ 103, 95, 97, 100, 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ },\ {\ "name": "address_lookup_program",\ "docs": ["CHECK"],\ "address": "AddressLookupTab1e1111111111111111111111111"\ },\ {\ "name": "instruction_sysvar_account_info"\ },\ {\ "name": "temp_sol_holder",\ "docs": ["CHECK"],\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 116, 101, 109, 112, 95, 115, 111, 108, 95, 104, 111, 108, 100, 101, 114\ ]\ },\ {\ "kind": "arg",\ "path": "version"\ }\ ]\ }\ }\ ],\ "args": [\ {\ "name": "version",\ "type": "u16"\ },\ {\ "name": "amount",\ "type": "u64"\ }\ ]\ },\ {\ "name": "admin_claim_msol",\ "discriminator": [124, 48, 60, 199, 203, 49, 36, 41],\ "accounts": [\ {\ "name": "token_program",\ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "admin",\ "signer": true\ },\ {\ "name": "protocol_config_state",\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 99, 111, 110, 102, 105, 103,\ 95, 115, 116, 97, 116, 101\ ]\ },\ {\ "kind": "arg",\ "path": "version"\ }\ ]\ }\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "protocol_staking_admin_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 115, 116, 97, 107, 105, 110,\ 103, 95, 97, 100, 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ },\ {\ "name": "msol_ticket",\ "docs": ["CHECK"],\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 109, 115, 111, 108, 95, 116, 105, 99, 107, 101, 116, 95, 97, 99, 99\ ]\ },\ {\ "kind": "account",\ "path": "protocol_config_state"\ },\ {\ "kind": "arg",\ "path": "ticket_number"\ }\ ]\ }\ },\ {\ "name": "msol_mint",\ "address": "mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"\ },\ {\ "name": "msol_ticket_sol_spent",\ "docs": ["CHECK"],\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 109, 115, 111, 108, 95, 116, 105, 99, 107, 101, 116, 95, 97, 99, 99,\ 95, 115, 111, 108, 95, 115, 112, 101, 110, 116\ ]\ },\ {\ "kind": "account",\ "path": "protocol_config_state"\ },\ {\ "kind": "arg",\ "path": "ticket_number"\ }\ ]\ }\ }\ ],\ "args": [\ {\ "name": "version",\ "type": "u16"\ },\ {\ "name": "ticket_number",\ "type": "u32"\ }\ ]\ },\ {\ "name": "admin_claim_staking_rewards",\ "discriminator": [24, 163, 220, 171, 225, 222, 166, 248],\ "accounts": [\ {\ "name": "token_program",\ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "admin",\ "signer": true\ },\ {\ "name": "protocol_config_state",\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 99, 111, 110, 102, 105, 103,\ 95, 115, 116, 97, 116, 101\ ]\ },\ {\ "kind": "arg",\ "path": "version"\ }\ ]\ }\ },\ {\ "name": "protocol_config_wsol_vault",\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "account",\ "path": "protocol_config_state"\ },\ {\ "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": "wsol_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": "protocol_staking_admin_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 115, 116, 97, 107, 105, 110,\ 103, 95, 97, 100, 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ },\ {\ "name": "wsol_token_vault",\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "account",\ "path": "payer"\ },\ {\ "kind": "account",\ "path": "token_program"\ },\ {\ "kind": "account",\ "path": "wsol_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": "wsol_mint"\ }\ ],\ "args": [\ {\ "name": "version",\ "type": "u16"\ },\ {\ "name": "amount",\ "type": "u64"\ }\ ]\ },\ {\ "name": "admin_claim_standard_creator_trading_fees",\ "discriminator": [182, 39, 168, 25, 96, 63, 76, 17],\ "accounts": [\ {\ "name": "swap",\ "accounts": [\ {\ "name": "token_a_program"\ },\ {\ "name": "token_b_program"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "liquidity_pool_state",\ "writable": true\ },\ {\ "name": "user",\ "docs": ["CHECK"],\ "writable": true,\ "signer": true\ },\ {\ "name": "token_a_mint",\ "docs": ["CHECK"]\ },\ {\ "name": "token_b_mint",\ "docs": ["CHECK"]\ },\ {\ "name": "user_token_a_vault",\ "writable": true\ },\ {\ "name": "user_token_b_vault",\ "writable": true\ },\ {\ "name": "token_a_vault",\ "writable": true\ },\ {\ "name": "token_b_vault",\ "writable": true\ },\ {\ "name": "protocol_config",\ "writable": true\ },\ {\ "name": "instruction_sysvar_account_info",\ "docs": ["CHECK"],\ "address": "Sysvar1nstructions1111111111111111111111111"\ }\ ]\ },\ {\ "name": "protocol_admin",\ "signer": true\ },\ {\ "name": "protocol_admin_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 102, 101, 101, 95, 97, 100,\ 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ }\ ],\ "args": [\ {\ "name": "amount",\ "type": "u64"\ }\ ]\ },\ {\ "name": "admin_deposit_msol",\ "discriminator": [206, 189, 208, 166, 19, 81, 202, 48],\ "accounts": [\ {\ "name": "token_program",\ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "admin",\ "signer": true\ },\ {\ "name": "protocol_config_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 99, 111, 110, 102, 105, 103,\ 95, 115, 116, 97, 116, 101\ ]\ },\ {\ "kind": "arg",\ "path": "version"\ }\ ]\ }\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "protocol_staking_admin_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 115, 116, 97, 107, 105, 110,\ 103, 95, 97, 100, 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ },\ {\ "name": "address_lookup_program",\ "docs": ["CHECK"],\ "address": "AddressLookupTab1e1111111111111111111111111"\ },\ {\ "name": "instruction_sysvar_account_info"\ },\ {\ "name": "temp_sol_holder",\ "docs": ["CHECK"],\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 116, 101, 109, 112, 95, 115, 111, 108, 95, 104, 111, 108, 100, 101, 114\ ]\ },\ {\ "kind": "arg",\ "path": "version"\ }\ ]\ }\ }\ ],\ "args": [\ {\ "name": "version",\ "type": "u16"\ },\ {\ "name": "amount",\ "type": "u64"\ }\ ]\ },\ {\ "name": "admin_mint_msol",\ "discriminator": [140, 202, 57, 195, 97, 213, 168, 19],\ "accounts": [\ {\ "name": "token_program",\ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "admin",\ "signer": true\ },\ {\ "name": "protocol_config_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 99, 111, 110, 102, 105, 103,\ 95, 115, 116, 97, 116, 101\ ]\ },\ {\ "kind": "arg",\ "path": "version"\ }\ ]\ }\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "protocol_staking_admin_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 115, 116, 97, 107, 105, 110,\ 103, 95, 97, 100, 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ },\ {\ "name": "address_lookup_program",\ "docs": ["CHECK"],\ "address": "AddressLookupTab1e1111111111111111111111111"\ },\ {\ "name": "instruction_sysvar_account_info"\ },\ {\ "name": "temp_sol_holder",\ "docs": ["CHECK"],\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 116, 101, 109, 112, 95, 115, 111, 108, 95, 104, 111, 108, 100, 101, 114\ ]\ },\ {\ "kind": "arg",\ "path": "version"\ }\ ]\ }\ }\ ],\ "args": [\ {\ "name": "version",\ "type": "u16"\ },\ {\ "name": "amount",\ "type": "u64"\ }\ ]\ },\ {\ "name": "admin_repay_sol",\ "discriminator": [136, 61, 48, 232, 166, 26, 207, 46],\ "accounts": [\ {\ "name": "token_program",\ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "admin",\ "signer": true\ },\ {\ "name": "protocol_config_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 99, 111, 110, 102, 105, 103,\ 95, 115, 116, 97, 116, 101\ ]\ },\ {\ "kind": "arg",\ "path": "version"\ }\ ]\ }\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "protocol_staking_admin_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 115, 116, 97, 107, 105, 110,\ 103, 95, 97, 100, 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ },\ {\ "name": "address_lookup_program",\ "docs": ["CHECK"],\ "address": "AddressLookupTab1e1111111111111111111111111"\ },\ {\ "name": "instruction_sysvar_account_info"\ },\ {\ "name": "temp_sol_holder",\ "docs": ["CHECK"],\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 116, 101, 109, 112, 95, 115, 111, 108, 95, 104, 111, 108, 100, 101, 114\ ]\ },\ {\ "kind": "arg",\ "path": "version"\ }\ ]\ }\ }\ ],\ "args": [\ {\ "name": "version",\ "type": "u16"\ },\ {\ "name": "amount",\ "type": "u64"\ }\ ]\ },\ {\ "name": "admin_unstake_msol",\ "discriminator": [253, 218, 141, 252, 40, 9, 7, 154],\ "accounts": [\ {\ "name": "token_program",\ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "admin",\ "signer": true\ },\ {\ "name": "protocol_config_state",\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 99, 111, 110, 102, 105, 103,\ 95, 115, 116, 97, 116, 101\ ]\ },\ {\ "kind": "arg",\ "path": "version"\ }\ ]\ }\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "protocol_staking_admin_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 115, 116, 97, 107, 105, 110,\ 103, 95, 97, 100, 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ },\ {\ "name": "msol_ticket",\ "docs": ["CHECK"],\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 109, 115, 111, 108, 95, 116, 105, 99, 107, 101, 116, 95, 97, 99, 99\ ]\ },\ {\ "kind": "account",\ "path": "protocol_config_state"\ },\ {\ "kind": "arg",\ "path": "ticket_number"\ }\ ]\ }\ },\ {\ "name": "msol_mint",\ "address": "mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"\ },\ {\ "name": "msol_ticket_sol_spent",\ "docs": ["CHECK"],\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 109, 115, 111, 108, 95, 116, 105, 99, 107, 101, 116, 95, 97, 99, 99,\ 95, 115, 111, 108, 95, 115, 112, 101, 110, 116\ ]\ },\ {\ "kind": "account",\ "path": "protocol_config_state"\ },\ {\ "kind": "arg",\ "path": "ticket_number"\ }\ ]\ }\ }\ ],\ "args": [\ {\ "name": "version",\ "type": "u16"\ },\ {\ "name": "ticket_number",\ "type": "u32"\ },\ {\ "name": "amount",\ "type": "u64"\ }\ ]\ },\ {\ "name": "admin_update_standard_liquidity_pool_state",\ "discriminator": [99, 228, 41, 63, 221, 244, 200, 199],\ "accounts": [\ {\ "name": "liquidity_pool_state",\ "writable": true\ },\ {\ "name": "protocol_config",\ "writable": true\ },\ {\ "name": "protocol_admin",\ "signer": true\ },\ {\ "name": "protocol_admin_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 102, 101, 101, 95, 97, 100,\ 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ }\ ],\ "args": [\ {\ "name": "update",\ "type": {\ "defined": {\ "name": "AdminUpdateLiquidityPoolState"\ }\ }\ }\ ]\ },\ {\ "name": "admin_withdraw_msol",\ "discriminator": [249, 219, 141, 72, 210, 110, 216, 99],\ "accounts": [\ {\ "name": "token_program",\ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "admin",\ "signer": true\ },\ {\ "name": "protocol_config_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 99, 111, 110, 102, 105, 103,\ 95, 115, 116, 97, 116, 101\ ]\ },\ {\ "kind": "arg",\ "path": "version"\ }\ ]\ }\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "protocol_staking_admin_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 115, 116, 97, 107, 105, 110,\ 103, 95, 97, 100, 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ },\ {\ "name": "address_lookup_program",\ "docs": ["CHECK"],\ "address": "AddressLookupTab1e1111111111111111111111111"\ },\ {\ "name": "instruction_sysvar_account_info"\ },\ {\ "name": "temp_sol_holder",\ "docs": ["CHECK"],\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 116, 101, 109, 112, 95, 115, 111, 108, 95, 104, 111, 108, 100, 101, 114\ ]\ },\ {\ "kind": "arg",\ "path": "version"\ }\ ]\ }\ }\ ],\ "args": [\ {\ "name": "version",\ "type": "u16"\ },\ {\ "name": "amount",\ "type": "u64"\ }\ ]\ },\ {\ "name": "admin_withdraw_transfer_fee",\ "discriminator": [117, 79, 164, 203, 126, 72, 22, 246],\ "accounts": [\ {\ "name": "token_program"\ },\ {\ "name": "mint"\ },\ {\ "name": "receiver",\ "writable": true\ },\ {\ "name": "protocol_fee_admin_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 102, 101, 101, 95, 97, 100,\ 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ },\ {\ "name": "admin",\ "signer": true\ },\ {\ "name": "protocol_config",\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 99, 111, 110, 102, 105, 103,\ 95, 115, 116, 97, 116, 101\ ]\ },\ {\ "kind": "arg",\ "path": "protocol_config_version"\ }\ ]\ }\ }\ ],\ "args": [\ {\ "name": "protocol_config_version",\ "type": "u16"\ }\ ]\ },\ {\ "name": "buy",\ "discriminator": [102, 6, 61, 18, 1, 218, 235, 234],\ "accounts": [\ {\ "name": "token_a_program"\ },\ {\ "name": "token_b_program"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "liquidity_pool_state",\ "writable": true\ },\ {\ "name": "user",\ "docs": ["CHECK"],\ "writable": true,\ "signer": true\ },\ {\ "name": "token_a_mint",\ "docs": ["CHECK"]\ },\ {\ "name": "token_b_mint",\ "docs": ["CHECK"]\ },\ {\ "name": "user_token_a_vault",\ "writable": true\ },\ {\ "name": "user_token_b_vault",\ "writable": true\ },\ {\ "name": "token_a_vault",\ "writable": true\ },\ {\ "name": "token_b_vault",\ "writable": true\ },\ {\ "name": "protocol_config",\ "writable": true\ },\ {\ "name": "instruction_sysvar_account_info",\ "docs": ["CHECK"],\ "address": "Sysvar1nstructions1111111111111111111111111"\ }\ ],\ "args": [\ {\ "name": "params",\ "type": {\ "defined": {\ "name": "BuyParams"\ }\ }\ }\ ]\ },\ {\ "name": "claim_standard_creator_trading_fee_protocol_fees",\ "discriminator": [0, 201, 226, 228, 127, 45, 69, 110],\ "accounts": [\ {\ "name": "swap",\ "accounts": [\ {\ "name": "token_a_program"\ },\ {\ "name": "token_b_program"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "liquidity_pool_state",\ "writable": true\ },\ {\ "name": "user",\ "docs": ["CHECK"],\ "writable": true,\ "signer": true\ },\ {\ "name": "token_a_mint",\ "docs": ["CHECK"]\ },\ {\ "name": "token_b_mint",\ "docs": ["CHECK"]\ },\ {\ "name": "user_token_a_vault",\ "writable": true\ },\ {\ "name": "user_token_b_vault",\ "writable": true\ },\ {\ "name": "token_a_vault",\ "writable": true\ },\ {\ "name": "token_b_vault",\ "writable": true\ },\ {\ "name": "protocol_config",\ "writable": true\ },\ {\ "name": "instruction_sysvar_account_info",\ "docs": ["CHECK"],\ "address": "Sysvar1nstructions1111111111111111111111111"\ }\ ]\ },\ {\ "name": "protocol_admin",\ "signer": true\ },\ {\ "name": "protocol_admin_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 102, 101, 101, 95, 97, 100,\ 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ }\ ],\ "args": [\ {\ "name": "amount",\ "type": "u64"\ }\ ]\ },\ {\ "name": "claim_standard_creator_trading_fees",\ "discriminator": [165, 89, 221, 52, 170, 249, 34, 111],\ "accounts": [\ {\ "name": "token_a_program"\ },\ {\ "name": "token_b_program"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "liquidity_pool_state",\ "writable": true\ },\ {\ "name": "user",\ "docs": ["CHECK"],\ "writable": true,\ "signer": true\ },\ {\ "name": "token_a_mint",\ "docs": ["CHECK"]\ },\ {\ "name": "token_b_mint",\ "docs": ["CHECK"]\ },\ {\ "name": "user_token_a_vault",\ "writable": true\ },\ {\ "name": "user_token_b_vault",\ "writable": true\ },\ {\ "name": "token_a_vault",\ "writable": true\ },\ {\ "name": "token_b_vault",\ "writable": true\ },\ {\ "name": "protocol_config",\ "writable": true\ },\ {\ "name": "instruction_sysvar_account_info",\ "docs": ["CHECK"],\ "address": "Sysvar1nstructions1111111111111111111111111"\ }\ ],\ "args": [\ {\ "name": "amount",\ "type": "u64"\ }\ ]\ },\ {\ "name": "claim_standard_protocol_trading_fees",\ "discriminator": [84, 206, 140, 245, 63, 212, 64, 237],\ "accounts": [\ {\ "name": "swap",\ "accounts": [\ {\ "name": "token_a_program"\ },\ {\ "name": "token_b_program"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "liquidity_pool_state",\ "writable": true\ },\ {\ "name": "user",\ "docs": ["CHECK"],\ "writable": true,\ "signer": true\ },\ {\ "name": "token_a_mint",\ "docs": ["CHECK"]\ },\ {\ "name": "token_b_mint",\ "docs": ["CHECK"]\ },\ {\ "name": "user_token_a_vault",\ "writable": true\ },\ {\ "name": "user_token_b_vault",\ "writable": true\ },\ {\ "name": "token_a_vault",\ "writable": true\ },\ {\ "name": "token_b_vault",\ "writable": true\ },\ {\ "name": "protocol_config",\ "writable": true\ },\ {\ "name": "instruction_sysvar_account_info",\ "docs": ["CHECK"],\ "address": "Sysvar1nstructions1111111111111111111111111"\ }\ ]\ },\ {\ "name": "protocol_admin",\ "signer": true\ },\ {\ "name": "protocol_admin_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 102, 101, 101, 95, 97, 100,\ 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ }\ ],\ "args": [\ {\ "name": "amount",\ "type": "u64"\ }\ ]\ },\ {\ "name": "claim_standard_reflection_trading_fees",\ "discriminator": [70, 148, 37, 147, 102, 20, 30, 23],\ "accounts": [\ {\ "name": "swap",\ "accounts": [\ {\ "name": "token_a_program"\ },\ {\ "name": "token_b_program"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "liquidity_pool_state",\ "writable": true\ },\ {\ "name": "user",\ "docs": ["CHECK"],\ "writable": true,\ "signer": true\ },\ {\ "name": "token_a_mint",\ "docs": ["CHECK"]\ },\ {\ "name": "token_b_mint",\ "docs": ["CHECK"]\ },\ {\ "name": "user_token_a_vault",\ "writable": true\ },\ {\ "name": "user_token_b_vault",\ "writable": true\ },\ {\ "name": "token_a_vault",\ "writable": true\ },\ {\ "name": "token_b_vault",\ "writable": true\ },\ {\ "name": "protocol_config",\ "writable": true\ },\ {\ "name": "instruction_sysvar_account_info",\ "docs": ["CHECK"],\ "address": "Sysvar1nstructions1111111111111111111111111"\ }\ ]\ },\ {\ "name": "protocol_admin",\ "signer": true\ },\ {\ "name": "protocol_admin_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 102, 101, 101, 95, 97, 100,\ 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ }\ ],\ "args": [\ {\ "name": "amount",\ "type": "u64"\ }\ ]\ },\ {\ "name": "close_protocol_lookup_table",\ "discriminator": [79, 72, 48, 39, 119, 3, 42, 116],\ "accounts": [\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "address_lookup_program",\ "docs": ["CHECK"],\ "address": "AddressLookupTab1e1111111111111111111111111"\ },\ {\ "name": "authority",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [97, 117, 116, 104, 111, 114, 105, 116, 121]\ }\ ]\ }\ },\ {\ "name": "lookup_table",\ "writable": true\ },\ {\ "name": "protocol_owner_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 111, 119, 110, 101, 114, 95,\ 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ },\ {\ "name": "current_owner",\ "signer": true\ }\ ],\ "args": [\ {\ "name": "version",\ "type": "u64"\ }\ ]\ },\ {\ "name": "create_or_update_protocol_fee_admin",\ "discriminator": [21, 126, 176, 20, 85, 111, 53, 31],\ "accounts": [\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "current_owner",\ "signer": true\ },\ {\ "name": "protocol_owner_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 111, 119, 110, 101, 114, 95,\ 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ },\ {\ "name": "new_admin",\ "signer": true\ },\ {\ "name": "protocol_fee_admin_state",\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 102, 101, 101, 95, 97, 100,\ 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ }\ ],\ "args": []\ },\ {\ "name": "create_or_update_protocol_owner",\ "discriminator": [170, 124, 128, 40, 48, 105, 139, 148],\ "accounts": [\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "current_owner",\ "signer": true\ },\ {\ "name": "new_owner",\ "signer": true\ },\ {\ "name": "protocol_owner_state",\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 111, 119, 110, 101, 114, 95,\ 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ }\ ],\ "args": []\ },\ {\ "name": "create_or_update_protocol_staking_admin",\ "discriminator": [4, 172, 196, 213, 120, 50, 30, 137],\ "accounts": [\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "current_owner",\ "signer": true\ },\ {\ "name": "protocol_owner_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 111, 119, 110, 101, 114, 95,\ 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ },\ {\ "name": "new_admin",\ "signer": true\ },\ {\ "name": "protocol_staking_admin_state",\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 115, 116, 97, 107, 105, 110,\ 103, 95, 97, 100, 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ }\ ],\ "args": []\ },\ {\ "name": "create_protocol_config",\ "discriminator": [115, 114, 24, 111, 14, 53, 113, 254],\ "accounts": [\ {\ "name": "token_program",\ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "owner",\ "signer": true\ },\ {\ "name": "protocol_config_state",\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 99, 111, 110, 102, 105, 103,\ 95, 115, 116, 97, 116, 101\ ]\ },\ {\ "kind": "arg",\ "path": "version"\ }\ ]\ }\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "protocol_owner_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 111, 119, 110, 101, 114, 95,\ 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ },\ {\ "name": "msol_token_vault",\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "account",\ "path": "protocol_config_state"\ },\ {\ "kind": "account",\ "path": "token_program"\ },\ {\ "kind": "account",\ "path": "msol_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": "msol_mint",\ "docs": ["CHECK"],\ "address": "mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"\ }\ ],\ "args": [\ {\ "name": "version",\ "type": "u16"\ },\ {\ "name": "params",\ "type": {\ "defined": {\ "name": "ProtocolConfigParams"\ }\ }\ }\ ]\ },\ {\ "name": "create_protocol_lookup_table",\ "discriminator": [249, 3, 99, 153, 168, 241, 243, 228],\ "accounts": [\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "address_lookup_program",\ "docs": ["CHECK"],\ "address": "AddressLookupTab1e1111111111111111111111111"\ },\ {\ "name": "authority",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [97, 117, 116, 104, 111, 114, 105, 116, 121]\ }\ ]\ }\ },\ {\ "name": "lookup_table",\ "writable": true\ },\ {\ "name": "protocol_owner_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 111, 119, 110, 101, 114, 95,\ 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ },\ {\ "name": "current_owner",\ "signer": true\ }\ ],\ "args": [\ {\ "name": "version",\ "type": "u64"\ }\ ]\ },\ {\ "name": "create_standard_liquidity_pool",\ "discriminator": [42, 43, 126, 56, 231, 10, 208, 53],\ "accounts": [\ {\ "name": "token_program",\ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "user",\ "signer": true\ },\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "token_a_mint"\ },\ {\ "name": "token_b_mint",\ "address": "So11111111111111111111111111111111111111112"\ },\ {\ "name": "user_token_a_vault",\ "writable": true\ },\ {\ "name": "token_a_vault",\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "account",\ "path": "protocol_config"\ },\ {\ "kind": "account",\ "path": "token_a_program"\ },\ {\ "kind": "account",\ "path": "token_a_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": "token_b_vault",\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "account",\ "path": "protocol_config"\ },\ {\ "kind": "account",\ "path": "token_program"\ },\ {\ "kind": "account",\ "path": "token_b_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": "liquidity_pool_state",\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 108, 105, 113, 117, 105, 100, 105, 116, 121, 95, 112, 111, 111, 108,\ 95, 115, 116, 97, 116, 101\ ]\ },\ {\ "kind": "account",\ "path": "token_a_mint"\ },\ {\ "kind": "account",\ "path": "token_b_mint"\ }\ ]\ }\ },\ {\ "name": "protocol_config",\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 99, 111, 110, 102, 105, 103,\ 95, 115, 116, 97, 116, 101\ ]\ },\ {\ "kind": "arg",\ "path": "protocol_config_version"\ }\ ]\ }\ },\ {\ "name": "token_a_program"\ }\ ],\ "args": [\ {\ "name": "protocol_config_version",\ "type": "u16"\ },\ {\ "name": "params",\ "type": {\ "defined": {\ "name": "CreateStandardLiquidityPoolParams"\ }\ }\ }\ ]\ },\ {\ "name": "deactivate_protocol_lookup_table",\ "discriminator": [218, 12, 88, 58, 150, 44, 152, 72],\ "accounts": [\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "address_lookup_program",\ "docs": ["CHECK"],\ "address": "AddressLookupTab1e1111111111111111111111111"\ },\ {\ "name": "authority",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [97, 117, 116, 104, 111, 114, 105, 116, 121]\ }\ ]\ }\ },\ {\ "name": "lookup_table",\ "writable": true\ },\ {\ "name": "protocol_owner_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 111, 119, 110, 101, 114, 95,\ 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ },\ {\ "name": "current_owner",\ "signer": true\ }\ ],\ "args": [\ {\ "name": "version",\ "type": "u64"\ }\ ]\ },\ {\ "name": "extend_protocol_lookup_table",\ "discriminator": [7, 227, 198, 1, 107, 113, 31, 88],\ "accounts": [\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "address_lookup_program",\ "docs": ["CHECK"],\ "address": "AddressLookupTab1e1111111111111111111111111"\ },\ {\ "name": "authority",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [97, 117, 116, 104, 111, 114, 105, 116, 121]\ }\ ]\ }\ },\ {\ "name": "lookup_table",\ "writable": true\ },\ {\ "name": "protocol_owner_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 111, 119, 110, 101, 114, 95,\ 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ },\ {\ "name": "current_owner",\ "signer": true\ }\ ],\ "args": [\ {\ "name": "version",\ "type": "u64"\ },\ {\ "name": "addresses",\ "type": {\ "vec": "pubkey"\ }\ }\ ]\ },\ {\ "name": "initialize_protocol_lending",\ "discriminator": [0, 205, 237, 240, 27, 79, 27, 59],\ "accounts": [\ {\ "name": "token_program",\ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "admin",\ "signer": true\ },\ {\ "name": "protocol_config_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 99, 111, 110, 102, 105, 103,\ 95, 115, 116, 97, 116, 101\ ]\ },\ {\ "kind": "arg",\ "path": "version"\ }\ ]\ }\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "protocol_staking_admin_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 115, 116, 97, 107, 105, 110,\ 103, 95, 97, 100, 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ },\ {\ "name": "address_lookup_program",\ "docs": ["CHECK"],\ "address": "AddressLookupTab1e1111111111111111111111111"\ },\ {\ "name": "instruction_sysvar_account_info"\ },\ {\ "name": "temp_sol_holder",\ "docs": ["CHECK"],\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 116, 101, 109, 112, 95, 115, 111, 108, 95, 104, 111, 108, 100, 101, 114\ ]\ },\ {\ "kind": "arg",\ "path": "version"\ }\ ]\ }\ }\ ],\ "args": [\ {\ "name": "version",\ "type": "u16"\ },\ {\ "name": "recent_slot",\ "type": "u64"\ }\ ]\ },\ {\ "name": "remaining_accounts_stub",\ "discriminator": [32, 143, 83, 94, 23, 34, 59, 239],\ "accounts": [\ {\ "name": "create_protocol_config_remaining_accounts",\ "accounts": [\ {\ "name": "protocol_lending_lookup_table",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "kamino_lending_user_metadata",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "kamino_lending_referrer_user_metadata",\ "docs": ["CHECK"]\ },\ {\ "name": "rent",\ "address": "SysvarRent111111111111111111111111111111111"\ },\ {\ "name": "kamino_lending_program",\ "docs": ["CHECK"]\ },\ {\ "name": "kamino_lending_obligation",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "kamino_lending_main_market",\ "docs": ["CHECK"]\ },\ {\ "name": "kamino_reserve_msol_state",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "kamino_reserve_sol_state",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "kamino_scope_prices",\ "docs": ["CHECK"]\ },\ {\ "name": "msol_liquid_staking",\ "accounts": [\ {\ "name": "marinade_liquid_staking_state",\ "docs": ["#1 - Marinade Liquid Staking State", "CHECK"],\ "writable": true\ },\ {\ "name": "msol_mint",\ "docs": ["#2 - mSOL Mint", "CHECK"],\ "writable": true\ },\ {\ "name": "marinade_sol_leg_account",\ "docs": ["#3 - Marinade SOL Leg Account", "CHECK"],\ "writable": true\ },\ {\ "name": "marinade_msol_leg_account",\ "docs": ["#4 - Marinade mSOL Leg Account", "CHECK"],\ "writable": true\ },\ {\ "name": "marinade_msol_leg_authority",\ "docs": ["#5 - Marinade mSOL Leg Authority", "CHECK"]\ },\ {\ "name": "marinade_reserve_sol_pda",\ "docs": ["#6 - Marinade Reserve SOL PDA", "CHECK"],\ "writable": true\ },\ {\ "name": "transfer_from",\ "docs": ["#7 - Transfer From", "CHECK"],\ "writable": true\ },\ {\ "name": "mint_to",\ "docs": ["#8 - Mint To", "CHECK"],\ "writable": true\ },\ {\ "name": "marinade_msol_mint_authority",\ "docs": ["#9 - Marinade mSOL Mint Authority", "CHECK"]\ },\ {\ "name": "system_program",\ "docs": ["#10 - System Program"],\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "token_program",\ "docs": ["#11 - Token Program"],\ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"\ },\ {\ "name": "marinade_finance_program",\ "docs": ["#12 - Marinade Finance Program", "CHECK"]\ },\ {\ "name": "referral_state",\ "docs": ["#13 - Referral State", "CHECK"],\ "writable": true\ },\ {\ "name": "msol_token_partner_account",\ "docs": ["#14 - mSOL Token Partner Account", "CHECK"],\ "writable": true\ }\ ]\ },\ {\ "name": "msol_staking_program",\ "docs": ["CHECK"]\ },\ {\ "name": "kamino_deposit_with_farm",\ "accounts": [\ {\ "name": "deposit_accounts_owner",\ "docs": ["#1 - Deposit Accounts Owner"],\ "writable": true\ },\ {\ "name": "accounts",\ "accounts": [\ {\ "name": "deposit_accounts_obligation",\ "docs": ["#2 - Deposit Accounts Obligation"],\ "writable": true\ },\ {\ "name": "deposit_accounts_lending_market",\ "docs": ["#3 - Deposit Accounts Lending Market"]\ },\ {\ "name": "deposit_accounts_lending_market_authority",\ "docs": ["#4 - Deposit Accounts Lending Market Authority"]\ },\ {\ "name": "deposit_accounts_reserve",\ "docs": ["#5 - Deposit Accounts Reserve"],\ "writable": true\ },\ {\ "name": "deposit_accounts_reserve_liquidity_mint",\ "docs": ["#6 - Deposit Accounts Reserve Liquidity Mint"]\ },\ {\ "name": "deposit_accounts_reserve_liquidity_supply",\ "docs": ["#7 - Deposit Accounts Reserve Liquidity Supply"],\ "writable": true\ },\ {\ "name": "deposit_accounts_reserve_collateral_mint",\ "docs": ["#8 - Deposit Accounts Reserve Collateral Mint"],\ "writable": true\ },\ {\ "name": "deposit_accounts_reserve_destination_deposit_collateral",\ "docs": [\ "#9 - Deposit Accounts Reserve Destination Deposit Collateral"\ ],\ "writable": true\ },\ {\ "name": "deposit_accounts_user_source_liquidity",\ "docs": ["#10 - Deposit Accounts User Source Liquidity"],\ "writable": true\ },\ {\ "name": "deposit_accounts_placeholder_user_destination_collateral",\ "docs": [\ "#11 - Deposit Accounts Placeholder User Destination Collateral"\ ]\ },\ {\ "name": "deposit_accounts_collateral_token_program",\ "docs": ["#12 - Deposit Accounts Collateral Token Program"]\ },\ {\ "name": "deposit_accounts_liquidity_token_program",\ "docs": ["#13 - Deposit Accounts Liquidity Token Program"]\ },\ {\ "name": "deposit_accounts_instruction_sysvar_account",\ "docs": ["#14 - Deposit Accounts Instruction Sysvar Account"]\ },\ {\ "name": "farms_accounts_obligation_farm_user_state",\ "docs": ["#15 - Farms Accounts Obligation Farm User State"]\ },\ {\ "name": "farms_accounts_reserve_farm_state",\ "docs": ["#16 - Farms Accounts Reserve Farm State"]\ },\ {\ "name": "farms_program",\ "docs": ["#17 - Farms Program"]\ }\ ]\ }\ ]\ },\ {\ "name": "kamino_borrow_with_farm",\ "accounts": [\ {\ "name": "borrow_accounts_owner",\ "docs": ["#1 - Borrow Accounts Owner"],\ "writable": true\ },\ {\ "name": "accounts",\ "accounts": [\ {\ "name": "borrow_accounts_obligation",\ "docs": ["#2 - Borrow Accounts Obligation"],\ "writable": true\ },\ {\ "name": "borrow_accounts_lending_market",\ "docs": ["#3 - Borrow Accounts Lending Market"]\ },\ {\ "name": "borrow_accounts_lending_market_authority",\ "docs": ["#4 - Borrow Accounts Lending Market Authority"]\ },\ {\ "name": "borrow_accounts_borrow_reserve",\ "docs": ["#5 - Borrow Accounts Borrow Reserve"],\ "writable": true\ },\ {\ "name": "borrow_accounts_borrow_reserve_liquidity_mint",\ "docs": ["#6 - Borrow Accounts Borrow Reserve Liquidity Mint"]\ },\ {\ "name": "borrow_accounts_reserve_source_liquidity",\ "docs": ["#7 - Borrow Accounts Reserve Source Liquidity"],\ "writable": true\ },\ {\ "name": "borrow_accounts_borrow_reserve_liquidity_fee_receiver",\ "docs": [\ "#8 - Borrow Accounts Borrow Reserve Liquidity Fee Receiver"\ ],\ "writable": true\ },\ {\ "name": "borrow_accounts_user_destination_liquidity",\ "docs": ["#9 - Borrow Accounts User Destination Liquidity"],\ "writable": true\ },\ {\ "name": "borrow_accounts_referrer_token_state",\ "docs": ["#10 - Borrow Accounts Referrer Token State"]\ },\ {\ "name": "borrow_accounts_token_program",\ "docs": ["#11 - Borrow Accounts Token Program"]\ },\ {\ "name": "borrow_accounts_instruction_sysvar_account",\ "docs": ["#12 - Borrow Accounts Instruction Sysvar Account"]\ },\ {\ "name": "farms_accounts_obligation_farm_user_state",\ "docs": ["#13 - Farms Accounts Obligation Farm User State"]\ },\ {\ "name": "farms_accounts_reserve_farm_state",\ "docs": ["#14 - Farms Accounts Reserve Farm State"]\ },\ {\ "name": "farms_program",\ "docs": ["#15 - Farms Program"]\ }\ ]\ }\ ]\ },\ {\ "name": "kamino_repay_with_farm",\ "accounts": [\ {\ "name": "repay_accounts_owner",\ "docs": ["#1 - Repay Accounts Owner"],\ "writable": true\ },\ {\ "name": "accounts",\ "accounts": [\ {\ "name": "repay_accounts_obligation",\ "docs": ["#2 - Repay Accounts Obligation"],\ "writable": true\ },\ {\ "name": "repay_accounts_lending_market",\ "docs": ["#3 - Repay Accounts Lending Market"]\ },\ {\ "name": "repay_accounts_repay_reserve",\ "docs": ["#4 - Repay Accounts Repay Reserve"],\ "writable": true\ },\ {\ "name": "repay_accounts_reserve_liquidity_mint",\ "docs": ["#5 - Repay Accounts Reserve Liquidity Mint"]\ },\ {\ "name": "repay_accounts_reserve_destination_liquidity",\ "docs": ["#6 - Repay Accounts Reserve Destination Liquidity"],\ "writable": true\ },\ {\ "name": "repay_accounts_user_source_liquidity",\ "docs": ["#7 - Repay Accounts User Source Liquidity"],\ "writable": true\ },\ {\ "name": "repay_accounts_token_program",\ "docs": ["#8 - Repay Accounts Token Program"]\ },\ {\ "name": "repay_accounts_instruction_sysvar_account",\ "docs": ["#9 - Repay Accounts Instruction Sysvar Account"]\ },\ {\ "name": "farms_accounts_obligation_farm_user_state",\ "docs": ["#10 - Farms Accounts Obligation Farm User State"]\ },\ {\ "name": "farms_accounts_reserve_farm_state",\ "docs": ["#11 - Farms Accounts Reserve Farm State"]\ },\ {\ "name": "lending_market_authority",\ "docs": ["#12 - Lending Market Authority"]\ },\ {\ "name": "farms_program",\ "docs": ["#13 - Farms Program"]\ }\ ]\ }\ ]\ },\ {\ "name": "associated_token_program",\ "docs": ["CHECK"]\ },\ {\ "name": "temp_sol_holder",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "chainlink_program",\ "docs": ["CHECK"]\ },\ {\ "name": "chainlink_sol_usd_price_feed",\ "docs": ["CHECK"]\ },\ {\ "name": "clock",\ "address": "SysvarC1ock11111111111111111111111111111111"\ },\ {\ "name": "kamino_withdraw_with_farm",\ "accounts": [\ {\ "name": "withdraw_accounts_owner",\ "docs": ["#1 - Withdraw Accounts Owner", "CHECK"]\ },\ {\ "name": "accounts",\ "accounts": [\ {\ "name": "withdraw_accounts_obligation",\ "docs": ["#2 - Withdraw Accounts Obligation", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_lending_market",\ "docs": ["#3 - Withdraw Accounts Lending Market", "CHECK"]\ },\ {\ "name": "withdraw_accounts_lending_market_authority",\ "docs": ["#4 - Withdraw Accounts Lending Market Authority", "CHECK"]\ },\ {\ "name": "withdraw_accounts_withdraw_reserve",\ "docs": ["#5 - Withdraw Accounts Withdraw Reserve", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_reserve_liquidity_mint",\ "docs": ["#6 - Withdraw Accounts Reserve Liquidity Mint", "CHECK"]\ },\ {\ "name": "withdraw_accounts_reserve_source_collateral",\ "docs": [\ "#7 - Withdraw Accounts Reserve Source Collateral",\ "CHECK"\ ],\ "writable": true\ },\ {\ "name": "withdraw_accounts_reserve_collateral_mint",\ "docs": ["#8 - Withdraw Accounts Reserve Collateral Mint", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_reserve_liquidity_supply",\ "docs": ["#9 - Withdraw Accounts Reserve Liquidity Supply", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_user_destination_liquidity",\ "docs": [\ "#10 - Withdraw Accounts User Destination Liquidity",\ "CHECK"\ ],\ "writable": true\ },\ {\ "name": "withdraw_accounts_placeholder_user_destination_collateral",\ "docs": [\ "#11 - Withdraw Accounts Placeholder User Destination Collateral",\ "CHECK"\ ]\ },\ {\ "name": "withdraw_accounts_collateral_token_program",\ "docs": ["#12 - Withdraw Accounts Collateral Token Program", "CHECK"]\ },\ {\ "name": "withdraw_accounts_liquidity_token_program",\ "docs": ["#13 - Withdraw Accounts Liquidity Token Program", "CHECK"]\ },\ {\ "name": "withdraw_accounts_instruction_sysvar_account",\ "docs": [\ "#14 - Withdraw Accounts Instruction Sysvar Account",\ "CHECK"\ ]\ },\ {\ "name": "farms_accounts_obligation_farm_user_state",\ "docs": ["#15 - Farms Accounts Obligation Farm User State", "CHECK"],\ "writable": true\ },\ {\ "name": "farms_accounts_reserve_farm_state",\ "docs": ["#16 - Farms Accounts Reserve Farm State", "CHECK"],\ "writable": true\ },\ {\ "name": "farms_program",\ "docs": ["#17 - Farms Program", "CHECK"]\ }\ ]\ }\ ]\ },\ {\ "name": "temp_sol_holder_msol_vault",\ "docs": ["CHECK"],\ "writable": true\ }\ ]\ },\ {\ "name": "kamino_lending_user_metadata",\ "accounts": [\ {\ "name": "owner",\ "signer": true\ },\ {\ "name": "fee_payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "user_metadata",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "referrer_user_metadata",\ "docs": ["CHECK"]\ },\ {\ "name": "rent",\ "address": "SysvarRent111111111111111111111111111111111"\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "kamino_lending_program",\ "docs": ["CHECK"]\ }\ ]\ },\ {\ "name": "kamino_lending_init_obligation",\ "accounts": [\ {\ "name": "obligation_owner",\ "signer": true\ },\ {\ "name": "fee_payer",\ "writable": true,\ "signer": true\ },\ {\ "name": "obligation",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "lending_market",\ "docs": ["CHECK"]\ },\ {\ "name": "seed1_account",\ "docs": ["CHECK"]\ },\ {\ "name": "seed2_account",\ "docs": ["CHECK"]\ },\ {\ "name": "owner_user_metadata",\ "docs": ["CHECK"]\ },\ {\ "name": "rent",\ "address": "SysvarRent111111111111111111111111111111111"\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ }\ ]\ },\ {\ "name": "kamino_lending_refresh_reserve",\ "accounts": [\ {\ "name": "reserve",\ "writable": true\ },\ {\ "name": "lending_market"\ },\ {\ "name": "pyth_oracle"\ },\ {\ "name": "switchboard_price_oracle"\ },\ {\ "name": "switchboard_twap_oracle"\ },\ {\ "name": "scope_prices"\ }\ ]\ },\ {\ "name": "kamino_lending_refresh_obligation",\ "accounts": [\ {\ "name": "lending_market"\ },\ {\ "name": "obligation",\ "writable": true\ }\ ]\ },\ {\ "name": "refresh_msol_price_list",\ "accounts": [\ {\ "name": "oracle_prices",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "oracle_mappings",\ "docs": ["CHECK"]\ },\ {\ "name": "oracle_twaps",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "instruction_sysvar_account_info"\ },\ {\ "name": "marinade_liquid_staking_state",\ "docs": ["CHECK"]\ },\ {\ "name": "pythnet_custody_price_sol_account",\ "docs": ["CHECK"]\ },\ {\ "name": "marinade_liquid_staking_state_2",\ "docs": ["CHECK"]\ },\ {\ "name": "pythnet_custody_price_sol_account_2",\ "docs": ["CHECK"]\ }\ ]\ },\ {\ "name": "msol_liquid_staking",\ "accounts": [\ {\ "name": "marinade_liquid_staking_state",\ "docs": ["#1 - Marinade Liquid Staking State", "CHECK"],\ "writable": true\ },\ {\ "name": "msol_mint",\ "docs": ["#2 - mSOL Mint", "CHECK"],\ "writable": true\ },\ {\ "name": "marinade_sol_leg_account",\ "docs": ["#3 - Marinade SOL Leg Account", "CHECK"],\ "writable": true\ },\ {\ "name": "marinade_msol_leg_account",\ "docs": ["#4 - Marinade mSOL Leg Account", "CHECK"],\ "writable": true\ },\ {\ "name": "marinade_msol_leg_authority",\ "docs": ["#5 - Marinade mSOL Leg Authority", "CHECK"]\ },\ {\ "name": "marinade_reserve_sol_pda",\ "docs": ["#6 - Marinade Reserve SOL PDA", "CHECK"],\ "writable": true\ },\ {\ "name": "transfer_from",\ "docs": ["#7 - Transfer From", "CHECK"],\ "writable": true\ },\ {\ "name": "mint_to",\ "docs": ["#8 - Mint To", "CHECK"],\ "writable": true\ },\ {\ "name": "marinade_msol_mint_authority",\ "docs": ["#9 - Marinade mSOL Mint Authority", "CHECK"]\ },\ {\ "name": "system_program",\ "docs": ["#10 - System Program"],\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "token_program",\ "docs": ["#11 - Token Program"],\ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"\ },\ {\ "name": "marinade_finance_program",\ "docs": ["#12 - Marinade Finance Program", "CHECK"]\ },\ {\ "name": "referral_state",\ "docs": ["#13 - Referral State", "CHECK"],\ "writable": true\ },\ {\ "name": "msol_token_partner_account",\ "docs": ["#14 - mSOL Token Partner Account", "CHECK"],\ "writable": true\ }\ ]\ },\ {\ "name": "msol_liquid_staking_cpi",\ "accounts": [\ {\ "name": "marinade_liquid_staking_state",\ "docs": ["#1 - Marinade Liquid Staking State", "CHECK"],\ "writable": true\ },\ {\ "name": "msol_mint",\ "docs": ["#2 - mSOL Mint", "CHECK"],\ "writable": true\ },\ {\ "name": "marinade_sol_leg_account",\ "docs": ["#3 - Marinade SOL Leg Account", "CHECK"],\ "writable": true\ },\ {\ "name": "marinade_msol_leg_account",\ "docs": ["#4 - Marinade mSOL Leg Account", "CHECK"],\ "writable": true\ },\ {\ "name": "marinade_msol_leg_authority",\ "docs": ["#5 - Marinade mSOL Leg Authority", "CHECK"]\ },\ {\ "name": "marinade_reserve_sol_pda",\ "docs": ["#6 - Marinade Reserve SOL PDA", "CHECK"],\ "writable": true\ },\ {\ "name": "transfer_from",\ "docs": ["#7 - Transfer From", "CHECK"],\ "writable": true,\ "signer": true\ },\ {\ "name": "mint_to",\ "docs": ["#8 - Mint To", "CHECK"],\ "writable": true\ },\ {\ "name": "marinade_msol_mint_authority",\ "docs": ["#9 - Marinade mSOL Mint Authority", "CHECK"]\ },\ {\ "name": "system_program",\ "docs": ["#10 - System Program"],\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "token_program",\ "docs": ["#11 - Token Program"],\ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"\ },\ {\ "name": "marinade_finance_program",\ "docs": ["#12 - Marinade Finance Program", "CHECK"]\ },\ {\ "name": "referral_state",\ "docs": ["#13 - Referral State", "CHECK"],\ "writable": true\ },\ {\ "name": "msol_token_partner_account",\ "docs": ["#14 - mSOL Token Partner Account", "CHECK"],\ "writable": true\ }\ ]\ },\ {\ "name": "kamino_deposit_with_farm",\ "accounts": [\ {\ "name": "deposit_accounts_obligation",\ "docs": ["#2 - Deposit Accounts Obligation"],\ "writable": true\ },\ {\ "name": "deposit_accounts_lending_market",\ "docs": ["#3 - Deposit Accounts Lending Market"]\ },\ {\ "name": "deposit_accounts_lending_market_authority",\ "docs": ["#4 - Deposit Accounts Lending Market Authority"]\ },\ {\ "name": "deposit_accounts_reserve",\ "docs": ["#5 - Deposit Accounts Reserve"],\ "writable": true\ },\ {\ "name": "deposit_accounts_reserve_liquidity_mint",\ "docs": ["#6 - Deposit Accounts Reserve Liquidity Mint"]\ },\ {\ "name": "deposit_accounts_reserve_liquidity_supply",\ "docs": ["#7 - Deposit Accounts Reserve Liquidity Supply"],\ "writable": true\ },\ {\ "name": "deposit_accounts_reserve_collateral_mint",\ "docs": ["#8 - Deposit Accounts Reserve Collateral Mint"],\ "writable": true\ },\ {\ "name": "deposit_accounts_reserve_destination_deposit_collateral",\ "docs": ["#9 - Deposit Accounts Reserve Destination Deposit Collateral"],\ "writable": true\ },\ {\ "name": "deposit_accounts_user_source_liquidity",\ "docs": ["#10 - Deposit Accounts User Source Liquidity"],\ "writable": true\ },\ {\ "name": "deposit_accounts_placeholder_user_destination_collateral",\ "docs": [\ "#11 - Deposit Accounts Placeholder User Destination Collateral"\ ]\ },\ {\ "name": "deposit_accounts_collateral_token_program",\ "docs": ["#12 - Deposit Accounts Collateral Token Program"]\ },\ {\ "name": "deposit_accounts_liquidity_token_program",\ "docs": ["#13 - Deposit Accounts Liquidity Token Program"]\ },\ {\ "name": "deposit_accounts_instruction_sysvar_account",\ "docs": ["#14 - Deposit Accounts Instruction Sysvar Account"]\ },\ {\ "name": "farms_accounts_obligation_farm_user_state",\ "docs": ["#15 - Farms Accounts Obligation Farm User State"]\ },\ {\ "name": "farms_accounts_reserve_farm_state",\ "docs": ["#16 - Farms Accounts Reserve Farm State"]\ },\ {\ "name": "farms_program",\ "docs": ["#17 - Farms Program"]\ }\ ]\ },\ {\ "name": "kamino_deposit_with_farm_cpi",\ "accounts": [\ {\ "name": "deposit_accounts_owner",\ "docs": ["#1 - Deposit Accounts Owner"],\ "writable": true,\ "signer": true\ },\ {\ "name": "accounts",\ "accounts": [\ {\ "name": "deposit_accounts_obligation",\ "docs": ["#2 - Deposit Accounts Obligation"],\ "writable": true\ },\ {\ "name": "deposit_accounts_lending_market",\ "docs": ["#3 - Deposit Accounts Lending Market"]\ },\ {\ "name": "deposit_accounts_lending_market_authority",\ "docs": ["#4 - Deposit Accounts Lending Market Authority"]\ },\ {\ "name": "deposit_accounts_reserve",\ "docs": ["#5 - Deposit Accounts Reserve"],\ "writable": true\ },\ {\ "name": "deposit_accounts_reserve_liquidity_mint",\ "docs": ["#6 - Deposit Accounts Reserve Liquidity Mint"]\ },\ {\ "name": "deposit_accounts_reserve_liquidity_supply",\ "docs": ["#7 - Deposit Accounts Reserve Liquidity Supply"],\ "writable": true\ },\ {\ "name": "deposit_accounts_reserve_collateral_mint",\ "docs": ["#8 - Deposit Accounts Reserve Collateral Mint"],\ "writable": true\ },\ {\ "name": "deposit_accounts_reserve_destination_deposit_collateral",\ "docs": [\ "#9 - Deposit Accounts Reserve Destination Deposit Collateral"\ ],\ "writable": true\ },\ {\ "name": "deposit_accounts_user_source_liquidity",\ "docs": ["#10 - Deposit Accounts User Source Liquidity"],\ "writable": true\ },\ {\ "name": "deposit_accounts_placeholder_user_destination_collateral",\ "docs": [\ "#11 - Deposit Accounts Placeholder User Destination Collateral"\ ]\ },\ {\ "name": "deposit_accounts_collateral_token_program",\ "docs": ["#12 - Deposit Accounts Collateral Token Program"]\ },\ {\ "name": "deposit_accounts_liquidity_token_program",\ "docs": ["#13 - Deposit Accounts Liquidity Token Program"]\ },\ {\ "name": "deposit_accounts_instruction_sysvar_account",\ "docs": ["#14 - Deposit Accounts Instruction Sysvar Account"]\ },\ {\ "name": "farms_accounts_obligation_farm_user_state",\ "docs": ["#15 - Farms Accounts Obligation Farm User State"]\ },\ {\ "name": "farms_accounts_reserve_farm_state",\ "docs": ["#16 - Farms Accounts Reserve Farm State"]\ },\ {\ "name": "farms_program",\ "docs": ["#17 - Farms Program"]\ }\ ]\ }\ ]\ },\ {\ "name": "kamino_deposit_with_farm_client",\ "accounts": [\ {\ "name": "deposit_accounts_owner",\ "docs": ["#1 - Deposit Accounts Owner"],\ "writable": true\ },\ {\ "name": "accounts",\ "accounts": [\ {\ "name": "deposit_accounts_obligation",\ "docs": ["#2 - Deposit Accounts Obligation"],\ "writable": true\ },\ {\ "name": "deposit_accounts_lending_market",\ "docs": ["#3 - Deposit Accounts Lending Market"]\ },\ {\ "name": "deposit_accounts_lending_market_authority",\ "docs": ["#4 - Deposit Accounts Lending Market Authority"]\ },\ {\ "name": "deposit_accounts_reserve",\ "docs": ["#5 - Deposit Accounts Reserve"],\ "writable": true\ },\ {\ "name": "deposit_accounts_reserve_liquidity_mint",\ "docs": ["#6 - Deposit Accounts Reserve Liquidity Mint"]\ },\ {\ "name": "deposit_accounts_reserve_liquidity_supply",\ "docs": ["#7 - Deposit Accounts Reserve Liquidity Supply"],\ "writable": true\ },\ {\ "name": "deposit_accounts_reserve_collateral_mint",\ "docs": ["#8 - Deposit Accounts Reserve Collateral Mint"],\ "writable": true\ },\ {\ "name": "deposit_accounts_reserve_destination_deposit_collateral",\ "docs": [\ "#9 - Deposit Accounts Reserve Destination Deposit Collateral"\ ],\ "writable": true\ },\ {\ "name": "deposit_accounts_user_source_liquidity",\ "docs": ["#10 - Deposit Accounts User Source Liquidity"],\ "writable": true\ },\ {\ "name": "deposit_accounts_placeholder_user_destination_collateral",\ "docs": [\ "#11 - Deposit Accounts Placeholder User Destination Collateral"\ ]\ },\ {\ "name": "deposit_accounts_collateral_token_program",\ "docs": ["#12 - Deposit Accounts Collateral Token Program"]\ },\ {\ "name": "deposit_accounts_liquidity_token_program",\ "docs": ["#13 - Deposit Accounts Liquidity Token Program"]\ },\ {\ "name": "deposit_accounts_instruction_sysvar_account",\ "docs": ["#14 - Deposit Accounts Instruction Sysvar Account"]\ },\ {\ "name": "farms_accounts_obligation_farm_user_state",\ "docs": ["#15 - Farms Accounts Obligation Farm User State"]\ },\ {\ "name": "farms_accounts_reserve_farm_state",\ "docs": ["#16 - Farms Accounts Reserve Farm State"]\ },\ {\ "name": "farms_program",\ "docs": ["#17 - Farms Program"]\ }\ ]\ }\ ]\ },\ {\ "name": "kamino_borrow_with_farm",\ "accounts": [\ {\ "name": "borrow_accounts_obligation",\ "docs": ["#2 - Borrow Accounts Obligation"],\ "writable": true\ },\ {\ "name": "borrow_accounts_lending_market",\ "docs": ["#3 - Borrow Accounts Lending Market"]\ },\ {\ "name": "borrow_accounts_lending_market_authority",\ "docs": ["#4 - Borrow Accounts Lending Market Authority"]\ },\ {\ "name": "borrow_accounts_borrow_reserve",\ "docs": ["#5 - Borrow Accounts Borrow Reserve"],\ "writable": true\ },\ {\ "name": "borrow_accounts_borrow_reserve_liquidity_mint",\ "docs": ["#6 - Borrow Accounts Borrow Reserve Liquidity Mint"]\ },\ {\ "name": "borrow_accounts_reserve_source_liquidity",\ "docs": ["#7 - Borrow Accounts Reserve Source Liquidity"],\ "writable": true\ },\ {\ "name": "borrow_accounts_borrow_reserve_liquidity_fee_receiver",\ "docs": ["#8 - Borrow Accounts Borrow Reserve Liquidity Fee Receiver"],\ "writable": true\ },\ {\ "name": "borrow_accounts_user_destination_liquidity",\ "docs": ["#9 - Borrow Accounts User Destination Liquidity"],\ "writable": true\ },\ {\ "name": "borrow_accounts_referrer_token_state",\ "docs": ["#10 - Borrow Accounts Referrer Token State"]\ },\ {\ "name": "borrow_accounts_token_program",\ "docs": ["#11 - Borrow Accounts Token Program"]\ },\ {\ "name": "borrow_accounts_instruction_sysvar_account",\ "docs": ["#12 - Borrow Accounts Instruction Sysvar Account"]\ },\ {\ "name": "farms_accounts_obligation_farm_user_state",\ "docs": ["#13 - Farms Accounts Obligation Farm User State"]\ },\ {\ "name": "farms_accounts_reserve_farm_state",\ "docs": ["#14 - Farms Accounts Reserve Farm State"]\ },\ {\ "name": "farms_program",\ "docs": ["#15 - Farms Program"]\ }\ ]\ },\ {\ "name": "kamino_borrow_with_farm_cpi",\ "accounts": [\ {\ "name": "borrow_accounts_owner",\ "docs": ["#1 - Borrow Accounts Owner"],\ "writable": true,\ "signer": true\ },\ {\ "name": "accounts",\ "accounts": [\ {\ "name": "borrow_accounts_obligation",\ "docs": ["#2 - Borrow Accounts Obligation"],\ "writable": true\ },\ {\ "name": "borrow_accounts_lending_market",\ "docs": ["#3 - Borrow Accounts Lending Market"]\ },\ {\ "name": "borrow_accounts_lending_market_authority",\ "docs": ["#4 - Borrow Accounts Lending Market Authority"]\ },\ {\ "name": "borrow_accounts_borrow_reserve",\ "docs": ["#5 - Borrow Accounts Borrow Reserve"],\ "writable": true\ },\ {\ "name": "borrow_accounts_borrow_reserve_liquidity_mint",\ "docs": ["#6 - Borrow Accounts Borrow Reserve Liquidity Mint"]\ },\ {\ "name": "borrow_accounts_reserve_source_liquidity",\ "docs": ["#7 - Borrow Accounts Reserve Source Liquidity"],\ "writable": true\ },\ {\ "name": "borrow_accounts_borrow_reserve_liquidity_fee_receiver",\ "docs": ["#8 - Borrow Accounts Borrow Reserve Liquidity Fee Receiver"],\ "writable": true\ },\ {\ "name": "borrow_accounts_user_destination_liquidity",\ "docs": ["#9 - Borrow Accounts User Destination Liquidity"],\ "writable": true\ },\ {\ "name": "borrow_accounts_referrer_token_state",\ "docs": ["#10 - Borrow Accounts Referrer Token State"]\ },\ {\ "name": "borrow_accounts_token_program",\ "docs": ["#11 - Borrow Accounts Token Program"]\ },\ {\ "name": "borrow_accounts_instruction_sysvar_account",\ "docs": ["#12 - Borrow Accounts Instruction Sysvar Account"]\ },\ {\ "name": "farms_accounts_obligation_farm_user_state",\ "docs": ["#13 - Farms Accounts Obligation Farm User State"]\ },\ {\ "name": "farms_accounts_reserve_farm_state",\ "docs": ["#14 - Farms Accounts Reserve Farm State"]\ },\ {\ "name": "farms_program",\ "docs": ["#15 - Farms Program"]\ }\ ]\ }\ ]\ },\ {\ "name": "kamino_borrow_with_farm_client",\ "accounts": [\ {\ "name": "borrow_accounts_owner",\ "docs": ["#1 - Borrow Accounts Owner"],\ "writable": true\ },\ {\ "name": "accounts",\ "accounts": [\ {\ "name": "borrow_accounts_obligation",\ "docs": ["#2 - Borrow Accounts Obligation"],\ "writable": true\ },\ {\ "name": "borrow_accounts_lending_market",\ "docs": ["#3 - Borrow Accounts Lending Market"]\ },\ {\ "name": "borrow_accounts_lending_market_authority",\ "docs": ["#4 - Borrow Accounts Lending Market Authority"]\ },\ {\ "name": "borrow_accounts_borrow_reserve",\ "docs": ["#5 - Borrow Accounts Borrow Reserve"],\ "writable": true\ },\ {\ "name": "borrow_accounts_borrow_reserve_liquidity_mint",\ "docs": ["#6 - Borrow Accounts Borrow Reserve Liquidity Mint"]\ },\ {\ "name": "borrow_accounts_reserve_source_liquidity",\ "docs": ["#7 - Borrow Accounts Reserve Source Liquidity"],\ "writable": true\ },\ {\ "name": "borrow_accounts_borrow_reserve_liquidity_fee_receiver",\ "docs": ["#8 - Borrow Accounts Borrow Reserve Liquidity Fee Receiver"],\ "writable": true\ },\ {\ "name": "borrow_accounts_user_destination_liquidity",\ "docs": ["#9 - Borrow Accounts User Destination Liquidity"],\ "writable": true\ },\ {\ "name": "borrow_accounts_referrer_token_state",\ "docs": ["#10 - Borrow Accounts Referrer Token State"]\ },\ {\ "name": "borrow_accounts_token_program",\ "docs": ["#11 - Borrow Accounts Token Program"]\ },\ {\ "name": "borrow_accounts_instruction_sysvar_account",\ "docs": ["#12 - Borrow Accounts Instruction Sysvar Account"]\ },\ {\ "name": "farms_accounts_obligation_farm_user_state",\ "docs": ["#13 - Farms Accounts Obligation Farm User State"]\ },\ {\ "name": "farms_accounts_reserve_farm_state",\ "docs": ["#14 - Farms Accounts Reserve Farm State"]\ },\ {\ "name": "farms_program",\ "docs": ["#15 - Farms Program"]\ }\ ]\ }\ ]\ },\ {\ "name": "kamino_repay_with_farm",\ "accounts": [\ {\ "name": "repay_accounts_obligation",\ "docs": ["#2 - Repay Accounts Obligation"],\ "writable": true\ },\ {\ "name": "repay_accounts_lending_market",\ "docs": ["#3 - Repay Accounts Lending Market"]\ },\ {\ "name": "repay_accounts_repay_reserve",\ "docs": ["#4 - Repay Accounts Repay Reserve"],\ "writable": true\ },\ {\ "name": "repay_accounts_reserve_liquidity_mint",\ "docs": ["#5 - Repay Accounts Reserve Liquidity Mint"]\ },\ {\ "name": "repay_accounts_reserve_destination_liquidity",\ "docs": ["#6 - Repay Accounts Reserve Destination Liquidity"],\ "writable": true\ },\ {\ "name": "repay_accounts_user_source_liquidity",\ "docs": ["#7 - Repay Accounts User Source Liquidity"],\ "writable": true\ },\ {\ "name": "repay_accounts_token_program",\ "docs": ["#8 - Repay Accounts Token Program"]\ },\ {\ "name": "repay_accounts_instruction_sysvar_account",\ "docs": ["#9 - Repay Accounts Instruction Sysvar Account"]\ },\ {\ "name": "farms_accounts_obligation_farm_user_state",\ "docs": ["#10 - Farms Accounts Obligation Farm User State"]\ },\ {\ "name": "farms_accounts_reserve_farm_state",\ "docs": ["#11 - Farms Accounts Reserve Farm State"]\ },\ {\ "name": "lending_market_authority",\ "docs": ["#12 - Lending Market Authority"]\ },\ {\ "name": "farms_program",\ "docs": ["#13 - Farms Program"]\ }\ ]\ },\ {\ "name": "kamino_repay_with_farm_cpi",\ "accounts": [\ {\ "name": "repay_accounts_owner",\ "docs": ["#1 - Repay Accounts Owner"],\ "writable": true,\ "signer": true\ },\ {\ "name": "accounts",\ "accounts": [\ {\ "name": "repay_accounts_obligation",\ "docs": ["#2 - Repay Accounts Obligation"],\ "writable": true\ },\ {\ "name": "repay_accounts_lending_market",\ "docs": ["#3 - Repay Accounts Lending Market"]\ },\ {\ "name": "repay_accounts_repay_reserve",\ "docs": ["#4 - Repay Accounts Repay Reserve"],\ "writable": true\ },\ {\ "name": "repay_accounts_reserve_liquidity_mint",\ "docs": ["#5 - Repay Accounts Reserve Liquidity Mint"]\ },\ {\ "name": "repay_accounts_reserve_destination_liquidity",\ "docs": ["#6 - Repay Accounts Reserve Destination Liquidity"],\ "writable": true\ },\ {\ "name": "repay_accounts_user_source_liquidity",\ "docs": ["#7 - Repay Accounts User Source Liquidity"],\ "writable": true\ },\ {\ "name": "repay_accounts_token_program",\ "docs": ["#8 - Repay Accounts Token Program"]\ },\ {\ "name": "repay_accounts_instruction_sysvar_account",\ "docs": ["#9 - Repay Accounts Instruction Sysvar Account"]\ },\ {\ "name": "farms_accounts_obligation_farm_user_state",\ "docs": ["#10 - Farms Accounts Obligation Farm User State"]\ },\ {\ "name": "farms_accounts_reserve_farm_state",\ "docs": ["#11 - Farms Accounts Reserve Farm State"]\ },\ {\ "name": "lending_market_authority",\ "docs": ["#12 - Lending Market Authority"]\ },\ {\ "name": "farms_program",\ "docs": ["#13 - Farms Program"]\ }\ ]\ }\ ]\ },\ {\ "name": "kamino_repay_with_farm_client",\ "accounts": [\ {\ "name": "repay_accounts_owner",\ "docs": ["#1 - Repay Accounts Owner"],\ "writable": true\ },\ {\ "name": "accounts",\ "accounts": [\ {\ "name": "repay_accounts_obligation",\ "docs": ["#2 - Repay Accounts Obligation"],\ "writable": true\ },\ {\ "name": "repay_accounts_lending_market",\ "docs": ["#3 - Repay Accounts Lending Market"]\ },\ {\ "name": "repay_accounts_repay_reserve",\ "docs": ["#4 - Repay Accounts Repay Reserve"],\ "writable": true\ },\ {\ "name": "repay_accounts_reserve_liquidity_mint",\ "docs": ["#5 - Repay Accounts Reserve Liquidity Mint"]\ },\ {\ "name": "repay_accounts_reserve_destination_liquidity",\ "docs": ["#6 - Repay Accounts Reserve Destination Liquidity"],\ "writable": true\ },\ {\ "name": "repay_accounts_user_source_liquidity",\ "docs": ["#7 - Repay Accounts User Source Liquidity"],\ "writable": true\ },\ {\ "name": "repay_accounts_token_program",\ "docs": ["#8 - Repay Accounts Token Program"]\ },\ {\ "name": "repay_accounts_instruction_sysvar_account",\ "docs": ["#9 - Repay Accounts Instruction Sysvar Account"]\ },\ {\ "name": "farms_accounts_obligation_farm_user_state",\ "docs": ["#10 - Farms Accounts Obligation Farm User State"]\ },\ {\ "name": "farms_accounts_reserve_farm_state",\ "docs": ["#11 - Farms Accounts Reserve Farm State"]\ },\ {\ "name": "lending_market_authority",\ "docs": ["#12 - Lending Market Authority"]\ },\ {\ "name": "farms_program",\ "docs": ["#13 - Farms Program"]\ }\ ]\ }\ ]\ },\ {\ "name": "order_unstake_msol_client",\ "accounts": [\ {\ "name": "marinade_finance_program",\ "docs": ["CHECK"]\ },\ {\ "name": "marinade_liquid_staking_state",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "msol_mint",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "burn_msol_from",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "burn_msol_authority",\ "docs": ["CHECK"],\ "writable": true,\ "signer": true\ },\ {\ "name": "new_ticket_account",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "clock",\ "address": "SysvarC1ock11111111111111111111111111111111"\ },\ {\ "name": "rent",\ "address": "SysvarRent111111111111111111111111111111111"\ },\ {\ "name": "token_program",\ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"\ }\ ]\ },\ {\ "name": "order_unstake_msol_cpi",\ "accounts": [\ {\ "name": "marinade_liquid_staking_state",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "msol_mint",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "burn_msol_from",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "burn_msol_authority",\ "docs": ["CHECK"],\ "writable": true,\ "signer": true\ },\ {\ "name": "new_ticket_account",\ "docs": ["CHECK"],\ "writable": true,\ "signer": true\ },\ {\ "name": "clock",\ "address": "SysvarC1ock11111111111111111111111111111111"\ },\ {\ "name": "rent",\ "address": "SysvarRent111111111111111111111111111111111"\ },\ {\ "name": "token_program",\ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"\ }\ ]\ },\ {\ "name": "claim_msol_cpi",\ "accounts": [\ {\ "name": "state",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "reserve_pda",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "ticket_account",\ "docs": ["CHECK"],\ "writable": true\ },\ {\ "name": "transfer_sol_to",\ "docs": ["CHECK"],\ "writable": true,\ "signer": true\ },\ {\ "name": "clock",\ "address": "SysvarC1ock11111111111111111111111111111111"\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ }\ ]\ },\ {\ "name": "kamino_withdraw_with_farm",\ "accounts": [\ {\ "name": "withdraw_accounts_obligation",\ "docs": ["#2 - Withdraw Accounts Obligation", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_lending_market",\ "docs": ["#3 - Withdraw Accounts Lending Market", "CHECK"]\ },\ {\ "name": "withdraw_accounts_lending_market_authority",\ "docs": ["#4 - Withdraw Accounts Lending Market Authority", "CHECK"]\ },\ {\ "name": "withdraw_accounts_withdraw_reserve",\ "docs": ["#5 - Withdraw Accounts Withdraw Reserve", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_reserve_liquidity_mint",\ "docs": ["#6 - Withdraw Accounts Reserve Liquidity Mint", "CHECK"]\ },\ {\ "name": "withdraw_accounts_reserve_source_collateral",\ "docs": ["#7 - Withdraw Accounts Reserve Source Collateral", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_reserve_collateral_mint",\ "docs": ["#8 - Withdraw Accounts Reserve Collateral Mint", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_reserve_liquidity_supply",\ "docs": ["#9 - Withdraw Accounts Reserve Liquidity Supply", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_user_destination_liquidity",\ "docs": ["#10 - Withdraw Accounts User Destination Liquidity", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_placeholder_user_destination_collateral",\ "docs": [\ "#11 - Withdraw Accounts Placeholder User Destination Collateral",\ "CHECK"\ ]\ },\ {\ "name": "withdraw_accounts_collateral_token_program",\ "docs": ["#12 - Withdraw Accounts Collateral Token Program", "CHECK"]\ },\ {\ "name": "withdraw_accounts_liquidity_token_program",\ "docs": ["#13 - Withdraw Accounts Liquidity Token Program", "CHECK"]\ },\ {\ "name": "withdraw_accounts_instruction_sysvar_account",\ "docs": ["#14 - Withdraw Accounts Instruction Sysvar Account", "CHECK"]\ },\ {\ "name": "farms_accounts_obligation_farm_user_state",\ "docs": ["#15 - Farms Accounts Obligation Farm User State", "CHECK"],\ "writable": true\ },\ {\ "name": "farms_accounts_reserve_farm_state",\ "docs": ["#16 - Farms Accounts Reserve Farm State", "CHECK"],\ "writable": true\ },\ {\ "name": "farms_program",\ "docs": ["#17 - Farms Program", "CHECK"]\ }\ ]\ },\ {\ "name": "kamino_withdraw_with_farm_cpi",\ "accounts": [\ {\ "name": "withdraw_accounts_owner",\ "docs": ["#1 - Withdraw Accounts Owner", "CHECK"],\ "writable": true,\ "signer": true\ },\ {\ "name": "accounts",\ "accounts": [\ {\ "name": "withdraw_accounts_obligation",\ "docs": ["#2 - Withdraw Accounts Obligation", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_lending_market",\ "docs": ["#3 - Withdraw Accounts Lending Market", "CHECK"]\ },\ {\ "name": "withdraw_accounts_lending_market_authority",\ "docs": ["#4 - Withdraw Accounts Lending Market Authority", "CHECK"]\ },\ {\ "name": "withdraw_accounts_withdraw_reserve",\ "docs": ["#5 - Withdraw Accounts Withdraw Reserve", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_reserve_liquidity_mint",\ "docs": ["#6 - Withdraw Accounts Reserve Liquidity Mint", "CHECK"]\ },\ {\ "name": "withdraw_accounts_reserve_source_collateral",\ "docs": ["#7 - Withdraw Accounts Reserve Source Collateral", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_reserve_collateral_mint",\ "docs": ["#8 - Withdraw Accounts Reserve Collateral Mint", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_reserve_liquidity_supply",\ "docs": ["#9 - Withdraw Accounts Reserve Liquidity Supply", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_user_destination_liquidity",\ "docs": [\ "#10 - Withdraw Accounts User Destination Liquidity",\ "CHECK"\ ],\ "writable": true\ },\ {\ "name": "withdraw_accounts_placeholder_user_destination_collateral",\ "docs": [\ "#11 - Withdraw Accounts Placeholder User Destination Collateral",\ "CHECK"\ ]\ },\ {\ "name": "withdraw_accounts_collateral_token_program",\ "docs": ["#12 - Withdraw Accounts Collateral Token Program", "CHECK"]\ },\ {\ "name": "withdraw_accounts_liquidity_token_program",\ "docs": ["#13 - Withdraw Accounts Liquidity Token Program", "CHECK"]\ },\ {\ "name": "withdraw_accounts_instruction_sysvar_account",\ "docs": ["#14 - Withdraw Accounts Instruction Sysvar Account", "CHECK"]\ },\ {\ "name": "farms_accounts_obligation_farm_user_state",\ "docs": ["#15 - Farms Accounts Obligation Farm User State", "CHECK"],\ "writable": true\ },\ {\ "name": "farms_accounts_reserve_farm_state",\ "docs": ["#16 - Farms Accounts Reserve Farm State", "CHECK"],\ "writable": true\ },\ {\ "name": "farms_program",\ "docs": ["#17 - Farms Program", "CHECK"]\ }\ ]\ }\ ]\ },\ {\ "name": "kamino_withdraw_with_farm_client",\ "accounts": [\ {\ "name": "withdraw_accounts_owner",\ "docs": ["#1 - Withdraw Accounts Owner", "CHECK"]\ },\ {\ "name": "accounts",\ "accounts": [\ {\ "name": "withdraw_accounts_obligation",\ "docs": ["#2 - Withdraw Accounts Obligation", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_lending_market",\ "docs": ["#3 - Withdraw Accounts Lending Market", "CHECK"]\ },\ {\ "name": "withdraw_accounts_lending_market_authority",\ "docs": ["#4 - Withdraw Accounts Lending Market Authority", "CHECK"]\ },\ {\ "name": "withdraw_accounts_withdraw_reserve",\ "docs": ["#5 - Withdraw Accounts Withdraw Reserve", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_reserve_liquidity_mint",\ "docs": ["#6 - Withdraw Accounts Reserve Liquidity Mint", "CHECK"]\ },\ {\ "name": "withdraw_accounts_reserve_source_collateral",\ "docs": ["#7 - Withdraw Accounts Reserve Source Collateral", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_reserve_collateral_mint",\ "docs": ["#8 - Withdraw Accounts Reserve Collateral Mint", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_reserve_liquidity_supply",\ "docs": ["#9 - Withdraw Accounts Reserve Liquidity Supply", "CHECK"],\ "writable": true\ },\ {\ "name": "withdraw_accounts_user_destination_liquidity",\ "docs": [\ "#10 - Withdraw Accounts User Destination Liquidity",\ "CHECK"\ ],\ "writable": true\ },\ {\ "name": "withdraw_accounts_placeholder_user_destination_collateral",\ "docs": [\ "#11 - Withdraw Accounts Placeholder User Destination Collateral",\ "CHECK"\ ]\ },\ {\ "name": "withdraw_accounts_collateral_token_program",\ "docs": ["#12 - Withdraw Accounts Collateral Token Program", "CHECK"]\ },\ {\ "name": "withdraw_accounts_liquidity_token_program",\ "docs": ["#13 - Withdraw Accounts Liquidity Token Program", "CHECK"]\ },\ {\ "name": "withdraw_accounts_instruction_sysvar_account",\ "docs": ["#14 - Withdraw Accounts Instruction Sysvar Account", "CHECK"]\ },\ {\ "name": "farms_accounts_obligation_farm_user_state",\ "docs": ["#15 - Farms Accounts Obligation Farm User State", "CHECK"],\ "writable": true\ },\ {\ "name": "farms_accounts_reserve_farm_state",\ "docs": ["#16 - Farms Accounts Reserve Farm State", "CHECK"],\ "writable": true\ },\ {\ "name": "farms_program",\ "docs": ["#17 - Farms Program", "CHECK"]\ }\ ]\ }\ ]\ }\ ],\ "args": []\ },\ {\ "name": "sell",\ "discriminator": [51, 230, 133, 164, 1, 127, 131, 173],\ "accounts": [\ {\ "name": "token_a_program"\ },\ {\ "name": "token_b_program"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "liquidity_pool_state",\ "writable": true\ },\ {\ "name": "user",\ "docs": ["CHECK"],\ "writable": true,\ "signer": true\ },\ {\ "name": "token_a_mint",\ "docs": ["CHECK"]\ },\ {\ "name": "token_b_mint",\ "docs": ["CHECK"]\ },\ {\ "name": "user_token_a_vault",\ "writable": true\ },\ {\ "name": "user_token_b_vault",\ "writable": true\ },\ {\ "name": "token_a_vault",\ "writable": true\ },\ {\ "name": "token_b_vault",\ "writable": true\ },\ {\ "name": "protocol_config",\ "writable": true\ },\ {\ "name": "instruction_sysvar_account_info",\ "docs": ["CHECK"],\ "address": "Sysvar1nstructions1111111111111111111111111"\ }\ ],\ "args": [\ {\ "name": "params",\ "type": {\ "defined": {\ "name": "SellParams"\ }\ }\ }\ ],\ "returns": "u64"\ },\ {\ "name": "set_protocol_slot_fees",\ "discriminator": [181, 82, 19, 15, 126, 205, 152, 242],\ "accounts": [\ {\ "name": "owner",\ "signer": true\ },\ {\ "name": "protocol_config_state",\ "writable": true,\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 99, 111, 110, 102, 105, 103,\ 95, 115, 116, 97, 116, 101\ ]\ },\ {\ "kind": "arg",\ "path": "version"\ }\ ]\ }\ },\ {\ "name": "protocol_owner_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 111, 119, 110, 101, 114, 95,\ 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ }\ ],\ "args": [\ {\ "name": "version",\ "type": "u16"\ },\ {\ "name": "fee_type",\ "type": {\ "defined": {\ "name": "FeeType"\ }\ }\ },\ {\ "name": "slot_fees",\ "type": {\ "defined": {\ "name": "SlotFeeBracketsParams"\ }\ }\ }\ ]\ },\ {\ "name": "update_allow_create_pool",\ "discriminator": [223, 252, 231, 62, 96, 219, 241, 214],\ "accounts": [\ {\ "name": "admin",\ "signer": true\ },\ {\ "name": "protocol_config_state",\ "writable": true\ },\ {\ "name": "protocol_admin_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 102, 101, 101, 95, 97, 100,\ 109, 105, 110, 95, 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ }\ ],\ "args": [\ {\ "name": "version",\ "type": "u16"\ },\ {\ "name": "allow_create_pool",\ "type": "bool"\ }\ ]\ },\ {\ "name": "update_creator_trading_fee_receiver",\ "discriminator": [246, 229, 200, 79, 31, 21, 120, 25],\ "accounts": [\ {\ "name": "swap",\ "accounts": [\ {\ "name": "token_a_program"\ },\ {\ "name": "token_b_program"\ },\ {\ "name": "associated_token_program",\ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"\ },\ {\ "name": "system_program",\ "address": "11111111111111111111111111111111"\ },\ {\ "name": "liquidity_pool_state",\ "writable": true\ },\ {\ "name": "user",\ "docs": ["CHECK"],\ "writable": true,\ "signer": true\ },\ {\ "name": "token_a_mint",\ "docs": ["CHECK"]\ },\ {\ "name": "token_b_mint",\ "docs": ["CHECK"]\ },\ {\ "name": "user_token_a_vault",\ "writable": true\ },\ {\ "name": "user_token_b_vault",\ "writable": true\ },\ {\ "name": "token_a_vault",\ "writable": true\ },\ {\ "name": "token_b_vault",\ "writable": true\ },\ {\ "name": "protocol_config",\ "writable": true\ },\ {\ "name": "instruction_sysvar_account_info",\ "docs": ["CHECK"],\ "address": "Sysvar1nstructions1111111111111111111111111"\ }\ ]\ },\ {\ "name": "new_receiver",\ "signer": true\ }\ ],\ "args": []\ },\ {\ "name": "update_protocol_config",\ "discriminator": [197, 97, 123, 54, 221, 168, 11, 135],\ "accounts": [\ {\ "name": "owner",\ "signer": true\ },\ {\ "name": "protocol_config_state",\ "writable": true\ },\ {\ "name": "protocol_owner_state",\ "pda": {\ "seeds": [\ {\ "kind": "const",\ "value": [\ 112, 114, 111, 116, 111, 99, 111, 108, 95, 111, 119, 110, 101, 114, 95,\ 115, 116, 97, 116, 101\ ]\ }\ ]\ }\ }\ ],\ "args": [\ {\ "name": "version",\ "type": "u16"\ },\ {\ "name": "params",\ "type": {\ "defined": {\ "name": "ProtocolConfigParams"\ }\ }\ }\ ]\ }\ ], "accounts": [\ {\ "name": "LiquidityPoolState",\ "discriminator": [190, 158, 220, 130, 15, 162, 132, 252]\ },\ {\ "name": "MsolTicketSolSpent",\ "discriminator": [66, 196, 62, 134, 124, 149, 250, 66]\ },\ {\ "name": "ProtocolAdminState",\ "discriminator": [24, 124, 174, 225, 232, 30, 115, 192]\ },\ {\ "name": "ProtocolConfig",\ "discriminator": [207, 91, 250, 28, 152, 179, 215, 209]\ },\ {\ "name": "ProtocolOwnerState",\ "discriminator": [208, 64, 209, 204, 113, 226, 22, 98]\ }\ ], "events": [\ {\ "name": "CreateLiquidityPoolEvent",\ "discriminator": [116, 216, 239, 141, 207, 211, 178, 127]\ },\ {\ "name": "CreateStandardLiquidityPoolEvent",\ "discriminator": [189, 56, 131, 144, 75, 63, 249, 148]\ },\ {\ "name": "CreatingLiquidityPoolEvent",\ "discriminator": [52, 128, 4, 166, 122, 176, 84, 207]\ },\ {\ "name": "TradeEvent",\ "discriminator": [189, 219, 127, 211, 78, 230, 97, 238]\ },\ {\ "name": "UserDefinedEvent",\ "discriminator": [33, 21, 108, 20, 241, 244, 167, 131]\ }\ ], "errors": [\ {\ "code": 6000,\ "name": "UnsupportedTokenMint",\ "msg": "Unsupported token mint"\ },\ {\ "code": 6001,\ "name": "InvalidTokenVaultBalance",\ "msg": "Invalid token vault balance"\ },\ {\ "code": 6002,\ "name": "InvalidUserToken",\ "msg": "Invalid user token"\ },\ {\ "code": 6003,\ "name": "InvalidTaxationMode",\ "msg": "Invalid taxation mode"\ },\ {\ "code": 6004,\ "name": "InvalidOwner",\ "msg": "Invalid owner"\ },\ {\ "code": 6005,\ "name": "InvalidLockLiquidityProviderTokenPercentage",\ "msg": "Invalid lock liquidity provider token percentage"\ },\ {\ "code": 6006,\ "name": "CannotCreatePoolWithDisabledProtocolConfigVersion",\ "msg": "Cannot create pool with the a disabled protocol config version"\ },\ {\ "code": 6007,\ "name": "InvalidTokenInputAmount",\ "msg": "Invalid token input amount"\ },\ {\ "code": 6008,\ "name": "InvalidSwapTax",\ "msg": "Invalid swap tax"\ },\ {\ "code": 6009,\ "name": "InvalidFeeMode",\ "msg": "Invalid fee mode"\ },\ {\ "code": 6010,\ "name": "InvalidLiquidityProviderTokenLockVault",\ "msg": "Invalid liquidity provider token lock vault"\ },\ {\ "code": 6011,\ "name": "InvalidUserLiquidityProviderTokenVault",\ "msg": "Invalid liquidity provider token vault"\ },\ {\ "code": 6012,\ "name": "InsufficientBalance",\ "msg": "Insufficient balance"\ },\ {\ "code": 6013,\ "name": "ExceededSlippage",\ "msg": "Exceeded slippage"\ },\ {\ "code": 6014,\ "name": "InvalidAddLiquidityInput",\ "msg": "Invalid add liquidity input"\ },\ {\ "code": 6015,\ "name": "InvalidRemoveLiquidityInput",\ "msg": "Invalid remove liquidity input"\ },\ {\ "code": 6016,\ "name": "AddLiquidityDisabled",\ "msg": "Add liquidity is disabled"\ },\ {\ "code": 6017,\ "name": "RemoveLiquidityDisabled",\ "msg": "Remove liquidity is disabled"\ },\ {\ "code": 6018,\ "name": "SwapDisabled",\ "msg": "Swap is disabled"\ },\ {\ "code": 6019,\ "name": "LiquidityPoolIsNotOpenYet",\ "msg": "Liquidity pool is not open yet"\ },\ {\ "code": 6020,\ "name": "InvalidSwapInInputs",\ "msg": "Invalid swap in inputs"\ },\ {\ "code": 6021,\ "name": "InvalidProtocolSwapFeeWallet",\ "msg": "Invalid protocol swap fee wallet"\ },\ {\ "code": 6022,\ "name": "InvalidSwapOutInputs",\ "msg": "Invalid swap out inputs"\ },\ {\ "code": 6023,\ "name": "InvalidPostFeeAmount",\ "msg": "Invalid post fee amount"\ },\ {\ "code": 6024,\ "name": "ExceededQuoteTokenSlippage",\ "msg": "Exceeded quote token slippage"\ },\ {\ "code": 6025,\ "name": "ExceededBaseTokenSlippage",\ "msg": "Exceeded base token slippage"\ },\ {\ "code": 6026,\ "name": "LpTokensLocked",\ "msg": "Lp tokens locked"\ },\ {\ "code": 6027,\ "name": "InvalidProtocolBaseTokenSwapFeeVault",\ "msg": "Invalid protocol base token swap fee vault"\ },\ {\ "code": 6028,\ "name": "InvalidProtocolQuoteTokenSwapFeeVault",\ "msg": "Invalid protocol quote token swap fee vault"\ },\ {\ "code": 6029,\ "name": "InvalidUserPoolStatsAccount",\ "msg": "Invalid user pool stats account"\ },\ {\ "code": 6030,\ "name": "InvalidUserGlobalStatsAccount",\ "msg": "Invalid user global stats account"\ },\ {\ "code": 6031,\ "name": "CannotUpdateLpLock",\ "msg": "Cannot update lp lock"\ },\ {\ "code": 6032,\ "name": "ZeroAmount",\ "msg": "Zero amount"\ },\ {\ "code": 6033,\ "name": "CannotUpdateLpOpenTime",\ "msg": "Cannot update lp open time"\ },\ {\ "code": 6034,\ "name": "CannotSetLockBurnLpTokens",\ "msg": "Cannot set lock burn lp tokens"\ },\ {\ "code": 6035,\ "name": "InvalidTax",\ "msg": "Invalid tax"\ },\ {\ "code": 6036,\ "name": "InvalidChainlinkFeedAccount",\ "msg": "Invalid chainlink feed account"\ },\ {\ "code": 6037,\ "name": "InvalidChainlinkProgram",\ "msg": "Invalid chainlink program"\ },\ {\ "code": 6038,\ "name": "InvalidConfigVersion",\ "msg": "Invalid config version"\ },\ {\ "code": 6039,\ "name": "CannotUpdateLockedTaxation",\ "msg": "Cannot update locked taxation"\ },\ {\ "code": 6040,\ "name": "CannotClaimSwapFee",\ "msg": "Cannot claim swap fee"\ },\ {\ "code": 6041,\ "name": "NonCreatorCannotAddLp",\ "msg": "This pool does not allow non-creator to add lp"\ },\ {\ "code": 6042,\ "name": "SimpleAmmBaseTokenCannotHaveFreezeAuthority",\ "msg": "Simple amm base token mint cannot have freeze authority"\ },\ {\ "code": 6043,\ "name": "SimpleAmmBaseTokenCannotHaveMintAuthority",\ "msg": "Simple amm base token mint cannot have mint authority"\ },\ {\ "code": 6044,\ "name": "SimpleAmmQuoteTokenMustBeWSOL",\ "msg": "Simple amm quote token mint must be WSOL"\ },\ {\ "code": 6045,\ "name": "SimpleAmmBaseTokenSupplyMustMatchInputAmount",\ "msg": "Simple amm base token supply must match input amount"\ },\ {\ "code": 6046,\ "name": "SimpleAmmBaseTokenMustBeSplToken",\ "msg": "Simple amm base token mint must be SPL token"\ },\ {\ "code": 6047,\ "name": "InvalidProgramAuthorityLookupTableAddress",\ "msg": "Invalid program authority lookup table address"\ },\ {\ "code": 6048,\ "name": "CannotCreatePoolWithUnsupportedPoolType",\ "msg": "CannotCreatePoolWithUnsupportedPoolType"\ },\ {\ "code": 6049,\ "name": "InvalidLendingMarket",\ "msg": "InvalidLendingMarket"\ },\ {\ "code": 6050,\ "name": "KaminoPriceListRefreshIxNotFound",\ "msg": "KaminoPriceListRefreshIxNotFound"\ },\ {\ "code": 6051,\ "name": "KaminoError",\ "msg": "KaminoError"\ },\ {\ "code": 6052,\ "name": "ReserveRebalancing",\ "msg": "Reserve rebalancing, please try again."\ },\ {\ "code": 6053,\ "name": "OnlySingleSwapAllowed",\ "msg": "Only single swap allowed"\ }\ ], "types": [\ {\ "name": "AdminUpdateLiquidityPoolState",\ "type": {\ "kind": "enum",\ "variants": [\ {\ "name": "CreatorTradingFeeClaimStatus",\ "fields": [\ {\ "defined": {\ "name": "CreatorTradingFeeClaimStatus"\ }\ }\ ]\ },\ {\ "name": "CreatorTradingFeeDistribution",\ "fields": [\ {\ "defined": {\ "name": "CreatorTradingFeeDistribution"\ }\ }\ ]\ },\ {\ "name": "CreatorTradingFeeReceiver",\ "fields": ["pubkey"]\ },\ {\ "name": "FeeConfigurationMode",\ "fields": [\ {\ "defined": {\ "name": "FeeConfigurationMode"\ }\ }\ ]\ },\ {\ "name": "SlotOffsetBasedFees",\ "fields": [\ {\ "name": "fee_type",\ "type": {\ "defined": {\ "name": "FeeType"\ }\ }\ },\ {\ "name": "fees",\ "type": {\ "defined": {\ "name": "SlotFeeBrackets"\ }\ }\ }\ ]\ },\ {\ "name": "MarketCapBasedFees",\ "fields": [\ {\ "name": "fee_type",\ "type": {\ "defined": {\ "name": "FeeType"\ }\ }\ },\ {\ "name": "fees",\ "type": {\ "defined": {\ "name": "FeeBrackets"\ }\ }\ }\ ]\ },\ {\ "name": "ToggleSwapPermission",\ "fields": ["bool"]\ }\ ]\ }\ },\ {\ "name": "BuyParams",\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "max_sol_spend",\ "type": "u64"\ },\ {\ "name": "minimum_amount_out",\ "type": "u64"\ },\ {\ "name": "encoded_user_defined_event_data",\ "type": "string"\ }\ ]\ }\ },\ {\ "name": "CreateLiquidityPoolEvent",\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "liquidity_pool_id",\ "type": "pubkey"\ },\ {\ "name": "user",\ "type": "pubkey"\ },\ {\ "name": "base_token_input_transfer_fee_amount",\ "type": "u64"\ },\ {\ "name": "quote_token_input_transfer_fee_amount",\ "type": "u64"\ },\ {\ "name": "base_token_input_amount",\ "type": "u64"\ },\ {\ "name": "quote_token_input_amount",\ "type": "u64"\ },\ {\ "name": "lp_token_output_amount",\ "type": "u64"\ },\ {\ "name": "locked_lp",\ "type": "bool"\ }\ ]\ }\ },\ {\ "name": "CreateStandardLiquidityPoolEvent",\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "pool_id",\ "type": "pubkey"\ },\ {\ "name": "payer",\ "type": "pubkey"\ },\ {\ "name": "creator",\ "type": "pubkey"\ },\ {\ "name": "mint",\ "type": "pubkey"\ },\ {\ "name": "config_version",\ "type": "u16"\ },\ {\ "name": "initial_token_reserve",\ "type": "u64"\ },\ {\ "name": "initial_virtual_wsol_reserve",\ "type": "u64"\ }\ ]\ }\ },\ {\ "name": "CreateStandardLiquidityPoolParams",\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "encoded_user_defined_event_data",\ "type": "string"\ },\ {\ "name": "initial_purchase_amount",\ "type": "u64"\ },\ {\ "name": "max_sol_spend",\ "type": "u64"\ }\ ]\ }\ },\ {\ "name": "CreatingLiquidityPoolEvent",\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "id",\ "type": "pubkey"\ },\ {\ "name": "base",\ "type": "pubkey"\ },\ {\ "name": "quote",\ "type": "pubkey"\ },\ {\ "name": "base_amount",\ "type": "u64"\ },\ {\ "name": "quote_amount",\ "type": "u64"\ }\ ]\ }\ },\ {\ "name": "CreatorTradingFeeClaimStatus",\ "type": {\ "kind": "enum",\ "variants": [\ {\ "name": "Unclaimed"\ },\ {\ "name": "Submitted"\ },\ {\ "name": "Processed"\ }\ ]\ }\ },\ {\ "name": "CreatorTradingFeeDistribution",\ "type": {\ "kind": "enum",\ "variants": [\ {\ "name": "Community"\ },\ {\ "name": "Creator"\ },\ {\ "name": "Blocked"\ },\ {\ "name": "Shared"\ }\ ]\ }\ },\ {\ "name": "FeeBracket",\ "repr": {\ "kind": "c"\ },\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "market_cap_upper_bound",\ "type": "u64"\ },\ {\ "name": "buy_fee_bps",\ "type": "u32"\ },\ {\ "name": "sell_fee_bps",\ "type": "u32"\ }\ ]\ }\ },\ {\ "name": "FeeBrackets",\ "repr": {\ "kind": "c"\ },\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "brackets",\ "type": {\ "array": [\ {\ "defined": {\ "name": "FeeBracket"\ }\ },\ 4\ ]\ }\ },\ {\ "name": "count",\ "type": "u8"\ },\ {\ "name": "_padding",\ "type": {\ "array": ["u8", 7]\ }\ }\ ]\ }\ },\ {\ "name": "FeeConfigurationMode",\ "type": {\ "kind": "enum",\ "variants": [\ {\ "name": "Global"\ },\ {\ "name": "Local"\ }\ ]\ }\ },\ {\ "name": "FeeType",\ "type": {\ "kind": "enum",\ "variants": [\ {\ "name": "ProtocolFee"\ },\ {\ "name": "LiquidityProviderFee"\ },\ {\ "name": "CreatorFee"\ },\ {\ "name": "CreatorFeeProtocolFee"\ },\ {\ "name": "ReflectionFee"\ }\ ]\ }\ },\ {\ "name": "LiquidityPoolAllowlist",\ "repr": {\ "kind": "c"\ },\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "swap",\ "type": "u8"\ },\ {\ "name": "remove_liquidity",\ "type": "u8"\ },\ {\ "name": "deposit_liquidity",\ "type": "u8"\ },\ {\ "name": "same_slot_trading",\ "type": "u8"\ },\ {\ "name": "update_creator_trading_fee",\ "type": "u8"\ },\ {\ "name": "padding1",\ "type": {\ "array": ["u8", 2]\ }\ }\ ]\ }\ },\ {\ "name": "LiquidityPoolFeatureFlags",\ "repr": {\ "kind": "c"\ },\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "sandwich_resistant_mode",\ "type": "u8"\ },\ {\ "name": "padding1",\ "type": {\ "array": ["u8", 7]\ }\ }\ ]\ }\ },\ {\ "name": "LiquidityPoolInfo",\ "repr": {\ "kind": "c"\ },\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "creator",\ "type": "pubkey"\ },\ {\ "name": "update_authority",\ "type": "pubkey"\ },\ {\ "name": "open_at",\ "type": "u64"\ },\ {\ "name": "created_at",\ "type": "u64"\ },\ {\ "name": "protocol_config_version",\ "type": "u16"\ },\ {\ "name": "r#type",\ "type": "u8"\ },\ {\ "name": "pool_authority_bump",\ "type": "u8"\ },\ {\ "name": "temp_sol_holder_bump",\ "type": "u8"\ },\ {\ "name": "_pad",\ "type": {\ "array": ["u8", 3]\ }\ }\ ]\ }\ },\ {\ "name": "LiquidityPoolLpTokenInfo",\ "repr": {\ "kind": "c"\ },\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "supply",\ "type": {\ "defined": {\ "name": "LiquidityPoolLpTokenSupply"\ }\ }\ },\ {\ "name": "decimals",\ "type": "u8"\ },\ {\ "name": "_pad",\ "type": {\ "array": ["u8", 7]\ }\ }\ ]\ }\ },\ {\ "name": "LiquidityPoolLpTokenSupply",\ "repr": {\ "kind": "c"\ },\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "initial",\ "type": "u64"\ },\ {\ "name": "total",\ "type": "u64"\ },\ {\ "name": "unlocked",\ "type": "u64"\ },\ {\ "name": "locked",\ "type": "u64"\ },\ {\ "name": "burnt",\ "type": "u64"\ }\ ]\ }\ },\ {\ "name": "LiquidityPoolMarketCapBasedFees",\ "repr": {\ "kind": "c"\ },\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "protocol_trading_fee",\ "type": {\ "defined": {\ "name": "FeeBrackets"\ }\ }\ },\ {\ "name": "liquidity_provider_trading_fee",\ "type": {\ "defined": {\ "name": "FeeBrackets"\ }\ }\ },\ {\ "name": "creator_trading_fee",\ "type": {\ "defined": {\ "name": "FeeBrackets"\ }\ }\ },\ {\ "name": "creator_trading_fee_protocol_fee",\ "type": {\ "defined": {\ "name": "FeeBrackets"\ }\ }\ },\ {\ "name": "reflection_trading_fee",\ "type": {\ "defined": {\ "name": "FeeBrackets"\ }\ }\ }\ ]\ }\ },\ {\ "name": "LiquidityPoolReserve",\ "repr": {\ "kind": "c"\ },\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "token_a",\ "type": "u64"\ },\ {\ "name": "token_b",\ "type": "u64"\ },\ {\ "name": "snapshot_slot",\ "type": "u64"\ },\ {\ "name": "snapshot_a",\ "type": "u64"\ },\ {\ "name": "snapshot_b",\ "type": "u64"\ },\ {\ "name": "padding",\ "type": "u64"\ },\ {\ "name": "initial_a",\ "type": "u64"\ },\ {\ "name": "initial_b",\ "type": "u64"\ },\ {\ "name": "leader_slot_window",\ "type": "u8"\ },\ {\ "name": "_pad",\ "type": {\ "array": ["u8", 7]\ }\ }\ ]\ }\ },\ {\ "name": "LiquidityPoolSlotOffsetBasedFees",\ "repr": {\ "kind": "c"\ },\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "protocol_trading_fee",\ "type": {\ "defined": {\ "name": "SlotFeeBrackets"\ }\ }\ },\ {\ "name": "liquidity_provider_trading_fee",\ "type": {\ "defined": {\ "name": "SlotFeeBrackets"\ }\ }\ },\ {\ "name": "creator_trading_fee",\ "type": {\ "defined": {\ "name": "SlotFeeBrackets"\ }\ }\ },\ {\ "name": "creator_trading_fee_protocol_fee",\ "type": {\ "defined": {\ "name": "SlotFeeBrackets"\ }\ }\ },\ {\ "name": "reflection_trading_fee",\ "type": {\ "defined": {\ "name": "SlotFeeBrackets"\ }\ }\ },\ {\ "name": "_pad",\ "type": {\ "array": ["u8", 6]\ }\ }\ ]\ }\ },\ {\ "name": "LiquidityPoolState",\ "serialization": "bytemuck",\ "repr": {\ "kind": "c"\ },\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "info",\ "type": {\ "defined": {\ "name": "LiquidityPoolInfo"\ }\ }\ },\ {\ "name": "market_cap_based_fees",\ "type": {\ "defined": {\ "name": "LiquidityPoolMarketCapBasedFees"\ }\ }\ },\ {\ "name": "reserve",\ "type": {\ "defined": {\ "name": "LiquidityPoolReserve"\ }\ }\ },\ {\ "name": "lp_token",\ "type": {\ "defined": {\ "name": "LiquidityPoolLpTokenInfo"\ }\ }\ },\ {\ "name": "protocol_trading_fees",\ "type": "u64"\ },\ {\ "name": "creator_trading_fees",\ "type": "u64"\ },\ {\ "name": "creator_trading_fees_claimed_by_creator",\ "type": "u64"\ },\ {\ "name": "creator_trading_fees_claimed_by_others",\ "type": "u64"\ },\ {\ "name": "liquidity_provider_trading_fees",\ "type": "u64"\ },\ {\ "name": "creator_trading_fee_protocol_fees",\ "type": "u64"\ },\ {\ "name": "reflection_trading_fees",\ "type": "u64"\ },\ {\ "name": "created_at_slot",\ "type": "u64"\ },\ {\ "name": "trading_volume_usd",\ "type": "f64"\ },\ {\ "name": "creator_trading_fee_trading_volume_threshold",\ "type": "f64"\ },\ {\ "name": "creator_trading_fee_trading_volume_threshold_reached_unix_timestamp",\ "type": "u64"\ },\ {\ "name": "token_a_vault",\ "type": "pubkey"\ },\ {\ "name": "token_b_vault",\ "type": "pubkey"\ },\ {\ "name": "protocol_config",\ "type": "pubkey"\ },\ {\ "name": "key",\ "type": "pubkey"\ },\ {\ "name": "token_a",\ "type": {\ "defined": {\ "name": "LiquidityPoolTokenInfo"\ }\ }\ },\ {\ "name": "token_b",\ "type": {\ "defined": {\ "name": "LiquidityPoolTokenInfo"\ }\ }\ },\ {\ "name": "allowlist",\ "type": {\ "defined": {\ "name": "LiquidityPoolAllowlist"\ }\ }\ },\ {\ "name": "feature_flags",\ "type": {\ "defined": {\ "name": "LiquidityPoolFeatureFlags"\ }\ }\ },\ {\ "name": "taxable_side",\ "type": "u8"\ },\ {\ "name": "taxable_side_type",\ "type": "u8"\ },\ {\ "name": "creator_trading_fee_distribution",\ "type": "u8"\ },\ {\ "name": "creator_trading_fee_claim_status",\ "type": "u8"\ },\ {\ "name": "fee_configuration_mode",\ "type": "u8"\ },\ {\ "name": "is_migrated",\ "type": "u8"\ },\ {\ "name": "_pad",\ "type": {\ "array": ["u8", 13]\ }\ },\ {\ "name": "slot_offset_based_fees",\ "type": {\ "defined": {\ "name": "LiquidityPoolSlotOffsetBasedFees"\ }\ }\ },\ {\ "name": "creator_trading_fee_receiver",\ "type": "pubkey"\ }\ ]\ }\ },\ {\ "name": "LiquidityPoolTokenInfo",\ "repr": {\ "kind": "c"\ },\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "mint",\ "type": "pubkey"\ },\ {\ "name": "decimals",\ "type": "u8"\ },\ {\ "name": "owner",\ "type": "pubkey"\ }\ ]\ }\ },\ {\ "name": "LiquidityPoolType",\ "repr": {\ "kind": "c"\ },\ "type": {\ "kind": "enum",\ "variants": [\ {\ "name": "None"\ },\ {\ "name": "Pro"\ },\ {\ "name": "Standard"\ }\ ]\ }\ },\ {\ "name": "MsolTicketSolSpent",\ "serialization": "bytemuck",\ "repr": {\ "kind": "c"\ },\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "cost_basis",\ "type": "u64"\ },\ {\ "name": "msol_unstaked",\ "type": "u64"\ }\ ]\ }\ },\ {\ "name": "ProtocolAdminState",\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "current_protocol_admin",\ "type": "pubkey"\ }\ ]\ }\ },\ {\ "name": "ProtocolConfig",\ "serialization": "bytemuck",\ "repr": {\ "kind": "c"\ },\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "create_pool_fee",\ "type": "u64"\ },\ {\ "name": "initial_token_b_amount",\ "type": "f64"\ },\ {\ "name": "initial_token_a_amount",\ "type": "u64"\ },\ {\ "name": "unstaked_wsol_reserve",\ "type": "u64"\ },\ {\ "name": "total_sol_spent",\ "type": "u64"\ },\ {\ "name": "total_msol_received",\ "type": "u64"\ },\ {\ "name": "total_realized_profit",\ "type": "u64"\ },\ {\ "name": "pool_count",\ "type": "u64"\ },\ {\ "name": "max_supply_per_wallet",\ "type": "u64"\ },\ {\ "name": "creator_trading_fee_trading_volume_threshold",\ "type": "f64"\ },\ {\ "name": "market_cap_based_fees",\ "type": {\ "defined": {\ "name": "LiquidityPoolMarketCapBasedFees"\ }\ }\ },\ {\ "name": "buffer_bps",\ "type": "u16"\ },\ {\ "name": "auto_staking_threshold_bps",\ "type": "u16"\ },\ {\ "name": "version",\ "type": "u16"\ },\ {\ "name": "protocol_config_state_bump",\ "type": "u8"\ },\ {\ "name": "allow_create_pool",\ "type": "u8"\ },\ {\ "name": "supported_pool_type",\ "type": "u8"\ },\ {\ "name": "default_leader_slot_window",\ "type": "u8"\ },\ {\ "name": "auto_staking_enabled",\ "type": "u8"\ },\ {\ "name": "leader_slot_window",\ "type": "u8"\ },\ {\ "name": "sandwich_resistence_enabled",\ "type": "u8"\ },\ {\ "name": "token_a_decimals",\ "type": "u8"\ },\ {\ "name": "migration_market_cap_threshold",\ "type": "u16"\ },\ {\ "name": "_pad",\ "type": {\ "array": ["u8", 8]\ }\ },\ {\ "name": "max_creator_trading_fee",\ "type": "u32"\ },\ {\ "name": "slot_offset_based_fees",\ "type": {\ "defined": {\ "name": "LiquidityPoolSlotOffsetBasedFees"\ }\ }\ }\ ]\ }\ },\ {\ "name": "ProtocolConfigParams",\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "create_pool_fee",\ "type": "u64"\ },\ {\ "name": "allow_create_pool",\ "type": "bool"\ },\ {\ "name": "supported_pool_type",\ "type": {\ "defined": {\ "name": "LiquidityPoolType"\ }\ }\ },\ {\ "name": "market_cap_based_fees",\ "type": {\ "defined": {\ "name": "LiquidityPoolMarketCapBasedFees"\ }\ }\ },\ {\ "name": "initial_token_b_amount",\ "type": "f64"\ },\ {\ "name": "initial_token_a_amount",\ "type": "u64"\ },\ {\ "name": "default_leader_slot_window",\ "type": "u8"\ },\ {\ "name": "auto_staking_enabled",\ "type": "bool"\ },\ {\ "name": "sandwich_resistence_enabled",\ "type": "bool"\ },\ {\ "name": "buffer_bps",\ "type": "u16"\ },\ {\ "name": "auto_staking_threshold_bps",\ "type": "u16"\ },\ {\ "name": "token_a_decimals",\ "type": "u8"\ },\ {\ "name": "max_creator_trading_fee",\ "type": "u32"\ },\ {\ "name": "max_supply_per_wallet",\ "type": "u64"\ },\ {\ "name": "creator_trading_fee_trading_volume_threshold",\ "type": "f64"\ },\ {\ "name": "migration_market_cap_threshold",\ "type": "u16"\ }\ ]\ }\ },\ {\ "name": "ProtocolOwnerState",\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "current_protocol_owner",\ "type": "pubkey"\ }\ ]\ }\ },\ {\ "name": "SellParams",\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "amount_in",\ "type": "u64"\ },\ {\ "name": "minimum_amount_out",\ "type": "u64"\ },\ {\ "name": "encoded_user_defined_event_data",\ "type": "string"\ }\ ]\ }\ },\ {\ "name": "SlotFeeBracket",\ "repr": {\ "kind": "c"\ },\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "buy_fee_bps",\ "type": "u16"\ },\ {\ "name": "sell_fee_bps",\ "type": "u16"\ },\ {\ "name": "slot_offset_upperbound",\ "type": "u16"\ }\ ]\ }\ },\ {\ "name": "SlotFeeBrackets",\ "repr": {\ "kind": "c"\ },\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "brackets",\ "type": {\ "array": [\ {\ "defined": {\ "name": "SlotFeeBracket"\ }\ },\ 42\ ]\ }\ },\ {\ "name": "max_slot_offset",\ "type": "u16"\ },\ {\ "name": "max_fee_bps",\ "type": "u16"\ },\ {\ "name": "count",\ "type": "u8"\ },\ {\ "name": "enabled",\ "type": "u8"\ },\ {\ "name": "_padding",\ "type": {\ "array": ["u8", 4]\ }\ }\ ]\ }\ },\ {\ "name": "SlotFeeBracketsParams",\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "brackets",\ "type": {\ "vec": {\ "defined": {\ "name": "SlotFeeBracket"\ }\ }\ }\ },\ {\ "name": "max_slot_offset",\ "type": "u16"\ },\ {\ "name": "max_fee_bps",\ "type": "u16"\ },\ {\ "name": "count",\ "type": "u8"\ },\ {\ "name": "enabled",\ "type": "u8"\ }\ ]\ }\ },\ {\ "name": "TradeEvent",\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "base_reserve",\ "type": "u64"\ },\ {\ "name": "quote_reserve",\ "type": "u64"\ },\ {\ "name": "total_creator_trading_fees",\ "type": "u64"\ },\ {\ "name": "total_fee_paid",\ "type": "u64"\ }\ ]\ }\ },\ {\ "name": "UserDefinedEvent",\ "type": {\ "kind": "struct",\ "fields": [\ {\ "name": "liquidity_pool_id",\ "type": "pubkey"\ },\ {\ "name": "instruction_name",\ "type": "string"\ },\ {\ "name": "base64_data",\ "type": "string"\ }\ ]\ }\ }\ ] } See all 6003 lines [Previous](https://docs.heaven.xyz/sdk/contract/addresses) [AccountsFor advanced users, you may need to interact with the Heaven program directly.\ \ Next](https://docs.heaven.xyz/sdk/contract/accounts) Assistant Responses are generated using AI and may contain mistakes. ---