{
  "address": "TRiCK4UrTUiLjxm35hdBVm7DrmdcpGoschmWzPT8Fvw",
  "metadata": {
    "name": "trickle",
    "version": "0.1.0",
    "spec": "0.1.0",
    "description": "Trickle: a pledge pool launchpad whose tokens drip"
  },
  "instructions": [
    {
      "name": "claim",
      "docs": [
        "Anyone (the keeper pushes this for every member every 30 s): sends a member what has dripped since their",
        "last claim. If the member's wallet already holds less than was released to them while part of their share",
        "is still to land (also the last drop, after the timer), the member loses the rest instead and nothing is sent."
      ],
      "discriminator": [
        62,
        198,
        214,
        193,
        213,
        159,
        108,
        210
      ],
      "accounts": [
        {
          "name": "payer",
          "writable": true,
          "signer": true
        },
        {
          "name": "round",
          "writable": true
        },
        {
          "name": "pledge",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  108,
                  101,
                  100,
                  103,
                  101
                ]
              },
              {
                "kind": "account",
                "path": "round"
              },
              {
                "kind": "account",
                "path": "wallet"
              }
            ]
          }
        },
        {
          "name": "wallet"
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "round"
              }
            ]
          }
        },
        {
          "name": "vault_ata",
          "writable": true
        },
        {
          "name": "wallet_ata",
          "writable": true
        },
        {
          "name": "mint",
          "writable": true
        },
        {
          "name": "token_program"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "claim_dev_fees",
      "discriminator": [
        146,
        98,
        56,
        128,
        107,
        210,
        44,
        41
      ],
      "accounts": [
        {
          "name": "creator",
          "writable": true,
          "signer": true,
          "relations": [
            "round"
          ]
        },
        {
          "name": "round",
          "writable": true
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "round"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "claim_fees",
      "docs": [
        "Anyone, after the stream: pays a member who finished it their share of creator fees."
      ],
      "discriminator": [
        82,
        251,
        233,
        156,
        12,
        52,
        184,
        202
      ],
      "accounts": [
        {
          "name": "round",
          "writable": true
        },
        {
          "name": "pledge",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  108,
                  101,
                  100,
                  103,
                  101
                ]
              },
              {
                "kind": "account",
                "path": "round"
              },
              {
                "kind": "account",
                "path": "wallet"
              }
            ]
          }
        },
        {
          "name": "wallet",
          "writable": true
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "round"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "collect_treasury",
      "docs": [
        "Anyone: moves a round's treasury share to the treasury wallet ($TRICKLE buyback and burn)."
      ],
      "discriminator": [
        48,
        255,
        226,
        214,
        221,
        81,
        222,
        65
      ],
      "accounts": [
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "round",
          "writable": true
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "round"
              }
            ]
          }
        },
        {
          "name": "treasury",
          "writable": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "create_round",
      "docs": [
        "The creator picks every rule of the round here; nothing can change it afterwards."
      ],
      "discriminator": [
        229,
        218,
        236,
        169,
        231,
        80,
        134,
        112
      ],
      "accounts": [
        {
          "name": "creator",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "round",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  114,
                  111,
                  117,
                  110,
                  100
                ]
              },
              {
                "kind": "account",
                "path": "config.round_count",
                "account": "Config"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "p",
          "type": {
            "defined": {
              "name": "RoundParams"
            }
          }
        }
      ]
    },
    {
      "name": "expire",
      "docs": [
        "Anyone: a round that was never launched a day after its window fails, so nobody's SOL is stuck."
      ],
      "discriminator": [
        243,
        83,
        205,
        58,
        57,
        201,
        247,
        146
      ],
      "accounts": [
        {
          "name": "round",
          "writable": true
        }
      ],
      "args": []
    },
    {
      "name": "flag",
      "docs": [
        "Anyone, while part of a member's share is still to land: a member whose wallet holds less than what was",
        "already released to them loses the rest of their share (sold or moved counts the same)."
      ],
      "discriminator": [
        70,
        151,
        36,
        255,
        227,
        208,
        40,
        57
      ],
      "accounts": [
        {
          "name": "round",
          "writable": true
        },
        {
          "name": "pledge",
          "writable": true
        },
        {
          "name": "wallet_ata"
        },
        {
          "name": "vault",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "round"
              }
            ]
          }
        },
        {
          "name": "vault_ata",
          "writable": true
        },
        {
          "name": "mint",
          "writable": true
        },
        {
          "name": "token_program"
        }
      ],
      "args": []
    },
    {
      "name": "init_config",
      "docs": [
        "minute_secs is fixed for the life of the deployment (60 on mainnet; short only on a local test validator)."
      ],
      "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": "program_data",
          "docs": [
            "init_config: only its upgrade authority may create the config"
          ]
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "p",
          "type": {
            "defined": {
              "name": "ConfigParams"
            }
          }
        },
        {
          "name": "minute_secs",
          "type": "i64"
        }
      ]
    },
    {
      "name": "launch",
      "docs": [
        "Anyone, after the window. Below the minimum the round fails (refunds). Otherwise the program creates the",
        "coin on pump.fun, buys with the whole pool in this same instruction, and the stream starts now.",
        "remaining_accounts: pump create_v2 (16) | ATA create (7) | pump buy_exact_quote_in_v2 (27)."
      ],
      "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": "round",
          "writable": true
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "round"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "round"
              }
            ]
          }
        },
        {
          "name": "treasury",
          "writable": true
        },
        {
          "name": "mint",
          "docs": [
            "the new coin's mint keypair (pump creates it)"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "pledge",
      "discriminator": [
        235,
        47,
        156,
        254,
        0,
        88,
        212,
        142
      ],
      "accounts": [
        {
          "name": "wallet",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "round",
          "writable": true
        },
        {
          "name": "pledge",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  108,
                  101,
                  100,
                  103,
                  101
                ]
              },
              {
                "kind": "account",
                "path": "round"
              },
              {
                "kind": "account",
                "path": "wallet"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "round"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "refund",
      "docs": [
        "Anyone: a failed round pays a member back in full."
      ],
      "discriminator": [
        2,
        96,
        183,
        251,
        63,
        208,
        46,
        46
      ],
      "accounts": [
        {
          "name": "round",
          "writable": true
        },
        {
          "name": "pledge",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  108,
                  101,
                  100,
                  103,
                  101
                ]
              },
              {
                "kind": "account",
                "path": "round"
              },
              {
                "kind": "account",
                "path": "wallet"
              }
            ]
          }
        },
        {
          "name": "wallet",
          "writable": true
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "round"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "set_admin",
      "discriminator": [
        251,
        163,
        0,
        52,
        91,
        194,
        187,
        92
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "admin",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "sweep_vault",
      "docs": [
        "Anyone, once the fee window after the stream is over: what is left of the token-account reserve goes to",
        "the treasury (a late claim then pays its own token account)."
      ],
      "discriminator": [
        137,
        92,
        9,
        1,
        140,
        237,
        214,
        140
      ],
      "accounts": [
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "round"
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "round"
              }
            ]
          }
        },
        {
          "name": "treasury",
          "writable": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "sync_fees",
      "docs": [
        "Anyone: books every lamport that arrived on the fees PDA since the last sync and splits it:",
        "the creator's share / the $TRICKLE treasury / the members still in (finishers after the stream),",
        "the members' share going to the treasury once the seven-day window after the stream is over."
      ],
      "discriminator": [
        183,
        105,
        177,
        124,
        93,
        59,
        163,
        216
      ],
      "accounts": [
        {
          "name": "round",
          "writable": true
        },
        {
          "name": "fees",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "round"
              }
            ]
          }
        }
      ],
      "args": []
    },
    {
      "name": "unpledge",
      "discriminator": [
        11,
        52,
        88,
        109,
        20,
        88,
        239,
        50
      ],
      "accounts": [
        {
          "name": "wallet",
          "writable": true,
          "signer": true
        },
        {
          "name": "round",
          "writable": true
        },
        {
          "name": "pledge",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  108,
                  101,
                  100,
                  103,
                  101
                ]
              },
              {
                "kind": "account",
                "path": "round"
              },
              {
                "kind": "account",
                "path": "wallet"
              }
            ]
          }
        },
        {
          "name": "vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "round"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "unwrap_fees",
      "docs": [
        "Anyone: closes the fees PDA's WSOL account (PumpSwap pays creator fees in WSOL after migration)",
        "so the SOL lands on the fees PDA itself. Run sync_fees after it."
      ],
      "discriminator": [
        202,
        112,
        56,
        154,
        193,
        85,
        127,
        150
      ],
      "accounts": [
        {
          "name": "round"
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "round"
              }
            ]
          }
        },
        {
          "name": "wsol_ata",
          "writable": true
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        }
      ],
      "args": []
    },
    {
      "name": "update_config",
      "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": "p",
          "type": {
            "defined": {
              "name": "ConfigParams"
            }
          }
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "Config",
      "discriminator": [
        155,
        12,
        170,
        224,
        30,
        250,
        204,
        130
      ]
    },
    {
      "name": "Pledge",
      "discriminator": [
        161,
        197,
        121,
        46,
        99,
        75,
        169,
        131
      ]
    },
    {
      "name": "Round",
      "discriminator": [
        87,
        127,
        165,
        51,
        73,
        78,
        116,
        174
      ]
    }
  ],
  "events": [
    {
      "name": "Claimed",
      "discriminator": [
        217,
        192,
        123,
        72,
        108,
        150,
        248,
        33
      ]
    },
    {
      "name": "DevFeesClaimed",
      "discriminator": [
        31,
        40,
        18,
        11,
        243,
        101,
        75,
        23
      ]
    },
    {
      "name": "FeesClaimed",
      "discriminator": [
        22,
        104,
        110,
        222,
        38,
        157,
        14,
        62
      ]
    },
    {
      "name": "FeesSynced",
      "discriminator": [
        41,
        98,
        204,
        192,
        243,
        3,
        53,
        218
      ]
    },
    {
      "name": "Forfeited",
      "discriminator": [
        80,
        140,
        117,
        204,
        15,
        230,
        158,
        241
      ]
    },
    {
      "name": "Launched",
      "discriminator": [
        209,
        127,
        29,
        152,
        129,
        212,
        189,
        183
      ]
    },
    {
      "name": "Pledged",
      "discriminator": [
        98,
        154,
        68,
        227,
        24,
        48,
        26,
        16
      ]
    },
    {
      "name": "Refunded",
      "discriminator": [
        35,
        103,
        149,
        246,
        196,
        123,
        221,
        99
      ]
    },
    {
      "name": "RoundCreated",
      "discriminator": [
        16,
        19,
        68,
        117,
        87,
        198,
        7,
        124
      ]
    },
    {
      "name": "RoundFailed",
      "discriminator": [
        162,
        209,
        228,
        133,
        70,
        176,
        236,
        52
      ]
    },
    {
      "name": "Unpledged",
      "discriminator": [
        47,
        161,
        100,
        63,
        48,
        165,
        121,
        136
      ]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "Paused",
      "msg": "new rounds and pledges are paused"
    },
    {
      "code": 6001,
      "name": "BadName",
      "msg": "name must be 1-32 characters"
    },
    {
      "code": 6002,
      "name": "BadSymbol",
      "msg": "ticker must be 1-10 characters"
    },
    {
      "code": 6003,
      "name": "BadUri",
      "msg": "metadata uri must be https and at most 200 characters"
    },
    {
      "code": 6004,
      "name": "BadRule",
      "msg": "a round rule is outside the allowed values"
    },
    {
      "code": 6005,
      "name": "BadLimits",
      "msg": "pledge limits are outside the allowed range"
    },
    {
      "code": 6006,
      "name": "NotOpen",
      "msg": "the pool is not open"
    },
    {
      "code": 6007,
      "name": "CreatorCannotPledge",
      "msg": "the round creator cannot pledge"
    },
    {
      "code": 6008,
      "name": "PledgeSize",
      "msg": "pledge outside the allowed size"
    },
    {
      "code": 6009,
      "name": "RoundFull",
      "msg": "the pool is full"
    },
    {
      "code": 6010,
      "name": "UnpledgeLocked",
      "msg": "pledges are locked in the last minute"
    },
    {
      "code": 6011,
      "name": "NotClosable",
      "msg": "the round cannot be closed yet"
    },
    {
      "code": 6012,
      "name": "BadAccounts",
      "msg": "wrong accounts"
    },
    {
      "code": 6013,
      "name": "NothingBought",
      "msg": "the buy returned no tokens"
    },
    {
      "code": 6014,
      "name": "NotExpirable",
      "msg": "the round cannot be expired yet"
    },
    {
      "code": 6015,
      "name": "NotFailed",
      "msg": "the round did not fail"
    },
    {
      "code": 6016,
      "name": "NothingToRefund",
      "msg": "nothing to refund"
    },
    {
      "code": 6017,
      "name": "NotLaunched",
      "msg": "the round has not launched"
    },
    {
      "code": 6018,
      "name": "NotAuthority",
      "msg": "only the program's upgrade authority can create the config"
    },
    {
      "code": 6019,
      "name": "Forfeited",
      "msg": "this member lost their share"
    },
    {
      "code": 6020,
      "name": "StreamOver",
      "msg": "this member's whole share has landed"
    },
    {
      "code": 6021,
      "name": "StreamRunning",
      "msg": "the stream is still running"
    },
    {
      "code": 6022,
      "name": "RuleOff",
      "msg": "this round never takes a share away"
    },
    {
      "code": 6023,
      "name": "StillHolding",
      "msg": "this wallet still holds everything it was sent"
    },
    {
      "code": 6024,
      "name": "NothingToClaim",
      "msg": "nothing to claim"
    },
    {
      "code": 6025,
      "name": "BadConfig",
      "msg": "bad config"
    },
    {
      "code": 6026,
      "name": "Math",
      "msg": "math overflow"
    }
  ],
  "types": [
    {
      "name": "Claimed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "round",
            "type": "pubkey"
          },
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "released",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Config",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          },
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "min_pledge_floor",
            "type": "u64"
          },
          {
            "name": "max_pledge_cap",
            "type": "u64"
          },
          {
            "name": "min_total_floor",
            "type": "u64"
          },
          {
            "name": "max_total_cap",
            "type": "u64"
          },
          {
            "name": "treasury_bps",
            "type": "u16"
          },
          {
            "name": "paused",
            "type": "bool"
          },
          {
            "name": "minute_secs",
            "type": "i64"
          },
          {
            "name": "round_count",
            "type": "u64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "ConfigParams",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "min_pledge_floor",
            "type": "u64"
          },
          {
            "name": "max_pledge_cap",
            "type": "u64"
          },
          {
            "name": "min_total_floor",
            "type": "u64"
          },
          {
            "name": "max_total_cap",
            "type": "u64"
          },
          {
            "name": "treasury_bps",
            "type": "u16"
          },
          {
            "name": "paused",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "DevFeesClaimed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "round",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "FeesClaimed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "round",
            "type": "pubkey"
          },
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "FeesSynced",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "round",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "acc",
            "type": "u128"
          }
        ]
      }
    },
    {
      "name": "Forfeited",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "round",
            "type": "pubkey"
          },
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "lost",
            "type": "u64"
          },
          {
            "name": "burned",
            "type": "u64"
          },
          {
            "name": "released",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Launched",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "round",
            "type": "pubkey"
          },
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "spent",
            "type": "u64"
          },
          {
            "name": "tokens",
            "type": "u64"
          },
          {
            "name": "pledgers",
            "type": "u32"
          },
          {
            "name": "stream_end",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Pledge",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "round",
            "type": "pubkey"
          },
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "lamports",
            "type": "u64"
          },
          {
            "name": "refunded",
            "type": "bool"
          },
          {
            "name": "released",
            "docs": [
              "tokens already sent to the wallet"
            ],
            "type": "u64"
          },
          {
            "name": "ata_paid",
            "docs": [
              "the vault paid for this member's token account once; it never pays again (closing and reopening it",
              "cannot drain the reserve)"
            ],
            "type": "bool"
          },
          {
            "name": "forfeited",
            "type": "bool"
          },
          {
            "name": "lost",
            "docs": [
              "tokens this member lost"
            ],
            "type": "u64"
          },
          {
            "name": "fee_debt",
            "type": "u128"
          },
          {
            "name": "fees_claimed",
            "type": "u64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "Pledged",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "round",
            "type": "pubkey"
          },
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "total",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Refunded",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "round",
            "type": "pubkey"
          },
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Round",
      "docs": [
        "Every rule a round lives by is fixed at creation, so a config change never alters a round people pledged into."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "id",
            "type": "u64"
          },
          {
            "name": "creator",
            "type": "pubkey"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "symbol",
            "type": "string"
          },
          {
            "name": "uri",
            "type": "string"
          },
          {
            "name": "open_at",
            "type": "i64"
          },
          {
            "name": "close_at",
            "type": "i64"
          },
          {
            "name": "window_secs",
            "type": "i64"
          },
          {
            "name": "stream_secs",
            "type": "i64"
          },
          {
            "name": "step_secs",
            "type": "i64"
          },
          {
            "name": "shape",
            "type": "u8"
          },
          {
            "name": "rule",
            "type": "u8"
          },
          {
            "name": "min_total",
            "type": "u64"
          },
          {
            "name": "max_total",
            "type": "u64"
          },
          {
            "name": "min_pledge",
            "type": "u64"
          },
          {
            "name": "max_pledge",
            "type": "u64"
          },
          {
            "name": "unpledge_lock_secs",
            "type": "i64"
          },
          {
            "name": "dev_bps",
            "type": "u16"
          },
          {
            "name": "treasury_bps",
            "type": "u16"
          },
          {
            "name": "holder_bps",
            "type": "u16"
          },
          {
            "name": "state",
            "type": "u8"
          },
          {
            "name": "total_pledged",
            "type": "u64"
          },
          {
            "name": "pledgers",
            "type": "u32"
          },
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "tokens_bought",
            "type": "u64"
          },
          {
            "name": "spent",
            "type": "u64"
          },
          {
            "name": "launched_at",
            "type": "i64"
          },
          {
            "name": "stream_end",
            "type": "i64"
          },
          {
            "name": "alloc_q",
            "docs": [
              "tokens per pledged lamport, Q64; grows when a lost share flows to the members still in"
            ],
            "type": "u128"
          },
          {
            "name": "active_lamports",
            "docs": [
              "lamports of the members still in the stream (after it: the finishers)"
            ],
            "type": "u64"
          },
          {
            "name": "in_flow",
            "type": "u32"
          },
          {
            "name": "lost",
            "type": "u32"
          },
          {
            "name": "forfeited_tokens",
            "type": "u64"
          },
          {
            "name": "flowed",
            "type": "u64"
          },
          {
            "name": "burned",
            "type": "u64"
          },
          {
            "name": "released_total",
            "type": "u64"
          },
          {
            "name": "acc_fee_per_share",
            "type": "u128"
          },
          {
            "name": "fees_seen",
            "type": "u64"
          },
          {
            "name": "fees_total",
            "type": "u64"
          },
          {
            "name": "dev_pending",
            "type": "u64"
          },
          {
            "name": "treasury_pending",
            "type": "u64"
          },
          {
            "name": "treasury",
            "docs": [
              "where this round's treasury share goes, fixed at creation (a later config change cannot redirect it)"
            ],
            "type": "pubkey"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "RoundCreated",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "round",
            "type": "pubkey"
          },
          {
            "name": "id",
            "type": "u64"
          },
          {
            "name": "creator",
            "type": "pubkey"
          },
          {
            "name": "close_at",
            "type": "i64"
          },
          {
            "name": "stream_secs",
            "type": "i64"
          },
          {
            "name": "shape",
            "type": "u8"
          },
          {
            "name": "rule",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "RoundFailed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "round",
            "type": "pubkey"
          },
          {
            "name": "total",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "RoundParams",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "symbol",
            "type": "string"
          },
          {
            "name": "uri",
            "type": "string"
          },
          {
            "name": "window_minutes",
            "type": "u8"
          },
          {
            "name": "stream_minutes",
            "type": "u8"
          },
          {
            "name": "shape",
            "type": "u8"
          },
          {
            "name": "rule",
            "type": "u8"
          },
          {
            "name": "min_pledge",
            "type": "u64"
          },
          {
            "name": "max_pledge",
            "type": "u64"
          },
          {
            "name": "min_total",
            "type": "u64"
          },
          {
            "name": "max_total",
            "type": "u64"
          },
          {
            "name": "dev_bps",
            "type": "u16"
          }
        ]
      }
    },
    {
      "name": "Unpledged",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "round",
            "type": "pubkey"
          },
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "total",
            "type": "u64"
          }
        ]
      }
    }
  ]
}