{
  "address": "CmtweSkLgRoQBxW61xtKm6RN3rXTmSRdtAwNKy6SVDnv",
  "metadata": {
    "name": "commit",
    "version": "0.1.0",
    "spec": "0.1.0",
    "description": "Commit: the dev of a pump.fun coin launched here gets his creator fee only as he ships code to the bound GitHub repo; a dev who stops for N days has the locked fee spent on buyback + burn of his coin"
  },
  "instructions": [
    {
      "name": "abandon",
      "docs": [
        "The dev quit: no work for dead_secs, counted from max(last work, the end of our last outage), while our",
        "service is alive (heartbeat <= alive_secs old) -> Dead forever. The lock + today's and yesterday's unlocks",
        "open the buyback burst (bought tokens are burned); claimable stays the dev's. Anyone."
      ],
      "discriminator": [
        178,
        197,
        165,
        227,
        2,
        78,
        181,
        194
      ],
      "accounts": [
        {
          "name": "caller",
          "docs": [
            "anyone; recorded in the event"
          ],
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "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": "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_dev",
      "docs": [
        "The new wallet signs. What is claimable now is paid to the old wallet here when it can take it (it is his,",
        "AUDIT-world L-1); otherwise it stays claimable for the new one. Later unlocks go to the new wallet."
      ],
      "discriminator": [
        176,
        121,
        6,
        95,
        114,
        27,
        243,
        196
      ],
      "accounts": [
        {
          "name": "new_dev",
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "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": "old_dev",
          "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": "accept_pad_mint",
      "docs": [
        "Anyone, after the delay: freezes the proposed pad token forever (plain pump Token-2022 mint, SOL curve, no",
        "mayhem / cashback, not a coin of this pad)."
      ],
      "discriminator": [
        146,
        219,
        188,
        82,
        28,
        61,
        92,
        126
      ],
      "accounts": [
        {
          "name": "bucket",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  97,
                  100,
                  116,
                  111,
                  107,
                  101,
                  110
                ]
              }
            ]
          }
        },
        {
          "name": "mint"
        },
        {
          "name": "curve"
        },
        {
          "name": "coin_check"
        },
        {
          "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": "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": "accept_role",
      "docs": [
        "The proposed key signs. Attestor != guardian always; a new treasury must be a funded system wallet."
      ],
      "discriminator": [
        52,
        25,
        7,
        231,
        196,
        235,
        119,
        253
      ],
      "accounts": [
        {
          "name": "new_key",
          "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": "kind",
          "type": "u8"
        }
      ]
    },
    {
      "name": "bind_repo",
      "docs": [
        "The dev binds a GitHub repository to his wallet with the attestor's ed25519 voucher (the instruction right",
        "before this one: sigcheck::verify_prev, message = bind_message(program, repo_id, gh_user_id, dev, expiry)).",
        "expiry in (now, now + 1 h]. Repo [\"repo\", repo_id] is created once forever (a second bind fails) unless the",
        "guardian vetoed it: then a voucher issued after the veto (expiry > vetoed_at + VOUCHER_TTL) re-binds it. The",
        "coin can launch after bind_delay_secs (the guardian's window to check the bind). The dev pays the rent.",
        "Blocked while paused or while the attestor is revoked."
      ],
      "discriminator": [
        149,
        235,
        103,
        7,
        101,
        32,
        45,
        93
      ],
      "accounts": [
        {
          "name": "dev",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "repo",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  114,
                  101,
                  112,
                  111
                ]
              },
              {
                "kind": "arg",
                "path": "repo_id"
              }
            ]
          }
        },
        {
          "name": "instructions",
          "address": "Sysvar1nstructions1111111111111111111111111"
        },
        {
          "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": "repo_id",
          "type": "u64"
        },
        {
          "name": "gh_user_id",
          "type": "u64"
        },
        {
          "name": "expiry",
          "type": "i64"
        }
      ]
    },
    {
      "name": "burn_parked",
      "docs": [
        "Burns tokens a stranger parked on the Buyer's account of `mint` and closes that account (rent to the caller)."
      ],
      "discriminator": [
        36,
        22,
        78,
        137,
        136,
        134,
        142,
        73
      ],
      "accounts": [
        {
          "name": "caller",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "buyer",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  117,
                  121,
                  101,
                  114
                ]
              }
            ]
          }
        },
        {
          "name": "mint",
          "writable": true
        },
        {
          "name": "buyer_ata",
          "writable": true
        },
        {
          "name": "token_2022"
        },
        {
          "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": "burst_chunk",
      "docs": [
        "One chunk of an abandoned coin's buyback burst: median-guarded, one program buy per slot, every token bought",
        "is burned here. Anyone. remaining = pump curve buy accounts or PumpSwap buy accounts (user = Buyer)."
      ],
      "discriminator": [
        33,
        7,
        195,
        114,
        37,
        78,
        151,
        169
      ],
      "accounts": [
        {
          "name": "caller",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "buyer",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  117,
                  121,
                  101,
                  114
                ]
              }
            ]
          }
        },
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "mint",
          "writable": true
        },
        {
          "name": "curve"
        },
        {
          "name": "buyer_ata",
          "writable": true
        },
        {
          "name": "token_2022"
        },
        {
          "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": "burst_end",
      "docs": [
        "Ends a burst once its window is over or its budget is spent. What is left (+ lock shares that arrived since)",
        ">= one MIN_BUY opens a new window (a dead coin's lock is only ever burned); a dust leftover goes to the pad",
        "token bucket. Anyone."
      ],
      "discriminator": [
        201,
        42,
        68,
        37,
        205,
        80,
        111,
        253
      ],
      "accounts": [
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "bucket",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  97,
                  100,
                  116,
                  111,
                  107,
                  101,
                  110
                ]
              }
            ]
          }
        },
        {
          "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": "buy",
      "docs": [
        "Router buy (the site's buy button; 0 % router fee): the trader spends `spend` lamports on the curve (or",
        "PumpSwap after the migration), tokens to his own Token-2022 account."
      ],
      "discriminator": [
        102,
        6,
        61,
        18,
        1,
        218,
        235,
        234
      ],
      "accounts": [
        {
          "name": "trader",
          "writable": true,
          "signer": true
        },
        {
          "name": "coin",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "mint"
        },
        {
          "name": "curve"
        },
        {
          "name": "trader_ata",
          "writable": true
        },
        {
          "name": "token_program"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "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": "spend",
          "type": "u64"
        },
        {
          "name": "min_out",
          "type": "u64"
        }
      ]
    },
    {
      "name": "cancel_pad_mint",
      "discriminator": [
        44,
        186,
        191,
        92,
        156,
        246,
        17,
        175
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "bucket",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  97,
                  100,
                  116,
                  111,
                  107,
                  101,
                  110
                ]
              }
            ]
          }
        },
        {
          "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": "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_role",
      "discriminator": [
        111,
        164,
        28,
        250,
        241,
        254,
        30,
        185
      ],
      "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": "kind",
          "type": "u8"
        }
      ]
    },
    {
      "name": "claim_dev",
      "docs": [
        "Pays the dev's claimable (after rolling the day) to coin.dev. Anyone (it only ever pays coin.dev)."
      ],
      "discriminator": [
        67,
        144,
        21,
        238,
        28,
        66,
        170,
        208
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "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": "dev",
          "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": "claim_treasury",
      "docs": [
        "Pays everything the Config holds above its rent (treasury shares, launch fees, strays) to config.treasury.",
        "Anyone."
      ],
      "discriminator": [
        78,
        107,
        230,
        224,
        191,
        237,
        4,
        163
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "treasury",
          "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_fees",
      "docs": [
        "Sweeps PumpSwap's creator-fee WSOL into pump's vault, collects pump's creator vault into the Coin, closes up to",
        "MAX_HIDDEN_WSOL hidden creator-fee WSOL accounts owned by the Coin (remaining), and splits what came in plus",
        "strays by the coin's split: lock (Live) / burst (Dead) / claimable (Released), instant -> claimable, pad ->",
        "bucket, treasury -> Config. Anyone."
      ],
      "discriminator": [
        164,
        152,
        207,
        99,
        30,
        186,
        19,
        182
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "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": "bucket",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  97,
                  100,
                  116,
                  111,
                  107,
                  101,
                  110
                ]
              }
            ]
          }
        },
        {
          "name": "creator_vault",
          "writable": true
        },
        {
          "name": "amm_vault_authority",
          "writable": true
        },
        {
          "name": "amm_vault_ata",
          "writable": true
        },
        {
          "name": "pump_program"
        },
        {
          "name": "pump_event_authority"
        },
        {
          "name": "amm_program"
        },
        {
          "name": "amm_event_authority"
        },
        {
          "name": "wsol_mint"
        },
        {
          "name": "spl_token"
        },
        {
          "name": "ata_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": "credit",
      "docs": [
        "Attestor: scores one GitHub push of the bound user to the default branch (SPEC 1.4). Live coins only;",
        "push_id strictly above the last credited one; score 0..100. The program rolls the day, computes the unlock",
        "(lock at day start x day_bps x points / 100, capped by day_cap and the lock), moves it lock -> today's unlock",
        "(held, the dev's after the veto window) and marks work when score >= min_work_score."
      ],
      "discriminator": [
        142,
        77,
        185,
        18,
        241,
        32,
        255,
        252
      ],
      "accounts": [
        {
          "name": "attestor",
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "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": "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": "push_id",
          "type": "u64"
        },
        {
          "name": "head_sha",
          "type": {
            "array": [
              "u8",
              20
            ]
          }
        },
        {
          "name": "lines_add",
          "type": "u32"
        },
        {
          "name": "lines_del",
          "type": "u32"
        },
        {
          "name": "score",
          "type": "u8"
        },
        {
          "name": "report_hash",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        }
      ]
    },
    {
      "name": "heartbeat",
      "docs": [
        "Attestor: a sign of life. A heartbeat after more than heartbeat_gap_secs of silence ends an outage: every",
        "coin's abandon clock restarts at now (credits count as heartbeats too)."
      ],
      "discriminator": [
        202,
        104,
        56,
        6,
        240,
        170,
        63,
        134
      ],
      "accounts": [
        {
          "name": "attestor",
          "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": "init_buyer",
      "docs": [
        "Anyone (payer) creates the Buyer's pump and PumpSwap user-volume accumulators once."
      ],
      "discriminator": [
        170,
        91,
        154,
        196,
        66,
        193,
        24,
        214
      ],
      "accounts": [
        {
          "name": "payer",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "buyer",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  117,
                  121,
                  101,
                  114
                ]
              }
            ]
          }
        },
        {
          "name": "pump_uva",
          "writable": true
        },
        {
          "name": "amm_uva",
          "writable": true
        },
        {
          "name": "pump_program"
        },
        {
          "name": "pump_event_authority"
        },
        {
          "name": "amm_program"
        },
        {
          "name": "amm_event_authority"
        },
        {
          "name": "wsol_mint"
        },
        {
          "name": "spl_token"
        },
        {
          "name": "ata_program"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "init_config",
      "docs": [
        "Creates the config and the pad token bucket, funds the Buyer purse to its rent floor. Only INIT_AUTHORITY.",
        "The service clock starts now (last_heartbeat = outage_end = now)."
      ],
      "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": "bucket",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  97,
                  100,
                  116,
                  111,
                  107,
                  101,
                  110
                ]
              }
            ]
          }
        },
        {
          "name": "treasury"
        },
        {
          "name": "buyer",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  117,
                  121,
                  101,
                  114
                ]
              }
            ]
          }
        },
        {
          "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": "params",
          "type": {
            "defined": {
              "name": "Params"
            }
          }
        },
        {
          "name": "keeper",
          "type": "pubkey"
        },
        {
          "name": "attestor",
          "type": "pubkey"
        },
        {
          "name": "guardian",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "launch",
      "docs": [
        "Creates the pump coin + its Coin account in one instruction, alone in its transaction, on a repo the signer",
        "bound and that has no coin yet. creator = the Coin PDA. The dev pays the launch fee (booked on the Config for",
        "the treasury), the Coin rent, and tops pump's creator vault of the Coin up to its rent floor. Optional dev buy",
        "(<= 2 SOL, <= 10 % of the supply, never completing the curve). The abandon clock starts now.",
        "remaining = pump create_v2 accounts (16) [+ pump buy accounts when dev_buy > 0]."
      ],
      "discriminator": [
        153,
        241,
        93,
        225,
        22,
        69,
        74,
        61
      ],
      "accounts": [
        {
          "name": "dev",
          "writable": true,
          "signer": true
        },
        {
          "name": "mint",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "repo",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  114,
                  101,
                  112,
                  111
                ]
              },
              {
                "kind": "account",
                "path": "repo.repo_id",
                "account": "Repo"
              }
            ]
          }
        },
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "creator_vault",
          "writable": true
        },
        {
          "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": "dev_min_out",
          "type": "u64"
        },
        {
          "name": "expected_seq",
          "type": "u32"
        }
      ]
    },
    {
      "name": "observe",
      "docs": [
        "Appends the coin's price to its observation ring (no trade in the same transaction). Anyone."
      ],
      "discriminator": [
        204,
        78,
        178,
        115,
        194,
        147,
        65,
        74
      ],
      "accounts": [
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "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": "observe_pad",
      "docs": [
        "Appends the pad token's price to the bucket's observation ring. Anyone."
      ],
      "discriminator": [
        86,
        43,
        27,
        126,
        66,
        238,
        75,
        118
      ],
      "accounts": [
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "bucket",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  97,
                  100,
                  116,
                  111,
                  107,
                  101,
                  110
                ]
              }
            ]
          }
        },
        {
          "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": "pad_chunk",
      "docs": [
        "One buy + burn of the pad token from the bucket (strays booked first as donations). Anyone."
      ],
      "discriminator": [
        161,
        148,
        55,
        151,
        45,
        25,
        72,
        195
      ],
      "accounts": [
        {
          "name": "caller",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "buyer",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  117,
                  121,
                  101,
                  114
                ]
              }
            ]
          }
        },
        {
          "name": "bucket",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  97,
                  100,
                  116,
                  111,
                  107,
                  101,
                  110
                ]
              }
            ]
          }
        },
        {
          "name": "mint",
          "writable": true
        },
        {
          "name": "curve"
        },
        {
          "name": "buyer_ata",
          "writable": true
        },
        {
          "name": "token_2022"
        },
        {
          "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": "propose_dev",
      "docs": [
        "Two-step payout wallet handover (the GitHub identity of the coin stays the same)."
      ],
      "discriminator": [
        170,
        202,
        142,
        187,
        114,
        5,
        83,
        190
      ],
      "accounts": [
        {
          "name": "dev",
          "signer": true,
          "relations": [
            "coin"
          ]
        },
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "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_pad_mint",
      "docs": [
        "Admin: proposes the pad token mint (once; frozen after accept). Acceptable by anyone after PAD_MINT_DELAY."
      ],
      "discriminator": [
        91,
        228,
        254,
        15,
        225,
        21,
        232,
        27
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "bucket",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  97,
                  100,
                  116,
                  111,
                  107,
                  101,
                  110
                ]
              }
            ]
          }
        },
        {
          "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": "mint",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "propose_params",
      "docs": [
        "Proposes params for coins launched from now on; acceptable after the timelock (24 h; localnet 3 s)."
      ],
      "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": "propose_role",
      "docs": [
        "Proposes a new admin / treasury / attestor / guardian (kind 0..3). The new key signs `accept_role` after the",
        "3-day timelock (localnet seconds). Only the admin proposes or cancels."
      ],
      "discriminator": [
        79,
        5,
        160,
        90,
        21,
        127,
        195,
        5
      ],
      "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": "kind",
          "type": "u8"
        },
        {
          "name": "key",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "release_on_outage",
      "docs": [
        "Pad-dead fallback: our service silent for pad_dead_secs -> the coin is Released: its lock and pending unlocks",
        "become the dev's claimable, and so does every later lock share (it is his creator fee; our outage is not his",
        "fault). Live coins only. Anyone."
      ],
      "discriminator": [
        218,
        142,
        111,
        184,
        196,
        41,
        116,
        27
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "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": "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": "revoke_attestor",
      "docs": [
        "Guardian: kills the attestor key at once (no binds, credits, heartbeats until the admin installs a new one",
        "through the 3-day role change). A pending attestor proposal is dropped too."
      ],
      "discriminator": [
        185,
        12,
        191,
        140,
        144,
        112,
        102,
        154
      ],
      "accounts": [
        {
          "name": "guardian",
          "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": "roll_day",
      "docs": [
        "Rolls the coin's day: yesterday's unlock past its veto window -> claimable; today's unlock -> maturing",
        "(claimable from the day's end + veto_secs); a new day snapshots the lock. Anyone (the keeper at day start)."
      ],
      "discriminator": [
        73,
        208,
        24,
        179,
        150,
        207,
        160,
        51
      ],
      "accounts": [
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "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": "sell",
      "docs": [
        "Router sell: the trader sells `amount` tokens, `min_out` lamports at least."
      ],
      "discriminator": [
        51,
        230,
        133,
        164,
        1,
        127,
        131,
        173
      ],
      "accounts": [
        {
          "name": "trader",
          "writable": true,
          "signer": true
        },
        {
          "name": "coin",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "mint"
        },
        {
          "name": "curve"
        },
        {
          "name": "trader_ata",
          "writable": true
        },
        {
          "name": "token_program"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "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": "amount",
          "type": "u64"
        },
        {
          "name": "min_out",
          "type": "u64"
        }
      ]
    },
    {
      "name": "set_keeper",
      "docs": [
        "Information only (the site shows who runs the cranks); every crank is permissionless."
      ],
      "discriminator": [
        102,
        94,
        23,
        78,
        157,
        222,
        243,
        214
      ],
      "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": "keeper",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "set_paused",
      "docs": [
        "Pause blocks bind_repo and launch only. Credits, rolls, claims, collects, abandons, releases, bursts and router",
        "trades 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": "sync",
      "docs": [
        "Books lamports that reached the Coin outside any Commit instruction as creator fee (AUDIT-world H-1). Anyone."
      ],
      "discriminator": [
        4,
        219,
        40,
        164,
        21,
        157,
        189,
        88
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "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": "bucket",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  97,
                  100,
                  116,
                  111,
                  107,
                  101,
                  110
                ]
              }
            ]
          }
        },
        {
          "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": "sync_migration",
      "docs": [
        "Marks a coin migrated once its canonical PumpSwap pool exists, and pre-creates PumpSwap's creator-fee WSOL",
        "account of the coin's creator (the caller pays its rent). Anyone."
      ],
      "discriminator": [
        225,
        231,
        95,
        199,
        32,
        239,
        236,
        87
      ],
      "accounts": [
        {
          "name": "caller",
          "writable": true,
          "signer": true
        },
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "curve"
        },
        {
          "name": "amm_pool"
        },
        {
          "name": "pool_base"
        },
        {
          "name": "pool_quote"
        },
        {
          "name": "amm_vault_authority"
        },
        {
          "name": "amm_vault_ata",
          "writable": true
        },
        {
          "name": "wsol_mint",
          "address": "So11111111111111111111111111111111111111112"
        },
        {
          "name": "spl_token",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "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": "sync_pad",
      "docs": [
        "Books lamports that reached the pad token bucket outside any Commit instruction as a donation. Anyone."
      ],
      "discriminator": [
        209,
        13,
        51,
        103,
        151,
        5,
        213,
        43
      ],
      "accounts": [
        {
          "name": "bucket",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  97,
                  100,
                  116,
                  111,
                  107,
                  101,
                  110
                ]
              }
            ]
          }
        },
        {
          "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_bind",
      "docs": [
        "Guardian: vetoes a bind inside its check window (before the coin launched): the Repo becomes a tombstone (no",
        "launch); the repository can be bound again only with a voucher signed after the veto."
      ],
      "discriminator": [
        55,
        162,
        111,
        216,
        236,
        189,
        16,
        110
      ],
      "accounts": [
        {
          "name": "guardian",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "repo",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  114,
                  101,
                  112,
                  111
                ]
              },
              {
                "kind": "account",
                "path": "repo.repo_id",
                "account": "Repo"
              }
            ]
          }
        },
        {
          "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_credit",
      "docs": [
        "Guardian: sends today's (slot 0) or yesterday's still-maturing (slot 1) unlock back into the lock and undoes",
        "its work mark (last_work_at goes back to before it: fake work cannot keep a dead coin alive). A vetoed day",
        "unlocks nothing more and counts no more work. Live coins only."
      ],
      "discriminator": [
        159,
        217,
        128,
        179,
        52,
        238,
        86,
        187
      ],
      "accounts": [
        {
          "name": "guardian",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "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": "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": "slot",
          "type": "u8"
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "Coin",
      "discriminator": [
        215,
        195,
        53,
        238,
        217,
        196,
        213,
        51
      ]
    },
    {
      "name": "Config",
      "discriminator": [
        155,
        12,
        170,
        224,
        30,
        250,
        204,
        130
      ]
    },
    {
      "name": "PadBucket",
      "discriminator": [
        14,
        73,
        242,
        92,
        55,
        52,
        12,
        7
      ]
    },
    {
      "name": "Repo",
      "discriminator": [
        214,
        15,
        57,
        132,
        228,
        152,
        190,
        235
      ]
    }
  ],
  "events": [
    {
      "name": "Abandoned",
      "discriminator": [
        144,
        22,
        126,
        220,
        164,
        236,
        57,
        168
      ]
    },
    {
      "name": "AttestorRevoked",
      "discriminator": [
        43,
        114,
        48,
        146,
        162,
        21,
        111,
        6
      ]
    },
    {
      "name": "BindVetoed",
      "discriminator": [
        19,
        172,
        100,
        240,
        188,
        249,
        146,
        82
      ]
    },
    {
      "name": "Bought",
      "discriminator": [
        193,
        56,
        215,
        24,
        156,
        76,
        42,
        104
      ]
    },
    {
      "name": "BurstChunk",
      "discriminator": [
        181,
        56,
        203,
        16,
        83,
        254,
        158,
        177
      ]
    },
    {
      "name": "BurstEnded",
      "discriminator": [
        182,
        168,
        209,
        175,
        106,
        225,
        74,
        141
      ]
    },
    {
      "name": "BurstOpened",
      "discriminator": [
        8,
        239,
        139,
        224,
        57,
        103,
        66,
        184
      ]
    },
    {
      "name": "ConfigInitialized",
      "discriminator": [
        181,
        49,
        200,
        156,
        19,
        167,
        178,
        91
      ]
    },
    {
      "name": "CreditVetoed",
      "discriminator": [
        136,
        161,
        169,
        227,
        213,
        24,
        130,
        253
      ]
    },
    {
      "name": "Credited",
      "discriminator": [
        142,
        248,
        247,
        7,
        241,
        250,
        230,
        55
      ]
    },
    {
      "name": "DayRolled",
      "discriminator": [
        95,
        121,
        184,
        232,
        234,
        129,
        175,
        189
      ]
    },
    {
      "name": "DevAccepted",
      "discriminator": [
        79,
        1,
        175,
        200,
        17,
        212,
        143,
        24
      ]
    },
    {
      "name": "DevClaimed",
      "discriminator": [
        140,
        176,
        187,
        50,
        2,
        85,
        164,
        130
      ]
    },
    {
      "name": "DevProposed",
      "discriminator": [
        99,
        37,
        89,
        190,
        162,
        94,
        165,
        144
      ]
    },
    {
      "name": "FeeCollected",
      "discriminator": [
        12,
        28,
        17,
        248,
        244,
        36,
        8,
        73
      ]
    },
    {
      "name": "Heartbeat",
      "discriminator": [
        175,
        213,
        169,
        34,
        101,
        236,
        127,
        22
      ]
    },
    {
      "name": "KeeperSet",
      "discriminator": [
        116,
        85,
        200,
        22,
        76,
        163,
        56,
        243
      ]
    },
    {
      "name": "Launched",
      "discriminator": [
        209,
        127,
        29,
        152,
        129,
        212,
        189,
        183
      ]
    },
    {
      "name": "Migrated",
      "discriminator": [
        2,
        66,
        164,
        53,
        158,
        122,
        128,
        236
      ]
    },
    {
      "name": "Observed",
      "discriminator": [
        154,
        65,
        198,
        52,
        238,
        11,
        193,
        59
      ]
    },
    {
      "name": "PadChunk",
      "discriminator": [
        184,
        42,
        229,
        106,
        224,
        17,
        2,
        252
      ]
    },
    {
      "name": "PadDonated",
      "discriminator": [
        0,
        118,
        190,
        146,
        5,
        74,
        206,
        14
      ]
    },
    {
      "name": "PadMintCancelled",
      "discriminator": [
        85,
        40,
        209,
        217,
        101,
        167,
        62,
        231
      ]
    },
    {
      "name": "PadMintProposed",
      "discriminator": [
        190,
        5,
        58,
        15,
        121,
        72,
        90,
        27
      ]
    },
    {
      "name": "PadMintSet",
      "discriminator": [
        36,
        57,
        117,
        98,
        7,
        209,
        231,
        41
      ]
    },
    {
      "name": "ParamsAccepted",
      "discriminator": [
        91,
        47,
        43,
        137,
        252,
        164,
        163,
        88
      ]
    },
    {
      "name": "ParamsCancelled",
      "discriminator": [
        160,
        167,
        193,
        145,
        11,
        138,
        30,
        120
      ]
    },
    {
      "name": "ParamsProposed",
      "discriminator": [
        29,
        64,
        243,
        241,
        75,
        135,
        93,
        142
      ]
    },
    {
      "name": "ParkedBurned",
      "discriminator": [
        102,
        234,
        103,
        118,
        228,
        127,
        212,
        194
      ]
    },
    {
      "name": "PausedSet",
      "discriminator": [
        171,
        125,
        127,
        156,
        233,
        81,
        68,
        66
      ]
    },
    {
      "name": "ReleasedOnOutage",
      "discriminator": [
        130,
        165,
        202,
        153,
        148,
        53,
        28,
        133
      ]
    },
    {
      "name": "RepoBound",
      "discriminator": [
        62,
        166,
        63,
        50,
        65,
        45,
        200,
        245
      ]
    },
    {
      "name": "RoleAccepted",
      "discriminator": [
        130,
        219,
        17,
        167,
        202,
        238,
        104,
        50
      ]
    },
    {
      "name": "RoleCancelled",
      "discriminator": [
        101,
        113,
        118,
        115,
        200,
        217,
        239,
        208
      ]
    },
    {
      "name": "RoleProposed",
      "discriminator": [
        168,
        105,
        155,
        70,
        211,
        61,
        123,
        252
      ]
    },
    {
      "name": "Sold",
      "discriminator": [
        205,
        203,
        210,
        202,
        96,
        11,
        192,
        10
      ]
    },
    {
      "name": "TreasuryClaimed",
      "discriminator": [
        59,
        99,
        64,
        13,
        118,
        14,
        251,
        106
      ]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "Unauthorized",
      "msg": "Only the admin can do this"
    },
    {
      "code": 6001,
      "name": "BadParams",
      "msg": "A parameter is outside its allowed range"
    },
    {
      "code": 6002,
      "name": "Paused",
      "msg": "Commit is paused: no new binds or launches right now"
    },
    {
      "code": 6003,
      "name": "ParamsChanged",
      "msg": "The parameters changed since you looked: reload and sign again"
    },
    {
      "code": 6004,
      "name": "BadName",
      "msg": "Name must be 1-32 visible characters"
    },
    {
      "code": 6005,
      "name": "BadSymbol",
      "msg": "Ticker must be 1-10 characters, no spaces"
    },
    {
      "code": 6006,
      "name": "BadUri",
      "msg": "The picture link must be an IPFS link (ipfs://CID or https://ipfs.io/ipfs/CID)"
    },
    {
      "code": 6007,
      "name": "BadAccounts",
      "msg": "Wrong account passed"
    },
    {
      "code": 6008,
      "name": "Math",
      "msg": "Arithmetic overflow"
    },
    {
      "code": 6009,
      "name": "BadTreasury",
      "msg": "The treasury must be a funded wallet"
    },
    {
      "code": 6010,
      "name": "UnsafeMint",
      "msg": "Not a plain pump.fun Token-2022 mint"
    },
    {
      "code": 6011,
      "name": "NoPending",
      "msg": "Nothing is proposed"
    },
    {
      "code": 6012,
      "name": "Timelock",
      "msg": "The timelock has not passed yet"
    },
    {
      "code": 6013,
      "name": "BadRole",
      "msg": "Unknown role"
    },
    {
      "code": 6014,
      "name": "NotProposed",
      "msg": "This key was not proposed for this role"
    },
    {
      "code": 6015,
      "name": "SameKey",
      "msg": "The attestor and the guardian must be different keys"
    },
    {
      "code": 6016,
      "name": "NotAttestor",
      "msg": "Only the scoring service (attestor) can do this"
    },
    {
      "code": 6017,
      "name": "NotGuardian",
      "msg": "Only the guardian can do this"
    },
    {
      "code": 6018,
      "name": "AttestorRevoked",
      "msg": "The attestor key is revoked: wait for the admin to install a new one"
    },
    {
      "code": 6019,
      "name": "VoucherExpired",
      "msg": "The bind code expired: ask for a fresh one"
    },
    {
      "code": 6020,
      "name": "VoucherTooLong",
      "msg": "The bind code lives at most one hour"
    },
    {
      "code": 6021,
      "name": "BadRepo",
      "msg": "Zero repository or GitHub user id"
    },
    {
      "code": 6022,
      "name": "NotRepoOwner",
      "msg": "Only the wallet that bound this repository can launch its coin"
    },
    {
      "code": 6023,
      "name": "RepoTaken",
      "msg": "This repository already has its coin (one repo = one coin forever)"
    },
    {
      "code": 6024,
      "name": "DevBuyTooBig",
      "msg": "The dev buy is limited to 2 SOL and 10 % of the supply, and cannot finish the curve"
    },
    {
      "code": 6025,
      "name": "NothingBought",
      "msg": "The dev buy bought nothing"
    },
    {
      "code": 6026,
      "name": "NotLive",
      "msg": "The coin is not live (abandoned or released)"
    },
    {
      "code": 6027,
      "name": "StalePush",
      "msg": "This GitHub push was already credited (pushes are credited in order, once)"
    },
    {
      "code": 6028,
      "name": "BadScore",
      "msg": "A score is 0..100"
    },
    {
      "code": 6029,
      "name": "NothingToVeto",
      "msg": "Nothing to veto in this slot"
    },
    {
      "code": 6030,
      "name": "BadSlot",
      "msg": "Unknown veto slot"
    },
    {
      "code": 6031,
      "name": "NotAbandoned",
      "msg": "The dev shipped code recently: the coin is not abandoned yet"
    },
    {
      "code": 6032,
      "name": "ServiceSilent",
      "msg": "The scoring service is silent: nobody can be called abandoned while we cannot see their pushes"
    },
    {
      "code": 6033,
      "name": "ServiceAlive",
      "msg": "The scoring service is alive: the lock is not released"
    },
    {
      "code": 6034,
      "name": "NothingToClaim",
      "msg": "Nothing to claim"
    },
    {
      "code": 6035,
      "name": "NothingToCollect",
      "msg": "Nothing new to collect"
    },
    {
      "code": 6036,
      "name": "NothingToBook",
      "msg": "Nothing new to book"
    },
    {
      "code": 6037,
      "name": "AlreadyMigrated",
      "msg": "Already migrated"
    },
    {
      "code": 6038,
      "name": "NotMigrated",
      "msg": "The bonding curve is not complete or the pool does not exist yet"
    },
    {
      "code": 6039,
      "name": "MigrationNotSynced",
      "msg": "The coin graduated: run sync_migration first"
    },
    {
      "code": 6040,
      "name": "TooSmall",
      "msg": "Trade is too small"
    },
    {
      "code": 6041,
      "name": "NoBurst",
      "msg": "No buyback is running"
    },
    {
      "code": 6042,
      "name": "BurstRunning",
      "msg": "The buyback is not over yet"
    },
    {
      "code": 6043,
      "name": "PadNotSet",
      "msg": "The pad token is not set yet"
    },
    {
      "code": 6044,
      "name": "PadAlreadySet",
      "msg": "The pad token is already set (frozen forever)"
    },
    {
      "code": 6045,
      "name": "PadIsCoin",
      "msg": "The pad token cannot be a coin of this pad"
    },
    {
      "code": 6046,
      "name": "PadTooSoon",
      "msg": "The next pad-token chunk is not due yet"
    },
    {
      "code": 6047,
      "name": "PadTooSmall",
      "msg": "The pad-token bucket is too small for a chunk"
    },
    {
      "code": 6048,
      "name": "BelowRentFloor",
      "msg": "The payee would end below its rent floor"
    },
    {
      "code": 6049,
      "name": "NothingToRoll",
      "msg": "The day has not rolled: nothing changed"
    },
    {
      "code": 6050,
      "name": "BindPending",
      "msg": "The bind is in its guardian check window: launch a little later"
    },
    {
      "code": 6051,
      "name": "BindVetoed",
      "msg": "The guardian vetoed this bind: bind the repository again with a fresh proof"
    },
    {
      "code": 6052,
      "name": "CannotVetoBind",
      "msg": "This bind can no longer be vetoed (the coin is launched or it is already vetoed)"
    }
  ],
  "types": [
    {
      "name": "Abandoned",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "burn_budget",
            "type": "u64"
          },
          {
            "name": "last_work_at",
            "type": "i64"
          },
          {
            "name": "outage_end",
            "type": "i64"
          },
          {
            "name": "claimable_kept",
            "type": "u64"
          },
          {
            "name": "caller",
            "type": "pubkey"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "AttestorRevoked",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "old",
            "type": "pubkey"
          },
          {
            "name": "by",
            "type": "pubkey"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "BindVetoed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "repo",
            "type": "pubkey"
          },
          {
            "name": "repo_id",
            "type": "u64"
          },
          {
            "name": "gh_user_id",
            "type": "u64"
          },
          {
            "name": "dev",
            "type": "pubkey"
          },
          {
            "name": "by",
            "type": "pubkey"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Bought",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "buyer",
            "type": "pubkey"
          },
          {
            "name": "venue",
            "type": "u8"
          },
          {
            "name": "spend",
            "type": "u64"
          },
          {
            "name": "tokens",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Burst",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "active",
            "type": "bool"
          },
          {
            "name": "start_ts",
            "type": "i64"
          },
          {
            "name": "end_ts",
            "type": "i64"
          },
          {
            "name": "budget",
            "type": "u64"
          },
          {
            "name": "spent",
            "type": "u64"
          },
          {
            "name": "burned",
            "docs": [
              "tokens burned by this event"
            ],
            "type": "u64"
          },
          {
            "name": "chunks",
            "type": "u16"
          },
          {
            "name": "chunks_done",
            "type": "u16"
          },
          {
            "name": "skipped",
            "type": "u16"
          },
          {
            "name": "interval",
            "type": "u32"
          },
          {
            "name": "next_ts",
            "type": "i64"
          },
          {
            "name": "ref_q9",
            "docs": [
              "price references fixed at the start (pad-defined: axo peak / median at trigger / chunk ceiling)"
            ],
            "type": "u64"
          },
          {
            "name": "low_q9",
            "type": "u64"
          },
          {
            "name": "ceiling_q9",
            "docs": [
              "no chunk buys while the median is above this (0 = no ceiling)"
            ],
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "BurstChunk",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "venue",
            "type": "u8"
          },
          {
            "name": "sol",
            "type": "u64"
          },
          {
            "name": "tokens",
            "type": "u64"
          },
          {
            "name": "burned",
            "type": "u64"
          },
          {
            "name": "median_q9",
            "type": "u64"
          },
          {
            "name": "price_after_q9",
            "type": "u64"
          },
          {
            "name": "left",
            "type": "u64"
          },
          {
            "name": "chunks_done",
            "type": "u16"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "BurstEnded",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "budget",
            "type": "u64"
          },
          {
            "name": "spent",
            "type": "u64"
          },
          {
            "name": "burned",
            "type": "u64"
          },
          {
            "name": "reopened",
            "docs": [
              "leftover >= one MIN_BUY: a new window opened with it; below: dust to the pad token bucket"
            ],
            "type": "u64"
          },
          {
            "name": "to_pad",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "BurstOpened",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "budget",
            "type": "u64"
          },
          {
            "name": "total_budget",
            "type": "u64"
          },
          {
            "name": "end_ts",
            "type": "i64"
          },
          {
            "name": "chunks",
            "type": "u16"
          },
          {
            "name": "topped_up",
            "type": "bool"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Coin",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "dev",
            "docs": [
              "payout wallet (claim_dev); 2-step handover; the GitHub identity stays the same"
            ],
            "type": "pubkey"
          },
          {
            "name": "pending_dev",
            "type": "pubkey"
          },
          {
            "name": "creator",
            "docs": [
              "pump creator of the coin = this Coin PDA"
            ],
            "type": "pubkey"
          },
          {
            "name": "repo_id",
            "type": "u64"
          },
          {
            "name": "gh_user_id",
            "type": "u64"
          },
          {
            "name": "number",
            "type": "u64"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "symbol",
            "type": "string"
          },
          {
            "name": "uri",
            "type": "string"
          },
          {
            "name": "created_at",
            "type": "i64"
          },
          {
            "name": "params_seq",
            "type": "u32"
          },
          {
            "name": "p",
            "type": {
              "defined": {
                "name": "CoinParams"
              }
            }
          },
          {
            "name": "split",
            "type": {
              "defined": {
                "name": "Split"
              }
            }
          },
          {
            "name": "state",
            "docs": [
              "STATE_LIVE / STATE_DEAD / STATE_RELEASED"
            ],
            "type": "u8"
          },
          {
            "name": "migrated",
            "type": "bool"
          },
          {
            "name": "migrated_at",
            "type": "i64"
          },
          {
            "name": "res",
            "docs": [
              "COIN INVARIANT: lamports >= rent + res.reserve + res.locked + res.held.",
              "res.reserve = the LOCK (Live) / fee not yet in the burst (Dead); res.locked = the buyback burst;",
              "res.held = today.unlocked + maturing.amount + claimable (the dev's, by stage)."
            ],
            "type": {
              "defined": {
                "name": "Reserve"
              }
            }
          },
          {
            "name": "burst",
            "type": {
              "defined": {
                "name": "Burst"
              }
            }
          },
          {
            "name": "ring",
            "type": {
              "defined": {
                "name": "ObsRing"
              }
            }
          },
          {
            "name": "last_median_q9",
            "type": "u64"
          },
          {
            "name": "today",
            "type": {
              "defined": {
                "name": "Today"
              }
            }
          },
          {
            "name": "maturing",
            "type": {
              "defined": {
                "name": "Maturing"
              }
            }
          },
          {
            "name": "claimable",
            "docs": [
              "the dev's: claim_dev pays it"
            ],
            "type": "u64"
          },
          {
            "name": "last_push_id",
            "docs": [
              "the newest GitHub activity row credited (strictly increasing: replay / reorder guard)"
            ],
            "type": "u64"
          },
          {
            "name": "last_head_sha",
            "type": {
              "array": [
                "u8",
                20
              ]
            }
          },
          {
            "name": "last_work_at",
            "docs": [
              "the last credit scoring >= min_work_score (launch time at first): the abandon clock"
            ],
            "type": "i64"
          },
          {
            "name": "last_credit_at",
            "type": "i64"
          },
          {
            "name": "credits",
            "type": "u32"
          },
          {
            "name": "lines_add_total",
            "type": "u64"
          },
          {
            "name": "lines_del_total",
            "type": "u64"
          },
          {
            "name": "fees_total",
            "docs": [
              "creator fee booked (total) and its split"
            ],
            "type": "u64"
          },
          {
            "name": "fees_to_lock",
            "type": "u64"
          },
          {
            "name": "fees_to_instant",
            "type": "u64"
          },
          {
            "name": "fees_to_pad",
            "type": "u64"
          },
          {
            "name": "fees_to_treasury",
            "type": "u64"
          },
          {
            "name": "unlocked_total",
            "docs": [
              "lock -> dev by credits; vetoed back to the lock; paid to the dev; released on outage"
            ],
            "type": "u64"
          },
          {
            "name": "vetoed_total",
            "type": "u64"
          },
          {
            "name": "claimed_total",
            "type": "u64"
          },
          {
            "name": "released_total",
            "type": "u64"
          },
          {
            "name": "burn_budget_total",
            "docs": [
              "every lamport sent into the buyback burst (abandon + later lock shares), dust of finished bursts to the pad"
            ],
            "type": "u64"
          },
          {
            "name": "burst_dust_to_pad",
            "type": "u64"
          },
          {
            "name": "dead_at",
            "type": "i64"
          },
          {
            "name": "released_at",
            "type": "i64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "CoinParams",
      "docs": [
        "What a coin was launched with (copied at launch; a config change never alters an existing coin)."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "day_secs",
            "type": "u32"
          },
          {
            "name": "day_bps",
            "type": "u16"
          },
          {
            "name": "day_cap",
            "type": "u64"
          },
          {
            "name": "min_work_score",
            "type": "u8"
          },
          {
            "name": "dead_secs",
            "type": "u32"
          },
          {
            "name": "veto_secs",
            "type": "u32"
          },
          {
            "name": "alive_secs",
            "type": "u32"
          },
          {
            "name": "pad_dead_secs",
            "type": "u32"
          },
          {
            "name": "burst_secs",
            "type": "u32"
          },
          {
            "name": "burst_chunks",
            "type": "u16"
          },
          {
            "name": "guard",
            "type": {
              "defined": {
                "name": "GuardParams"
              }
            }
          }
        ]
      }
    },
    {
      "name": "Config",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          },
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "keeper",
            "docs": [
              "information only (the site shows who cranks); every crank is permissionless"
            ],
            "type": "pubkey"
          },
          {
            "name": "attestor",
            "docs": [
              "signs bind vouchers, credits and heartbeats (the scoring service); default = revoked"
            ],
            "type": "pubkey"
          },
          {
            "name": "guardian",
            "docs": [
              "vetoes credits, revokes the attestor"
            ],
            "type": "pubkey"
          },
          {
            "name": "paused",
            "docs": [
              "blocks bind_repo and launch only"
            ],
            "type": "bool"
          },
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "params_seq",
            "type": "u32"
          },
          {
            "name": "pending_params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "pending_eta",
            "type": "i64"
          },
          {
            "name": "pending_roles",
            "docs": [
              "[admin, treasury, attestor, guardian]"
            ],
            "type": {
              "array": [
                {
                  "defined": {
                    "name": "RoleChange"
                  }
                },
                4
              ]
            }
          },
          {
            "name": "last_heartbeat",
            "docs": [
              "the service's last sign of life (heartbeat / credit)"
            ],
            "type": "i64"
          },
          {
            "name": "outage_end",
            "docs": [
              "the end of the last service outage (a heartbeat after > heartbeat_gap_secs of silence): the abandon clock of",
              "every coin restarts here (devs are never burned for our downtime)"
            ],
            "type": "i64"
          },
          {
            "name": "heartbeats",
            "type": "u64"
          },
          {
            "name": "repos",
            "type": "u64"
          },
          {
            "name": "coins",
            "type": "u64"
          },
          {
            "name": "launch_fees_total",
            "type": "u64"
          },
          {
            "name": "treasury_in",
            "docs": [
              "the treasury share of creator fees + launch fees land here; claim_treasury pays everything above rent"
            ],
            "type": "u64"
          },
          {
            "name": "treasury_paid",
            "type": "u64"
          },
          {
            "name": "credits",
            "type": "u64"
          },
          {
            "name": "unlocked_total",
            "type": "u64"
          },
          {
            "name": "claimed_total",
            "type": "u64"
          },
          {
            "name": "burn_budget_total",
            "type": "u64"
          },
          {
            "name": "abandoned",
            "type": "u32"
          },
          {
            "name": "released",
            "type": "u32"
          },
          {
            "name": "bump",
            "type": "u8"
          },
          {
            "name": "buyer_bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "ConfigInitialized",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          },
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "keeper",
            "type": "pubkey"
          },
          {
            "name": "attestor",
            "type": "pubkey"
          },
          {
            "name": "guardian",
            "type": "pubkey"
          },
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "CreditVetoed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "slot",
            "type": "u8"
          },
          {
            "name": "day",
            "type": "u32"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "last_work_at",
            "type": "i64"
          },
          {
            "name": "last_push_id",
            "docs": [
              "the push guard after the veto (rewound to before the vetoed day's first credit, AUDIT-commit H-1)"
            ],
            "type": "u64"
          },
          {
            "name": "lock_after",
            "type": "u64"
          },
          {
            "name": "by",
            "type": "pubkey"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Credited",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "push_id",
            "type": "u64"
          },
          {
            "name": "head_sha",
            "type": {
              "array": [
                "u8",
                20
              ]
            }
          },
          {
            "name": "lines_add",
            "type": "u32"
          },
          {
            "name": "lines_del",
            "type": "u32"
          },
          {
            "name": "score",
            "type": "u8"
          },
          {
            "name": "points",
            "docs": [
              "points used (score capped by what is left of today's 100)"
            ],
            "type": "u8"
          },
          {
            "name": "day",
            "type": "u32"
          },
          {
            "name": "unlocked",
            "type": "u64"
          },
          {
            "name": "unlocked_today",
            "type": "u64"
          },
          {
            "name": "lock_after",
            "type": "u64"
          },
          {
            "name": "work",
            "docs": [
              "the credit counted as work (score >= min_work_score, day not vetoed): the abandon clock restarted"
            ],
            "type": "bool"
          },
          {
            "name": "report_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "DayRolled",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "day",
            "docs": [
              "the new day"
            ],
            "type": "u32"
          },
          {
            "name": "to_claimable",
            "docs": [
              "lamports that left the veto window (-> claimable)"
            ],
            "type": "u64"
          },
          {
            "name": "maturing",
            "docs": [
              "yesterday's unlock now waiting out the veto window, claimable from `maturing_at`"
            ],
            "type": "u64"
          },
          {
            "name": "maturing_at",
            "type": "i64"
          },
          {
            "name": "snap",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "DevAccepted",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "old",
            "type": "pubkey"
          },
          {
            "name": "dev",
            "type": "pubkey"
          },
          {
            "name": "paid_old",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "DevClaimed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "dev",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "DevProposed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "dev",
            "type": "pubkey"
          },
          {
            "name": "proposed",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "FeeCollected",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "incoming",
            "type": "u64"
          },
          {
            "name": "to_lock",
            "type": "u64"
          },
          {
            "name": "to_instant",
            "type": "u64"
          },
          {
            "name": "to_pad",
            "type": "u64"
          },
          {
            "name": "to_treasury",
            "type": "u64"
          },
          {
            "name": "dead",
            "docs": [
              "the coin is dead: the lock share went to the buyback (burst) instead of the lock"
            ],
            "type": "bool"
          },
          {
            "name": "released",
            "docs": [
              "the coin is released: the lock share went to the dev's claimable"
            ],
            "type": "bool"
          },
          {
            "name": "lock_after",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "GuardParams",
      "docs": [
        "Price-guard parameters, copied into every Coin at launch."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "gap_secs",
            "docs": [
              "min seconds between observations (mainnet 30, localnet 3)"
            ],
            "type": "u32"
          },
          {
            "name": "k",
            "docs": [
              "program buys use the median of the newest `k` final observations, each <= `max_age_secs` old"
            ],
            "type": "u8"
          },
          {
            "name": "max_age_secs",
            "type": "u32"
          },
          {
            "name": "band_bps",
            "docs": [
              "every stored observation is clamped to +-band of the median of the newest 3 fresh ones"
            ],
            "type": "u16"
          },
          {
            "name": "slippage_bps",
            "docs": [
              "program buys accept <= slippage below the median; the guard window must agree within 2 x slippage"
            ],
            "type": "u16"
          },
          {
            "name": "depth_curve_bps",
            "docs": [
              "one program buy spends <= depth of the venue's SOL reserves"
            ],
            "type": "u16"
          },
          {
            "name": "depth_amm_bps",
            "type": "u16"
          }
        ]
      }
    },
    {
      "name": "Heartbeat",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "attestor",
            "type": "pubkey"
          },
          {
            "name": "gap",
            "docs": [
              "seconds since the previous sign of life"
            ],
            "type": "i64"
          },
          {
            "name": "outage_end",
            "docs": [
              "moved to now when the gap was longer than heartbeat_gap_secs (an outage ended)"
            ],
            "type": "i64"
          },
          {
            "name": "outage",
            "type": "bool"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "KeeperSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "keeper",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "Launched",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "coin",
            "type": "pubkey"
          },
          {
            "name": "dev",
            "type": "pubkey"
          },
          {
            "name": "repo_id",
            "type": "u64"
          },
          {
            "name": "gh_user_id",
            "type": "u64"
          },
          {
            "name": "number",
            "type": "u64"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "symbol",
            "type": "string"
          },
          {
            "name": "uri",
            "type": "string"
          },
          {
            "name": "launch_fee",
            "type": "u64"
          },
          {
            "name": "dev_buy",
            "type": "u64"
          },
          {
            "name": "dev_tokens",
            "type": "u64"
          },
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "CoinParams"
              }
            }
          },
          {
            "name": "params_seq",
            "type": "u32"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Maturing",
      "docs": [
        "Yesterday's unlock, waiting out the veto window."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "day",
            "type": "u32"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "at",
            "docs": [
              "claimable from this time (the day's end + veto_secs)"
            ],
            "type": "i64"
          },
          {
            "name": "worked",
            "type": "bool"
          },
          {
            "name": "prev_work",
            "type": "i64"
          },
          {
            "name": "prev_push_id",
            "docs": [
              "last_push_id before this day's first credit (= last_push_id at the roll when the day had no credit)"
            ],
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Migrated",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "pool",
            "type": "pubkey"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "ObsRing",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "head",
            "type": "u8"
          },
          {
            "name": "count",
            "type": "u8"
          },
          {
            "name": "ring",
            "type": {
              "array": [
                {
                  "defined": {
                    "name": "ObsSlot"
                  }
                },
                16
              ]
            }
          },
          {
            "name": "final_ts",
            "docs": [
              "ts of the newest observation already handed out by `take_final`"
            ],
            "type": "i64"
          },
          {
            "name": "last_buy_slot",
            "docs": [
              "one program buy of this coin per slot"
            ],
            "type": "u64"
          },
          {
            "name": "last_buy_at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "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": "revised",
            "type": "bool"
          },
          {
            "name": "on_curve",
            "type": "bool"
          },
          {
            "name": "median_q9",
            "type": "u64"
          },
          {
            "name": "pad",
            "type": "bool"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "PadBucket",
      "docs": [
        "The pad token bucket [\"padtoken\"] (program-owned): books SOL from day one (pad share of every creator fee, burst",
        "dust, donations); after accept_pad_mint, pad_chunk buys + burns the pad token from it.",
        "BUCKET INVARIANT: lamports >= rent + booked."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "pad_set",
            "type": "bool"
          },
          {
            "name": "pending_mint",
            "type": "pubkey"
          },
          {
            "name": "pending_eta",
            "type": "i64"
          },
          {
            "name": "booked",
            "type": "u64"
          },
          {
            "name": "in_fees",
            "type": "u64"
          },
          {
            "name": "in_donations",
            "type": "u64"
          },
          {
            "name": "spent_total",
            "type": "u64"
          },
          {
            "name": "burned_total",
            "type": "u64"
          },
          {
            "name": "chunks",
            "type": "u32"
          },
          {
            "name": "ring",
            "type": {
              "defined": {
                "name": "ObsRing"
              }
            }
          },
          {
            "name": "last_median_q9",
            "type": "u64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "PadChunk",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "venue",
            "type": "u8"
          },
          {
            "name": "sol",
            "type": "u64"
          },
          {
            "name": "tokens",
            "type": "u64"
          },
          {
            "name": "burned",
            "type": "u64"
          },
          {
            "name": "median_q9",
            "type": "u64"
          },
          {
            "name": "price_after_q9",
            "type": "u64"
          },
          {
            "name": "booked_after",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "PadDonated",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "lamports",
            "type": "u64"
          },
          {
            "name": "booked_after",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "PadMintCancelled",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "PadMintProposed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "eta",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "PadMintSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "booked",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Params",
      "docs": [
        "Pad-wide parameters. Every field is bounded in `validate`; a coin keeps the copy it launched with."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "launch_fee",
            "docs": [
              "flat fee per launch (booked on the Config for the treasury): <= 0.1 SOL (0.02 SOL)"
            ],
            "type": "u64"
          },
          {
            "name": "split",
            "type": {
              "defined": {
                "name": "Split"
              }
            }
          },
          {
            "name": "day_secs",
            "docs": [
              "the unlock day: 86 400 on mainnet (UTC days); localnet down to 10 s"
            ],
            "type": "u32"
          },
          {
            "name": "day_bps",
            "docs": [
              "a full day of work (100 points) unlocks this share of the lock as it stood at the day's start: 200..2500 (1000)"
            ],
            "type": "u16"
          },
          {
            "name": "day_cap",
            "docs": [
              "at most this much unlocks per coin per day: 0.5..20 SOL (5 SOL)"
            ],
            "type": "u64"
          },
          {
            "name": "min_work_score",
            "docs": [
              "a credit scoring at least this keeps the coin alive (resets the abandon clock): 5..60 (20)"
            ],
            "type": "u8"
          },
          {
            "name": "dead_secs",
            "docs": [
              "no work this long -> anyone may abandon the coin: 7..60 d (14 d)"
            ],
            "type": "u32"
          },
          {
            "name": "veto_secs",
            "docs": [
              "unlocked SOL is claimable this long after its day ends (guardian veto window): 2..24 h (6 h), < day_secs"
            ],
            "type": "u32"
          },
          {
            "name": "heartbeat_gap_secs",
            "docs": [
              "a heartbeat after a longer silence starts a new outage_end (the abandon clock restarts): 1..72 h (24 h)"
            ],
            "type": "u32"
          },
          {
            "name": "alive_secs",
            "docs": [
              "abandon needs a heartbeat at most this old (our service is alive and saw no work): heartbeat_gap..7 d (48 h),",
              "< dead_secs"
            ],
            "type": "u32"
          },
          {
            "name": "pad_dead_secs",
            "docs": [
              "our service silent this long -> release_on_outage gives every dev his lock: 14..90 d (30 d), > alive_secs"
            ],
            "type": "u32"
          },
          {
            "name": "burst_secs",
            "docs": [
              "an abandoned coin's lock buys back + burns over this window: 1 h..7 d (24 h)"
            ],
            "type": "u32"
          },
          {
            "name": "burst_chunks",
            "docs": [
              "... in this many chunks: 2..96 (48); burst_secs / burst_chunks >= the observation gap"
            ],
            "type": "u16"
          },
          {
            "name": "guard",
            "type": {
              "defined": {
                "name": "GuardParams"
              }
            }
          },
          {
            "name": "pad_gap_secs",
            "docs": [
              "at least this long between two pad-token chunks: 60..86400 s (600); >= the observation gap"
            ],
            "type": "u32"
          },
          {
            "name": "bind_delay_secs",
            "docs": [
              "a bound repo can launch its coin only this long after bind_repo: the guardian's window to check the bind",
              "against the service journal and GitHub (veto_bind): 10 min..24 h (1 h)"
            ],
            "type": "u32"
          }
        ]
      }
    },
    {
      "name": "ParamsAccepted",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "params_seq",
            "type": "u32"
          }
        ]
      }
    },
    {
      "name": "ParamsCancelled",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "ParamsProposed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "eta",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "ParkedBurned",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "PausedSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "paused",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "ReleasedOnOutage",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "last_heartbeat",
            "type": "i64"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Repo",
      "docs": [
        "One GitHub repository, bound once forever ([\"repo\", repo_id]). Created by bind_repo with an attestor voucher."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "repo_id",
            "docs": [
              "GitHub numeric repository id (survives renames / transfers)"
            ],
            "type": "u64"
          },
          {
            "name": "gh_user_id",
            "docs": [
              "the GitHub numeric user id that pushed the ownership proof (only its pushes / merges are scored)"
            ],
            "type": "u64"
          },
          {
            "name": "dev",
            "docs": [
              "the wallet that bound it (only it can launch the coin)"
            ],
            "type": "pubkey"
          },
          {
            "name": "coin",
            "docs": [
              "the coin launched on it (default = none yet); never released, even when the coin dies"
            ],
            "type": "pubkey"
          },
          {
            "name": "bound_at",
            "type": "i64"
          },
          {
            "name": "launch_after",
            "docs": [
              "launch is possible from this time (bound_at + bind_delay_secs): the guardian's check window"
            ],
            "type": "i64"
          },
          {
            "name": "voucher_expiry",
            "type": "i64"
          },
          {
            "name": "vetoed_at",
            "docs": [
              "0 = fine; else the guardian vetoed this bind at that time (tombstone): no launch; a new bind needs a voucher",
              "issued after the veto (expiry > vetoed_at + VOUCHER_TTL), so the vetoed voucher can never be replayed"
            ],
            "type": "i64"
          },
          {
            "name": "binds",
            "type": "u16"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "RepoBound",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "repo",
            "type": "pubkey"
          },
          {
            "name": "repo_id",
            "type": "u64"
          },
          {
            "name": "gh_user_id",
            "type": "u64"
          },
          {
            "name": "dev",
            "type": "pubkey"
          },
          {
            "name": "voucher_expiry",
            "type": "i64"
          },
          {
            "name": "launch_after",
            "type": "i64"
          },
          {
            "name": "binds",
            "docs": [
              "> 1: a re-bind after a guardian veto"
            ],
            "type": "u16"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Reserve",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "reserve",
            "type": "u64"
          },
          {
            "name": "locked",
            "type": "u64"
          },
          {
            "name": "held",
            "type": "u64"
          },
          {
            "name": "spent_total",
            "docs": [
              "lamports spent on buybacks (all events, all chunks)"
            ],
            "type": "u64"
          },
          {
            "name": "burned_total",
            "docs": [
              "tokens burned by buybacks (base units)"
            ],
            "type": "u64"
          },
          {
            "name": "refunded_total",
            "docs": [
              "lamports that went back from a finished event into the reserve"
            ],
            "type": "u64"
          },
          {
            "name": "inflow",
            "docs": [
              "every lamport ever booked into `reserve`, by source (SRC_SEED .. SRC_UNKNOWN)"
            ],
            "type": {
              "array": [
                "u64",
                5
              ]
            }
          }
        ]
      }
    },
    {
      "name": "RoleAccepted",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "kind",
            "type": "u8"
          },
          {
            "name": "old",
            "type": "pubkey"
          },
          {
            "name": "new",
            "type": "pubkey"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "RoleCancelled",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "kind",
            "type": "u8"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "RoleChange",
      "docs": [
        "A pending role change (2-step, ROLE_DELAY timelock; the new key signs the accept)."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "key",
            "type": "pubkey"
          },
          {
            "name": "eta",
            "docs": [
              "0 = none; else the earliest accept time"
            ],
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "RoleProposed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "kind",
            "type": "u8"
          },
          {
            "name": "current",
            "type": "pubkey"
          },
          {
            "name": "proposed",
            "type": "pubkey"
          },
          {
            "name": "eta",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Sold",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "seller",
            "type": "pubkey"
          },
          {
            "name": "venue",
            "type": "u8"
          },
          {
            "name": "tokens",
            "type": "u64"
          },
          {
            "name": "sol",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Split",
      "docs": [
        "The creator-fee split (bps of every lamport of creator fee that reaches the Coin; sum = 10 000). The lock takes the",
        "remainder of every booking. Default 0 / 9000 / 500 / 500 (Anton 10-14, BATCH17-COMMON); `instant_bps` is Anton's option \"a small",
        "instant dev share\" (SPEC 1.11 q1), 0 by default."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "instant_bps",
            "docs": [
              "straight to the dev's claimable (no work needed): 0..3000"
            ],
            "type": "u16"
          },
          {
            "name": "lock_bps",
            "docs": [
              "the lock (unlocked by work, burned when the dev quits): >= 5000"
            ],
            "type": "u16"
          },
          {
            "name": "pad_bps",
            "docs": [
              "$COMMIT bucket: <= 2000"
            ],
            "type": "u16"
          },
          {
            "name": "treasury_bps",
            "docs": [
              "treasury (Config): <= 2000"
            ],
            "type": "u16"
          }
        ]
      }
    },
    {
      "name": "Today",
      "docs": [
        "Today's unlock window (the current day of the coin)."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "day",
            "docs": [
              "day index = unix time / day_secs"
            ],
            "type": "u32"
          },
          {
            "name": "snap",
            "docs": [
              "the lock when the day was rolled in: a full day unlocks day_bps of it"
            ],
            "type": "u64"
          },
          {
            "name": "points",
            "docs": [
              "score points used today (<= 100)"
            ],
            "type": "u8"
          },
          {
            "name": "unlocked",
            "docs": [
              "lamports unlocked today (part of res.held; claimable after the day ends + veto_secs)"
            ],
            "type": "u64"
          },
          {
            "name": "worked",
            "docs": [
              "a credit scoring >= min_work_score landed today (and was not vetoed)"
            ],
            "type": "bool"
          },
          {
            "name": "vetoed",
            "docs": [
              "the guardian vetoed today: later credits today unlock nothing and count as no work"
            ],
            "type": "bool"
          },
          {
            "name": "prev_work",
            "docs": [
              "last_work_at before today's first work credit (a veto restores it)"
            ],
            "type": "i64"
          },
          {
            "name": "prev_push_id",
            "docs": [
              "last_push_id before today's first credit (AUDIT-commit H-1: a veto rewinds the push guard, so one forged",
              "credit with push_id = u64::MAX cannot brick the coin's credits forever)"
            ],
            "type": "u64"
          },
          {
            "name": "credits",
            "type": "u16"
          },
          {
            "name": "lines_add",
            "type": "u32"
          },
          {
            "name": "lines_del",
            "type": "u32"
          }
        ]
      }
    },
    {
      "name": "TreasuryClaimed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "at",
            "type": "i64"
          }
        ]
      }
    }
  ]
}