{
  "address": "SeL4eVcmhgmNbBKzf6oi9YRwx2dTgTwCkiaN8jabdkX",
  "metadata": {
    "name": "sellside",
    "version": "0.1.0",
    "spec": "0.1.0",
    "description": "Sellside: every coin is born with the zmr engine. Creator fees split by trade side on chain; the buy side builds a ZEC reserve held by the program (burn-to-redeem floor), the sell side pays the remaining registered holders (SOL merkle claims or XMR payouts with public receipts); dead coins are liquidated to their holders."
  },
  "instructions": [
    {
      "name": "accept_admin",
      "discriminator": [
        112,
        42,
        45,
        90,
        116,
        181,
        13,
        170
      ],
      "accounts": [
        {
          "name": "proposed",
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        }
      ],
      "args": []
    },
    {
      "name": "apply_guardian",
      "discriminator": [
        21,
        53,
        96,
        47,
        52,
        160,
        87,
        189
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        }
      ],
      "args": []
    },
    {
      "name": "apply_payout",
      "discriminator": [
        225,
        11,
        224,
        196,
        151,
        147,
        71,
        19
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        }
      ],
      "args": []
    },
    {
      "name": "attest_payout",
      "docs": [
        "Payout authority: public receipt of one Monero transaction (<= 15 outputs) paying XMR leaves",
        "first_leaf .. first_leaf + leaf_count - 1, in order. Stored in Payout [\"payout\", release, batch_no]."
      ],
      "discriminator": [
        131,
        97,
        5,
        101,
        56,
        161,
        160,
        222
      ],
      "accounts": [
        {
          "name": "authority",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "release",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  114,
                  101,
                  108,
                  101,
                  97,
                  115,
                  101
                ]
              },
              {
                "kind": "account",
                "path": "release.mint",
                "account": "Release"
              },
              {
                "kind": "account",
                "path": "release.n",
                "account": "Release"
              }
            ]
          }
        },
        {
          "name": "payout",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  97,
                  121,
                  111,
                  117,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "release"
              },
              {
                "kind": "arg",
                "path": "batch_no"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "batch_no",
          "type": "u16"
        },
        {
          "name": "first_leaf",
          "type": "u32"
        },
        {
          "name": "leaf_count",
          "type": "u16"
        },
        {
          "name": "xmr_tx_hash",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        },
        {
          "name": "tx_proof_hash",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        },
        {
          "name": "sol_in",
          "type": "u64"
        },
        {
          "name": "xmr_atomic",
          "type": "u64"
        }
      ]
    },
    {
      "name": "claim_release",
      "docs": [
        "Anyone: pays SOL leaf `index` (1..=sol_leaf_count) of a final root to its wallet `claimant`, once."
      ],
      "discriminator": [
        32,
        49,
        104,
        71,
        174,
        25,
        58,
        118
      ],
      "accounts": [
        {
          "name": "release",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  114,
                  101,
                  108,
                  101,
                  97,
                  115,
                  101
                ]
              },
              {
                "kind": "account",
                "path": "release.mint",
                "account": "Release"
              },
              {
                "kind": "account",
                "path": "release.n",
                "account": "Release"
              }
            ]
          }
        },
        {
          "name": "claimant",
          "writable": true
        }
      ],
      "args": [
        {
          "name": "index",
          "type": "u32"
        },
        {
          "name": "amount",
          "type": "u64"
        },
        {
          "name": "proof",
          "type": {
            "vec": {
              "array": [
                "u8",
                32
              ]
            }
          }
        }
      ]
    },
    {
      "name": "collect",
      "docs": [
        "Permissionless: pump `collect_creator_fee` of the coin into its vault PDA (moves already-booked fees; F does",
        "not change). After the migration send PumpSwap `transfer_creator_fees_to_pump` first (permissionless)."
      ],
      "discriminator": [
        208,
        47,
        194,
        155,
        17,
        98,
        82,
        236
      ],
      "accounts": [
        {
          "name": "market",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  97,
                  114,
                  107,
                  101,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "creator_vault",
          "writable": true
        },
        {
          "name": "pump_event_authority"
        },
        {
          "name": "pump_program"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "expire_release",
      "docs": [
        "Anyone, once the release expired (claim window over, or never posted within it): whatever it still holds",
        "goes back to the coin's vault: to the buy counter (swept into the reserve later), or to the SOL reserve of a",
        "dead coin. Never to anyone else."
      ],
      "discriminator": [
        174,
        239,
        151,
        37,
        202,
        177,
        207,
        99
      ],
      "accounts": [
        {
          "name": "market",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  97,
                  114,
                  107,
                  101,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "release",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  114,
                  101,
                  108,
                  101,
                  97,
                  115,
                  101
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              },
              {
                "kind": "account",
                "path": "release.n",
                "account": "Release"
              }
            ]
          }
        }
      ],
      "args": []
    },
    {
      "name": "init_config",
      "discriminator": [
        23,
        235,
        115,
        232,
        168,
        96,
        1,
        231
      ],
      "accounts": [
        {
          "name": "admin",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "treasury"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "params",
          "type": {
            "defined": {
              "name": "Params"
            }
          }
        },
        {
          "name": "guardian",
          "type": "pubkey"
        },
        {
          "name": "payout_authority",
          "type": "pubkey"
        },
        {
          "name": "payout_pubkey",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        }
      ]
    },
    {
      "name": "launch",
      "docs": [
        "Launches a coin: pump create_v2 (creator = vault PDA, payer = dev), the market's ZEC reserve and WSOL",
        "accounts, the observation baseline, the launch fee floor(dev_buy x launch_fee_bps / 10000) to the treasury and",
        "the dev buy (pump buy paid by the dev, tokens to the dev). `dead_window_secs` / `dead_volume_lamports`: 0 = the",
        "config defaults, else within the bounds; fixed for this coin forever. Must be alone in its transaction.",
        "remaining_accounts = pump create_v2 accounts (16) [+ pump buy accounts (16+, user = dev) when dev_buy > 0]."
      ],
      "discriminator": [
        153,
        241,
        93,
        225,
        22,
        69,
        74,
        61
      ],
      "accounts": [
        {
          "name": "dev",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "treasury",
          "writable": true
        },
        {
          "name": "mint",
          "writable": true,
          "signer": true
        },
        {
          "name": "market",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  97,
                  114,
                  107,
                  101,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "reserve",
          "writable": true
        },
        {
          "name": "market_wsol",
          "writable": true
        },
        {
          "name": "zec_mint"
        },
        {
          "name": "wsol_mint",
          "address": "So11111111111111111111111111111111111111112"
        },
        {
          "name": "dev_ata",
          "writable": true
        },
        {
          "name": "fee_config"
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "token_2022"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "instructions"
        }
      ],
      "args": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "symbol",
          "type": "string"
        },
        {
          "name": "uri",
          "type": "string"
        },
        {
          "name": "dev_buy",
          "type": "u64"
        },
        {
          "name": "dead_window_secs",
          "type": "i64"
        },
        {
          "name": "dead_volume_lamports",
          "type": "u64"
        },
        {
          "name": "expected_launch_fee_bps",
          "type": "u16"
        }
      ]
    },
    {
      "name": "liquidate",
      "docs": [
        "Permissionless. First books everything since the last observation (no min gap), then: the coin is DEAD iff",
        "it is older than its dead window and its gross volume in the last window (derived from fee accrual, so dust",
        "swaps count as dust) is below its dead volume. Dead is final: sweeps and releases stop, both counters move to",
        "the SOL reserve (kept as SOL in the vault next to the ZEC reserve), the redeem fee is 0 forever, every later",
        "fee goes to the SOL reserve too. Same accounts as `observe`."
      ],
      "discriminator": [
        223,
        179,
        226,
        125,
        48,
        46,
        39,
        74
      ],
      "accounts": [
        {
          "name": "market",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  97,
                  114,
                  107,
                  101,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "vault",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "curve"
        },
        {
          "name": "curve_ata"
        },
        {
          "name": "mint"
        },
        {
          "name": "creator_vault"
        },
        {
          "name": "fee_config"
        },
        {
          "name": "amm_fee_config"
        },
        {
          "name": "amm_creator_vault"
        },
        {
          "name": "vault_wsol"
        },
        {
          "name": "zec_oracle",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  122,
                  101,
                  99
                ]
              },
              {
                "kind": "account",
                "path": "market.whirlpool",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "instructions"
        }
      ],
      "args": []
    },
    {
      "name": "observe",
      "docs": [
        "Permissionless, at most once per OBSERVE_GAP per coin, no foreign program in the transaction (a batch of our",
        "observes is fine). Books the creator fees accrued since the last observation to the buy / sell counters by",
        "side (see the crate doc), feeds the liquidation volume ring and the circulating ring, arms the release trigger",
        "when the sell counter crosses release_threshold, refreshes the homepage numbers (backing ratio).",
        "remaining_accounts after the migration: [PumpSwap canonical pool, pool base account, pool quote account]."
      ],
      "discriminator": [
        204,
        78,
        178,
        115,
        194,
        147,
        65,
        74
      ],
      "accounts": [
        {
          "name": "market",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  97,
                  114,
                  107,
                  101,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "vault",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "curve"
        },
        {
          "name": "curve_ata"
        },
        {
          "name": "mint"
        },
        {
          "name": "creator_vault"
        },
        {
          "name": "fee_config"
        },
        {
          "name": "amm_fee_config"
        },
        {
          "name": "amm_creator_vault"
        },
        {
          "name": "vault_wsol"
        },
        {
          "name": "zec_oracle",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  122,
                  101,
                  99
                ]
              },
              {
                "kind": "account",
                "path": "market.whirlpool",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "instructions"
        }
      ],
      "args": []
    },
    {
      "name": "observe_zec",
      "docs": [
        "Permissionless: appends the Whirlpool spot price (lamports per whole ZEC) to the ring, at most once per",
        "ZEC_GAP, clamped to +-5 % of the median of the newest 7 stored (one flash candle moves one slot by <= 5 %).",
        "No foreign program in the transaction (no same-tx pool push)."
      ],
      "discriminator": [
        170,
        149,
        46,
        17,
        145,
        88,
        76,
        234
      ],
      "accounts": [
        {
          "name": "oracle",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  122,
                  101,
                  99
                ]
              },
              {
                "kind": "account",
                "path": "oracle.whirlpool",
                "account": "ZecOracle"
              }
            ]
          }
        },
        {
          "name": "whirlpool"
        },
        {
          "name": "instructions"
        }
      ],
      "args": []
    },
    {
      "name": "post_root",
      "docs": [
        "Payout authority (keeper-attested step #1): posts the merkle root of release n. Leaf 0 must be the header",
        "(claimant = this Release PDA, amount = release.amount), so a root can never be replayed on another release.",
        "Starts the guardian challenge window; SOL claims and the XMR pull open after it."
      ],
      "discriminator": [
        154,
        210,
        156,
        158,
        199,
        27,
        174,
        35
      ],
      "accounts": [
        {
          "name": "authority",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "market",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  97,
                  114,
                  107,
                  101,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "release",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  114,
                  101,
                  108,
                  101,
                  97,
                  115,
                  101
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              },
              {
                "kind": "account",
                "path": "release.n",
                "account": "Release"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "root",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        },
        {
          "name": "sol_leaf_count",
          "type": "u32"
        },
        {
          "name": "xmr_leaf_count",
          "type": "u32"
        },
        {
          "name": "total_sol",
          "type": "u64"
        },
        {
          "name": "total_xmr",
          "type": "u64"
        },
        {
          "name": "table_hash",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        },
        {
          "name": "table_cid",
          "type": "string"
        },
        {
          "name": "header_proof",
          "type": {
            "vec": {
              "array": [
                "u8",
                32
              ]
            }
          }
        }
      ]
    },
    {
      "name": "propose_admin",
      "discriminator": [
        121,
        214,
        199,
        212,
        87,
        39,
        117,
        234
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "proposed",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "propose_payout",
      "docs": [
        "Proposes a new payout authority + X25519 key; `apply_payout` (anyone) makes it live after PAYOUT_DELAY.",
        "Proposing again restarts the delay. Everyone sees it coming (event) before it can post a root or pull XMR."
      ],
      "discriminator": [
        200,
        59,
        138,
        55,
        239,
        125,
        31,
        165
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "authority",
          "type": "pubkey"
        },
        {
          "name": "pubkey",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        }
      ]
    },
    {
      "name": "pull_xmr",
      "docs": [
        "Payout authority (keeper-attested step #2): after the challenge window, takes the XMR leaves' total to its",
        "hot wallet for NEAR Intents 1Click; must then attest every Monero batch (`attest_payout`)."
      ],
      "discriminator": [
        147,
        234,
        141,
        60,
        92,
        46,
        178,
        94
      ],
      "accounts": [
        {
          "name": "authority",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "release",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  114,
                  101,
                  108,
                  101,
                  97,
                  115,
                  101
                ]
              },
              {
                "kind": "account",
                "path": "release.mint",
                "account": "Release"
              },
              {
                "kind": "account",
                "path": "release.n",
                "account": "Release"
              }
            ]
          }
        }
      ],
      "args": []
    },
    {
      "name": "redeem",
      "docs": [
        "Burn-to-redeem: burns `amount` of the holder's tokens and pays floor(amount x reserve / circ_ref) ZEC minus",
        "the redeem fee (rounded up, stays in the reserve; 0 once dead), plus, once dead, floor(amount x SOL reserve /",
        "circ_ref) SOL. circ_ref = max(circulating now, every circulating sample of the last CIRC_WINDOW), circulating",
        "= mint supply - tokens in the pump curve - tokens in the canonical PumpSwap pool. No foreign program may be in",
        "the transaction (no trade before it; ComputeBudget / System / ATA only).",
        "remaining_accounts after the migration: [pool, pool base account, pool quote account]."
      ],
      "discriminator": [
        184,
        12,
        86,
        149,
        70,
        196,
        97,
        225
      ],
      "accounts": [
        {
          "name": "holder",
          "writable": true,
          "signer": true
        },
        {
          "name": "market",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  97,
                  114,
                  107,
                  101,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "mint",
          "writable": true
        },
        {
          "name": "holder_ata",
          "writable": true
        },
        {
          "name": "reserve",
          "writable": true
        },
        {
          "name": "holder_zec",
          "writable": true
        },
        {
          "name": "zec_mint"
        },
        {
          "name": "curve"
        },
        {
          "name": "curve_ata"
        },
        {
          "name": "zec_oracle",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  122,
                  101,
                  99
                ]
              },
              {
                "kind": "account",
                "path": "market.whirlpool",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "token_2022"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "instructions"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        },
        {
          "name": "min_zec_out",
          "type": "u64"
        }
      ]
    },
    {
      "name": "register",
      "docs": [
        "One registration per wallet for every coin of the pad. kind 0 = SOL (merkle claims to this wallet; empty",
        "sealed_dest, zero dest_hash); kind 1 = XMR: sealed_dest = the subaddress sealed to config.payout_pubkey",
        "(crypto_box_seal, 49..160 bytes), dest_hash = sha256(subaddress). The wallet signs: nobody can register for",
        "another wallet. Registering again replaces it (counts for releases triggered after this slot)."
      ],
      "discriminator": [
        211,
        124,
        67,
        15,
        211,
        194,
        178,
        240
      ],
      "accounts": [
        {
          "name": "wallet",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "reg",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  114,
                  101,
                  103
                ]
              },
              {
                "kind": "account",
                "path": "wallet"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "kind",
          "type": "u8"
        },
        {
          "name": "dest_hash",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        },
        {
          "name": "sealed_dest",
          "type": "bytes"
        }
      ]
    },
    {
      "name": "release",
      "docs": [
        "Permissionless once an observation armed the trigger (sell counter > release_threshold): collects the creator",
        "fees and moves min(sell_pot, vault above floor) into Release [\"release\", mint, n] with trigger_slot = the slot",
        "of that observation. The caller pays the Release rent. Distribution: see PAYOUT-INTERFACE.md."
      ],
      "discriminator": [
        253,
        249,
        15,
        206,
        28,
        127,
        193,
        241
      ],
      "accounts": [
        {
          "name": "caller",
          "writable": true,
          "signer": true
        },
        {
          "name": "market",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  97,
                  114,
                  107,
                  101,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "release",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  114,
                  101,
                  108,
                  101,
                  97,
                  115,
                  101
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              },
              {
                "kind": "account",
                "path": "market.releases",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "creator_vault",
          "writable": true
        },
        {
          "name": "pump_event_authority"
        },
        {
          "name": "pump_program"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "set_guardian",
      "docs": [
        "The guardian can only veto a posted root inside its challenge window (forces a recompute). Default = none.",
        "Appointing the first guardian is immediate (it only adds a check); replacing or removing one is timelocked",
        "like the payout keys (audit L-1: otherwise the admin could silence an honest guardian the moment a new payout",
        "authority goes live); `apply_guardian` (anyone) makes it live after PAYOUT_DELAY."
      ],
      "discriminator": [
        147,
        243,
        50,
        121,
        154,
        164,
        50,
        30
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "guardian",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "set_paused",
      "docs": [
        "Pause blocks new launches only; every crank, redeem, claim and registration keeps working."
      ],
      "discriminator": [
        91,
        60,
        125,
        192,
        176,
        225,
        166,
        218
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "paused",
          "type": "bool"
        }
      ]
    },
    {
      "name": "set_pool",
      "docs": [
        "The ZEC route for coins launched from now on: an Orca Whirlpool whose two mints are WSOL and `zec_mint`",
        "(classic SPL Token). Creates its price ring [\"zec\", whirlpool] if needed."
      ],
      "discriminator": [
        119,
        30,
        14,
        180,
        115,
        225,
        167,
        238
      ],
      "accounts": [
        {
          "name": "admin",
          "writable": true,
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "whirlpool"
        },
        {
          "name": "zec_mint"
        },
        {
          "name": "oracle",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  122,
                  101,
                  99
                ]
              },
              {
                "kind": "account",
                "path": "whirlpool"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "set_treasury",
      "discriminator": [
        57,
        97,
        196,
        95,
        195,
        206,
        106,
        136
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "treasury"
        }
      ],
      "args": []
    },
    {
      "name": "sweep",
      "docs": [
        "Permissionless, alone in its transaction, while live and buy_pot > sweep_threshold: collects the creator fees,",
        "then swaps min(buy_pot, max_sweep_lamports, vault above floor) SOL -> ZEC through the Whirlpool into the",
        "reserve. Refused when the ZEC median is missing / stale or the pool spot is off the median by more than",
        "price_band_bps; min_out = the median quote x (1 - max_slip_bps)."
      ],
      "discriminator": [
        40,
        23,
        234,
        175,
        14,
        61,
        154,
        177
      ],
      "accounts": [
        {
          "name": "market",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  97,
                  114,
                  107,
                  101,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "zec_oracle",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  122,
                  101,
                  99
                ]
              },
              {
                "kind": "account",
                "path": "market.whirlpool",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "market_wsol",
          "writable": true
        },
        {
          "name": "reserve",
          "writable": true
        },
        {
          "name": "whirlpool",
          "writable": true
        },
        {
          "name": "whirl_vault_a",
          "writable": true
        },
        {
          "name": "whirl_vault_b",
          "writable": true
        },
        {
          "name": "tick_array_0",
          "writable": true
        },
        {
          "name": "tick_array_1",
          "writable": true
        },
        {
          "name": "tick_array_2",
          "writable": true
        },
        {
          "name": "whirl_oracle",
          "writable": true
        },
        {
          "name": "whirlpool_program",
          "address": "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc"
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "creator_vault",
          "writable": true
        },
        {
          "name": "pump_event_authority"
        },
        {
          "name": "pump_program"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "instructions"
        }
      ],
      "args": []
    },
    {
      "name": "unregister",
      "discriminator": [
        143,
        28,
        144,
        79,
        140,
        220,
        228,
        248
      ],
      "accounts": [
        {
          "name": "wallet",
          "writable": true,
          "signer": true,
          "relations": [
            "reg"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "reg",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  114,
                  101,
                  103
                ]
              },
              {
                "kind": "account",
                "path": "wallet"
              }
            ]
          }
        }
      ],
      "args": []
    },
    {
      "name": "unwrap_fees",
      "docs": [
        "Permissionless: closes the vault's WSOL account (PumpSwap creator fees someone collected as WSOL to the",
        "vault) into the vault. The token amount was already in F; the account's rent is not a fee (back_in)."
      ],
      "discriminator": [
        202,
        112,
        56,
        154,
        193,
        85,
        127,
        150
      ],
      "accounts": [
        {
          "name": "market",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  97,
                  114,
                  107,
                  101,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "vault_wsol",
          "writable": true
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        }
      ],
      "args": []
    },
    {
      "name": "update_config",
      "docs": [
        "New params apply to coins launched from now on; every Market keeps its copy."
      ],
      "discriminator": [
        29,
        158,
        252,
        191,
        10,
        83,
        219,
        99
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "params",
          "type": {
            "defined": {
              "name": "Params"
            }
          }
        }
      ]
    },
    {
      "name": "veto_root",
      "docs": [
        "Guardian: rejects a posted root inside its challenge window; the payout authority must post a new one."
      ],
      "discriminator": [
        141,
        196,
        194,
        143,
        204,
        114,
        90,
        226
      ],
      "accounts": [
        {
          "name": "guardian",
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "release",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  114,
                  101,
                  108,
                  101,
                  97,
                  115,
                  101
                ]
              },
              {
                "kind": "account",
                "path": "release.mint",
                "account": "Release"
              },
              {
                "kind": "account",
                "path": "release.n",
                "account": "Release"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "reason",
          "type": "u8"
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "Config",
      "discriminator": [
        155,
        12,
        170,
        224,
        30,
        250,
        204,
        130
      ]
    },
    {
      "name": "Market",
      "discriminator": [
        219,
        190,
        213,
        55,
        0,
        227,
        198,
        154
      ]
    },
    {
      "name": "Payout",
      "discriminator": [
        69,
        45,
        245,
        131,
        218,
        101,
        158,
        228
      ]
    },
    {
      "name": "Reg",
      "discriminator": [
        65,
        212,
        50,
        119,
        8,
        80,
        249,
        153
      ]
    },
    {
      "name": "Release",
      "discriminator": [
        229,
        49,
        96,
        148,
        167,
        188,
        17,
        49
      ]
    },
    {
      "name": "ZecOracle",
      "discriminator": [
        252,
        134,
        42,
        222,
        74,
        232,
        108,
        65
      ]
    }
  ],
  "events": [
    {
      "name": "AdminProposed",
      "discriminator": [
        129,
        249,
        226,
        227,
        199,
        82,
        110,
        243
      ]
    },
    {
      "name": "AdminSet",
      "discriminator": [
        157,
        245,
        205,
        226,
        118,
        125,
        183,
        97
      ]
    },
    {
      "name": "Collected",
      "discriminator": [
        67,
        109,
        138,
        167,
        168,
        239,
        2,
        207
      ]
    },
    {
      "name": "ConfigInitialized",
      "discriminator": [
        181,
        49,
        200,
        156,
        19,
        167,
        178,
        91
      ]
    },
    {
      "name": "ConfigUpdated",
      "discriminator": [
        40,
        241,
        230,
        122,
        11,
        19,
        198,
        194
      ]
    },
    {
      "name": "FeesUnwrapped",
      "discriminator": [
        146,
        111,
        114,
        101,
        19,
        203,
        134,
        142
      ]
    },
    {
      "name": "GuardianProposed",
      "discriminator": [
        103,
        9,
        177,
        31,
        176,
        22,
        60,
        57
      ]
    },
    {
      "name": "GuardianSet",
      "discriminator": [
        159,
        49,
        155,
        156,
        176,
        88,
        29,
        190
      ]
    },
    {
      "name": "Launched",
      "discriminator": [
        209,
        127,
        29,
        152,
        129,
        212,
        189,
        183
      ]
    },
    {
      "name": "Liquidated",
      "discriminator": [
        231,
        57,
        55,
        75,
        0,
        170,
        246,
        68
      ]
    },
    {
      "name": "Observed",
      "discriminator": [
        154,
        65,
        198,
        52,
        238,
        11,
        193,
        59
      ]
    },
    {
      "name": "PausedSet",
      "discriminator": [
        171,
        125,
        127,
        156,
        233,
        81,
        68,
        66
      ]
    },
    {
      "name": "PayoutApplied",
      "discriminator": [
        17,
        151,
        244,
        100,
        86,
        212,
        44,
        27
      ]
    },
    {
      "name": "PayoutAttested",
      "discriminator": [
        132,
        162,
        25,
        116,
        17,
        123,
        211,
        101
      ]
    },
    {
      "name": "PayoutProposed",
      "discriminator": [
        46,
        85,
        33,
        147,
        152,
        230,
        133,
        83
      ]
    },
    {
      "name": "PoolSet",
      "discriminator": [
        135,
        203,
        185,
        106,
        113,
        87,
        177,
        32
      ]
    },
    {
      "name": "Redeemed",
      "discriminator": [
        14,
        29,
        183,
        71,
        31,
        165,
        107,
        38
      ]
    },
    {
      "name": "Registered",
      "discriminator": [
        11,
        222,
        10,
        72,
        160,
        110,
        165,
        227
      ]
    },
    {
      "name": "ReleaseClaimed",
      "discriminator": [
        133,
        40,
        237,
        156,
        239,
        255,
        142,
        242
      ]
    },
    {
      "name": "ReleaseCreated",
      "discriminator": [
        86,
        95,
        64,
        109,
        171,
        247,
        137,
        65
      ]
    },
    {
      "name": "ReleaseExpired",
      "discriminator": [
        185,
        185,
        92,
        34,
        95,
        198,
        124,
        51
      ]
    },
    {
      "name": "RootPosted",
      "discriminator": [
        245,
        251,
        4,
        0,
        87,
        227,
        252,
        231
      ]
    },
    {
      "name": "RootVetoed",
      "discriminator": [
        104,
        203,
        229,
        184,
        178,
        81,
        64,
        117
      ]
    },
    {
      "name": "Swept",
      "discriminator": [
        254,
        138,
        9,
        198,
        192,
        61,
        165,
        135
      ]
    },
    {
      "name": "TreasurySet",
      "discriminator": [
        69,
        231,
        163,
        135,
        254,
        194,
        109,
        166
      ]
    },
    {
      "name": "Triggered",
      "discriminator": [
        10,
        232,
        87,
        158,
        67,
        122,
        158,
        84
      ]
    },
    {
      "name": "Unregistered",
      "discriminator": [
        210,
        177,
        26,
        51,
        255,
        164,
        28,
        131
      ]
    },
    {
      "name": "XmrPulled",
      "discriminator": [
        176,
        14,
        2,
        44,
        120,
        55,
        217,
        27
      ]
    },
    {
      "name": "ZecObserved",
      "discriminator": [
        153,
        15,
        180,
        196,
        204,
        4,
        155,
        34
      ]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "Unauthorized",
      "msg": "only the admin (or the named key) can do this"
    },
    {
      "code": 6001,
      "name": "BadConfig",
      "msg": "a config value is out of its allowed range"
    },
    {
      "code": 6002,
      "name": "BadTreasury",
      "msg": "the treasury must be a real wallet"
    },
    {
      "code": 6003,
      "name": "Paused",
      "msg": "launches are paused (everything else keeps working)"
    },
    {
      "code": 6004,
      "name": "ParamsChanged",
      "msg": "the launch fee changed since you loaded the page: reload and try again"
    },
    {
      "code": 6005,
      "name": "BadDeadParams",
      "msg": "dead window must be 1 h .. 72 h and dead volume 0.1 .. 100 SOL"
    },
    {
      "code": 6006,
      "name": "DevBuyTooLarge",
      "msg": "the dev buy is larger than what is left on the curve"
    },
    {
      "code": 6007,
      "name": "BadName",
      "msg": "name must be 1-32 characters without invisible characters"
    },
    {
      "code": 6008,
      "name": "BadSymbol",
      "msg": "ticker must be 1-10 characters, no spaces"
    },
    {
      "code": 6009,
      "name": "BadUri",
      "msg": "the picture link must be an IPFS link (ipfs://<cid> or https://ipfs.io/ipfs/<cid>)"
    },
    {
      "code": 6010,
      "name": "BadAccounts",
      "msg": "wrong account passed"
    },
    {
      "code": 6011,
      "name": "NotAlone",
      "msg": "this must be sent on its own (no trades or other programs in the same transaction)"
    },
    {
      "code": 6012,
      "name": "ObserveTooSoon",
      "msg": "observed too recently: try again in a few seconds"
    },
    {
      "code": 6013,
      "name": "FeeConfigUnreadable",
      "msg": "the pump fee config could not be read"
    },
    {
      "code": 6014,
      "name": "MigratedNeedsPool",
      "msg": "the coin migrated: pass its PumpSwap pool and the pool's two token accounts"
    },
    {
      "code": 6015,
      "name": "BadPool",
      "msg": "not a WSOL/ZEC Orca Whirlpool, or the wrong one"
    },
    {
      "code": 6016,
      "name": "NoZecPrice",
      "msg": "no fresh ZEC price yet: observe the ZEC pool a few times first"
    },
    {
      "code": 6017,
      "name": "ZecPriceOff",
      "msg": "the ZEC pool price is off its recent median: sweep refused (possible sandwich)"
    },
    {
      "code": 6018,
      "name": "BelowThreshold",
      "msg": "the buy counter is not above the sweep threshold yet"
    },
    {
      "code": 6019,
      "name": "NothingToSweep",
      "msg": "nothing to sweep: the fees are not collected into the vault yet"
    },
    {
      "code": 6020,
      "name": "SwapIncomplete",
      "msg": "the swap did not use all the SOL"
    },
    {
      "code": 6021,
      "name": "SlippageExceeded",
      "msg": "price moved: you would get less than your minimum"
    },
    {
      "code": 6022,
      "name": "AlreadyDead",
      "msg": "the coin is dead (liquidated): this is closed"
    },
    {
      "code": 6023,
      "name": "TooYoungToDie",
      "msg": "the coin is younger than its dead window"
    },
    {
      "code": 6024,
      "name": "StillAlive",
      "msg": "the coin traded more than its dead volume in the last window: it is alive"
    },
    {
      "code": 6025,
      "name": "NotTriggered",
      "msg": "no release is triggered: the sell counter has not crossed the threshold at an observation"
    },
    {
      "code": 6026,
      "name": "NothingToRelease",
      "msg": "nothing to release: the fees are not collected into the vault yet"
    },
    {
      "code": 6027,
      "name": "NothingToRedeem",
      "msg": "amount must be above zero"
    },
    {
      "code": 6028,
      "name": "NotEnoughTokens",
      "msg": "you do not hold that many tokens"
    },
    {
      "code": 6029,
      "name": "RedeemTooSmall",
      "msg": "this redeem is too small to pay anything"
    },
    {
      "code": 6030,
      "name": "BelowRentFloor",
      "msg": "the receiving wallet would be left below its rent minimum: send more or fund it first"
    },
    {
      "code": 6031,
      "name": "BadReleaseState",
      "msg": "this release is not in the right state for that"
    },
    {
      "code": 6032,
      "name": "ReleaseExpired",
      "msg": "this release expired"
    },
    {
      "code": 6033,
      "name": "TooManyLeaves",
      "msg": "too many leaves in the table"
    },
    {
      "code": 6034,
      "name": "TableExceedsRelease",
      "msg": "the table pays out more than the release holds"
    },
    {
      "code": 6035,
      "name": "BadHeader",
      "msg": "leaf 0 of the table must be this release (header), proof failed"
    },
    {
      "code": 6036,
      "name": "ChallengeOver",
      "msg": "the challenge window is over"
    },
    {
      "code": 6037,
      "name": "ChallengeRunning",
      "msg": "the challenge window is still running: claims open after it"
    },
    {
      "code": 6038,
      "name": "NotASolLeaf",
      "msg": "that leaf is not a SOL leaf"
    },
    {
      "code": 6039,
      "name": "BadProof",
      "msg": "proof does not match the release root"
    },
    {
      "code": 6040,
      "name": "AlreadyPulled",
      "msg": "the XMR total was already pulled"
    },
    {
      "code": 6041,
      "name": "NothingToClaim",
      "msg": "nothing to claim"
    },
    {
      "code": 6042,
      "name": "BadBatch",
      "msg": "payout batch out of order or malformed"
    },
    {
      "code": 6043,
      "name": "TooEarly",
      "msg": "too early"
    },
    {
      "code": 6044,
      "name": "NothingPending",
      "msg": "nothing pending"
    },
    {
      "code": 6045,
      "name": "BadRegistration",
      "msg": "registration: SOL needs an empty destination; XMR needs a sealed subaddress (49-160 bytes) and its hash"
    },
    {
      "code": 6046,
      "name": "Math",
      "msg": "arithmetic error"
    }
  ],
  "types": [
    {
      "name": "AdminProposed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "current",
            "type": "pubkey"
          },
          {
            "name": "proposed",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "AdminSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "old",
            "type": "pubkey"
          },
          {
            "name": "admin",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "CircObs",
      "docs": [
        "Circulating-supply ring (see redeem): one sample per CIRC gap."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "ts",
            "type": "i64"
          },
          {
            "name": "circ",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Collected",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "vault",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Config",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          },
          {
            "name": "pending_admin",
            "type": "pubkey"
          },
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "guardian",
            "docs": [
              "can veto a posted release root during its challenge window (default = nobody)"
            ],
            "type": "pubkey"
          },
          {
            "name": "payout_authority",
            "docs": [
              "keeper-attested steps: posts release roots, pulls the XMR total, attests the Monero payouts"
            ],
            "type": "pubkey"
          },
          {
            "name": "payout_pubkey",
            "docs": [
              "X25519 public key the XMR destinations are sealed to, and its version"
            ],
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "payout_key_id",
            "type": "u16"
          },
          {
            "name": "pending_payout_authority",
            "docs": [
              "timelocked change of the two above (effective_at = 0: none pending)"
            ],
            "type": "pubkey"
          },
          {
            "name": "pending_payout_pubkey",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "payout_effective_at",
            "type": "i64"
          },
          {
            "name": "whirlpool",
            "docs": [
              "ZEC reserve route for new coins: the Orca Whirlpool (WSOL <-> ZEC) and the ZEC mint"
            ],
            "type": "pubkey"
          },
          {
            "name": "zec_mint",
            "type": "pubkey"
          },
          {
            "name": "zec_unit",
            "type": "u64"
          },
          {
            "name": "paused",
            "type": "bool"
          },
          {
            "name": "markets",
            "type": "u64"
          },
          {
            "name": "registrations",
            "type": "u64"
          },
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "bump",
            "type": "u8"
          },
          {
            "name": "pending_guardian",
            "docs": [
              "timelocked guardian change (audit L-1): effective_at = 0 -> none pending"
            ],
            "type": "pubkey"
          },
          {
            "name": "guardian_effective_at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "ConfigInitialized",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          },
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "guardian",
            "type": "pubkey"
          },
          {
            "name": "payout_authority",
            "type": "pubkey"
          },
          {
            "name": "payout_pubkey",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          }
        ]
      }
    },
    {
      "name": "ConfigUpdated",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          }
        ]
      }
    },
    {
      "name": "FeesUnwrapped",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "rent",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "GuardianProposed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "current",
            "type": "pubkey"
          },
          {
            "name": "proposed",
            "type": "pubkey"
          },
          {
            "name": "effective_at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "GuardianSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "guardian",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "Launched",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "creator",
            "type": "pubkey"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "symbol",
            "type": "string"
          },
          {
            "name": "uri",
            "type": "string"
          },
          {
            "name": "dev_buy",
            "type": "u64"
          },
          {
            "name": "launch_fee",
            "type": "u64"
          },
          {
            "name": "dead_window_secs",
            "type": "i64"
          },
          {
            "name": "dead_volume_lamports",
            "type": "u64"
          },
          {
            "name": "vault",
            "type": "pubkey"
          },
          {
            "name": "reserve",
            "type": "pubkey"
          },
          {
            "name": "whirlpool",
            "type": "pubkey"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Liquidated",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "window_volume",
            "type": "u64"
          },
          {
            "name": "dead_volume",
            "type": "u64"
          },
          {
            "name": "dead_window",
            "type": "i64"
          },
          {
            "name": "sol_reserve",
            "type": "u64"
          },
          {
            "name": "reserve_zec",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Market",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "creator",
            "type": "pubkey"
          },
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "dead_window_secs",
            "type": "i64"
          },
          {
            "name": "dead_volume_lamports",
            "type": "u64"
          },
          {
            "name": "state",
            "type": "u8"
          },
          {
            "name": "side_state",
            "type": "u8"
          },
          {
            "name": "bump",
            "type": "u8"
          },
          {
            "name": "vault_bump",
            "type": "u8"
          },
          {
            "name": "launched_at",
            "type": "i64"
          },
          {
            "name": "dev_buy",
            "type": "u64"
          },
          {
            "name": "launch_fee",
            "type": "u64"
          },
          {
            "name": "whirlpool",
            "type": "pubkey"
          },
          {
            "name": "zec_mint",
            "type": "pubkey"
          },
          {
            "name": "zec_unit",
            "type": "u64"
          },
          {
            "name": "reserve",
            "type": "pubkey"
          },
          {
            "name": "market_wsol",
            "type": "pubkey"
          },
          {
            "name": "vault_wsol",
            "type": "pubkey"
          },
          {
            "name": "curve",
            "type": "pubkey"
          },
          {
            "name": "curve_ata",
            "type": "pubkey"
          },
          {
            "name": "creator_vault",
            "type": "pubkey"
          },
          {
            "name": "amm_creator_auth",
            "type": "pubkey"
          },
          {
            "name": "amm_creator_vault",
            "type": "pubkey"
          },
          {
            "name": "pool",
            "docs": [
              "canonical PumpSwap pool, set at the first observation after the migration"
            ],
            "type": "pubkey"
          },
          {
            "name": "last_obs_ts",
            "type": "i64"
          },
          {
            "name": "last_obs_slot",
            "type": "u64"
          },
          {
            "name": "last_q",
            "type": "u64"
          },
          {
            "name": "last_f",
            "type": "u64"
          },
          {
            "name": "last_mode",
            "type": "u8"
          },
          {
            "name": "last_creator_bps",
            "type": "u16"
          },
          {
            "name": "last_lp_bps",
            "type": "u16"
          },
          {
            "name": "observations",
            "type": "u64"
          },
          {
            "name": "out_total",
            "docs": [
              "lamports that left the vault through Sellside (sweeps, releases, SOL redeems) and came back without being",
              "fees (expired releases, WSOL account rent): the fee pot F adds out_total and subtracts back_in"
            ],
            "type": "u64"
          },
          {
            "name": "back_in",
            "type": "u64"
          },
          {
            "name": "buy_pot",
            "type": "u64"
          },
          {
            "name": "sell_pot",
            "type": "u64"
          },
          {
            "name": "sol_reserve",
            "type": "u64"
          },
          {
            "name": "fees_total",
            "type": "u64"
          },
          {
            "name": "buy_fees_total",
            "type": "u64"
          },
          {
            "name": "sell_fees_total",
            "type": "u64"
          },
          {
            "name": "vol_total",
            "type": "u64"
          },
          {
            "name": "buy_vol_total",
            "type": "u64"
          },
          {
            "name": "sell_vol_total",
            "type": "u64"
          },
          {
            "name": "reserve_zec",
            "type": "u64"
          },
          {
            "name": "swept_sol_total",
            "type": "u64"
          },
          {
            "name": "zec_bought_total",
            "type": "u64"
          },
          {
            "name": "sweeps",
            "type": "u32"
          },
          {
            "name": "releases",
            "type": "u32"
          },
          {
            "name": "released_sol_total",
            "type": "u64"
          },
          {
            "name": "returned_total",
            "type": "u64"
          },
          {
            "name": "trigger_armed",
            "type": "bool"
          },
          {
            "name": "trigger_slot",
            "type": "u64"
          },
          {
            "name": "trigger_ts",
            "type": "i64"
          },
          {
            "name": "redeems",
            "type": "u32"
          },
          {
            "name": "redeemed_tokens_total",
            "type": "u64"
          },
          {
            "name": "redeemed_zec_total",
            "type": "u64"
          },
          {
            "name": "redeemed_sol_total",
            "type": "u64"
          },
          {
            "name": "liquidated_at",
            "type": "i64"
          },
          {
            "name": "buckets",
            "type": {
              "array": [
                "u64",
                13
              ]
            }
          },
          {
            "name": "bucket_epochs",
            "type": {
              "array": [
                "u32",
                13
              ]
            }
          },
          {
            "name": "circ",
            "type": {
              "array": [
                {
                  "defined": {
                    "name": "CircObs"
                  }
                },
                8
              ]
            }
          },
          {
            "name": "circ_head",
            "type": "u8"
          },
          {
            "name": "circ_count",
            "type": "u8"
          },
          {
            "name": "last_circ",
            "type": "u64"
          },
          {
            "name": "last_mcap",
            "type": "u64"
          },
          {
            "name": "last_zec_price",
            "type": "u64"
          },
          {
            "name": "reserve_value",
            "type": "u64"
          },
          {
            "name": "backing_bps",
            "type": "u32"
          },
          {
            "name": "last_lp_supply",
            "docs": [
              "PumpSwap pool lp_supply at the last observation (audit H-1: LP deposits / withdrawals are not trades)"
            ],
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Obs",
      "docs": [
        "Observation ring kept by each program in its own `[\"obs\", mint]` account (16 slots). A program appends at most one",
        "observation per `min_gap` seconds (permissionless `observe`), so one flash candle moves at most one slot."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "ts",
            "type": "i64"
          },
          {
            "name": "price_q9",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Observed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "slot",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          },
          {
            "name": "dt",
            "type": "i64"
          },
          {
            "name": "mode",
            "type": "u8"
          },
          {
            "name": "rebased",
            "type": "bool"
          },
          {
            "name": "ambiguous",
            "type": "bool"
          },
          {
            "name": "lp_changed",
            "docs": [
              "the PumpSwap pool's lp_supply changed in the interval: net flow rescaled, volume from fees only (audit H-1)"
            ],
            "type": "bool"
          },
          {
            "name": "creator_bps",
            "type": "u16"
          },
          {
            "name": "lp_bps",
            "type": "u16"
          },
          {
            "name": "q",
            "type": "u64"
          },
          {
            "name": "dq",
            "type": "i64"
          },
          {
            "name": "df",
            "type": "u64"
          },
          {
            "name": "volume",
            "type": "u64"
          },
          {
            "name": "buy_volume",
            "type": "u64"
          },
          {
            "name": "sell_volume",
            "type": "u64"
          },
          {
            "name": "fee_buy",
            "type": "u64"
          },
          {
            "name": "fee_sell",
            "type": "u64"
          },
          {
            "name": "buy_pot",
            "type": "u64"
          },
          {
            "name": "sell_pot",
            "type": "u64"
          },
          {
            "name": "sol_reserve",
            "type": "u64"
          },
          {
            "name": "window_volume",
            "type": "u64"
          },
          {
            "name": "circ",
            "type": "u64"
          },
          {
            "name": "mcap",
            "type": "u64"
          },
          {
            "name": "reserve_value",
            "type": "u64"
          },
          {
            "name": "backing_bps",
            "type": "u32"
          },
          {
            "name": "state",
            "type": "u8"
          },
          {
            "name": "side_state",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "Params",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "launch_fee_bps",
            "docs": [
              "Launch fee in bps of the dev buy, paid on top to config.treasury (default 250, <= 500)."
            ],
            "type": "u16"
          },
          {
            "name": "redeem_fee_bps",
            "docs": [
              "Redeem fee in bps of the ZEC a redeem takes; it stays in the reserve (default 100, <= 500; 0 once dead)."
            ],
            "type": "u16"
          },
          {
            "name": "price_band_bps",
            "docs": [
              "A sweep needs the pool spot within this band of the ZEC median (default 200 = 2 %, 50..500)."
            ],
            "type": "u16"
          },
          {
            "name": "max_slip_bps",
            "docs": [
              "Sweep min_out = the median quote x (1 - max_slip) (default 300, band..1000)."
            ],
            "type": "u16"
          },
          {
            "name": "sweep_threshold",
            "docs": [
              "buy counter > this -> sweep (default 0.25 SOL, 0.01..10 SOL)"
            ],
            "type": "u64"
          },
          {
            "name": "release_threshold",
            "docs": [
              "sell counter > this at an observation -> release trigger (default 0.5 SOL, 0.05..50 SOL)"
            ],
            "type": "u64"
          },
          {
            "name": "max_sweep_lamports",
            "docs": [
              "max lamports one sweep swaps (default 5 SOL, 0.1..50 SOL)"
            ],
            "type": "u64"
          },
          {
            "name": "dead_window_default",
            "docs": [
              "liquidation defaults a launch may override within the bounds (3 h / 0.8 SOL)"
            ],
            "type": "i64"
          },
          {
            "name": "dead_volume_default",
            "type": "u64"
          },
          {
            "name": "root_challenge_secs",
            "docs": [
              "release roots: guardian challenge window (default 1 h, 10 min..24 h) and claim window (30 d, 7..90 d)"
            ],
            "type": "i64"
          },
          {
            "name": "claim_window_secs",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "PausedSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "paused",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "Payout",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "release",
            "type": "pubkey"
          },
          {
            "name": "batch_no",
            "type": "u16"
          },
          {
            "name": "first_leaf",
            "type": "u32"
          },
          {
            "name": "leaf_count",
            "type": "u16"
          },
          {
            "name": "xmr_tx_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "tx_proof_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "sol_in",
            "type": "u64"
          },
          {
            "name": "xmr_atomic",
            "type": "u64"
          },
          {
            "name": "attested_at",
            "type": "i64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "PayoutApplied",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "authority",
            "type": "pubkey"
          },
          {
            "name": "pubkey",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "key_id",
            "type": "u16"
          }
        ]
      }
    },
    {
      "name": "PayoutAttested",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "release",
            "type": "pubkey"
          },
          {
            "name": "n",
            "type": "u32"
          },
          {
            "name": "batch_no",
            "type": "u16"
          },
          {
            "name": "first_leaf",
            "type": "u32"
          },
          {
            "name": "leaf_count",
            "type": "u16"
          },
          {
            "name": "xmr_tx_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "tx_proof_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "sol_in",
            "type": "u64"
          },
          {
            "name": "xmr_atomic",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "PayoutProposed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "authority",
            "type": "pubkey"
          },
          {
            "name": "pubkey",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "effective_at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "PoolSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "whirlpool",
            "type": "pubkey"
          },
          {
            "name": "zec_mint",
            "type": "pubkey"
          },
          {
            "name": "zec_unit",
            "type": "u64"
          },
          {
            "name": "a_is_sol",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "Redeemed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "holder",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "circ_now",
            "type": "u64"
          },
          {
            "name": "circ_ref",
            "type": "u64"
          },
          {
            "name": "zec_out",
            "type": "u64"
          },
          {
            "name": "zec_fee",
            "type": "u64"
          },
          {
            "name": "sol_out",
            "type": "u64"
          },
          {
            "name": "reserve_zec",
            "type": "u64"
          },
          {
            "name": "sol_reserve",
            "type": "u64"
          },
          {
            "name": "backing_bps",
            "type": "u32"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Reg",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "kind",
            "type": "u8"
          },
          {
            "name": "key_id",
            "type": "u16"
          },
          {
            "name": "dest_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "registered_at",
            "type": "i64"
          },
          {
            "name": "updated_at",
            "type": "i64"
          },
          {
            "name": "updated_slot",
            "type": "u64"
          },
          {
            "name": "changes",
            "type": "u32"
          },
          {
            "name": "bump",
            "type": "u8"
          },
          {
            "name": "sealed_dest",
            "type": "bytes"
          }
        ]
      }
    },
    {
      "name": "Registered",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "kind",
            "type": "u8"
          },
          {
            "name": "key_id",
            "type": "u16"
          },
          {
            "name": "dest_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "sealed_dest",
            "type": "bytes"
          },
          {
            "name": "slot",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          },
          {
            "name": "changes",
            "type": "u32"
          }
        ]
      }
    },
    {
      "name": "Release",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "market",
            "type": "pubkey"
          },
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "n",
            "type": "u32"
          },
          {
            "name": "bump",
            "type": "u8"
          },
          {
            "name": "status",
            "type": "u8"
          },
          {
            "name": "trigger_slot",
            "type": "u64"
          },
          {
            "name": "trigger_ts",
            "type": "i64"
          },
          {
            "name": "created_at",
            "type": "i64"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "root",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "sol_leaf_count",
            "type": "u32"
          },
          {
            "name": "xmr_leaf_count",
            "type": "u32"
          },
          {
            "name": "total_sol",
            "type": "u64"
          },
          {
            "name": "total_xmr",
            "type": "u64"
          },
          {
            "name": "table_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "posted_at",
            "type": "i64"
          },
          {
            "name": "challenge_end",
            "type": "i64"
          },
          {
            "name": "expires_at",
            "type": "i64"
          },
          {
            "name": "posts",
            "type": "u8"
          },
          {
            "name": "vetoes",
            "type": "u8"
          },
          {
            "name": "sol_claimed",
            "type": "u64"
          },
          {
            "name": "sol_claims",
            "type": "u32"
          },
          {
            "name": "xmr_pulled",
            "type": "u64"
          },
          {
            "name": "xmr_pulled_at",
            "type": "i64"
          },
          {
            "name": "xmr_batches",
            "type": "u16"
          },
          {
            "name": "xmr_leaves_attested",
            "type": "u32"
          },
          {
            "name": "returned",
            "type": "u64"
          },
          {
            "name": "poster",
            "type": "pubkey"
          },
          {
            "name": "table_cid",
            "type": "string"
          },
          {
            "name": "bitmap",
            "docs": [
              "one bit per SOL leaf (bit index - 1); sized by post_root"
            ],
            "type": "bytes"
          }
        ]
      }
    },
    {
      "name": "ReleaseClaimed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "release",
            "type": "pubkey"
          },
          {
            "name": "n",
            "type": "u32"
          },
          {
            "name": "index",
            "type": "u32"
          },
          {
            "name": "claimant",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "sol_claimed",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "ReleaseCreated",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "release",
            "type": "pubkey"
          },
          {
            "name": "n",
            "type": "u32"
          },
          {
            "name": "trigger_slot",
            "type": "u64"
          },
          {
            "name": "trigger_ts",
            "type": "i64"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "sell_pot",
            "type": "u64"
          },
          {
            "name": "released_sol_total",
            "type": "u64"
          },
          {
            "name": "side_state",
            "type": "u8"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "ReleaseExpired",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "release",
            "type": "pubkey"
          },
          {
            "name": "n",
            "type": "u32"
          },
          {
            "name": "returned",
            "type": "u64"
          },
          {
            "name": "to_reserve",
            "type": "bool"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "RootPosted",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "release",
            "type": "pubkey"
          },
          {
            "name": "n",
            "type": "u32"
          },
          {
            "name": "root",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "sol_leaf_count",
            "type": "u32"
          },
          {
            "name": "xmr_leaf_count",
            "type": "u32"
          },
          {
            "name": "total_sol",
            "type": "u64"
          },
          {
            "name": "total_xmr",
            "type": "u64"
          },
          {
            "name": "table_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "table_cid",
            "type": "string"
          },
          {
            "name": "challenge_end",
            "type": "i64"
          },
          {
            "name": "expires_at",
            "type": "i64"
          },
          {
            "name": "posts",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "RootVetoed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "release",
            "type": "pubkey"
          },
          {
            "name": "n",
            "type": "u32"
          },
          {
            "name": "guardian",
            "type": "pubkey"
          },
          {
            "name": "reason",
            "type": "u8"
          },
          {
            "name": "vetoes",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "Swept",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "sol_in",
            "type": "u64"
          },
          {
            "name": "zec_out",
            "type": "u64"
          },
          {
            "name": "min_out",
            "type": "u64"
          },
          {
            "name": "spot",
            "type": "u64"
          },
          {
            "name": "median",
            "type": "u64"
          },
          {
            "name": "buy_pot",
            "type": "u64"
          },
          {
            "name": "reserve_zec",
            "type": "u64"
          },
          {
            "name": "swept_sol_total",
            "type": "u64"
          },
          {
            "name": "backing_bps",
            "type": "u32"
          },
          {
            "name": "side_state",
            "type": "u8"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "TreasurySet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "treasury",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "Triggered",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "slot",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          },
          {
            "name": "sell_pot",
            "type": "u64"
          },
          {
            "name": "release_no",
            "type": "u32"
          }
        ]
      }
    },
    {
      "name": "Unregistered",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "slot",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "XmrPulled",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "release",
            "type": "pubkey"
          },
          {
            "name": "n",
            "type": "u32"
          },
          {
            "name": "authority",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "ZecObserved",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "whirlpool",
            "type": "pubkey"
          },
          {
            "name": "raw",
            "type": "u64"
          },
          {
            "name": "stored",
            "type": "u64"
          },
          {
            "name": "median",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "ZecOracle",
      "docs": [
        "ZEC price observations of one Whirlpool ([\"zec\", whirlpool]), lamports per whole ZEC."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "whirlpool",
            "type": "pubkey"
          },
          {
            "name": "zec_mint",
            "type": "pubkey"
          },
          {
            "name": "zec_unit",
            "type": "u64"
          },
          {
            "name": "a_is_sol",
            "docs": [
              "token A of the pool is WSOL (SOL -> ZEC swaps are a -> b)"
            ],
            "type": "bool"
          },
          {
            "name": "ring",
            "type": {
              "array": [
                {
                  "defined": {
                    "name": "Obs"
                  }
                },
                16
              ]
            }
          },
          {
            "name": "head",
            "type": "u8"
          },
          {
            "name": "count",
            "type": "u8"
          },
          {
            "name": "last_raw",
            "type": "u64"
          },
          {
            "name": "observations",
            "type": "u64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    }
  ]
}