{
  "address": "PngjzFgDwd3UMeQnFdfXDRHTPeKc4wMXVEi2ZAZh3uY",
  "metadata": {
    "name": "penguin",
    "version": "0.1.0",
    "spec": "0.1.0",
    "description": "Penguin Pad: migrated coins form a huddle; an emperor pays more into the pot, the pot feeds the frozen edge and buys $HUDDLE; weather decides how much"
  },
  "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
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "accept_attestor",
      "discriminator": [
        31,
        34,
        205,
        187,
        117,
        9,
        128,
        210
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "accept_guardian",
      "discriminator": [
        130,
        141,
        66,
        69,
        80,
        183,
        54,
        186
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "accept_params",
      "discriminator": [
        195,
        99,
        205,
        189,
        189,
        28,
        93,
        118
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "cancel_attestor",
      "discriminator": [
        78,
        201,
        235,
        133,
        100,
        67,
        117,
        171
      ],
      "accounts": [
        {
          "name": "signer",
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "cancel_guardian",
      "discriminator": [
        250,
        105,
        153,
        135,
        212,
        234,
        69,
        4
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "cancel_params",
      "discriminator": [
        100,
        172,
        113,
        60,
        25,
        68,
        80,
        172
      ],
      "accounts": [
        {
          "name": "signer",
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "claim_dev",
      "docs": [
        "Pays the dev's booked share to coin.dev (anyone can push it; below an empty wallet's rent floor it stays booked)."
      ],
      "discriminator": [
        67,
        144,
        21,
        238,
        28,
        66,
        170,
        208
      ],
      "accounts": [
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "dev",
          "writable": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "close_feed",
      "docs": [
        "Returns a closed Feed's rent to whoever opened it, FEED_KEEP after it closed (anyone)."
      ],
      "discriminator": [
        153,
        14,
        92,
        89,
        19,
        78,
        211,
        46
      ],
      "accounts": [
        {
          "name": "feed",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  100
                ]
              },
              {
                "kind": "account",
                "path": "feed.epoch",
                "account": "Feed"
              }
            ]
          }
        },
        {
          "name": "opener",
          "writable": true
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "collect",
      "docs": [
        "Anyone: pulls the coin's creator fees into its Fees PDA and books every new lamport (fees, donations, the",
        "launch fee, an unwrapped WSOL account of the Fees PDA alike). Optional in the same instruction: pump",
        "`collect_creator_fee` (remaining = [fees, creator_vault, system, event_authority, pump]) and the close of a",
        "WSOL token account owned by the Fees PDA (PumpSwap creator fees, if someone ran collect_coin_creator_fee; the",
        "keeper instead puts PumpSwap's permissionless `transfer_creator_fees_to_pump` in front).",
        "Split: see `math::split_fees`; the pot part moves to the pot at once; dev and treasury stay booked here.",
        "A coin whose curve completed must be synced first (MigrationNotSynced), so the pot never misses its share."
      ],
      "discriminator": [
        208,
        47,
        194,
        155,
        17,
        98,
        82,
        236
      ],
      "accounts": [
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "huddle",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  104,
                  117,
                  100,
                  100,
                  108,
                  101
                ]
              }
            ]
          }
        },
        {
          "name": "pot",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  116
                ]
              }
            ]
          }
        },
        {
          "name": "curve"
        },
        {
          "name": "wsol",
          "writable": true,
          "optional": true
        },
        {
          "name": "token_program",
          "optional": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "collect_treasury",
      "docs": [
        "Pays the treasury's booked share (launch fee + treasury leg + rounding dust) to config.treasury (anyone)."
      ],
      "discriminator": [
        48,
        255,
        226,
        214,
        221,
        81,
        222,
        65
      ],
      "accounts": [
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "treasury",
          "writable": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "crown",
      "docs": [
        "Permissionless. The challenger (a migrated pad coin) takes the crown when its median market cap (median of 7",
        "clamped pool observations spanning >= span_secs, x the live supply) beats the emperor's by margin_bps (5 %),",
        "both medians fresh. No emperor yet: any migrated coin with such a median. Emperor without an observation for",
        "stale_secs: replaced without the comparison. Cooldowns: the emperor reigns >= cooldown_secs (unless stale) and",
        "a coin gains or loses the crown at most once per cooldown_secs."
      ],
      "discriminator": [
        46,
        200,
        74,
        157,
        181,
        31,
        146,
        213
      ],
      "accounts": [
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "huddle",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  104,
                  117,
                  100,
                  100,
                  108,
                  101
                ]
              }
            ]
          }
        },
        {
          "name": "challenger",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "challenger.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "challenger_obs",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  111,
                  98,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "challenger.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "challenger_mint"
        },
        {
          "name": "emperor",
          "docs": [
            "The current emperor's Coin (none while there is no emperor). Coin / Obs accounts only exist at their PDAs",
            "(created by this program), so owner + discriminator + the mint check below pin them."
          ],
          "writable": true,
          "optional": true
        },
        {
          "name": "emperor_obs",
          "optional": true
        },
        {
          "name": "emperor_mint",
          "optional": true
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "feed_edge",
      "docs": [
        "Feeds listed coin `idx` of the open epoch's final report: one PumpSwap buy from the pot (spend = min(what is",
        "left of its allocation, the 1 % impact cap, max_spend if > 0)), min_out from the on-chain median, then the",
        "whole token balance is burned. Refused for a coin that became the emperor since the report. Anyone; alone in",
        "its transaction. remaining = PumpSwap buy accounts (user = pot, user_base = pot ATA, user_quote = pot WSOL ATA)."
      ],
      "discriminator": [
        165,
        42,
        59,
        36,
        134,
        31,
        251,
        217
      ],
      "accounts": [
        {
          "name": "caller",
          "writable": true,
          "signer": true
        },
        {
          "name": "huddle",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  104,
                  117,
                  100,
                  100,
                  108,
                  101
                ]
              }
            ]
          }
        },
        {
          "name": "feed",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  100
                ]
              },
              {
                "kind": "account",
                "path": "feed.epoch",
                "account": "Feed"
              }
            ]
          }
        },
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "obs",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  111,
                  98,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "mint",
          "writable": true
        },
        {
          "name": "pot",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  116
                ]
              }
            ]
          }
        },
        {
          "name": "pot_ata",
          "writable": true
        },
        {
          "name": "pot_wsol",
          "writable": true
        },
        {
          "name": "curve"
        },
        {
          "name": "token_program"
        },
        {
          "name": "spl_token",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "instructions",
          "address": "Sysvar1nstructions1111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "idx",
          "type": "u8"
        },
        {
          "name": "max_spend",
          "type": "u64"
        }
      ]
    },
    {
      "name": "huddle_buy",
      "docs": [
        "Buys and burns $HUDDLE from the open epoch's huddle budget (curve or PumpSwap, whichever it trades on), same",
        "guard as feed_edge. Anyone; alone in its transaction. remaining = pump buy accounts (user = pot, associated",
        "user = pot ATA) on the curve, or PumpSwap buy accounts after migration."
      ],
      "discriminator": [
        155,
        7,
        227,
        255,
        61,
        25,
        52,
        212
      ],
      "accounts": [
        {
          "name": "caller",
          "writable": true,
          "signer": true
        },
        {
          "name": "huddle",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  104,
                  117,
                  100,
                  100,
                  108,
                  101
                ]
              }
            ]
          }
        },
        {
          "name": "feed",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  100
                ]
              },
              {
                "kind": "account",
                "path": "feed.epoch",
                "account": "Feed"
              }
            ]
          }
        },
        {
          "name": "mint",
          "writable": true
        },
        {
          "name": "obs",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  111,
                  98,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "pot",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  116
                ]
              }
            ]
          }
        },
        {
          "name": "pot_ata",
          "writable": true
        },
        {
          "name": "pot_wsol",
          "writable": true
        },
        {
          "name": "curve",
          "writable": true
        },
        {
          "name": "token_program"
        },
        {
          "name": "spl_token",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "instructions",
          "address": "Sysvar1nstructions1111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "max_spend",
          "type": "u64"
        }
      ]
    },
    {
      "name": "init_config",
      "docs": [
        "Creates Config + Huddle and funds the pot's rent floor. Only INIT_AUTHORITY. `epoch_secs` and",
        "`rotation_delay` are fixed for the life of the pad."
      ],
      "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": "huddle",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  104,
                  117,
                  100,
                  100,
                  108,
                  101
                ]
              }
            ]
          }
        },
        {
          "name": "pot",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  116
                ]
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "treasury",
          "type": "pubkey"
        },
        {
          "name": "attestor",
          "type": "pubkey"
        },
        {
          "name": "guardian",
          "type": "pubkey"
        },
        {
          "name": "params",
          "type": {
            "defined": {
              "name": "Params"
            }
          }
        },
        {
          "name": "epoch_secs",
          "type": "i64"
        },
        {
          "name": "rotation_delay",
          "type": "i64"
        }
      ]
    },
    {
      "name": "launch",
      "docs": [
        "Creates the pump coin (creator = Fees PDA) and, optionally, the dev buy to the dev, in ONE instruction that",
        "must be alone in its transaction (no snipe bundled behind it). The flat launch fee is booked for the treasury",
        "in the coin's Fees PDA (paid out by `collect_treasury`, never inline). `expected_launch_fee` / `expected_split`",
        "= what the site showed (a param change in between fails with ParamsChanged).",
        "remaining = pump create_v2 accounts (16) [+ pump buy accounts (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": "mint",
          "writable": true,
          "signer": true
        },
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "obs",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  111,
                  98,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "dev_ata",
          "writable": true
        },
        {
          "name": "token_program"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "instructions",
          "address": "Sysvar1nstructions1111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "symbol",
          "type": "string"
        },
        {
          "name": "uri",
          "type": "string"
        },
        {
          "name": "dev_buy",
          "type": "u64"
        },
        {
          "name": "min_tokens_out",
          "type": "u64"
        },
        {
          "name": "expected_launch_fee",
          "type": "u64"
        },
        {
          "name": "expected_split",
          "type": {
            "defined": {
              "name": "Split"
            }
          }
        }
      ]
    },
    {
      "name": "observe",
      "docs": [
        "Appends the mint's price (pump curve, or its canonical PumpSwap pool once complete) to its ring:",
        ">= obs_gap_secs apart, clamped to +-10 % of the median of the newest 7. May share its transaction only with",
        "other observes (no buy-observe-sell in one transaction). remaining = [pool, pool base TA, pool quote TA] when",
        "the curve is complete."
      ],
      "discriminator": [
        204,
        78,
        178,
        115,
        194,
        147,
        65,
        74
      ],
      "accounts": [
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "obs",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  111,
                  98,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "obs.mint",
                "account": "Obs"
              }
            ]
          }
        },
        {
          "name": "curve"
        },
        {
          "name": "instructions",
          "address": "Sysvar1nstructions1111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "open_feed",
      "docs": [
        "Opens epoch `epoch` (= now / epoch_secs; anyone, the caller lends the Feed rent, refunded by `close_feed`).",
        "Closes the previous open epoch (its unspent budget simply stays in the pot), books stray pot lamports as a",
        "donation, reads the weather from closed epochs and snapshots the budget. `prev` = the open Feed, or the",
        "System program id when none is open."
      ],
      "discriminator": [
        5,
        107,
        3,
        153,
        15,
        209,
        163,
        235
      ],
      "accounts": [
        {
          "name": "caller",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "huddle",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  104,
                  117,
                  100,
                  100,
                  108,
                  101
                ]
              }
            ]
          }
        },
        {
          "name": "pot",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  116
                ]
              }
            ]
          }
        },
        {
          "name": "prev"
        },
        {
          "name": "feed",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  100
                ]
              },
              {
                "kind": "arg",
                "path": "epoch"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "epoch",
          "type": "u64"
        }
      ]
    },
    {
      "name": "post_edge",
      "docs": [
        "Posts the edge report of the open epoch: the attestor's Ed25519 signature (instruction right before, strict",
        "offsets) over `\"penguinpad:edge:v1\" || program id || epoch u64 || seq u8 || as_of i64 || n u8 || mints ||",
        "report_hash`. remaining = the Coin accounts of the listed mints, coldest first (1..=5). Each must be a pad coin,",
        "migrated >= migration_age_secs ago, not the emperor, not the pad token, listed once. The program fixes each",
        "coin's allocation: min(edge_budget / n, edge_budget x max_feed_bps). Final after veto_secs. A vetoed report can be",
        "replaced (seq + 1, at most 3 posts per epoch); a pending one cannot."
      ],
      "discriminator": [
        39,
        169,
        198,
        91,
        9,
        141,
        84,
        194
      ],
      "accounts": [
        {
          "name": "payer",
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "huddle",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  104,
                  117,
                  100,
                  100,
                  108,
                  101
                ]
              }
            ]
          }
        },
        {
          "name": "feed",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  100
                ]
              },
              {
                "kind": "account",
                "path": "feed.epoch",
                "account": "Feed"
              }
            ]
          }
        },
        {
          "name": "instructions",
          "address": "Sysvar1nstructions1111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "epoch",
          "type": "u64"
        },
        {
          "name": "seq",
          "type": "u8"
        },
        {
          "name": "as_of",
          "type": "i64"
        },
        {
          "name": "report_hash",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        }
      ]
    },
    {
      "name": "prepare",
      "docs": [
        "Creates the pot's pump and PumpSwap user volume accumulators (caller pays their rent once), so no program buy",
        "ever pays rent out of the pot. Permissionless, idempotent."
      ],
      "discriminator": [
        121,
        155,
        156,
        90,
        164,
        252,
        220,
        109
      ],
      "accounts": [
        {
          "name": "caller",
          "writable": true,
          "signer": true
        },
        {
          "name": "huddle",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  104,
                  117,
                  100,
                  100,
                  108,
                  101
                ]
              }
            ]
          }
        },
        {
          "name": "pot",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  116
                ]
              }
            ]
          }
        },
        {
          "name": "pump_uva",
          "writable": true
        },
        {
          "name": "amm_uva",
          "writable": true
        },
        {
          "name": "pump_event_authority"
        },
        {
          "name": "pump_program"
        },
        {
          "name": "amm_event_authority"
        },
        {
          "name": "amm_program"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "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
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "proposed",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "propose_attestor",
      "docs": [
        "Attestor rotation: proposed by the admin, effective after `rotation_delay` via `accept_attestor` (anyone);",
        "the guardian or the admin can cancel (batch-5 fans M-1: no instant key swap)."
      ],
      "discriminator": [
        213,
        183,
        66,
        250,
        112,
        205,
        150,
        30
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "proposed",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "propose_guardian",
      "docs": [
        "Guardian rotation (same timelock; only the admin can cancel it: a guardian cannot block its own replacement)."
      ],
      "discriminator": [
        39,
        11,
        248,
        174,
        73,
        240,
        0,
        211
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "proposed",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "propose_params",
      "docs": [
        "New params, effective after `rotation_delay` through the permissionless `accept_params` (the guardian or the",
        "admin can cancel meanwhile). They apply to coins launched and epochs opened after that; existing coins keep",
        "their split, open epochs keep their rules."
      ],
      "discriminator": [
        94,
        141,
        220,
        182,
        171,
        53,
        52,
        182
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "params",
          "type": {
            "defined": {
              "name": "Params"
            }
          }
        }
      ]
    },
    {
      "name": "revoke_attestor",
      "docs": [
        "AUDIT L-1: the guardian switches the attestor OFF at once (a leaked key could otherwise post 3 reports per",
        "epoch for the whole rotation timelock, each one needing a veto in time). Removing a key grants nobody",
        "anything, so no timelock; a new key still goes through propose_attestor + the timelock. A pending report is",
        "not touched (veto it separately)."
      ],
      "discriminator": [
        185,
        12,
        191,
        140,
        144,
        112,
        102,
        154
      ],
      "accounts": [
        {
          "name": "signer",
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "set_pad_mint",
      "docs": [
        "Sets $HUDDLE once (then frozen forever). It must be a pump.fun coin (bonding curve PDA owned by pump, SOL",
        "quoted) with a plain Token-2022 mint (no freeze authority, metadata extensions only). Creates its Obs ring if it",
        "is not a pad coin."
      ],
      "discriminator": [
        234,
        142,
        132,
        83,
        102,
        138,
        83,
        154
      ],
      "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": "mint"
        },
        {
          "name": "curve"
        },
        {
          "name": "obs",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  111,
                  98,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "set_paused",
      "docs": [
        "Pause blocks new coins only. Collects, crowns, epochs, reports, feeds, claims always work."
      ],
      "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
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "paused",
          "type": "bool"
        }
      ]
    },
    {
      "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": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "treasury",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "sync_migration",
      "docs": [
        "Flips a coin to Migrated once its curve is complete and pump created the canonical PumpSwap pool",
        "(permissionless). The observation ring restarts (pool prices only from now on)."
      ],
      "discriminator": [
        225,
        231,
        95,
        199,
        32,
        239,
        236,
        87
      ],
      "accounts": [
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "obs",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  111,
                  98,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "curve"
        },
        {
          "name": "pool"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "veto_edge",
      "docs": [
        "The guardian vetoes the pending edge report before it is final (nothing was fed from it yet)."
      ],
      "discriminator": [
        253,
        187,
        76,
        216,
        140,
        14,
        107,
        49
      ],
      "accounts": [
        {
          "name": "guardian",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "feed",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  100
                ]
              },
              {
                "kind": "account",
                "path": "feed.epoch",
                "account": "Feed"
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "reason",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "Coin",
      "discriminator": [
        215,
        195,
        53,
        238,
        217,
        196,
        213,
        51
      ]
    },
    {
      "name": "Config",
      "discriminator": [
        155,
        12,
        170,
        224,
        30,
        250,
        204,
        130
      ]
    },
    {
      "name": "Feed",
      "discriminator": [
        69,
        191,
        16,
        227,
        132,
        187,
        84,
        227
      ]
    },
    {
      "name": "Huddle",
      "discriminator": [
        100,
        98,
        250,
        117,
        169,
        226,
        156,
        242
      ]
    },
    {
      "name": "Obs",
      "discriminator": [
        61,
        239,
        30,
        51,
        170,
        135,
        217,
        179
      ]
    }
  ],
  "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": "Crowned",
      "discriminator": [
        11,
        133,
        28,
        93,
        176,
        224,
        247,
        112
      ]
    },
    {
      "name": "DevPaid",
      "discriminator": [
        108,
        221,
        137,
        38,
        39,
        247,
        120,
        194
      ]
    },
    {
      "name": "Donated",
      "discriminator": [
        12,
        83,
        251,
        183,
        39,
        211,
        125,
        44
      ]
    },
    {
      "name": "EdgePosted",
      "discriminator": [
        31,
        149,
        241,
        221,
        239,
        206,
        229,
        183
      ]
    },
    {
      "name": "EdgeVetoed",
      "discriminator": [
        44,
        146,
        190,
        139,
        45,
        249,
        243,
        153
      ]
    },
    {
      "name": "EpochOpened",
      "discriminator": [
        136,
        166,
        130,
        170,
        78,
        145,
        67,
        78
      ]
    },
    {
      "name": "Fed",
      "discriminator": [
        123,
        143,
        103,
        16,
        214,
        190,
        110,
        102
      ]
    },
    {
      "name": "FeedClosed",
      "discriminator": [
        172,
        177,
        74,
        18,
        119,
        96,
        196,
        207
      ]
    },
    {
      "name": "FeedRemoved",
      "discriminator": [
        12,
        38,
        241,
        233,
        180,
        95,
        32,
        4
      ]
    },
    {
      "name": "HuddleBought",
      "discriminator": [
        206,
        197,
        90,
        130,
        98,
        35,
        29,
        223
      ]
    },
    {
      "name": "KeyCancelled",
      "discriminator": [
        64,
        113,
        200,
        208,
        84,
        193,
        222,
        137
      ]
    },
    {
      "name": "KeyProposed",
      "discriminator": [
        12,
        192,
        56,
        55,
        1,
        109,
        229,
        21
      ]
    },
    {
      "name": "KeySet",
      "discriminator": [
        58,
        88,
        48,
        221,
        90,
        54,
        52,
        157
      ]
    },
    {
      "name": "Launched",
      "discriminator": [
        209,
        127,
        29,
        152,
        129,
        212,
        189,
        183
      ]
    },
    {
      "name": "MigrationSynced",
      "discriminator": [
        182,
        132,
        2,
        35,
        185,
        80,
        230,
        143
      ]
    },
    {
      "name": "Observed",
      "discriminator": [
        154,
        65,
        198,
        52,
        238,
        11,
        193,
        59
      ]
    },
    {
      "name": "PadMintSet",
      "discriminator": [
        36,
        57,
        117,
        98,
        7,
        209,
        231,
        41
      ]
    },
    {
      "name": "ParamsProposed",
      "discriminator": [
        29,
        64,
        243,
        241,
        75,
        135,
        93,
        142
      ]
    },
    {
      "name": "ParamsSet",
      "discriminator": [
        57,
        111,
        33,
        252,
        120,
        76,
        98,
        245
      ]
    },
    {
      "name": "PausedSet",
      "discriminator": [
        171,
        125,
        127,
        156,
        233,
        81,
        68,
        66
      ]
    },
    {
      "name": "Prepared",
      "discriminator": [
        203,
        59,
        178,
        86,
        6,
        123,
        13,
        36
      ]
    },
    {
      "name": "TreasuryPaid",
      "discriminator": [
        203,
        141,
        198,
        183,
        132,
        74,
        239,
        248
      ]
    },
    {
      "name": "TreasurySet",
      "discriminator": [
        69,
        231,
        163,
        135,
        254,
        194,
        109,
        166
      ]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "Unauthorized",
      "msg": "only the pad admin can do this"
    },
    {
      "code": 6001,
      "name": "BadParams",
      "msg": "a parameter is outside its allowed range"
    },
    {
      "code": 6002,
      "name": "BadKey",
      "msg": "this key cannot be used here (empty, or the same as the attestor / guardian)"
    },
    {
      "code": 6003,
      "name": "BadAccounts",
      "msg": "wrong account passed"
    },
    {
      "code": 6004,
      "name": "Math",
      "msg": "arithmetic overflow"
    },
    {
      "code": 6005,
      "name": "Paused",
      "msg": "new launches are paused"
    },
    {
      "code": 6006,
      "name": "ParamsChanged",
      "msg": "the pad's launch fee or fee split changed since you loaded the page: reload and check"
    },
    {
      "code": 6007,
      "name": "DevBuyTooBig",
      "msg": "the dev buy is larger than the pad allows"
    },
    {
      "code": 6008,
      "name": "BadName",
      "msg": "name: 1-32 bytes, no leading/trailing spaces or invisible characters"
    },
    {
      "code": 6009,
      "name": "BadSymbol",
      "msg": "ticker: 1-10 letters or digits"
    },
    {
      "code": 6010,
      "name": "BadUri",
      "msg": "the metadata link must be an IPFS link (ipfs://<CID> or https://ipfs.io/ipfs/<CID>)"
    },
    {
      "code": 6011,
      "name": "NotAlone",
      "msg": "this transaction must contain only this Penguin Pad instruction (no trades bundled with it)"
    },
    {
      "code": 6012,
      "name": "NothingBought",
      "msg": "the dev buy returned no tokens"
    },
    {
      "code": 6013,
      "name": "UnsafeMint",
      "msg": "the mint has a freeze authority or extra token extensions"
    },
    {
      "code": 6014,
      "name": "AlreadyMigrated",
      "msg": "the coin has already migrated"
    },
    {
      "code": 6015,
      "name": "NotMigrated",
      "msg": "the coin has not migrated to PumpSwap yet"
    },
    {
      "code": 6016,
      "name": "MigratedNeedsPool",
      "msg": "the coin migrated: pass its PumpSwap pool and the pool's two token accounts"
    },
    {
      "code": 6017,
      "name": "MigrationNotSynced",
      "msg": "the curve completed: run sync_migration before collecting, so the pot gets its share"
    },
    {
      "code": 6018,
      "name": "ObserveTooSoon",
      "msg": "observed too recently: wait for the observation gap"
    },
    {
      "code": 6019,
      "name": "NothingToCollect",
      "msg": "nothing new to collect"
    },
    {
      "code": 6020,
      "name": "NothingToClaim",
      "msg": "nothing to claim"
    },
    {
      "code": 6021,
      "name": "BelowRentFloor",
      "msg": "the payout would leave the wallet below its rent floor; it stays booked"
    },
    {
      "code": 6022,
      "name": "PadMintFrozen",
      "msg": "the pad token is already set and frozen"
    },
    {
      "code": 6023,
      "name": "PadMintUnset",
      "msg": "the pad token ($HUDDLE) is not set yet"
    },
    {
      "code": 6024,
      "name": "AlreadyEmperor",
      "msg": "this coin already wears the crown"
    },
    {
      "code": 6025,
      "name": "CrownCooldown",
      "msg": "this coin gained or lost the crown too recently"
    },
    {
      "code": 6026,
      "name": "EmperorCooldown",
      "msg": "the emperor reigns for a minimum time before it can be challenged"
    },
    {
      "code": 6027,
      "name": "EmperorAccountsMissing",
      "msg": "pass the current emperor's coin, observations and mint"
    },
    {
      "code": 6028,
      "name": "EmperorNeedsObservations",
      "msg": "the emperor needs fresh observations before a challenge: observe it first"
    },
    {
      "code": 6029,
      "name": "ChallengerTooSmall",
      "msg": "the challenger's median market cap does not beat the emperor's by the margin"
    },
    {
      "code": 6030,
      "name": "StaleMedian",
      "msg": "not enough fresh price observations (7 within 30 minutes): run observe"
    },
    {
      "code": 6031,
      "name": "MedianTooShort",
      "msg": "the observations behind the median do not span enough time yet"
    },
    {
      "code": 6032,
      "name": "PricesDisagree",
      "msg": "recent observations disagree too much: the price is moving, try later"
    },
    {
      "code": 6033,
      "name": "PriceAboveMedian",
      "msg": "the live price is above the median by more than the slippage allowance"
    },
    {
      "code": 6034,
      "name": "BuyTooSoon",
      "msg": "one program buy per coin per slot and per buy gap: try a bit later"
    },
    {
      "code": 6035,
      "name": "PoolTooShallow",
      "msg": "the pool is too shallow for a buy within the impact cap"
    },
    {
      "code": 6036,
      "name": "PotNotPrepared",
      "msg": "the pot's volume accumulators are missing: run prepare once"
    },
    {
      "code": 6037,
      "name": "PotEmpty",
      "msg": "the pot does not hold enough SOL"
    },
    {
      "code": 6038,
      "name": "HeadroomTooSmall",
      "msg": "the rent headroom lent by the caller was not enough"
    },
    {
      "code": 6039,
      "name": "WrongEpoch",
      "msg": "wrong epoch: open the current one"
    },
    {
      "code": 6040,
      "name": "EpochAlreadyOpen",
      "msg": "this epoch is already open"
    },
    {
      "code": 6041,
      "name": "FeedNotOpen",
      "msg": "this epoch is not open (closed or over)"
    },
    {
      "code": 6042,
      "name": "ReportPending",
      "msg": "a report is pending for this epoch"
    },
    {
      "code": 6043,
      "name": "BadReport",
      "msg": "bad report (sequence, time, or coin count)"
    },
    {
      "code": 6044,
      "name": "IneligibleCoin",
      "msg": "a listed coin is not eligible (not a pad coin, not migrated long enough, the emperor, the pad token, or listed twice)"
    },
    {
      "code": 6045,
      "name": "NoReport",
      "msg": "no edge report for this epoch"
    },
    {
      "code": 6046,
      "name": "ReportVetoed",
      "msg": "the report was vetoed by the guardian"
    },
    {
      "code": 6047,
      "name": "ReportNotFinal",
      "msg": "the report is still inside its veto window"
    },
    {
      "code": 6048,
      "name": "ReportFinal",
      "msg": "the report is already final"
    },
    {
      "code": 6049,
      "name": "AllocationDone",
      "msg": "this coin's allocation for the epoch is used up"
    },
    {
      "code": 6050,
      "name": "EmperorNotFed",
      "msg": "the emperor is never fed from the edge budget"
    },
    {
      "code": 6051,
      "name": "NothingPending",
      "msg": "nothing is pending"
    },
    {
      "code": 6052,
      "name": "TooEarly",
      "msg": "the timelock has not passed yet"
    },
    {
      "code": 6053,
      "name": "FeedStillOpen",
      "msg": "the epoch is still open or was closed too recently"
    },
    {
      "code": 6054,
      "name": "SpendAboveMax",
      "msg": "this buy would spend more than the max_spend you passed"
    },
    {
      "code": 6055,
      "name": "AttestorRevoked",
      "msg": "the attestor key is revoked: no edge report until a new key passes the timelock"
    }
  ],
  "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": "Coin",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "dev",
            "type": "pubkey"
          },
          {
            "name": "index",
            "type": "u64"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "symbol",
            "type": "string"
          },
          {
            "name": "uri",
            "type": "string"
          },
          {
            "name": "launched_at",
            "type": "i64"
          },
          {
            "name": "split",
            "type": {
              "defined": {
                "name": "Split"
              }
            }
          },
          {
            "name": "state",
            "docs": [
              "CURVE / MIGRATED"
            ],
            "type": "u8"
          },
          {
            "name": "migrated_at",
            "type": "i64"
          },
          {
            "name": "supply",
            "type": "u64"
          },
          {
            "name": "dev_pending",
            "type": "u64"
          },
          {
            "name": "treasury_pending",
            "type": "u64"
          },
          {
            "name": "fees_total",
            "type": "u64"
          },
          {
            "name": "dev_paid",
            "type": "u64"
          },
          {
            "name": "treasury_paid",
            "type": "u64"
          },
          {
            "name": "pot_paid",
            "type": "u64"
          },
          {
            "name": "fee_ring",
            "docs": [
              "This coin's creator fees per epoch (\"warmth\" on the map; trustless volume: fees / fee tier)."
            ],
            "type": {
              "array": [
                {
                  "defined": {
                    "name": "EpochFees"
                  }
                },
                8
              ]
            }
          },
          {
            "name": "last_crown_change",
            "type": "i64"
          },
          {
            "name": "crowns",
            "type": "u32"
          },
          {
            "name": "fed_times",
            "type": "u32"
          },
          {
            "name": "fed_sol",
            "type": "u64"
          },
          {
            "name": "fed_burned",
            "type": "u64"
          },
          {
            "name": "fees_bump",
            "type": "u8"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "Collected",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "incoming",
            "type": "u64"
          },
          {
            "name": "dev",
            "type": "u64"
          },
          {
            "name": "pot",
            "type": "u64"
          },
          {
            "name": "treasury",
            "type": "u64"
          },
          {
            "name": "emperor",
            "type": "bool"
          },
          {
            "name": "migrated",
            "type": "bool"
          },
          {
            "name": "epoch",
            "type": "u64"
          },
          {
            "name": "coin_epoch_fees",
            "type": "u64"
          },
          {
            "name": "pad_epoch_fees",
            "type": "u64"
          },
          {
            "name": "total",
            "type": "u64"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Config",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          },
          {
            "name": "pending_admin",
            "type": "pubkey"
          },
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "attestor",
            "type": "pubkey"
          },
          {
            "name": "pending_attestor",
            "type": "pubkey"
          },
          {
            "name": "attestor_eta",
            "type": "i64"
          },
          {
            "name": "guardian",
            "type": "pubkey"
          },
          {
            "name": "pending_guardian",
            "type": "pubkey"
          },
          {
            "name": "guardian_eta",
            "type": "i64"
          },
          {
            "name": "rotation_delay",
            "docs": [
              "Timelock of every key and param change (set at init, fixed). mainnet 3..=30 days."
            ],
            "type": "i64"
          },
          {
            "name": "paused",
            "type": "bool"
          },
          {
            "name": "pad_mint",
            "docs": [
              "$HUDDLE. Default = not set yet. Set once, then frozen."
            ],
            "type": "pubkey"
          },
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "has_pending_params",
            "type": "bool"
          },
          {
            "name": "pending_params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "params_eta",
            "type": "i64"
          },
          {
            "name": "coins",
            "type": "u64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "ConfigInitialized",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          },
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "attestor",
            "type": "pubkey"
          },
          {
            "name": "guardian",
            "type": "pubkey"
          },
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "epoch_secs",
            "type": "i64"
          },
          {
            "name": "rotation_delay",
            "type": "i64"
          },
          {
            "name": "first_epoch",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "CrownRules",
      "docs": [
        "Emperor rules (global)."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "margin_bps",
            "docs": [
              "The challenger's median mcap must beat the emperor's by this much. 100..=5000 (500 = 5 %)."
            ],
            "type": "u16"
          },
          {
            "name": "cooldown_secs",
            "docs": [
              "A coin can gain or lose the crown at most once per this long; a new emperor reigns at least this long",
              "(unless it goes stale). mainnet 3600..=7 d (21600 = 6 h)."
            ],
            "type": "i64"
          },
          {
            "name": "span_secs",
            "docs": [
              "The 7 observations behind a median must span at least this long. mainnet 300..=1800 (600 = 10 min), and at",
              "most 6 x obs_gap_secs so the newest 7 always cover it (AUDIT M-2)."
            ],
            "type": "i64"
          },
          {
            "name": "stale_secs",
            "docs": [
              "An emperor with no observation for this long can be replaced without the comparison. mainnet 3600..=7 d (24 h)."
            ],
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Crowned",
      "docs": [
        "reason: 0 first emperor, 1 the old emperor went stale, 2 beat the emperor by the margin"
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "old",
            "type": "pubkey"
          },
          {
            "name": "reason",
            "type": "u8"
          },
          {
            "name": "challenger_mcap",
            "type": "u64"
          },
          {
            "name": "emperor_mcap",
            "type": "u64"
          },
          {
            "name": "median_q9",
            "type": "u64"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "DevPaid",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "dev",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "total",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Donated",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "EdgePosted",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "epoch",
            "type": "u64"
          },
          {
            "name": "seq",
            "type": "u8"
          },
          {
            "name": "n",
            "type": "u8"
          },
          {
            "name": "coins",
            "type": {
              "array": [
                "pubkey",
                5
              ]
            }
          },
          {
            "name": "alloc_each",
            "type": "u64"
          },
          {
            "name": "edge_budget",
            "type": "u64"
          },
          {
            "name": "report_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "as_of",
            "type": "i64"
          },
          {
            "name": "final_at",
            "type": "i64"
          },
          {
            "name": "attestor",
            "type": "pubkey"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "EdgeRules",
      "docs": [
        "Published inputs of the attestor's \"frozen\" rule (the svc reads them from chain; the program does not use them)."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "frozen_secs",
            "docs": [
              "Window the unique wallets are counted over. mainnet 3600..=7 d (21600 = 6 h)."
            ],
            "type": "i64"
          },
          {
            "name": "min_wallets",
            "docs": [
              "Fewer unique wallets than this in the window = frozen. 1..=1000 (5)."
            ],
            "type": "u16"
          },
          {
            "name": "min_trade_lamports",
            "docs": [
              "A trade counts only from this size (quote lamports). 0..=1 SOL (0.01 SOL)."
            ],
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "EdgeVetoed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "epoch",
            "type": "u64"
          },
          {
            "name": "seq",
            "type": "u8"
          },
          {
            "name": "by",
            "type": "pubkey"
          },
          {
            "name": "reason",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "EpochFees",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "epoch",
            "type": "u64"
          },
          {
            "name": "fees",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "EpochOpened",
      "docs": [
        "label: 0 Blizzard, 1 Cold, 2 Mild, 3 Warm"
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "epoch",
            "type": "u64"
          },
          {
            "name": "r_bps",
            "type": "u64"
          },
          {
            "name": "frac_bps",
            "type": "u16"
          },
          {
            "name": "label",
            "type": "u8"
          },
          {
            "name": "last_fees",
            "type": "u64"
          },
          {
            "name": "hist_sum",
            "type": "u64"
          },
          {
            "name": "hist_n",
            "type": "u8"
          },
          {
            "name": "pot",
            "type": "u64"
          },
          {
            "name": "budget",
            "type": "u64"
          },
          {
            "name": "huddle_budget",
            "type": "u64"
          },
          {
            "name": "edge_budget",
            "type": "u64"
          },
          {
            "name": "pad_mint",
            "type": "pubkey"
          },
          {
            "name": "ends_at",
            "type": "i64"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Fed",
      "docs": [
        "venue: 0 pump curve, 1 PumpSwap"
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "epoch",
            "type": "u64"
          },
          {
            "name": "idx",
            "type": "u8"
          },
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "venue",
            "type": "u8"
          },
          {
            "name": "spend",
            "type": "u64"
          },
          {
            "name": "spent",
            "type": "u64"
          },
          {
            "name": "bought",
            "type": "u64"
          },
          {
            "name": "burned",
            "type": "u64"
          },
          {
            "name": "min_out",
            "type": "u64"
          },
          {
            "name": "median_q9",
            "type": "u64"
          },
          {
            "name": "price_q9",
            "type": "u64"
          },
          {
            "name": "impact_cap",
            "type": "u64"
          },
          {
            "name": "alloc",
            "type": "u64"
          },
          {
            "name": "left",
            "type": "u64"
          },
          {
            "name": "donated",
            "type": "u64"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Feed",
      "docs": [
        "One epoch of feeding: the weather, the budget snapshot, the edge report (attested, vetoable) and every spend.",
        "Invariants: huddle_spent <= huddle_budget; spent[i] <= alloc[i]; sum(alloc) <= edge_budget;",
        "huddle_budget + edge_budget == budget (or budget - huddle part while the pad token is unset)."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "epoch",
            "type": "u64"
          },
          {
            "name": "opened_at",
            "type": "i64"
          },
          {
            "name": "ends_at",
            "type": "i64"
          },
          {
            "name": "opener",
            "type": "pubkey"
          },
          {
            "name": "rules",
            "type": {
              "defined": {
                "name": "FeedRules"
              }
            }
          },
          {
            "name": "r_bps",
            "type": "u64"
          },
          {
            "name": "frac_bps",
            "type": "u16"
          },
          {
            "name": "label",
            "type": "u8"
          },
          {
            "name": "last_fees",
            "type": "u64"
          },
          {
            "name": "hist_sum",
            "type": "u64"
          },
          {
            "name": "hist_n",
            "type": "u8"
          },
          {
            "name": "pot_at_open",
            "type": "u64"
          },
          {
            "name": "budget",
            "type": "u64"
          },
          {
            "name": "pad_mint",
            "type": "pubkey"
          },
          {
            "name": "huddle_budget",
            "type": "u64"
          },
          {
            "name": "huddle_spent",
            "type": "u64"
          },
          {
            "name": "huddle_burned",
            "type": "u64"
          },
          {
            "name": "edge_budget",
            "type": "u64"
          },
          {
            "name": "report_state",
            "type": "u8"
          },
          {
            "name": "report_seq",
            "type": "u8"
          },
          {
            "name": "report_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "as_of",
            "type": "i64"
          },
          {
            "name": "posted_at",
            "type": "i64"
          },
          {
            "name": "final_at",
            "type": "i64"
          },
          {
            "name": "n",
            "type": "u8"
          },
          {
            "name": "coins",
            "type": {
              "array": [
                "pubkey",
                5
              ]
            }
          },
          {
            "name": "alloc",
            "type": {
              "array": [
                "u64",
                5
              ]
            }
          },
          {
            "name": "spent",
            "type": {
              "array": [
                "u64",
                5
              ]
            }
          },
          {
            "name": "burned",
            "type": {
              "array": [
                "u64",
                5
              ]
            }
          },
          {
            "name": "closed",
            "type": "bool"
          },
          {
            "name": "closed_at",
            "type": "i64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "FeedClosed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "epoch",
            "type": "u64"
          },
          {
            "name": "huddle_spent",
            "type": "u64"
          },
          {
            "name": "edge_spent",
            "type": "u64"
          },
          {
            "name": "unspent",
            "type": "u64"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "FeedRemoved",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "epoch",
            "type": "u64"
          },
          {
            "name": "opener",
            "type": "pubkey"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "FeedRules",
      "docs": [
        "Rules copied into every Feed when its epoch opens (the admin cannot change an open epoch)."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "huddle_bps",
            "docs": [
              "Share of the epoch budget that buys and burns $HUDDLE. 0..=5000 (default 3000)."
            ],
            "type": "u16"
          },
          {
            "name": "max_feed_bps",
            "docs": [
              "One edge coin gets at most this share of the edge budget. 1000..=10000 (default 2500)."
            ],
            "type": "u16"
          },
          {
            "name": "max_impact_bps",
            "docs": [
              "One program buy moves the price by at most this. 10..=200 (default 100 = 1 %)."
            ],
            "type": "u16"
          },
          {
            "name": "slippage_bps",
            "docs": [
              "Price guard: min_out = the median's promise minus this; observations must agree within 2x this. 50..=500 (200)."
            ],
            "type": "u16"
          },
          {
            "name": "buy_gap_secs",
            "docs": [
              "Seconds between two program buys of the same mint (and never two in one slot). mainnet 10..=3600 (60)."
            ],
            "type": "i64"
          },
          {
            "name": "veto_secs",
            "docs": [
              "The guardian can veto an edge report for this long after it is posted. mainnet 1800..=86400 (7200)."
            ],
            "type": "i64"
          },
          {
            "name": "migration_age_secs",
            "docs": [
              "An edge coin must have migrated at least this long ago. mainnet 3600..=30 d (86400)."
            ],
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Huddle",
      "docs": [
        "The singleton: weather ring, emperor, open epoch and the pot's books. The pot's SOL sits in the system PDA",
        "[\"pot\"]. Invariant (after every instruction): pot.lamports == rent floor + pot_balance(), where",
        "pot_balance = pot_in + donated - spent_huddle - spent_edge."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "epoch_secs",
            "docs": [
              "Epoch length in seconds (fixed at init: epoch = unix_time / epoch_secs)."
            ],
            "type": "i64"
          },
          {
            "name": "first_epoch",
            "type": "u64"
          },
          {
            "name": "emperor",
            "type": "pubkey"
          },
          {
            "name": "emperor_crowned_at",
            "type": "i64"
          },
          {
            "name": "crowns",
            "type": "u64"
          },
          {
            "name": "day_ring",
            "docs": [
              "Pad-wide creator fees booked by `collect`, per epoch (10 slots: the 8 epochs the weather reads + the current one)."
            ],
            "type": {
              "array": [
                {
                  "defined": {
                    "name": "EpochFees"
                  }
                },
                10
              ]
            }
          },
          {
            "name": "has_open",
            "type": "bool"
          },
          {
            "name": "open_epoch",
            "type": "u64"
          },
          {
            "name": "feeds",
            "type": "u64"
          },
          {
            "name": "pot_in",
            "type": "u64"
          },
          {
            "name": "donated",
            "type": "u64"
          },
          {
            "name": "spent_huddle",
            "type": "u64"
          },
          {
            "name": "spent_edge",
            "type": "u64"
          },
          {
            "name": "burned_huddle",
            "type": "u64"
          },
          {
            "name": "fed_coins",
            "type": "u64"
          },
          {
            "name": "pot_bump",
            "type": "u8"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "HuddleBought",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "epoch",
            "type": "u64"
          },
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "venue",
            "type": "u8"
          },
          {
            "name": "spend",
            "type": "u64"
          },
          {
            "name": "spent",
            "type": "u64"
          },
          {
            "name": "bought",
            "type": "u64"
          },
          {
            "name": "burned",
            "type": "u64"
          },
          {
            "name": "min_out",
            "type": "u64"
          },
          {
            "name": "median_q9",
            "type": "u64"
          },
          {
            "name": "price_q9",
            "type": "u64"
          },
          {
            "name": "impact_cap",
            "type": "u64"
          },
          {
            "name": "budget",
            "type": "u64"
          },
          {
            "name": "left",
            "type": "u64"
          },
          {
            "name": "donated",
            "type": "u64"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "KeyCancelled",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "role",
            "type": "u8"
          },
          {
            "name": "proposed",
            "type": "pubkey"
          },
          {
            "name": "by",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "KeyProposed",
      "docs": [
        "role: 0 attestor, 1 guardian, 2 params"
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "role",
            "type": "u8"
          },
          {
            "name": "current",
            "type": "pubkey"
          },
          {
            "name": "proposed",
            "type": "pubkey"
          },
          {
            "name": "eta",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "KeySet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "role",
            "type": "u8"
          },
          {
            "name": "old",
            "type": "pubkey"
          },
          {
            "name": "key",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "Launched",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "dev",
            "type": "pubkey"
          },
          {
            "name": "index",
            "type": "u64"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "symbol",
            "type": "string"
          },
          {
            "name": "uri",
            "type": "string"
          },
          {
            "name": "dev_buy",
            "type": "u64"
          },
          {
            "name": "dev_tokens",
            "type": "u64"
          },
          {
            "name": "launch_fee",
            "type": "u64"
          },
          {
            "name": "split",
            "type": {
              "defined": {
                "name": "Split"
              }
            }
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "MigrationSynced",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "pool",
            "type": "pubkey"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Obs",
      "docs": [
        "Price observations of one mint (every pad coin and the pad token): pricing::Obs ring of 16, clamped."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "ring",
            "type": {
              "array": [
                {
                  "defined": {
                    "name": "ObsSlot"
                  }
                },
                16
              ]
            }
          },
          {
            "name": "head",
            "type": "u8"
          },
          {
            "name": "count",
            "type": "u8"
          },
          {
            "name": "last_buy_slot",
            "type": "u64"
          },
          {
            "name": "last_buy_at",
            "type": "i64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "ObsSlot",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "ts",
            "type": "i64"
          },
          {
            "name": "price_q9",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Observed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "price_q9",
            "type": "u64"
          },
          {
            "name": "raw_q9",
            "type": "u64"
          },
          {
            "name": "median_q9",
            "type": "u64"
          },
          {
            "name": "count",
            "type": "u8"
          },
          {
            "name": "on_curve",
            "type": "bool"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "PadMintSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "on_curve",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "Params",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "launch_fee",
            "docs": [
              "Flat launch fee (lamports), booked for the treasury in the coin's fee PDA. 0..=0.5 SOL (0.02 SOL)."
            ],
            "type": "u64"
          },
          {
            "name": "max_dev_buy",
            "docs": [
              "Largest dev buy in the launch instruction. 0..=85 SOL (5 SOL)."
            ],
            "type": "u64"
          },
          {
            "name": "split",
            "type": {
              "defined": {
                "name": "Split"
              }
            }
          },
          {
            "name": "feed",
            "type": {
              "defined": {
                "name": "FeedRules"
              }
            }
          },
          {
            "name": "crown",
            "type": {
              "defined": {
                "name": "CrownRules"
              }
            }
          },
          {
            "name": "edge",
            "type": {
              "defined": {
                "name": "EdgeRules"
              }
            }
          },
          {
            "name": "obs_gap_secs",
            "docs": [
              "Min seconds between two observations of a mint. mainnet 30..=300 (100); crown.span_secs <= 6 x this (AUDIT M-2)."
            ],
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "ParamsProposed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "eta",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "ParamsSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          }
        ]
      }
    },
    {
      "name": "PausedSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "paused",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "Prepared",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "pot",
            "type": "pubkey"
          },
          {
            "name": "pump_uva",
            "type": "pubkey"
          },
          {
            "name": "amm_uva",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "Split",
      "docs": [
        "Fee split copied into every Coin at launch (a later config change never touches an existing coin)."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "curve_dev_bps",
            "docs": [
              "Curve phase: the dev's share of creator fees; the treasury gets the rest (the pot gets nothing before",
              "migration: owner brief \"the pot = a share of the fees of every MIGRATED coin\"). 0..=7000 (default 5000)."
            ],
            "type": "u16"
          },
          {
            "name": "dev_bps",
            "docs": [
              "Migrated: the dev's share. 0..=6000 (default 4000)."
            ],
            "type": "u16"
          },
          {
            "name": "pot_bps",
            "docs": [
              "Migrated: the pot's share. 1000..=8000 (default 4000). dev + pot <= 10000, the treasury gets the rest."
            ],
            "type": "u16"
          },
          {
            "name": "emperor_extra_bps",
            "docs": [
              "Migrated emperor: moved from the dev to the pot. 0..=dev_bps (default 1500: dev 2500 / pot 5500)."
            ],
            "type": "u16"
          }
        ]
      }
    },
    {
      "name": "TreasuryPaid",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "TreasurySet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "treasury",
            "type": "pubkey"
          }
        ]
      }
    }
  ]
}