{
  "address": "mr5fWsknwcq9v18SiP9KFCNwVLuYbmNGx8KDCRqBnTy",
  "metadata": {
    "name": "bounty",
    "version": "0.1.0",
    "spec": "0.1.0",
    "description": "Bounty Pad: a coin is born with missions; part of its creator fees fills a chest that holders vote to pay out"
  },
  "instructions": [
    {
      "name": "cancel_draft",
      "docs": [
        "The launcher drops a draft that was never launched: the Bounty and its Mission accounts are",
        "closed, rent back to the launcher."
      ],
      "discriminator": [
        234,
        193,
        92,
        79,
        29,
        206,
        188,
        175
      ],
      "accounts": [
        {
          "name": "launcher",
          "writable": true,
          "signer": true,
          "relations": [
            "bounty"
          ]
        },
        {
          "name": "bounty",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  111,
                  117,
                  110,
                  116,
                  121
                ]
              },
              {
                "kind": "account",
                "path": "bounty.mint",
                "account": "Bounty"
              }
            ]
          }
        },
        {
          "name": "mission0",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  105,
                  115,
                  115,
                  105,
                  111,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              },
              {
                "kind": "const",
                "value": [
                  0,
                  0
                ]
              }
            ]
          }
        },
        {
          "name": "mission1",
          "writable": true,
          "optional": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  105,
                  115,
                  115,
                  105,
                  111,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              },
              {
                "kind": "const",
                "value": [
                  1,
                  0
                ]
              }
            ]
          }
        },
        {
          "name": "mission2",
          "writable": true,
          "optional": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  105,
                  115,
                  115,
                  105,
                  111,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              },
              {
                "kind": "const",
                "value": [
                  2,
                  0
                ]
              }
            ]
          }
        }
      ],
      "args": []
    },
    {
      "name": "claim_launcher_fees",
      "docs": [
        "Pays the launcher's booked share to bounty.launcher. Anyone can push it (L-4 small payout rule)."
      ],
      "discriminator": [
        59,
        106,
        234,
        114,
        70,
        50,
        44,
        247
      ],
      "accounts": [
        {
          "name": "caller",
          "signer": true
        },
        {
          "name": "bounty",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  111,
                  117,
                  110,
                  116,
                  121
                ]
              },
              {
                "kind": "account",
                "path": "bounty.mint",
                "account": "Bounty"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              }
            ]
          }
        },
        {
          "name": "launcher",
          "writable": true,
          "relations": [
            "bounty"
          ]
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "claim_payout",
      "docs": [
        "Pays a passed payout that an empty payee could not take at settle (L-4). Anyone can push it;",
        "it can only go to that payee."
      ],
      "discriminator": [
        127,
        240,
        132,
        62,
        227,
        198,
        146,
        133
      ],
      "accounts": [
        {
          "name": "caller",
          "signer": true
        },
        {
          "name": "bounty",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  111,
                  117,
                  110,
                  116,
                  121
                ]
              },
              {
                "kind": "account",
                "path": "bounty.mint",
                "account": "Bounty"
              }
            ]
          },
          "relations": [
            "motion"
          ]
        },
        {
          "name": "motion",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  111,
                  116,
                  105,
                  111,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              },
              {
                "kind": "account",
                "path": "motion.id",
                "account": "Motion"
              }
            ]
          }
        },
        {
          "name": "chest",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  104,
                  101,
                  115,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              }
            ]
          }
        },
        {
          "name": "payee",
          "writable": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "close_ballot",
      "docs": [
        "The voter closes its ballot of a settled motion: rent back."
      ],
      "discriminator": [
        243,
        82,
        194,
        215,
        41,
        255,
        65,
        98
      ],
      "accounts": [
        {
          "name": "wallet",
          "writable": true,
          "signer": true,
          "relations": [
            "ballot"
          ]
        },
        {
          "name": "motion",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  111,
                  116,
                  105,
                  111,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "motion.bounty",
                "account": "Motion"
              },
              {
                "kind": "account",
                "path": "motion.id",
                "account": "Motion"
              }
            ]
          }
        },
        {
          "name": "ballot",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  97,
                  108,
                  108,
                  111,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "motion"
              },
              {
                "kind": "account",
                "path": "wallet"
              }
            ]
          }
        }
      ],
      "args": []
    },
    {
      "name": "collect_fees",
      "docs": [
        "pump.fun collect_creator_fee into the Fees PDA. Anyone can send it.",
        "remaining = [fees, creator_vault, system, event_authority, pump]. After graduation the keeper",
        "first moves PumpSwap's creator fees back with PumpSwap `transfer_creator_fees_to_pump`."
      ],
      "discriminator": [
        164,
        152,
        207,
        99,
        30,
        186,
        19,
        182
      ],
      "accounts": [
        {
          "name": "bounty",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  111,
                  117,
                  110,
                  116,
                  121
                ]
              },
              {
                "kind": "account",
                "path": "bounty.mint",
                "account": "Bounty"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              }
            ]
          }
        }
      ],
      "args": []
    },
    {
      "name": "collect_treasury",
      "docs": [
        "Pays the treasury's booked share to config.treasury. Anyone can push it (L-4 small payout rule)."
      ],
      "discriminator": [
        48,
        255,
        226,
        214,
        221,
        81,
        222,
        65
      ],
      "accounts": [
        {
          "name": "caller",
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "bounty",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  111,
                  117,
                  110,
                  116,
                  121
                ]
              },
              {
                "kind": "account",
                "path": "bounty.mint",
                "account": "Bounty"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              }
            ]
          }
        },
        {
          "name": "treasury",
          "writable": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "expire",
      "docs": [
        "Anyone, once an Active mission passed its deadline with no open claim: Expired, the chest",
        "carries to the next Queued mission (Active now) or waits for a proposal."
      ],
      "discriminator": [
        243,
        83,
        205,
        58,
        57,
        201,
        247,
        146
      ],
      "accounts": [
        {
          "name": "caller",
          "signer": true
        },
        {
          "name": "bounty",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  111,
                  117,
                  110,
                  116,
                  121
                ]
              },
              {
                "kind": "account",
                "path": "bounty.mint",
                "account": "Bounty"
              }
            ]
          }
        },
        {
          "name": "mission",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  105,
                  115,
                  115,
                  105,
                  111,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              },
              {
                "kind": "account",
                "path": "mission.n",
                "account": "Mission"
              }
            ]
          }
        },
        {
          "name": "next_mission",
          "writable": true,
          "optional": true
        }
      ],
      "args": []
    },
    {
      "name": "file_claim",
      "docs": [
        "Anyone files a claim on the Active mission before its deadline, with a bond (escrowed in the",
        "Chest, not part of the prize). The payee must be a system-owned account other than the Chest",
        "and the Fees PDA (so a payout can always land). proof_uri: https, 1-200 printable ASCII;",
        "note: 0-140 printable ASCII."
      ],
      "discriminator": [
        187,
        254,
        40,
        13,
        146,
        223,
        230,
        97
      ],
      "accounts": [
        {
          "name": "filer",
          "writable": true,
          "signer": true
        },
        {
          "name": "bounty",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  111,
                  117,
                  110,
                  116,
                  121
                ]
              },
              {
                "kind": "account",
                "path": "bounty.mint",
                "account": "Bounty"
              }
            ]
          }
        },
        {
          "name": "mission_acc",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  105,
                  115,
                  115,
                  105,
                  111,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              },
              {
                "kind": "arg",
                "path": "mission"
              }
            ]
          }
        },
        {
          "name": "motion",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  111,
                  116,
                  105,
                  111,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              },
              {
                "kind": "account",
                "path": "bounty.motion_count",
                "account": "Bounty"
              }
            ]
          }
        },
        {
          "name": "payee"
        },
        {
          "name": "chest",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  104,
                  101,
                  115,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "mission",
          "type": "u16"
        },
        {
          "name": "proof_uri",
          "type": "string"
        },
        {
          "name": "note",
          "type": "string"
        }
      ]
    },
    {
      "name": "fund",
      "docs": [
        "Anyone sponsors the chest of the active mission (fails when no mission is Active)."
      ],
      "discriminator": [
        218,
        188,
        111,
        221,
        152,
        113,
        174,
        7
      ],
      "accounts": [
        {
          "name": "funder",
          "writable": true,
          "signer": true
        },
        {
          "name": "bounty",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  111,
                  117,
                  110,
                  116,
                  121
                ]
              },
              {
                "kind": "account",
                "path": "bounty.mint",
                "account": "Bounty"
              }
            ]
          }
        },
        {
          "name": "chest",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  104,
                  101,
                  115,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "init_config",
      "discriminator": [
        23,
        235,
        115,
        232,
        168,
        96,
        1,
        231
      ],
      "accounts": [
        {
          "name": "admin",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "treasury",
          "type": "pubkey"
        },
        {
          "name": "params",
          "type": {
            "defined": {
              "name": "Params"
            }
          }
        }
      ]
    },
    {
      "name": "launch",
      "docs": [
        "Step 2: pump.fun `create_v2` (payer = launcher, creator = Fees PDA, mint = the prepared",
        "keypair), an optional launcher buy in the same instruction (launcher is the buyer and gets the",
        "tokens), an optional `seed` straight into the Chest, and mission 0 turns Active now.",
        "quorum = supply * quorum_bps / 10000, propose_min = supply * propose_min_bps / 10000.",
        "remaining_accounts = pump create_v2 accounts (16) [+ pump buy accounts (16+) if dev_buy > 0]."
      ],
      "discriminator": [
        153,
        241,
        93,
        225,
        22,
        69,
        74,
        61
      ],
      "accounts": [
        {
          "name": "launcher",
          "writable": true,
          "signer": true,
          "relations": [
            "bounty"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "mint",
          "docs": [
            "The prepared keypair; pump create_v2 creates the mint."
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "bounty",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  111,
                  117,
                  110,
                  116,
                  121
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "mission0",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  105,
                  115,
                  115,
                  105,
                  111,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              },
              {
                "kind": "const",
                "value": [
                  0,
                  0
                ]
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              }
            ]
          }
        },
        {
          "name": "chest",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  104,
                  101,
                  115,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              }
            ]
          }
        },
        {
          "name": "launcher_ata",
          "writable": true
        },
        {
          "name": "token_program"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "symbol",
          "type": "string"
        },
        {
          "name": "uri",
          "type": "string"
        },
        {
          "name": "dev_buy",
          "type": "u64"
        },
        {
          "name": "seed",
          "type": "u64"
        }
      ]
    },
    {
      "name": "lock",
      "docs": [
        "Tokens into the vote vault. Any top-up resets deposited_at = now (tokens locked after a motion",
        "was filed can never vote on it). The first locker creates the vault."
      ],
      "discriminator": [
        21,
        19,
        208,
        43,
        237,
        62,
        255,
        87
      ],
      "accounts": [
        {
          "name": "wallet",
          "writable": true,
          "signer": true
        },
        {
          "name": "bounty",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  111,
                  117,
                  110,
                  116,
                  121
                ]
              },
              {
                "kind": "account",
                "path": "bounty.mint",
                "account": "Bounty"
              }
            ]
          }
        },
        {
          "name": "mint"
        },
        {
          "name": "voter",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  111,
                  116,
                  101,
                  114
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              },
              {
                "kind": "account",
                "path": "wallet"
              }
            ]
          }
        },
        {
          "name": "wallet_ata",
          "writable": true
        },
        {
          "name": "vote_vault",
          "writable": true
        },
        {
          "name": "token_program"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "prepare",
      "docs": [
        "Step 1: the launcher (and the fresh mint keypair, as proof it owns it) writes the Bounty in",
        "Draft with a copy of the config params, the chosen quorum and 1..=max_missions Mission",
        "accounts (Queued). mission accounts: mission0 always, mission1 / mission2 when used."
      ],
      "discriminator": [
        121,
        155,
        156,
        90,
        164,
        252,
        220,
        109
      ],
      "accounts": [
        {
          "name": "launcher",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "mint",
          "docs": [
            "The fresh keypair pump create_v2 will create; signs to prove the launcher owns it."
          ],
          "signer": true
        },
        {
          "name": "bounty",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  111,
                  117,
                  110,
                  116,
                  121
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "mission0",
          "writable": true
        },
        {
          "name": "mission1",
          "writable": true,
          "optional": true
        },
        {
          "name": "mission2",
          "writable": true,
          "optional": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "missions",
          "type": {
            "vec": {
              "defined": {
                "name": "MissionInput"
              }
            }
          }
        },
        {
          "name": "quorum_bps",
          "type": "u16"
        }
      ]
    },
    {
      "name": "propose_mission",
      "docs": [
        "A voter holding at least propose_min locked tokens proposes the next mission while no mission",
        "is Active or Queued. Pays the bond like a claim."
      ],
      "discriminator": [
        29,
        96,
        123,
        142,
        14,
        37,
        226,
        15
      ],
      "accounts": [
        {
          "name": "proposer",
          "writable": true,
          "signer": true
        },
        {
          "name": "bounty",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  111,
                  117,
                  110,
                  116,
                  121
                ]
              },
              {
                "kind": "account",
                "path": "bounty.mint",
                "account": "Bounty"
              }
            ]
          }
        },
        {
          "name": "voter",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  111,
                  116,
                  101,
                  114
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              },
              {
                "kind": "account",
                "path": "proposer"
              }
            ]
          }
        },
        {
          "name": "motion",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  111,
                  116,
                  105,
                  111,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              },
              {
                "kind": "account",
                "path": "bounty.motion_count",
                "account": "Bounty"
              }
            ]
          }
        },
        {
          "name": "chest",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  104,
                  101,
                  115,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "text",
          "type": "string"
        },
        {
          "name": "duration",
          "type": "i64"
        }
      ]
    },
    {
      "name": "set_admin",
      "discriminator": [
        251,
        163,
        0,
        52,
        91,
        194,
        187,
        92
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "admin",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "set_paused",
      "docs": [
        "Pause blocks prepare / launch only; funding, votes, settles, fees and unlocks 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
                ]
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "paused",
          "type": "bool"
        }
      ]
    },
    {
      "name": "set_treasury",
      "discriminator": [
        57,
        97,
        196,
        95,
        195,
        206,
        106,
        136
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "treasury",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "settle",
      "docs": [
        "Anyone, once voting ended. passed = yes >= quorum && yes * 10000 >= (yes + no) * pass_bps.",
        "Claim passed on its still-Active mission: the whole chest (minus rent floor, other open bonds",
        "and owed payouts) to the payee, bond back, mission Completed, next Queued mission Active.",
        "Claim passed on a mission no longer Active: Void, bond back. NewMission passed with no mission",
        "Active: a new Mission (origin Vote) Active now (rent paid by the caller), bond back; with a",
        "mission already Active (another proposal won first): Void, bond back. Rejected (no > yes):",
        "bond into the prize. Otherwise (no quorum, or yes > no under pass_bps): bond back.",
        "Accounts: mission = the claim's mission (claims); next_mission = the next Queued mission when",
        "one exists; new_mission = PDA [\"mission\", bounty, mission_count] (proposals); payee (claims)."
      ],
      "discriminator": [
        175,
        42,
        185,
        87,
        144,
        131,
        102,
        212
      ],
      "accounts": [
        {
          "name": "caller",
          "docs": [
            "Anyone; pays the rent of a new mission when a proposal passes."
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "bounty",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  111,
                  117,
                  110,
                  116,
                  121
                ]
              },
              {
                "kind": "account",
                "path": "bounty.mint",
                "account": "Bounty"
              }
            ]
          },
          "relations": [
            "motion"
          ]
        },
        {
          "name": "motion",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  111,
                  116,
                  105,
                  111,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              },
              {
                "kind": "account",
                "path": "motion.id",
                "account": "Motion"
              }
            ]
          }
        },
        {
          "name": "mission",
          "docs": [
            "Claims: the claim's mission (bounty and index checked in the handler)."
          ],
          "writable": true,
          "optional": true
        },
        {
          "name": "next_mission",
          "docs": [
            "The next Queued launch mission, mandatory when one exists (checked in activate_next)."
          ],
          "writable": true,
          "optional": true
        },
        {
          "name": "new_mission",
          "writable": true,
          "optional": true
        },
        {
          "name": "chest",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  104,
                  101,
                  115,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              }
            ]
          }
        },
        {
          "name": "filer",
          "writable": true
        },
        {
          "name": "payee",
          "writable": true,
          "optional": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "sync_fees",
      "docs": [
        "Books every new Fees lamport: chest_bps moves to the Chest now (prize), launcher_bps and",
        "treasury_bps stay booked in the Fees PDA; the rounding dust goes to the treasury. Anyone."
      ],
      "discriminator": [
        183,
        105,
        177,
        124,
        93,
        59,
        163,
        216
      ],
      "accounts": [
        {
          "name": "bounty",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  111,
                  117,
                  110,
                  116,
                  121
                ]
              },
              {
                "kind": "account",
                "path": "bounty.mint",
                "account": "Bounty"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              }
            ]
          }
        },
        {
          "name": "chest",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  104,
                  101,
                  115,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "unlock",
      "docs": [
        "Tokens out of the vote vault, back to the voter's own token account, once every motion it",
        "voted on has ended (now >= locked_until)."
      ],
      "discriminator": [
        101,
        155,
        40,
        21,
        158,
        189,
        56,
        203
      ],
      "accounts": [
        {
          "name": "wallet",
          "writable": true,
          "signer": true,
          "relations": [
            "voter"
          ]
        },
        {
          "name": "bounty",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  111,
                  117,
                  110,
                  116,
                  121
                ]
              },
              {
                "kind": "account",
                "path": "bounty.mint",
                "account": "Bounty"
              }
            ]
          }
        },
        {
          "name": "mint"
        },
        {
          "name": "voter",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  111,
                  116,
                  101,
                  114
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              },
              {
                "kind": "account",
                "path": "wallet"
              }
            ]
          }
        },
        {
          "name": "wallet_ata",
          "writable": true
        },
        {
          "name": "vote_vault",
          "writable": true
        },
        {
          "name": "token_program"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "unwrap_fees",
      "docs": [
        "Closes a WSOL account owned by the Fees PDA (PumpSwap creator fees someone collected as WSOL,",
        "audit M-2) so its lamports land in the Fees PDA, where sync_fees books them."
      ],
      "discriminator": [
        202,
        112,
        56,
        154,
        193,
        85,
        127,
        150
      ],
      "accounts": [
        {
          "name": "bounty",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  111,
                  117,
                  110,
                  116,
                  121
                ]
              },
              {
                "kind": "account",
                "path": "bounty.mint",
                "account": "Bounty"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              }
            ]
          }
        },
        {
          "name": "wsol_ata",
          "writable": true
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        }
      ],
      "args": []
    },
    {
      "name": "update_config",
      "docs": [
        "New params apply to bounties prepared from now on; every bounty keeps its own copy."
      ],
      "discriminator": [
        29,
        158,
        252,
        191,
        10,
        83,
        219,
        99
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "params",
          "type": {
            "defined": {
              "name": "Params"
            }
          }
        }
      ]
    },
    {
      "name": "vote",
      "docs": [
        "One ballot per wallet per motion, weight = all tokens the wallet has locked, only if its last",
        "deposit was at least min_lock_age before the motion was filed (strictly before when 0). The voter's tokens stay locked until the motion ends."
      ],
      "discriminator": [
        227,
        110,
        155,
        23,
        136,
        126,
        172,
        25
      ],
      "accounts": [
        {
          "name": "wallet",
          "writable": true,
          "signer": true,
          "relations": [
            "voter"
          ]
        },
        {
          "name": "bounty",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  111,
                  117,
                  110,
                  116,
                  121
                ]
              },
              {
                "kind": "account",
                "path": "bounty.mint",
                "account": "Bounty"
              }
            ]
          },
          "relations": [
            "motion"
          ]
        },
        {
          "name": "motion",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  111,
                  116,
                  105,
                  111,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              },
              {
                "kind": "account",
                "path": "motion.id",
                "account": "Motion"
              }
            ]
          }
        },
        {
          "name": "voter",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  111,
                  116,
                  101,
                  114
                ]
              },
              {
                "kind": "account",
                "path": "bounty"
              },
              {
                "kind": "account",
                "path": "wallet"
              }
            ]
          }
        },
        {
          "name": "ballot",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98,
                  97,
                  108,
                  108,
                  111,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "motion"
              },
              {
                "kind": "account",
                "path": "wallet"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "yes",
          "type": "bool"
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "Ballot",
      "discriminator": [
        3,
        232,
        121,
        204,
        232,
        137,
        138,
        164
      ]
    },
    {
      "name": "Bounty",
      "discriminator": [
        237,
        16,
        105,
        198,
        19,
        69,
        242,
        234
      ]
    },
    {
      "name": "Config",
      "discriminator": [
        155,
        12,
        170,
        224,
        30,
        250,
        204,
        130
      ]
    },
    {
      "name": "Mission",
      "discriminator": [
        170,
        56,
        116,
        75,
        24,
        11,
        109,
        12
      ]
    },
    {
      "name": "Motion",
      "discriminator": [
        208,
        176,
        147,
        250,
        250,
        63,
        129,
        86
      ]
    },
    {
      "name": "Voter",
      "discriminator": [
        241,
        93,
        35,
        191,
        254,
        147,
        17,
        202
      ]
    }
  ],
  "events": [
    {
      "name": "AdminSet",
      "discriminator": [
        157,
        245,
        205,
        226,
        118,
        125,
        183,
        97
      ]
    },
    {
      "name": "BallotClosed",
      "discriminator": [
        107,
        216,
        180,
        104,
        51,
        179,
        205,
        107
      ]
    },
    {
      "name": "ClaimFiled",
      "discriminator": [
        78,
        228,
        214,
        247,
        197,
        67,
        130,
        19
      ]
    },
    {
      "name": "ConfigInitialized",
      "discriminator": [
        181,
        49,
        200,
        156,
        19,
        167,
        178,
        91
      ]
    },
    {
      "name": "ConfigUpdated",
      "discriminator": [
        40,
        241,
        230,
        122,
        11,
        19,
        198,
        194
      ]
    },
    {
      "name": "DraftCancelled",
      "discriminator": [
        227,
        207,
        35,
        165,
        251,
        55,
        160,
        188
      ]
    },
    {
      "name": "FeesCollected",
      "discriminator": [
        233,
        23,
        117,
        225,
        107,
        178,
        254,
        8
      ]
    },
    {
      "name": "FeesSynced",
      "discriminator": [
        41,
        98,
        204,
        192,
        243,
        3,
        53,
        218
      ]
    },
    {
      "name": "FeesUnwrapped",
      "discriminator": [
        146,
        111,
        114,
        101,
        19,
        203,
        134,
        142
      ]
    },
    {
      "name": "Funded",
      "discriminator": [
        67,
        84,
        56,
        88,
        192,
        12,
        201,
        177
      ]
    },
    {
      "name": "Launched",
      "discriminator": [
        209,
        127,
        29,
        152,
        129,
        212,
        189,
        183
      ]
    },
    {
      "name": "LauncherPaid",
      "discriminator": [
        75,
        239,
        148,
        73,
        105,
        105,
        89,
        145
      ]
    },
    {
      "name": "Locked",
      "discriminator": [
        188,
        53,
        118,
        62,
        64,
        12,
        198,
        84
      ]
    },
    {
      "name": "MissionActivated",
      "discriminator": [
        172,
        244,
        40,
        0,
        162,
        197,
        107,
        204
      ]
    },
    {
      "name": "MissionCompleted",
      "discriminator": [
        191,
        127,
        37,
        12,
        193,
        178,
        189,
        3
      ]
    },
    {
      "name": "MissionExpired",
      "discriminator": [
        121,
        175,
        206,
        73,
        149,
        175,
        225,
        198
      ]
    },
    {
      "name": "MissionProposed",
      "discriminator": [
        12,
        191,
        172,
        129,
        90,
        229,
        11,
        200
      ]
    },
    {
      "name": "PausedSet",
      "discriminator": [
        171,
        125,
        127,
        156,
        233,
        81,
        68,
        66
      ]
    },
    {
      "name": "PayoutClaimed",
      "discriminator": [
        200,
        39,
        105,
        112,
        116,
        63,
        58,
        149
      ]
    },
    {
      "name": "Prepared",
      "discriminator": [
        203,
        59,
        178,
        86,
        6,
        123,
        13,
        36
      ]
    },
    {
      "name": "Settled",
      "discriminator": [
        232,
        210,
        40,
        17,
        142,
        124,
        145,
        238
      ]
    },
    {
      "name": "TreasuryPaid",
      "discriminator": [
        203,
        141,
        198,
        183,
        132,
        74,
        239,
        248
      ]
    },
    {
      "name": "TreasurySet",
      "discriminator": [
        69,
        231,
        163,
        135,
        254,
        194,
        109,
        166
      ]
    },
    {
      "name": "Unlocked",
      "discriminator": [
        219,
        104,
        74,
        123,
        174,
        92,
        182,
        120
      ]
    },
    {
      "name": "Voted",
      "discriminator": [
        189,
        74,
        101,
        127,
        109,
        214,
        95,
        130
      ]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "Paused",
      "msg": "new bounties are paused"
    },
    {
      "code": 6001,
      "name": "Unauthorized",
      "msg": "only the admin (or the launcher / the voter) can do this"
    },
    {
      "code": 6002,
      "name": "BadConfig",
      "msg": "bad config"
    },
    {
      "code": 6003,
      "name": "BadName",
      "msg": "name must be 1-32 printable ASCII characters, no leading or trailing space"
    },
    {
      "code": 6004,
      "name": "BadSymbol",
      "msg": "ticker must be 1-10 characters A-Z 0-9"
    },
    {
      "code": 6005,
      "name": "BadUri",
      "msg": "metadata uri must be https://ipfs.io/ipfs/<cid>"
    },
    {
      "code": 6006,
      "name": "BadMissions",
      "msg": "a bounty needs 1 to max_missions missions, one account each"
    },
    {
      "code": 6007,
      "name": "BadText",
      "msg": "mission text / note must be printable ASCII, at most 140 characters, no edge spaces"
    },
    {
      "code": 6008,
      "name": "BadDuration",
      "msg": "mission duration outside the bounds"
    },
    {
      "code": 6009,
      "name": "BadQuorum",
      "msg": "quorum outside the allowed range"
    },
    {
      "code": 6010,
      "name": "NotDraft",
      "msg": "this bounty is not a draft"
    },
    {
      "code": 6011,
      "name": "NotLive",
      "msg": "this bounty is not live yet"
    },
    {
      "code": 6012,
      "name": "NothingBought",
      "msg": "the dev buy returned no tokens"
    },
    {
      "code": 6013,
      "name": "NoActiveMission",
      "msg": "no mission is active"
    },
    {
      "code": 6014,
      "name": "MissionNotActive",
      "msg": "the mission is not active"
    },
    {
      "code": 6015,
      "name": "MissionEnded",
      "msg": "the mission deadline has passed"
    },
    {
      "code": 6016,
      "name": "MissionNotEnded",
      "msg": "the mission deadline has not passed yet"
    },
    {
      "code": 6017,
      "name": "ClaimsOpen",
      "msg": "the mission has open claims: settle them first"
    },
    {
      "code": 6018,
      "name": "MissionActive",
      "msg": "a mission is active or queued: proposals open when the list runs out"
    },
    {
      "code": 6019,
      "name": "TooManyMotions",
      "msg": "too many open motions on this bounty"
    },
    {
      "code": 6020,
      "name": "BadProof",
      "msg": "proof must be an https link, at most 200 characters, no spaces"
    },
    {
      "code": 6021,
      "name": "BadPayee",
      "msg": "payee must be a plain wallet (system account), not the chest or the fees account"
    },
    {
      "code": 6022,
      "name": "NotEnoughLocked",
      "msg": "not enough locked tokens to propose a mission"
    },
    {
      "code": 6023,
      "name": "NoVotingPower",
      "msg": "no locked tokens to vote with"
    },
    {
      "code": 6024,
      "name": "NotEligible",
      "msg": "these tokens were locked too late to vote on this motion (they must be locked min_lock_age before it was filed)"
    },
    {
      "code": 6025,
      "name": "AlreadyVoted",
      "msg": "this wallet already voted on this motion"
    },
    {
      "code": 6026,
      "name": "VotingClosed",
      "msg": "voting on this motion is closed"
    },
    {
      "code": 6027,
      "name": "VotingOpen",
      "msg": "voting is still open"
    },
    {
      "code": 6028,
      "name": "AlreadySettled",
      "msg": "the motion was already settled"
    },
    {
      "code": 6029,
      "name": "StillLocked",
      "msg": "tokens are locked until the motions you voted on end"
    },
    {
      "code": 6030,
      "name": "BadAmount",
      "msg": "bad amount"
    },
    {
      "code": 6031,
      "name": "NextMissionMissing",
      "msg": "the next queued mission account is required"
    },
    {
      "code": 6032,
      "name": "WrongMission",
      "msg": "wrong mission account"
    },
    {
      "code": 6033,
      "name": "NotSettled",
      "msg": "the motion is not settled yet"
    },
    {
      "code": 6034,
      "name": "NothingToClaim",
      "msg": "nothing to claim"
    },
    {
      "code": 6035,
      "name": "BelowRentFloor",
      "msg": "payout is below the rent floor of an empty wallet: it stays claimable, fund the wallet or wait"
    },
    {
      "code": 6036,
      "name": "BadAccounts",
      "msg": "wrong accounts"
    },
    {
      "code": 6037,
      "name": "Math",
      "msg": "math overflow"
    }
  ],
  "types": [
    {
      "name": "AdminSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "Ballot",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "motion",
            "type": "pubkey"
          },
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "yes",
            "type": "bool"
          },
          {
            "name": "weight",
            "type": "u64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "BallotClosed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "motion",
            "type": "pubkey"
          },
          {
            "name": "wallet",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "Bounty",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "id",
            "type": "u64"
          },
          {
            "name": "launcher",
            "type": "pubkey"
          },
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "token_program",
            "type": "pubkey"
          },
          {
            "name": "state",
            "docs": [
              "0 Draft (prepared, coin not created), 1 Live."
            ],
            "type": "u8"
          },
          {
            "name": "params",
            "docs": [
              "Copy of the config params at prepare."
            ],
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "quorum_bps",
            "type": "u16"
          },
          {
            "name": "quorum",
            "docs": [
              "Yes votes needed, base units: supply * quorum_bps / 10000."
            ],
            "type": "u64"
          },
          {
            "name": "propose_min",
            "docs": [
              "Locked tokens needed to propose: supply * propose_min_bps / 10000."
            ],
            "type": "u64"
          },
          {
            "name": "supply",
            "type": "u64"
          },
          {
            "name": "created_at",
            "type": "i64"
          },
          {
            "name": "launched_at",
            "type": "i64"
          },
          {
            "name": "mission_count",
            "docs": [
              "Missions ever created (launch + voted); ids 0..mission_count."
            ],
            "type": "u16"
          },
          {
            "name": "launch_missions",
            "docs": [
              "Missions written at launch (0..launch_missions)."
            ],
            "type": "u16"
          },
          {
            "name": "active_mission",
            "type": {
              "option": "u16"
            }
          },
          {
            "name": "queued",
            "docs": [
              "Next launch mission to activate."
            ],
            "type": "u16"
          },
          {
            "name": "completed",
            "type": "u16"
          },
          {
            "name": "expired",
            "type": "u16"
          },
          {
            "name": "open_motions",
            "type": "u8"
          },
          {
            "name": "motion_count",
            "type": "u32"
          },
          {
            "name": "prize",
            "type": "u64"
          },
          {
            "name": "bonds_held",
            "type": "u64"
          },
          {
            "name": "payouts_owed",
            "type": "u64"
          },
          {
            "name": "seed",
            "type": "u64"
          },
          {
            "name": "sponsor_total",
            "type": "u64"
          },
          {
            "name": "chest_fees_total",
            "type": "u64"
          },
          {
            "name": "chest_paid_total",
            "type": "u64"
          },
          {
            "name": "fees_seen",
            "type": "u64"
          },
          {
            "name": "launcher_pending",
            "type": "u64"
          },
          {
            "name": "treasury_pending",
            "type": "u64"
          },
          {
            "name": "launcher_paid",
            "type": "u64"
          },
          {
            "name": "treasury_paid",
            "type": "u64"
          },
          {
            "name": "locked_total",
            "type": "u64"
          },
          {
            "name": "bump",
            "type": "u8"
          },
          {
            "name": "fees_bump",
            "type": "u8"
          },
          {
            "name": "chest_bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "ClaimFiled",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "motion",
            "type": "u32"
          },
          {
            "name": "mission",
            "type": "u16"
          },
          {
            "name": "filer",
            "type": "pubkey"
          },
          {
            "name": "payee",
            "type": "pubkey"
          },
          {
            "name": "proof_uri",
            "type": "string"
          },
          {
            "name": "note",
            "type": "string"
          },
          {
            "name": "bond",
            "type": "u64"
          },
          {
            "name": "filed_at",
            "type": "i64"
          },
          {
            "name": "ends_at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Config",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          },
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "paused",
            "type": "bool"
          },
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "bounty_count",
            "docs": [
              "Bounties launched (ids 0..bounty_count)."
            ],
            "type": "u64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "ConfigInitialized",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          },
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          }
        ]
      }
    },
    {
      "name": "ConfigUpdated",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          }
        ]
      }
    },
    {
      "name": "DraftCancelled",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "mint",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "FeesCollected",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "FeesSynced",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "incoming",
            "type": "u64"
          },
          {
            "name": "chest",
            "type": "u64"
          },
          {
            "name": "launcher",
            "type": "u64"
          },
          {
            "name": "treasury",
            "type": "u64"
          },
          {
            "name": "fees_seen",
            "type": "u64"
          },
          {
            "name": "prize",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "FeesUnwrapped",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Funded",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "funder",
            "type": "pubkey"
          },
          {
            "name": "mission",
            "type": "u16"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "prize",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Launched",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "id",
            "type": "u64"
          },
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "launcher",
            "type": "pubkey"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "symbol",
            "type": "string"
          },
          {
            "name": "uri",
            "type": "string"
          },
          {
            "name": "missions",
            "type": "u16"
          },
          {
            "name": "quorum",
            "type": "u64"
          },
          {
            "name": "quorum_bps",
            "type": "u16"
          },
          {
            "name": "seed",
            "type": "u64"
          },
          {
            "name": "dev_buy",
            "type": "u64"
          },
          {
            "name": "dev_tokens",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "LauncherPaid",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "launcher",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Locked",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "voter_total",
            "type": "u64"
          },
          {
            "name": "locked_total",
            "type": "u64"
          },
          {
            "name": "deposited_at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Mission",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "n",
            "type": "u16"
          },
          {
            "name": "text",
            "type": "string"
          },
          {
            "name": "duration",
            "type": "i64"
          },
          {
            "name": "starts_at",
            "type": "i64"
          },
          {
            "name": "deadline",
            "type": "i64"
          },
          {
            "name": "state",
            "docs": [
              "0 Queued, 1 Active, 2 Completed, 3 Expired."
            ],
            "type": "u8"
          },
          {
            "name": "open_claims",
            "type": "u8"
          },
          {
            "name": "winner_motion",
            "type": {
              "option": "u32"
            }
          },
          {
            "name": "paid",
            "docs": [
              "Chest paid (or owed) to the winner."
            ],
            "type": "u64"
          },
          {
            "name": "origin",
            "docs": [
              "0 Launch, 1 Vote."
            ],
            "type": "u8"
          },
          {
            "name": "origin_motion",
            "type": {
              "option": "u32"
            }
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "MissionActivated",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "mission",
            "type": "u16"
          },
          {
            "name": "starts_at",
            "type": "i64"
          },
          {
            "name": "deadline",
            "type": "i64"
          },
          {
            "name": "prize",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "MissionCompleted",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "mission",
            "type": "u16"
          },
          {
            "name": "motion",
            "type": "u32"
          },
          {
            "name": "payee",
            "type": "pubkey"
          },
          {
            "name": "paid",
            "type": "u64"
          },
          {
            "name": "owed",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "MissionExpired",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "mission",
            "type": "u16"
          },
          {
            "name": "carried",
            "type": "u64"
          },
          {
            "name": "activated",
            "type": {
              "option": "u16"
            }
          }
        ]
      }
    },
    {
      "name": "MissionInput",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "text",
            "type": "string"
          },
          {
            "name": "duration",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "MissionProposed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "motion",
            "type": "u32"
          },
          {
            "name": "proposer",
            "type": "pubkey"
          },
          {
            "name": "text",
            "type": "string"
          },
          {
            "name": "duration",
            "type": "i64"
          },
          {
            "name": "bond",
            "type": "u64"
          },
          {
            "name": "filed_at",
            "type": "i64"
          },
          {
            "name": "ends_at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Motion",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "id",
            "type": "u32"
          },
          {
            "name": "kind",
            "docs": [
              "0 Claim, 1 NewMission."
            ],
            "type": "u8"
          },
          {
            "name": "mission",
            "docs": [
              "Claim: the mission it claims."
            ],
            "type": "u16"
          },
          {
            "name": "payee",
            "docs": [
              "Claim: who gets the chest."
            ],
            "type": "pubkey"
          },
          {
            "name": "proof_uri",
            "type": "string"
          },
          {
            "name": "text",
            "docs": [
              "Claim: note; NewMission: the mission text."
            ],
            "type": "string"
          },
          {
            "name": "duration",
            "docs": [
              "NewMission: mission duration."
            ],
            "type": "i64"
          },
          {
            "name": "filer",
            "type": "pubkey"
          },
          {
            "name": "bond",
            "type": "u64"
          },
          {
            "name": "filed_at",
            "type": "i64"
          },
          {
            "name": "ends_at",
            "type": "i64"
          },
          {
            "name": "yes",
            "type": "u64"
          },
          {
            "name": "no",
            "type": "u64"
          },
          {
            "name": "voters",
            "type": "u32"
          },
          {
            "name": "state",
            "docs": [
              "0 Open, 1 Passed, 2 Rejected, 3 NoQuorum, 4 Void."
            ],
            "type": "u8"
          },
          {
            "name": "settled_at",
            "type": "i64"
          },
          {
            "name": "paid",
            "docs": [
              "Claim passed: paid to the payee at settle / later by claim_payout."
            ],
            "type": "u64"
          },
          {
            "name": "owed",
            "docs": [
              "Claim passed: still owed to an empty payee (L-4)."
            ],
            "type": "u64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "Params",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "chest_bps",
            "docs": [
              "Creator fee split (default 6000 / 2500 / 1500, sum 10000, treasury <= 3000)."
            ],
            "type": "u16"
          },
          {
            "name": "launcher_bps",
            "type": "u16"
          },
          {
            "name": "treasury_bps",
            "type": "u16"
          },
          {
            "name": "claim_bond",
            "docs": [
              "Bond of a claim or a proposal (default 0.1 SOL, 0.01..1 SOL)."
            ],
            "type": "u64"
          },
          {
            "name": "vote_secs",
            "docs": [
              "Voting time of a motion (default 24 h, 60 s..7 d)."
            ],
            "type": "i64"
          },
          {
            "name": "pass_bps",
            "docs": [
              "Share of yes among cast votes needed to pass (default 6667, 5001..9000)."
            ],
            "type": "u16"
          },
          {
            "name": "quorum_min_bps",
            "docs": [
              "Range of the quorum the launcher picks, bps of supply (default 50..500)."
            ],
            "type": "u16"
          },
          {
            "name": "quorum_max_bps",
            "type": "u16"
          },
          {
            "name": "mission_min_secs",
            "docs": [
              "Mission duration bounds (default 1 h..60 d; floor 60 s for local tests)."
            ],
            "type": "i64"
          },
          {
            "name": "mission_max_secs",
            "type": "i64"
          },
          {
            "name": "max_missions",
            "docs": [
              "Missions at launch (default 3, cap 3)."
            ],
            "type": "u8"
          },
          {
            "name": "propose_min_bps",
            "docs": [
              "Locked tokens needed to propose a mission, bps of supply (default 10)."
            ],
            "type": "u16"
          },
          {
            "name": "max_open_motions",
            "docs": [
              "Open motions per bounty at once (default 8, cap 16)."
            ],
            "type": "u8"
          },
          {
            "name": "min_lock_age",
            "docs": [
              "A ballot counts only if the voter's last deposit is at least this old when the motion was",
              "filed: deposited_at + min_lock_age <= filed_at (and always strictly before). Default 24 h, 0..7 d."
            ],
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "PausedSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "paused",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "PayoutClaimed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "motion",
            "type": "u32"
          },
          {
            "name": "payee",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Prepared",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "launcher",
            "type": "pubkey"
          },
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "missions",
            "type": "u16"
          },
          {
            "name": "quorum_bps",
            "type": "u16"
          }
        ]
      }
    },
    {
      "name": "Settled",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "motion",
            "type": "u32"
          },
          {
            "name": "kind",
            "type": "u8"
          },
          {
            "name": "outcome",
            "type": "u8"
          },
          {
            "name": "yes",
            "type": "u64"
          },
          {
            "name": "no",
            "type": "u64"
          },
          {
            "name": "paid",
            "type": "u64"
          },
          {
            "name": "owed",
            "type": "u64"
          },
          {
            "name": "bond_to_prize",
            "type": "bool"
          },
          {
            "name": "activated",
            "type": {
              "option": "u16"
            }
          },
          {
            "name": "prize",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "TreasuryPaid",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "TreasurySet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "treasury",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "Unlocked",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "voter_total",
            "type": "u64"
          },
          {
            "name": "locked_total",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Voted",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "motion",
            "type": "u32"
          },
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "yes",
            "type": "bool"
          },
          {
            "name": "weight",
            "type": "u64"
          },
          {
            "name": "total_yes",
            "type": "u64"
          },
          {
            "name": "total_no",
            "type": "u64"
          },
          {
            "name": "voters",
            "type": "u32"
          }
        ]
      }
    },
    {
      "name": "Voter",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bounty",
            "type": "pubkey"
          },
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "deposited_at",
            "type": "i64"
          },
          {
            "name": "locked_until",
            "type": "i64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    }
  ]
}