{
  "address": "dapauKGPuEfoSqybB2EeDr86JntUXeQmtEJGrX4YCgu",
  "metadata": {
    "name": "launchdap",
    "version": "0.1.0",
    "spec": "0.1.0",
    "description": "Launchdap: buyers first, coin second, dev last"
  },
  "instructions": [
    {
      "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": [
        "A queue member collects their share of creator fees while they still hold at least half of what",
        "they were given."
      ],
      "discriminator": [
        82,
        251,
        233,
        156,
        12,
        52,
        184,
        202
      ],
      "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": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "round"
              }
            ]
          }
        },
        {
          "name": "wallet_ata"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "claim_tokens",
      "docs": [
        "Anyone (payer covers the token account rent): sends a queue member their share of the bought tokens."
      ],
      "discriminator": [
        108,
        216,
        210,
        231,
        0,
        212,
        42,
        64
      ],
      "accounts": [
        {
          "name": "payer",
          "writable": true,
          "signer": true
        },
        {
          "name": "round"
        },
        {
          "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",
          "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"
        },
        {
          "name": "token_program"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "collect_treasury",
      "docs": [
        "Anyone: moves a round's treasury share to the treasury wallet ($DAP 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",
      "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": "name",
          "type": "string"
        },
        {
          "name": "symbol",
          "type": "string"
        },
        {
          "name": "uri",
          "type": "string"
        }
      ]
    },
    {
      "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": "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": "p",
          "type": {
            "defined": {
              "name": "ConfigParams"
            }
          }
        }
      ]
    },
    {
      "name": "kick",
      "docs": [
        "Anyone: removes a queue member from fee sharing when their wallet holds less than half of what they",
        "were given, or when they never claimed their tokens within KICK_GRACE. Their unclaimed fees go to",
        "everyone who is still in."
      ],
      "discriminator": [
        184,
        92,
        149,
        185,
        62,
        150,
        19,
        210
      ],
      "accounts": [
        {
          "name": "round",
          "writable": true
        },
        {
          "name": "pledge",
          "writable": true
        },
        {
          "name": "wallet_ata"
        }
      ],
      "args": []
    },
    {
      "name": "launch",
      "docs": [
        "Anyone, after the window. Below the minimum the round fails (refunds). Otherwise the program creates",
        "the coin on pump.fun and buys with the whole pool in this same instruction.",
        "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 queue 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": "sync_fees",
      "docs": [
        "Anyone: books every lamport that arrived on the fees PDA since the last sync and splits it."
      ],
      "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": "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": "Kicked",
      "discriminator": [
        192,
        27,
        42,
        160,
        133,
        97,
        250,
        222
      ]
    },
    {
      "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": "TokensClaimed",
      "discriminator": [
        25,
        128,
        244,
        55,
        241,
        136,
        200,
        91
      ]
    },
    {
      "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": "NotOpen",
      "msg": "the queue is not open"
    },
    {
      "code": 6005,
      "name": "CreatorCannotPledge",
      "msg": "the round creator cannot join the queue"
    },
    {
      "code": 6006,
      "name": "PledgeSize",
      "msg": "pledge outside the allowed size"
    },
    {
      "code": 6007,
      "name": "RoundFull",
      "msg": "the round is full"
    },
    {
      "code": 6008,
      "name": "UnpledgeLocked",
      "msg": "pledges are locked in the last minutes"
    },
    {
      "code": 6009,
      "name": "NotClosable",
      "msg": "the round cannot be closed yet"
    },
    {
      "code": 6010,
      "name": "BadAccounts",
      "msg": "wrong accounts"
    },
    {
      "code": 6011,
      "name": "NothingBought",
      "msg": "the buy returned no tokens"
    },
    {
      "code": 6012,
      "name": "NotExpirable",
      "msg": "the round cannot be expired yet"
    },
    {
      "code": 6013,
      "name": "NotFailed",
      "msg": "the round did not fail"
    },
    {
      "code": 6014,
      "name": "NothingToRefund",
      "msg": "nothing to refund"
    },
    {
      "code": 6015,
      "name": "NotLaunched",
      "msg": "the round has not launched"
    },
    {
      "code": 6016,
      "name": "AlreadyClaimed",
      "msg": "already claimed"
    },
    {
      "code": 6017,
      "name": "Kicked",
      "msg": "removed from fee sharing"
    },
    {
      "code": 6018,
      "name": "ClaimTokensFirst",
      "msg": "claim your tokens first"
    },
    {
      "code": 6019,
      "name": "NotHolding",
      "msg": "hold at least half of your tokens to claim fees"
    },
    {
      "code": 6020,
      "name": "StillHolding",
      "msg": "this wallet still holds enough"
    },
    {
      "code": 6021,
      "name": "NothingToClaim",
      "msg": "nothing to claim"
    },
    {
      "code": 6022,
      "name": "BadConfig",
      "msg": "bad config"
    },
    {
      "code": 6023,
      "name": "Math",
      "msg": "math overflow"
    }
  ],
  "types": [
    {
      "name": "Config",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          },
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "min_total",
            "type": "u64"
          },
          {
            "name": "max_total",
            "type": "u64"
          },
          {
            "name": "min_pledge",
            "type": "u64"
          },
          {
            "name": "max_pledge",
            "type": "u64"
          },
          {
            "name": "window_secs",
            "type": "i64"
          },
          {
            "name": "unpledge_lock_secs",
            "type": "i64"
          },
          {
            "name": "fee_bps",
            "type": "u16"
          },
          {
            "name": "holder_bps",
            "type": "u16"
          },
          {
            "name": "dev_bps",
            "type": "u16"
          },
          {
            "name": "paused",
            "type": "bool"
          },
          {
            "name": "round_count",
            "type": "u64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "ConfigParams",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "min_total",
            "type": "u64"
          },
          {
            "name": "max_total",
            "type": "u64"
          },
          {
            "name": "min_pledge",
            "type": "u64"
          },
          {
            "name": "max_pledge",
            "type": "u64"
          },
          {
            "name": "window_secs",
            "type": "i64"
          },
          {
            "name": "unpledge_lock_secs",
            "type": "i64"
          },
          {
            "name": "fee_bps",
            "type": "u16"
          },
          {
            "name": "holder_bps",
            "type": "u16"
          },
          {
            "name": "dev_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": "Kicked",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "round",
            "type": "pubkey"
          },
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "forfeited",
            "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": "Pledge",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "round",
            "type": "pubkey"
          },
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "lamports",
            "type": "u64"
          },
          {
            "name": "refunded",
            "type": "bool"
          },
          {
            "name": "tokens_claimed",
            "type": "bool"
          },
          {
            "name": "allocation",
            "type": "u64"
          },
          {
            "name": "fee_debt",
            "type": "u128"
          },
          {
            "name": "fees_claimed",
            "type": "u64"
          },
          {
            "name": "kicked",
            "type": "bool"
          },
          {
            "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 copied from Config at creation, so a config change never alters a round",
        "people already 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": "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": "fee_bps",
            "type": "u16"
          },
          {
            "name": "holder_bps",
            "type": "u16"
          },
          {
            "name": "dev_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": "total_shares",
            "type": "u64"
          },
          {
            "name": "kicked",
            "type": "u32"
          },
          {
            "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": "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": "RoundFailed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "round",
            "type": "pubkey"
          },
          {
            "name": "total",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "TokensClaimed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "round",
            "type": "pubkey"
          },
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Unpledged",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "round",
            "type": "pubkey"
          },
          {
            "name": "wallet",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "total",
            "type": "u64"
          }
        ]
      }
    }
  ]
}