{
  "address": "Syndd4Nv3XVL4wV4xV6yyVuMZz8LRvD3Rofh7KnMhvK",
  "metadata": {
    "name": "syndicate",
    "version": "0.1.0",
    "spec": "0.1.0",
    "description": "Syndicate Pad: 3-5 devs launch one coin together; the team bag vests in the program and nobody sells early unless the others sign"
  },
  "instructions": [
    {
      "name": "accept",
      "docs": [
        "A funded member signs the table as it is now (`table_hash` = what his screen showed). Launch needs",
        "every seat's accept; any later change of the table resets all of them."
      ],
      "discriminator": [
        65,
        150,
        70,
        216,
        133,
        6,
        107,
        4
      ],
      "accounts": [
        {
          "name": "member",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "table_hash",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        }
      ]
    },
    {
      "name": "accept_admin",
      "discriminator": [
        112,
        42,
        45,
        90,
        116,
        181,
        13,
        170
      ],
      "accounts": [
        {
          "name": "proposed",
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        }
      ],
      "args": []
    },
    {
      "name": "approve_kick",
      "discriminator": [
        117,
        215,
        44,
        83,
        126,
        93,
        4,
        39
      ],
      "accounts": [
        {
          "name": "member",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "target",
          "type": "u8"
        },
        {
          "name": "nonce",
          "type": "u32"
        }
      ]
    },
    {
      "name": "approve_rotate",
      "discriminator": [
        100,
        221,
        87,
        89,
        105,
        56,
        16,
        232
      ],
      "accounts": [
        {
          "name": "member",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "target",
          "type": "u8"
        },
        {
          "name": "nonce",
          "type": "u32"
        },
        {
          "name": "new_wallet",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "approve_sale",
      "docs": [
        "Another active member approves seat `seat`'s open sale. `nonce` and `amount` must match what he saw."
      ],
      "discriminator": [
        161,
        214,
        32,
        147,
        179,
        73,
        138,
        227
      ],
      "accounts": [
        {
          "name": "member",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "seat",
          "type": "u8"
        },
        {
          "name": "nonce",
          "type": "u32"
        },
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "buyback",
      "docs": [
        "Anyone, alone in its transaction, at most once per buyback interval: the Chest buys the coin with",
        "buyback_bps of its SOL (at most 1 % of the reserves it buys against) and burns every token it got.",
        "min_out = spend x (1 - 1.25 % fee - slippage) / median price of the last 7 observations (<= 30 min old).",
        "remaining_accounts: curve venue = pump buy accounts (user = Chest, associated_user = Chest ATA);",
        "pool venue = PumpSwap buy accounts (user = Chest, base = Chest ATA, quote = Chest WSOL ATA)."
      ],
      "discriminator": [
        106,
        117,
        64,
        30,
        56,
        69,
        7,
        45
      ],
      "accounts": [
        {
          "name": "caller",
          "writable": true,
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "chest",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  104,
                  101,
                  115,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "chest_ata",
          "writable": true
        },
        {
          "name": "chest_wsol",
          "writable": true
        },
        {
          "name": "mint",
          "writable": true
        },
        {
          "name": "curve"
        },
        {
          "name": "instructions"
        },
        {
          "name": "token_program"
        },
        {
          "name": "spl_token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "claim_fees",
      "docs": [
        "Anyone: pays seat `seat`'s booked creator fees to the seat's member (a kicked member keeps what was",
        "booked before the kick). Below the rent floor of an empty wallet: BelowRentFloor, stays owed."
      ],
      "discriminator": [
        82,
        251,
        233,
        156,
        12,
        52,
        184,
        202
      ],
      "accounts": [
        {
          "name": "caller",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "member",
          "writable": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "seat",
          "type": "u8"
        }
      ]
    },
    {
      "name": "claim_leftover",
      "docs": [
        "Anyone: pays a seat's share of the launch leftover (unused rent margin) to the seat's member."
      ],
      "discriminator": [
        190,
        204,
        42,
        80,
        135,
        145,
        76,
        104
      ],
      "accounts": [
        {
          "name": "caller",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "member",
          "writable": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "seat",
          "type": "u8"
        }
      ]
    },
    {
      "name": "claim_vested",
      "docs": [
        "Anyone (pays the member's ATA rent if it does not exist): moves every unlocked token of the seat from",
        "the escrow to the seat member's own token account."
      ],
      "discriminator": [
        208,
        190,
        166,
        114,
        203,
        225,
        140,
        208
      ],
      "accounts": [
        {
          "name": "payer",
          "writable": true,
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "vault",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "vault_ata",
          "writable": true
        },
        {
          "name": "member"
        },
        {
          "name": "member_ata",
          "writable": true
        },
        {
          "name": "mint"
        },
        {
          "name": "token_program"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "seat",
          "type": "u8"
        }
      ]
    },
    {
      "name": "close_kick",
      "docs": [
        "Any member whose approval the kick needs rejects it (the proposer withdraws it the same way)."
      ],
      "discriminator": [
        74,
        239,
        11,
        70,
        62,
        35,
        165,
        133
      ],
      "accounts": [
        {
          "name": "member",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "target",
          "type": "u8"
        },
        {
          "name": "nonce",
          "type": "u32"
        }
      ]
    },
    {
      "name": "close_rotate",
      "docs": [
        "Closes a rotation: the seat's CURRENT wallet vetoes it (so the others can never take a live member's",
        "seat; the veto restarts the seat's idle clock), or a member whose approval it needs rejects it."
      ],
      "discriminator": [
        102,
        91,
        224,
        218,
        229,
        50,
        153,
        115
      ],
      "accounts": [
        {
          "name": "member",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "target",
          "type": "u8"
        },
        {
          "name": "nonce",
          "type": "u32"
        }
      ]
    },
    {
      "name": "close_sale",
      "docs": [
        "Closes seat `seat`'s open sale: its own member cancels, or any member whose approval it needs rejects."
      ],
      "discriminator": [
        124,
        201,
        1,
        146,
        231,
        103,
        193,
        152
      ],
      "accounts": [
        {
          "name": "member",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "seat",
          "type": "u8"
        },
        {
          "name": "nonce",
          "type": "u32"
        }
      ]
    },
    {
      "name": "collect_fees",
      "docs": [
        "pump.fun collect_creator_fee into the Fees PDA. remaining = [fees, creator_vault, system,",
        "event_authority, pump]. After migration PumpSwap's permissionless `transfer_creator_fees_to_pump`",
        "first moves the pool's creator fees into pump's creator vault."
      ],
      "discriminator": [
        164,
        152,
        207,
        99,
        30,
        186,
        19,
        182
      ],
      "accounts": [
        {
          "name": "syndicate",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        }
      ],
      "args": []
    },
    {
      "name": "collect_treasury",
      "docs": [
        "Anyone: pays the treasury's booked share to the current config.treasury."
      ],
      "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": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "treasury",
          "writable": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "disband",
      "docs": [
        "Ends a syndicate that did not launch: the lead at any time while forming, anyone after the deadline.",
        "Every deposit becomes refundable (`refund`)."
      ],
      "discriminator": [
        189,
        201,
        181,
        154,
        17,
        129,
        121,
        93
      ],
      "accounts": [
        {
          "name": "caller",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        }
      ],
      "args": []
    },
    {
      "name": "evict",
      "docs": [
        "The lead removes a funded member before launch (a squatter on an open seat, a member who will not accept):",
        "the whole seed goes back to that member's wallet at once, the seat reopens as an open seat (the lead can",
        "then name it with `set_table`). Every accept is reset. SOL: Vault -> the evicted member."
      ],
      "discriminator": [
        56,
        13,
        174,
        235,
        133,
        159,
        37,
        162
      ],
      "accounts": [
        {
          "name": "lead",
          "signer": true,
          "relations": [
            "syndicate"
          ]
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "member",
          "writable": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "seat",
          "type": "u8"
        }
      ]
    },
    {
      "name": "execute_kick",
      "docs": [
        "Anyone, after the delay and within the execution window, once every other active member approved:",
        "what the seat has vested now stays the member's (claimable); every other token of the seat in the",
        "escrow is BURNED. The seat stops voting, selling early and earning creator fees (its share goes to the",
        "chest from the next sync). Its open sale / rotation are closed."
      ],
      "discriminator": [
        99,
        97,
        46,
        115,
        16,
        242,
        86,
        89
      ],
      "accounts": [
        {
          "name": "caller",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "vault",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "vault_ata",
          "writable": true
        },
        {
          "name": "mint",
          "writable": true
        },
        {
          "name": "token_program"
        }
      ],
      "args": [
        {
          "name": "target",
          "type": "u8"
        },
        {
          "name": "nonce",
          "type": "u32"
        }
      ]
    },
    {
      "name": "execute_rotate",
      "docs": [
        "Anyone, after the delay and within the window, once every other active member approved (and, for a",
        "rotation the seat's own wallet did not propose, the seat is still idle): S-M1 settlement first, then the",
        "seat's wallet becomes `new_wallet` (future tokens, fees, votes). Settlement to the OLD wallet: the Fees PDA",
        "is synced (unsynced creator fees are booked under the old wallet), the seat's booked-but-unpaid creator fees",
        "(Fees PDA) and its unpaid launch leftover (Vault) are paid, and every unlocked token not yet taken out goes to",
        "the old wallet's ATA (created by the caller). The seat's open sale (approved or not) is closed: approvals",
        "given to the old wallet never pass to the new one. If the old wallet cannot receive the SOL right now (an",
        "empty wallet and an amount below its rent floor) the rotation fails with BelowRentFloor: fund the old wallet",
        "with its rent floor first. Pump's creator vault is not collected here: run collect_fees in the same tx."
      ],
      "discriminator": [
        254,
        28,
        172,
        37,
        154,
        56,
        39,
        183
      ],
      "accounts": [
        {
          "name": "caller",
          "docs": [
            "Pays the old wallet's ATA rent if it does not exist."
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "vault_ata",
          "writable": true
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "chest",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  104,
                  101,
                  115,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "old_wallet",
          "writable": true
        },
        {
          "name": "old_wallet_ata",
          "writable": true
        },
        {
          "name": "mint"
        },
        {
          "name": "token_program"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "target",
          "type": "u8"
        },
        {
          "name": "nonce",
          "type": "u32"
        }
      ]
    },
    {
      "name": "execute_sale",
      "docs": [
        "The seat's member executes his approved sale after the notice and within the execution window: the",
        "program sells `amount` escrowed tokens (pump curve, or the canonical PumpSwap pool after migration) and",
        "sends the SOL to the member. `min_sol_out` is the member's own slippage bound. Rolling cap: the sales",
        "of this seat in the last 24 h plus this one <= daily cap, and at most SALE_LOG sales in 24 h.",
        "remaining_accounts: curve venue = pump sell accounts (user = Vault); pool venue = PumpSwap sell accounts",
        "(user = Vault, base = Vault ATA, quote = Vault WSOL ATA)."
      ],
      "discriminator": [
        37,
        74,
        217,
        157,
        79,
        49,
        35,
        6
      ],
      "accounts": [
        {
          "name": "member",
          "writable": true,
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "vault_ata",
          "writable": true
        },
        {
          "name": "vault_wsol",
          "writable": true
        },
        {
          "name": "mint"
        },
        {
          "name": "curve"
        },
        {
          "name": "spl_token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "seat",
          "type": "u8"
        },
        {
          "name": "nonce",
          "type": "u32"
        },
        {
          "name": "min_sol_out",
          "type": "u64"
        }
      ]
    },
    {
      "name": "form",
      "docs": [
        "The lead opens syndicate #config.syndicates with the final name, ticker and picture (IPFS), the sha256",
        "of the charter text, the seat table and his own seed. A seat with `member == default` is an open",
        "seat (first come); a named seat is reserved for that wallet. The lead's seat is always his.",
        "SOL: lead -> Vault (deposit + the Vault's rent floor). The lead pays the Syndicate account rent."
      ],
      "discriminator": [
        40,
        187,
        209,
        44,
        198,
        229,
        136,
        47
      ],
      "accounts": [
        {
          "name": "lead",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "config.syndicates",
                "account": "Config"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "fees",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "chest",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  104,
                  101,
                  115,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "symbol",
          "type": "string"
        },
        {
          "name": "uri",
          "type": "string"
        },
        {
          "name": "charter_hash",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        },
        {
          "name": "seats",
          "type": {
            "vec": {
              "defined": {
                "name": "SeatInput"
              }
            }
          }
        },
        {
          "name": "lead_seat",
          "type": "u8"
        },
        {
          "name": "deposit",
          "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": "join",
      "docs": [
        "Takes an unfunded seat with a seed (named seat: only its wallet; open seat: anyone who holds no other",
        "seat here). Every accept is reset. SOL: member -> Vault."
      ],
      "discriminator": [
        206,
        55,
        2,
        106,
        113,
        220,
        17,
        163
      ],
      "accounts": [
        {
          "name": "member",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "seat",
          "type": "u8"
        },
        {
          "name": "deposit",
          "type": "u64"
        }
      ]
    },
    {
      "name": "launch",
      "docs": [
        "Anyone, alone in its transaction (only ComputeBudget / System next to it, so nobody can append a buy",
        "right behind the crew's). Needs every seat funded, every accept, >= seats_min seats, before the deadline.",
        "remaining_accounts = pump create_v2 accounts (16, user = Vault) + pump buy accounts (user = Vault).",
        "SOL: Vault -> Fees, Chest (rent floors); Vault pays pump's create rents and its own ATA; with",
        "avail = vault - floor - buyer-rent margin, `buy_capped` gets spend = avail x 10000 / (10000 + launch_fee_bps);",
        "fee = floor(offered x launch_fee_bps / 10000) of what the buy really deployed (I-2, SPEC) Vault ->",
        "config.treasury (or booked for it on the Fees PDA when the treasury cannot receive it now); everything above",
        "the floor is booked as `leftover` per seat. fee <= avail - spend <= avail - offered, so it always fits.",
        "Invariant after launch: vault == floor + sum(leftover); vault_ata == tokens_bought == sum(seat tokens)."
      ],
      "discriminator": [
        153,
        241,
        93,
        225,
        22,
        69,
        74,
        61
      ],
      "accounts": [
        {
          "name": "caller",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "treasury",
          "writable": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "chest",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  104,
                  101,
                  115,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "vault_ata",
          "writable": true
        },
        {
          "name": "instructions"
        },
        {
          "name": "token_program"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "leave",
      "docs": [
        "A member (not the lead: he disbands instead) leaves before launch with his whole seed. An open seat",
        "reopens, a named seat stays reserved for that wallet. Every accept is reset. SOL: Vault -> member."
      ],
      "discriminator": [
        59,
        234,
        148,
        108,
        107,
        149,
        173,
        112
      ],
      "accounts": [
        {
          "name": "member",
          "writable": true,
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "seat",
          "type": "u8"
        }
      ]
    },
    {
      "name": "mark_migrated",
      "docs": [
        "Anyone: records that the coin's pump curve completed (irreversible), which unlocks",
        "`migration_unlock_bps` of every active seat."
      ],
      "discriminator": [
        39,
        81,
        81,
        220,
        75,
        250,
        189,
        216
      ],
      "accounts": [
        {
          "name": "caller",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "curve"
        }
      ],
      "args": []
    },
    {
      "name": "observe",
      "docs": [
        "Anyone, alone in its transaction, at most once per OBS_GAP: records the coin's spot price (pump curve,",
        "or the canonical PumpSwap pool after migration: remaining = [pool, pool_base_ta, pool_quote_ta]).",
        "The buyback's min_out comes from the median of these, so a flash pump cannot make the chest overpay."
      ],
      "discriminator": [
        204,
        78,
        178,
        115,
        194,
        147,
        65,
        74
      ],
      "accounts": [
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "curve"
        },
        {
          "name": "instructions"
        }
      ],
      "args": []
    },
    {
      "name": "ping",
      "docs": [
        "A member proves his wallet is alive (event only + his seat's idle clock). Any other signed action of the",
        "seat's wallet does the same; the site calls this for members who have nothing else to sign."
      ],
      "discriminator": [
        173,
        0,
        94,
        236,
        73,
        133,
        225,
        153
      ],
      "accounts": [
        {
          "name": "member",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        }
      ],
      "args": []
    },
    {
      "name": "post_update",
      "docs": [
        "A member posts a work log entry (event only): \"ART: new banner ipfs://...\". The site shows a team feed."
      ],
      "discriminator": [
        133,
        95,
        207,
        175,
        11,
        79,
        118,
        44
      ],
      "accounts": [
        {
          "name": "member",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "uri",
          "type": "string"
        }
      ]
    },
    {
      "name": "propose_admin",
      "docs": [
        "Two-step admin handover: the proposed key must accept. Pubkey::default() cancels."
      ],
      "discriminator": [
        121,
        214,
        199,
        212,
        87,
        39,
        117,
        234
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "proposed",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "propose_kick",
      "docs": [
        "An active member proposes to kick another active seat. Needs >= 3 active seats (a crew never drops",
        "below 2). The proposer's approval is counted."
      ],
      "discriminator": [
        109,
        73,
        224,
        179,
        36,
        59,
        91,
        249
      ],
      "accounts": [
        {
          "name": "member",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "target",
          "type": "u8"
        }
      ]
    },
    {
      "name": "propose_rotate",
      "docs": [
        "Any active member (or the seat's own member) proposes to move seat `target` to `new_wallet`. Needs every",
        "other active member's approval and the delay; the seat's current wallet can veto at any time. S-M1: when",
        "the proposer is not the seat's own wallet, the seat must have been idle (no signed action of its wallet)",
        "for rotate_idle_secs; a veto is a signed action, so it also blocks new proposals for another idle period."
      ],
      "discriminator": [
        91,
        218,
        39,
        110,
        189,
        9,
        207,
        28
      ],
      "accounts": [
        {
          "name": "member",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "target",
          "type": "u8"
        },
        {
          "name": "new_wallet",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "propose_sale",
      "docs": [
        "The seat's member asks to sell `amount` of his escrowed tokens before they unlock. One open request per",
        "seat. amount <= his escrow and <= the daily cap (max_sale_bps_per_day of the supply)."
      ],
      "discriminator": [
        41,
        8,
        69,
        51,
        246,
        215,
        205,
        210
      ],
      "accounts": [
        {
          "name": "member",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "mint"
        }
      ],
      "args": [
        {
          "name": "seat",
          "type": "u8"
        },
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "refund",
      "docs": [
        "Anyone: pays a disbanded seat's whole seed back to the seat's member (once)."
      ],
      "discriminator": [
        2,
        96,
        183,
        251,
        63,
        208,
        46,
        46
      ],
      "accounts": [
        {
          "name": "caller",
          "signer": true
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "member",
          "writable": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "seat",
          "type": "u8"
        }
      ]
    },
    {
      "name": "set_paused",
      "docs": [
        "Pause blocks new money in: `form`, `join`, `launch`. Every exit (leave, disband, refund, claims, sales,",
        "fees, buybacks) keeps working."
      ],
      "discriminator": [
        91,
        60,
        125,
        192,
        176,
        225,
        166,
        218
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "paused",
          "type": "bool"
        }
      ]
    },
    {
      "name": "set_table",
      "docs": [
        "The lead rewrites the table while forming: seats (1 role / label / member / work weight each), count",
        "within the bounds, weights summing to 100 %. A funded seat keeps its index and its member (nobody's",
        "deposit can be evicted or reassigned); unfunded seats can be renamed, reopened or removed.",
        "Every accept is reset."
      ],
      "discriminator": [
        184,
        194,
        161,
        111,
        110,
        108,
        162,
        197
      ],
      "accounts": [
        {
          "name": "lead",
          "signer": true,
          "relations": [
            "syndicate"
          ]
        },
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "seats",
          "type": {
            "vec": {
              "defined": {
                "name": "SeatInput"
              }
            }
          }
        }
      ]
    },
    {
      "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": "sync_fees",
      "docs": [
        "Books every new lamport on the Fees PDA (exact, no accumulator): treasury = floor(in x treasury_bps),",
        "crew = floor(in x crew_bps) split per seat by allocation (floor(crew x tokens_i / tokens_bought)),",
        "and everything else (chest_bps share, kicked seats' crew share, rounding dust) moves to the Chest now.",
        "sum(parts) == incoming always; a seat is only ever owed what was booked for it.",
        "Invariant: fees == floor + sum(seat booked - paid) + (treasury booked - paid) + unsynced."
      ],
      "discriminator": [
        183,
        105,
        177,
        124,
        93,
        59,
        163,
        216
      ],
      "accounts": [
        {
          "name": "syndicate",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "chest",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  104,
                  101,
                  115,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "unwrap_fees",
      "docs": [
        "Anyone (audit M-2): closes a WSOL account owned by the Fees PDA into the Fees PDA, so PumpSwap creator",
        "fees someone collected as WSOL (collect_coin_creator_fee needs no signature) become bookable lamports."
      ],
      "discriminator": [
        202,
        112,
        56,
        154,
        193,
        85,
        127,
        150
      ],
      "accounts": [
        {
          "name": "syndicate",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  121,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "syndicate.id",
                "account": "Syndicate"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "syndicate"
              }
            ]
          }
        },
        {
          "name": "wsol_ata",
          "writable": true
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        }
      ],
      "args": []
    },
    {
      "name": "update_config",
      "docs": [
        "New params apply to syndicates formed from now on; every syndicate keeps the copy it was formed with",
        "(and its members accepted that copy: the params are part of the table hash)."
      ],
      "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"
            }
          }
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "Config",
      "discriminator": [
        155,
        12,
        170,
        224,
        30,
        250,
        204,
        130
      ]
    },
    {
      "name": "Syndicate",
      "discriminator": [
        176,
        41,
        35,
        51,
        97,
        147,
        73,
        182
      ]
    }
  ],
  "events": [
    {
      "name": "Accepted",
      "discriminator": [
        54,
        162,
        140,
        167,
        179,
        190,
        95,
        70
      ]
    },
    {
      "name": "AdminAccepted",
      "discriminator": [
        174,
        12,
        76,
        139,
        158,
        99,
        110,
        254
      ]
    },
    {
      "name": "AdminProposed",
      "discriminator": [
        129,
        249,
        226,
        227,
        199,
        82,
        110,
        243
      ]
    },
    {
      "name": "BuybackBurned",
      "discriminator": [
        186,
        84,
        241,
        202,
        152,
        185,
        0,
        115
      ]
    },
    {
      "name": "ConfigInitialized",
      "discriminator": [
        181,
        49,
        200,
        156,
        19,
        167,
        178,
        91
      ]
    },
    {
      "name": "ConfigUpdated",
      "discriminator": [
        40,
        241,
        230,
        122,
        11,
        19,
        198,
        194
      ]
    },
    {
      "name": "Disbanded",
      "discriminator": [
        74,
        17,
        9,
        208,
        201,
        185,
        181,
        203
      ]
    },
    {
      "name": "Evicted",
      "discriminator": [
        200,
        155,
        28,
        28,
        191,
        178,
        201,
        27
      ]
    },
    {
      "name": "FeesClaimed",
      "discriminator": [
        22,
        104,
        110,
        222,
        38,
        157,
        14,
        62
      ]
    },
    {
      "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": "Formed",
      "discriminator": [
        13,
        28,
        46,
        214,
        144,
        121,
        20,
        152
      ]
    },
    {
      "name": "Joined",
      "discriminator": [
        16,
        20,
        44,
        48,
        132,
        189,
        68,
        98
      ]
    },
    {
      "name": "KickApproved",
      "discriminator": [
        209,
        9,
        56,
        2,
        157,
        59,
        21,
        26
      ]
    },
    {
      "name": "KickClosed",
      "discriminator": [
        160,
        203,
        228,
        121,
        151,
        124,
        103,
        40
      ]
    },
    {
      "name": "KickProposed",
      "discriminator": [
        129,
        170,
        169,
        116,
        232,
        176,
        126,
        194
      ]
    },
    {
      "name": "Kicked",
      "discriminator": [
        192,
        27,
        42,
        160,
        133,
        97,
        250,
        222
      ]
    },
    {
      "name": "Launched",
      "discriminator": [
        209,
        127,
        29,
        152,
        129,
        212,
        189,
        183
      ]
    },
    {
      "name": "Left",
      "discriminator": [
        225,
        78,
        253,
        233,
        66,
        254,
        152,
        164
      ]
    },
    {
      "name": "LeftoverClaimed",
      "discriminator": [
        216,
        38,
        139,
        34,
        36,
        149,
        69,
        202
      ]
    },
    {
      "name": "MigrationMarked",
      "discriminator": [
        53,
        233,
        36,
        198,
        83,
        192,
        148,
        3
      ]
    },
    {
      "name": "Observed",
      "discriminator": [
        154,
        65,
        198,
        52,
        238,
        11,
        193,
        59
      ]
    },
    {
      "name": "PausedSet",
      "discriminator": [
        171,
        125,
        127,
        156,
        233,
        81,
        68,
        66
      ]
    },
    {
      "name": "Pinged",
      "discriminator": [
        50,
        38,
        24,
        188,
        75,
        109,
        130,
        119
      ]
    },
    {
      "name": "Refunded",
      "discriminator": [
        35,
        103,
        149,
        246,
        196,
        123,
        221,
        99
      ]
    },
    {
      "name": "RotateApproved",
      "discriminator": [
        81,
        93,
        16,
        177,
        148,
        127,
        197,
        134
      ]
    },
    {
      "name": "RotateClosed",
      "discriminator": [
        114,
        171,
        227,
        131,
        150,
        83,
        76,
        138
      ]
    },
    {
      "name": "RotateProposed",
      "discriminator": [
        168,
        164,
        33,
        165,
        26,
        147,
        26,
        196
      ]
    },
    {
      "name": "Rotated",
      "discriminator": [
        152,
        129,
        123,
        99,
        188,
        45,
        50,
        205
      ]
    },
    {
      "name": "SaleApproved",
      "discriminator": [
        8,
        168,
        207,
        215,
        209,
        226,
        88,
        65
      ]
    },
    {
      "name": "SaleClosed",
      "discriminator": [
        159,
        55,
        174,
        68,
        129,
        10,
        121,
        96
      ]
    },
    {
      "name": "SaleExecuted",
      "discriminator": [
        248,
        212,
        224,
        176,
        224,
        179,
        98,
        207
      ]
    },
    {
      "name": "SaleProposed",
      "discriminator": [
        220,
        183,
        156,
        186,
        145,
        186,
        106,
        156
      ]
    },
    {
      "name": "TableSet",
      "discriminator": [
        152,
        12,
        146,
        62,
        169,
        55,
        236,
        2
      ]
    },
    {
      "name": "TreasuryCollected",
      "discriminator": [
        116,
        28,
        13,
        151,
        232,
        65,
        52,
        34
      ]
    },
    {
      "name": "TreasurySet",
      "discriminator": [
        69,
        231,
        163,
        135,
        254,
        194,
        109,
        166
      ]
    },
    {
      "name": "UpdatePosted",
      "discriminator": [
        135,
        121,
        175,
        7,
        228,
        202,
        21,
        85
      ]
    },
    {
      "name": "VestedClaimed",
      "discriminator": [
        90,
        39,
        80,
        199,
        242,
        108,
        89,
        46
      ]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "Unauthorized",
      "msg": "Only the admin can do this"
    },
    {
      "code": 6001,
      "name": "Paused",
      "msg": "New syndicates, seats and launches are paused"
    },
    {
      "code": 6002,
      "name": "BadConfig",
      "msg": "A config value is out of its allowed bounds"
    },
    {
      "code": 6003,
      "name": "BadName",
      "msg": "Name must be 1-32 printable ASCII characters"
    },
    {
      "code": 6004,
      "name": "BadSymbol",
      "msg": "Ticker must be 1-10 characters A-Z or 0-9"
    },
    {
      "code": 6005,
      "name": "BadUri",
      "msg": "Metadata must be an IPFS link: ipfs://<cid> or https://ipfs.io/ipfs/<cid>"
    },
    {
      "code": 6006,
      "name": "BadLabel",
      "msg": "Seat label must be printable ASCII, up to 16 bytes"
    },
    {
      "code": 6007,
      "name": "BadRole",
      "msg": "Unknown role"
    },
    {
      "code": 6008,
      "name": "BadSeatCount",
      "msg": "A syndicate has 3 to 5 seats (see the config bounds)"
    },
    {
      "code": 6009,
      "name": "BadWeights",
      "msg": "Work weights must add up to 100%"
    },
    {
      "code": 6010,
      "name": "DuplicateMember",
      "msg": "One wallet can hold only one seat in a syndicate"
    },
    {
      "code": 6011,
      "name": "BadSeat",
      "msg": "No such seat"
    },
    {
      "code": 6012,
      "name": "SeatTaken",
      "msg": "Seat is already taken"
    },
    {
      "code": 6013,
      "name": "SeatReserved",
      "msg": "This seat is reserved for another wallet"
    },
    {
      "code": 6014,
      "name": "FundedSeat",
      "msg": "A funded seat cannot be removed or given to another wallet"
    },
    {
      "code": 6015,
      "name": "DepositOutOfRange",
      "msg": "Seed must be between the minimum and the maximum per seat"
    },
    {
      "code": 6016,
      "name": "NotForming",
      "msg": "The syndicate is not forming anymore"
    },
    {
      "code": 6017,
      "name": "FormWindowOver",
      "msg": "The forming window is over"
    },
    {
      "code": 6018,
      "name": "FormWindowOpen",
      "msg": "The forming window is still open: only the lead can disband now"
    },
    {
      "code": 6019,
      "name": "NotMember",
      "msg": "Only a member of this syndicate can do this"
    },
    {
      "code": 6020,
      "name": "NotLead",
      "msg": "Only the lead can do this"
    },
    {
      "code": 6021,
      "name": "LeadCannotLeave",
      "msg": "The lead cannot leave: disband instead"
    },
    {
      "code": 6022,
      "name": "StaleTable",
      "msg": "The table changed since you read it: review it and accept again"
    },
    {
      "code": 6023,
      "name": "NotAllAccepted",
      "msg": "Every member must accept the current table first"
    },
    {
      "code": 6024,
      "name": "SeatsNotFilled",
      "msg": "Every seat must be funded before launch"
    },
    {
      "code": 6025,
      "name": "NotDisbanded",
      "msg": "This syndicate was not disbanded"
    },
    {
      "code": 6026,
      "name": "NothingToRefund",
      "msg": "Nothing to refund for this seat"
    },
    {
      "code": 6027,
      "name": "NotLaunched",
      "msg": "The coin is not launched"
    },
    {
      "code": 6028,
      "name": "NotAlone",
      "msg": "This instruction must be alone in its transaction (compute budget and tips only)"
    },
    {
      "code": 6029,
      "name": "RentTooHigh",
      "msg": "Launch rents exceeded the seed pool"
    },
    {
      "code": 6030,
      "name": "NothingBought",
      "msg": "The launch bought no tokens"
    },
    {
      "code": 6031,
      "name": "BadAccounts",
      "msg": "Wrong accounts"
    },
    {
      "code": 6032,
      "name": "BadAmmAccounts",
      "msg": "Wrong PumpSwap accounts (pool, user, mints or token accounts)"
    },
    {
      "code": 6033,
      "name": "WrongTreasury",
      "msg": "The launch fee can only go to the treasury"
    },
    {
      "code": 6034,
      "name": "WrongMember",
      "msg": "This account is not the seat's member"
    },
    {
      "code": 6035,
      "name": "NothingToClaim",
      "msg": "Nothing to claim"
    },
    {
      "code": 6036,
      "name": "NothingVested",
      "msg": "Nothing unlocked to claim yet"
    },
    {
      "code": 6037,
      "name": "AlreadyMarked",
      "msg": "Migration already recorded"
    },
    {
      "code": 6038,
      "name": "NotComplete",
      "msg": "The pump curve is not complete yet"
    },
    {
      "code": 6039,
      "name": "SeatKicked",
      "msg": "This seat was kicked"
    },
    {
      "code": 6040,
      "name": "SaleOpen",
      "msg": "This seat already has an open sale request"
    },
    {
      "code": 6041,
      "name": "NotEnoughLocked",
      "msg": "Not that many locked tokens in this seat"
    },
    {
      "code": 6042,
      "name": "OverDailyCap",
      "msg": "Over the crew's daily early-sale cap (all seats together, rolling 24 h)"
    },
    {
      "code": 6043,
      "name": "CannotApproveOwn",
      "msg": "You cannot vote on your own request"
    },
    {
      "code": 6044,
      "name": "StaleProposal",
      "msg": "The request changed or is closed: reload it"
    },
    {
      "code": 6045,
      "name": "ProposalExpired",
      "msg": "This request expired"
    },
    {
      "code": 6046,
      "name": "NotRequired",
      "msg": "Your approval is not needed for this request"
    },
    {
      "code": 6047,
      "name": "AlreadyApproved",
      "msg": "Already approved"
    },
    {
      "code": 6048,
      "name": "NoticeRunning",
      "msg": "The public notice is still running"
    },
    {
      "code": 6049,
      "name": "NotApproved",
      "msg": "Not every other active member approved yet"
    },
    {
      "code": 6050,
      "name": "SlippageExceeded",
      "msg": "Received less SOL / tokens than the minimum"
    },
    {
      "code": 6051,
      "name": "Migrating",
      "msg": "The coin is migrating to PumpSwap: pass the PumpSwap accounts, or try again shortly"
    },
    {
      "code": 6052,
      "name": "TooFewMembers",
      "msg": "A crew keeps at least 2 active members: this kick would leave fewer"
    },
    {
      "code": 6053,
      "name": "MotionOpen",
      "msg": "A kick or rotation for this seat is already open"
    },
    {
      "code": 6054,
      "name": "DelayRunning",
      "msg": "The delay is still running"
    },
    {
      "code": 6055,
      "name": "NoPrice",
      "msg": "No price"
    },
    {
      "code": 6056,
      "name": "ObserveTooSoon",
      "msg": "Too soon: one price observation per minute"
    },
    {
      "code": 6057,
      "name": "NoFreshPrice",
      "msg": "Not enough fresh price observations for a safe buyback"
    },
    {
      "code": 6058,
      "name": "BuybackTooSoon",
      "msg": "Too soon for another buyback"
    },
    {
      "code": 6059,
      "name": "ChestTooSmall",
      "msg": "The chest is too small for a buyback"
    },
    {
      "code": 6060,
      "name": "BelowRentFloor",
      "msg": "Amount below the rent floor of an empty wallet: fund the wallet first"
    },
    {
      "code": 6061,
      "name": "Math",
      "msg": "Math overflow"
    },
    {
      "code": 6062,
      "name": "VenueRent",
      "msg": "PumpSwap asked the team vault to pay account rent: create PumpSwap's fee token accounts first (the site does this)"
    },
    {
      "code": 6063,
      "name": "SeatActive",
      "msg": "This seat's wallet was active recently: the others can rotate it only after the idle period (a veto restarts it)"
    },
    {
      "code": 6064,
      "name": "KickBeforeCliff",
      "msg": "Before the cliff a kick burns a whole bag: it needs at least 4 active members, all others approving"
    }
  ],
  "types": [
    {
      "name": "Accepted",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "seat",
            "type": "u8"
          },
          {
            "name": "member",
            "type": "pubkey"
          },
          {
            "name": "accepts",
            "type": "u8"
          },
          {
            "name": "all",
            "type": "bool"
          },
          {
            "name": "table_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          }
        ]
      }
    },
    {
      "name": "AdminAccepted",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "AdminProposed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          },
          {
            "name": "proposed",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "BuybackBurned",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "spend",
            "type": "u64"
          },
          {
            "name": "lamports_out",
            "type": "u64"
          },
          {
            "name": "tokens_burned",
            "type": "u64"
          },
          {
            "name": "tokens_bought",
            "type": "u64"
          },
          {
            "name": "min_out",
            "type": "u64"
          },
          {
            "name": "median_q9",
            "type": "u64"
          },
          {
            "name": "venue",
            "type": "u8"
          },
          {
            "name": "chest_left",
            "type": "u64"
          },
          {
            "name": "burned_total",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Config",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          },
          {
            "name": "pending_admin",
            "type": "pubkey"
          },
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "paused",
            "type": "bool"
          },
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "syndicates",
            "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": "Disbanded",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "by",
            "type": "pubkey"
          },
          {
            "name": "by_lead",
            "type": "bool"
          },
          {
            "name": "refundable",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Evicted",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "seat",
            "type": "u8"
          },
          {
            "name": "member",
            "type": "pubkey"
          },
          {
            "name": "refunded",
            "type": "u64"
          },
          {
            "name": "total_deposit",
            "type": "u64"
          },
          {
            "name": "table_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          }
        ]
      }
    },
    {
      "name": "FeesClaimed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "seat",
            "type": "u8"
          },
          {
            "name": "member",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "paid_total",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "FeesCollected",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "FeesSynced",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "incoming",
            "type": "u64"
          },
          {
            "name": "crew",
            "type": "u64"
          },
          {
            "name": "chest",
            "type": "u64"
          },
          {
            "name": "treasury",
            "type": "u64"
          },
          {
            "name": "per_seat",
            "type": {
              "array": [
                "u64",
                5
              ]
            }
          },
          {
            "name": "fees_total",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "FeesUnwrapped",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Formed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "id",
            "type": "u64"
          },
          {
            "name": "lead",
            "type": "pubkey"
          },
          {
            "name": "lead_seat",
            "type": "u8"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "symbol",
            "type": "string"
          },
          {
            "name": "uri",
            "type": "string"
          },
          {
            "name": "charter_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "n_seats",
            "type": "u8"
          },
          {
            "name": "members",
            "type": {
              "array": [
                "pubkey",
                5
              ]
            }
          },
          {
            "name": "roles",
            "type": {
              "array": [
                "u8",
                5
              ]
            }
          },
          {
            "name": "work_bps",
            "type": {
              "array": [
                "u16",
                5
              ]
            }
          },
          {
            "name": "deposit",
            "type": "u64"
          },
          {
            "name": "deadline",
            "type": "i64"
          },
          {
            "name": "table_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          }
        ]
      }
    },
    {
      "name": "Joined",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "seat",
            "type": "u8"
          },
          {
            "name": "member",
            "type": "pubkey"
          },
          {
            "name": "deposit",
            "type": "u64"
          },
          {
            "name": "total_deposit",
            "type": "u64"
          },
          {
            "name": "filled",
            "type": "u8"
          },
          {
            "name": "n_seats",
            "type": "u8"
          },
          {
            "name": "table_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          }
        ]
      }
    },
    {
      "name": "KickApproved",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "target",
            "type": "u8"
          },
          {
            "name": "nonce",
            "type": "u32"
          },
          {
            "name": "by",
            "type": "u8"
          },
          {
            "name": "approvals",
            "type": "u8"
          },
          {
            "name": "required",
            "type": "u8"
          },
          {
            "name": "complete",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "KickClosed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "target",
            "type": "u8"
          },
          {
            "name": "nonce",
            "type": "u32"
          },
          {
            "name": "by",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "KickProposed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "target",
            "type": "u8"
          },
          {
            "name": "member",
            "type": "pubkey"
          },
          {
            "name": "nonce",
            "type": "u32"
          },
          {
            "name": "by",
            "type": "u8"
          },
          {
            "name": "required",
            "type": "u8"
          },
          {
            "name": "executable_at",
            "type": "i64"
          },
          {
            "name": "expires_at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Kicked",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "target",
            "type": "u8"
          },
          {
            "name": "member",
            "type": "pubkey"
          },
          {
            "name": "nonce",
            "type": "u32"
          },
          {
            "name": "burned",
            "type": "u64"
          },
          {
            "name": "kept_vested",
            "type": "u64"
          },
          {
            "name": "claimable",
            "type": "u64"
          },
          {
            "name": "active_left",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "Launched",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "id",
            "type": "u64"
          },
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "symbol",
            "type": "string"
          },
          {
            "name": "uri",
            "type": "string"
          },
          {
            "name": "total_deposit",
            "type": "u64"
          },
          {
            "name": "launch_fee",
            "type": "u64"
          },
          {
            "name": "spent",
            "type": "u64"
          },
          {
            "name": "tokens_bought",
            "type": "u64"
          },
          {
            "name": "leftover",
            "type": "u64"
          },
          {
            "name": "members",
            "type": {
              "array": [
                "pubkey",
                5
              ]
            }
          },
          {
            "name": "tokens",
            "type": {
              "array": [
                "u64",
                5
              ]
            }
          },
          {
            "name": "cliff_ends",
            "type": "i64"
          },
          {
            "name": "vest_ends",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Left",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "seat",
            "type": "u8"
          },
          {
            "name": "member",
            "type": "pubkey"
          },
          {
            "name": "refunded",
            "type": "u64"
          },
          {
            "name": "total_deposit",
            "type": "u64"
          },
          {
            "name": "table_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          }
        ]
      }
    },
    {
      "name": "LeftoverClaimed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "seat",
            "type": "u8"
          },
          {
            "name": "member",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "MigrationMarked",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "ts",
            "type": "i64"
          },
          {
            "name": "unlock_bps",
            "type": "u16"
          }
        ]
      }
    },
    {
      "name": "Motion",
      "docs": [
        "An open request on a seat (early sale, kick or rotation). `required` = the seats whose approval it needs",
        "(every other active seat at proposal time; seats kicked since then drop out), `approvals` = who approved."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "active",
            "type": "bool"
          },
          {
            "name": "nonce",
            "type": "u32"
          },
          {
            "name": "created_at",
            "type": "i64"
          },
          {
            "name": "approvals",
            "type": "u8"
          },
          {
            "name": "required",
            "type": "u8"
          },
          {
            "name": "proposer",
            "type": "u8"
          },
          {
            "name": "amount",
            "docs": [
              "Sale: tokens to sell."
            ],
            "type": "u64"
          },
          {
            "name": "wallet",
            "docs": [
              "Rotation: the new wallet."
            ],
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "Obs",
      "docs": [
        "Observation ring kept by each program in its own `[\"obs\", mint]` account (16 slots). A program appends at most one",
        "observation per `min_gap` seconds (permissionless `observe`), so one flash candle moves at most one slot."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "ts",
            "type": "i64"
          },
          {
            "name": "price_q9",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Observed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "ts",
            "type": "i64"
          },
          {
            "name": "price_q9",
            "type": "u64"
          },
          {
            "name": "on_curve",
            "type": "bool"
          },
          {
            "name": "count",
            "type": "u8"
          },
          {
            "name": "median_q9",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Params",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "seats_min",
            "docs": [
              "Seats per syndicate: 3 <= seats_min <= seats_max <= 5."
            ],
            "type": "u8"
          },
          {
            "name": "seats_max",
            "type": "u8"
          },
          {
            "name": "seed_min",
            "docs": [
              "Seed per seat, lamports (default 0.2 .. 10 SOL; bounds: min 0.05..1 SOL, max <= 15 SOL)."
            ],
            "type": "u64"
          },
          {
            "name": "seed_max",
            "type": "u64"
          },
          {
            "name": "form_window_secs",
            "docs": [
              "Forming window from `form` (default 24 h; 1 h .. 7 d)."
            ],
            "type": "i64"
          },
          {
            "name": "cliff_secs",
            "docs": [
              "Vesting: nothing before the cliff (default 7 d; 1 d .. 90 d), then linear over vest (60 d; 7 d .. 365 d)."
            ],
            "type": "i64"
          },
          {
            "name": "vest_secs",
            "type": "i64"
          },
          {
            "name": "migration_unlock_bps",
            "docs": [
              "Share of each seat unlocked when the curve completes (default 2500; <= 5000)."
            ],
            "type": "u16"
          },
          {
            "name": "sale_notice_secs",
            "docs": [
              "Early sale: public notice from the proposal (default 12 h; 1 h .. 7 d)."
            ],
            "type": "i64"
          },
          {
            "name": "exec_window_secs",
            "docs": [
              "Time to execute an approved sale / kick / rotation after its notice or delay (default 48 h; 1 h .. 7 d)."
            ],
            "type": "i64"
          },
          {
            "name": "max_sale_bps_per_day",
            "docs": [
              "Early sales of the whole crew (all seats together, S-L1) in any rolling 24 h, bps of the supply",
              "(default 100 = 1 %; 1 .. 500)."
            ],
            "type": "u16"
          },
          {
            "name": "kick_delay_secs",
            "docs": [
              "Delay of a kick / a wallet rotation from its proposal (default 72 h; 24 h .. 14 d)."
            ],
            "type": "i64"
          },
          {
            "name": "rotate_delay_secs",
            "type": "i64"
          },
          {
            "name": "crew_bps",
            "docs": [
              "Creator fee split, sum 10000: crew (>= 5000) / chest (<= 3000) / treasury (<= 2000). Default 8000/1000/1000."
            ],
            "type": "u16"
          },
          {
            "name": "chest_bps",
            "type": "u16"
          },
          {
            "name": "treasury_bps",
            "type": "u16"
          },
          {
            "name": "launch_fee_bps",
            "docs": [
              "Launch fee in bps of the total seed deployed (default 250; <= 500)."
            ],
            "type": "u16"
          },
          {
            "name": "buyback_interval_secs",
            "docs": [
              "Chest buyback: at most once per interval (default 1 h; 10 min .. 1 d), buyback_bps of the chest per call",
              "(default 1000; 100 .. 5000), slippage vs the median price on top of the 1.25 % fee (default 300; 50 .. 1500)."
            ],
            "type": "i64"
          },
          {
            "name": "buyback_bps",
            "type": "u16"
          },
          {
            "name": "buyback_slippage_bps",
            "type": "u16"
          },
          {
            "name": "rotate_idle_secs",
            "docs": [
              "S-M1: the others can rotate a seat only after its wallet signed nothing for this long (default 30 d;",
              "7 d .. 365 d)."
            ],
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "PausedSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "paused",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "Pinged",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "seat",
            "type": "u8"
          },
          {
            "name": "member",
            "type": "pubkey"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Refunded",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "seat",
            "type": "u8"
          },
          {
            "name": "member",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "RotateApproved",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "target",
            "type": "u8"
          },
          {
            "name": "nonce",
            "type": "u32"
          },
          {
            "name": "by",
            "type": "u8"
          },
          {
            "name": "approvals",
            "type": "u8"
          },
          {
            "name": "required",
            "type": "u8"
          },
          {
            "name": "complete",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "RotateClosed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "target",
            "type": "u8"
          },
          {
            "name": "nonce",
            "type": "u32"
          },
          {
            "name": "by",
            "type": "u8"
          },
          {
            "name": "vetoed",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "RotateProposed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "target",
            "type": "u8"
          },
          {
            "name": "old_wallet",
            "type": "pubkey"
          },
          {
            "name": "new_wallet",
            "type": "pubkey"
          },
          {
            "name": "nonce",
            "type": "u32"
          },
          {
            "name": "by",
            "type": "u8"
          },
          {
            "name": "required",
            "type": "u8"
          },
          {
            "name": "executable_at",
            "type": "i64"
          },
          {
            "name": "expires_at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Rotated",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "target",
            "type": "u8"
          },
          {
            "name": "nonce",
            "type": "u32"
          },
          {
            "name": "old_wallet",
            "type": "pubkey"
          },
          {
            "name": "new_wallet",
            "type": "pubkey"
          },
          {
            "name": "fees_paid_old",
            "docs": [
              "S-M1 settlement paid to the old wallet at the switch."
            ],
            "type": "u64"
          },
          {
            "name": "leftover_paid_old",
            "type": "u64"
          },
          {
            "name": "tokens_to_old",
            "type": "u64"
          },
          {
            "name": "synced",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "SaleApproved",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "seat",
            "type": "u8"
          },
          {
            "name": "nonce",
            "type": "u32"
          },
          {
            "name": "by",
            "type": "u8"
          },
          {
            "name": "approvals",
            "type": "u8"
          },
          {
            "name": "required",
            "type": "u8"
          },
          {
            "name": "complete",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "SaleClosed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "seat",
            "type": "u8"
          },
          {
            "name": "nonce",
            "type": "u32"
          },
          {
            "name": "by",
            "type": "u8"
          },
          {
            "name": "reason",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "SaleExecuted",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "seat",
            "type": "u8"
          },
          {
            "name": "member",
            "type": "pubkey"
          },
          {
            "name": "nonce",
            "type": "u32"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "sol_out",
            "type": "u64"
          },
          {
            "name": "venue",
            "type": "u8"
          },
          {
            "name": "sold_total",
            "type": "u64"
          },
          {
            "name": "escrow_left",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "SaleLog",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "ts",
            "type": "i64"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "SaleProposed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "seat",
            "type": "u8"
          },
          {
            "name": "member",
            "type": "pubkey"
          },
          {
            "name": "nonce",
            "type": "u32"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "required",
            "type": "u8"
          },
          {
            "name": "daily_cap",
            "type": "u64"
          },
          {
            "name": "executable_at",
            "type": "i64"
          },
          {
            "name": "expires_at",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Seat",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "role",
            "type": "u8"
          },
          {
            "name": "label",
            "type": {
              "array": [
                "u8",
                16
              ]
            }
          },
          {
            "name": "member",
            "docs": [
              "Pubkey::default() = open and unfunded."
            ],
            "type": "pubkey"
          },
          {
            "name": "open",
            "docs": [
              "Opened as an open seat (reopens when its member leaves before launch)."
            ],
            "type": "bool"
          },
          {
            "name": "work_bps",
            "type": "u16"
          },
          {
            "name": "deposit",
            "docs": [
              "Seed lamports (0 = unfunded)."
            ],
            "type": "u64"
          },
          {
            "name": "refunded",
            "type": "bool"
          },
          {
            "name": "tokens",
            "docs": [
              "Allocation at launch: tokens_bought x (deposit share + work share) / 2."
            ],
            "type": "u64"
          },
          {
            "name": "released",
            "docs": [
              "Tokens sent to the member's wallet (claim_vested), sold early by the program, burned at a kick."
            ],
            "type": "u64"
          },
          {
            "name": "sold",
            "type": "u64"
          },
          {
            "name": "burned",
            "type": "u64"
          },
          {
            "name": "sold_lamports",
            "docs": [
              "Lamports the member got from early sales."
            ],
            "type": "u64"
          },
          {
            "name": "kicked",
            "type": "bool"
          },
          {
            "name": "kicked_at",
            "type": "i64"
          },
          {
            "name": "vest_frozen",
            "docs": [
              "Kicked seats: what the seat had unlocked at the kick (its entitlement is frozen there)."
            ],
            "type": "u64"
          },
          {
            "name": "fees_booked",
            "type": "u64"
          },
          {
            "name": "fees_paid",
            "type": "u64"
          },
          {
            "name": "leftover",
            "docs": [
              "Launch leftover (unused rent margin) booked for this seat by deposit."
            ],
            "type": "u64"
          },
          {
            "name": "leftover_paid",
            "type": "bool"
          },
          {
            "name": "sale",
            "type": {
              "defined": {
                "name": "Motion"
              }
            }
          },
          {
            "name": "kick",
            "type": {
              "defined": {
                "name": "Motion"
              }
            }
          },
          {
            "name": "rotate",
            "type": {
              "defined": {
                "name": "Motion"
              }
            }
          },
          {
            "name": "sale_log",
            "type": {
              "array": [
                {
                  "defined": {
                    "name": "SaleLog"
                  }
                },
                4
              ]
            }
          },
          {
            "name": "last_active",
            "docs": [
              "Last signed action of the seat's wallet (launch, votes, proposals, sales, post_update, ping): S-M1 idle clock."
            ],
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "SeatInput",
      "docs": [
        "One seat of the table as the lead writes it. member == default: open seat."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "role",
            "type": "u8"
          },
          {
            "name": "label",
            "type": {
              "array": [
                "u8",
                16
              ]
            }
          },
          {
            "name": "member",
            "type": "pubkey"
          },
          {
            "name": "work_bps",
            "type": "u16"
          }
        ]
      }
    },
    {
      "name": "Syndicate",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "id",
            "type": "u64"
          },
          {
            "name": "lead",
            "docs": [
              "The wallet that formed it; before launch only it can edit the table or disband early."
            ],
            "type": "pubkey"
          },
          {
            "name": "lead_seat",
            "type": "u8"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "symbol",
            "type": "string"
          },
          {
            "name": "uri",
            "type": "string"
          },
          {
            "name": "charter_hash",
            "docs": [
              "sha256 of the charter text (the site keeps the text in the uri JSON)."
            ],
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "state",
            "type": "u8"
          },
          {
            "name": "n_seats",
            "type": "u8"
          },
          {
            "name": "seats",
            "docs": [
              "Always MAX_SEATS entries (heap Vec: a [Seat; 5] array overflows the 4 KB SBF stack frame when",
              "deserialized); seats >= n_seats are unused defaults."
            ],
            "type": {
              "vec": {
                "defined": {
                  "name": "Seat"
                }
              }
            }
          },
          {
            "name": "accepts",
            "docs": [
              "Bit i = seat i accepted the current table_hash."
            ],
            "type": "u8"
          },
          {
            "name": "table_version",
            "type": "u32"
          },
          {
            "name": "table_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "formed_at",
            "type": "i64"
          },
          {
            "name": "deadline",
            "type": "i64"
          },
          {
            "name": "total_deposit",
            "type": "u64"
          },
          {
            "name": "launched_at",
            "type": "i64"
          },
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "launch_fee",
            "type": "u64"
          },
          {
            "name": "spent",
            "docs": [
              "Lamports offered to pump for the team bag, tokens it bought, launch leftover booked to seats."
            ],
            "type": "u64"
          },
          {
            "name": "tokens_bought",
            "type": "u64"
          },
          {
            "name": "leftover_total",
            "type": "u64"
          },
          {
            "name": "migrated_at",
            "docs": [
              "When the curve was seen complete (0 = not yet): migration_unlock_bps unlocks."
            ],
            "type": "i64"
          },
          {
            "name": "fees_total",
            "type": "u64"
          },
          {
            "name": "treasury_booked",
            "type": "u64"
          },
          {
            "name": "treasury_paid",
            "type": "u64"
          },
          {
            "name": "chest_in",
            "docs": [
              "Lamports booked into the Chest by sync_fees / spent by buybacks (lamport delta incl. rents); tokens burned."
            ],
            "type": "u64"
          },
          {
            "name": "chest_out",
            "type": "u64"
          },
          {
            "name": "chest_burned",
            "type": "u64"
          },
          {
            "name": "last_buyback",
            "type": "i64"
          },
          {
            "name": "buybacks",
            "type": "u32"
          },
          {
            "name": "obs",
            "type": {
              "array": [
                {
                  "defined": {
                    "name": "Obs"
                  }
                },
                16
              ]
            }
          },
          {
            "name": "obs_head",
            "type": "u8"
          },
          {
            "name": "obs_count",
            "type": "u8"
          },
          {
            "name": "bump",
            "type": "u8"
          },
          {
            "name": "vault_bump",
            "type": "u8"
          },
          {
            "name": "fees_bump",
            "type": "u8"
          },
          {
            "name": "chest_bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "TableSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "n_seats",
            "type": "u8"
          },
          {
            "name": "members",
            "type": {
              "array": [
                "pubkey",
                5
              ]
            }
          },
          {
            "name": "roles",
            "type": {
              "array": [
                "u8",
                5
              ]
            }
          },
          {
            "name": "work_bps",
            "type": {
              "array": [
                "u16",
                5
              ]
            }
          },
          {
            "name": "version",
            "type": "u32"
          },
          {
            "name": "table_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          }
        ]
      }
    },
    {
      "name": "TreasuryCollected",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "TreasurySet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "treasury",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "UpdatePosted",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "seat",
            "type": "u8"
          },
          {
            "name": "member",
            "type": "pubkey"
          },
          {
            "name": "role",
            "type": "u8"
          },
          {
            "name": "label",
            "type": {
              "array": [
                "u8",
                16
              ]
            }
          },
          {
            "name": "uri",
            "type": "string"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "VestedClaimed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "syndicate",
            "type": "pubkey"
          },
          {
            "name": "seat",
            "type": "u8"
          },
          {
            "name": "member",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "released",
            "type": "u64"
          },
          {
            "name": "unlocked",
            "type": "u64"
          },
          {
            "name": "escrow_left",
            "type": "u64"
          }
        ]
      }
    }
  ]
}