{
  "address": "Web3JkB5arn8jU5ksefN2is5Pv4PYHQ8JfSFvH2HLdr",
  "metadata": {
    "name": "cobweb",
    "version": "0.1.0",
    "spec": "0.1.0",
    "description": "Cobweb Pad: pump.fun coins whose creator fees buy and burn $SPIDER, pay silk to patient holders by a smooth hold-time curve, and vibrate same-theme neighbours on big buys"
  },
  "instructions": [
    {
      "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
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "accept_attestor",
      "discriminator": [
        31,
        34,
        205,
        187,
        117,
        9,
        128,
        210
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "accept_guardian",
      "discriminator": [
        130,
        141,
        66,
        69,
        80,
        183,
        54,
        186
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "add_tag",
      "docs": [
        "Adds a theme tag (1..16 bytes of a-z 0-9 -). Tags are never removed or renamed (coins keep their tag index)."
      ],
      "discriminator": [
        104,
        103,
        92,
        4,
        25,
        211,
        151,
        90
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "name",
          "type": "string"
        }
      ]
    },
    {
      "name": "cancel_attestor",
      "discriminator": [
        78,
        201,
        235,
        133,
        100,
        67,
        117,
        171
      ],
      "accounts": [
        {
          "name": "signer",
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "cancel_guardian",
      "discriminator": [
        250,
        105,
        153,
        135,
        212,
        234,
        69,
        4
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "claim_dev",
      "docs": [
        "Pays the dev's booked share to coin.dev. Anyone can push it; it only goes to the dev."
      ],
      "discriminator": [
        67,
        144,
        21,
        238,
        28,
        66,
        170,
        208
      ],
      "accounts": [
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "dev",
          "writable": true,
          "relations": [
            "coin"
          ]
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "claim_silk",
      "docs": [
        "Anyone pays leaf `index` of a final root: `amount` lamports to `claimant`, once (bitmap), never beyond the root's",
        "total, never to the coin's dev (launch wallet). Leaf = crates/drop (index, claimant, amount)."
      ],
      "discriminator": [
        195,
        124,
        215,
        223,
        190,
        208,
        174,
        26
      ],
      "accounts": [
        {
          "name": "coin",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "silk",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  105,
                  108,
                  107
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              },
              {
                "kind": "account",
                "path": "silk.epoch",
                "account": "SilkEpoch"
              }
            ]
          }
        },
        {
          "name": "claimant",
          "writable": true
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "index",
          "type": "u32"
        },
        {
          "name": "amount",
          "type": "u64"
        },
        {
          "name": "proof",
          "type": {
            "vec": {
              "array": [
                "u8",
                32
              ]
            }
          }
        }
      ]
    },
    {
      "name": "collect",
      "docs": [
        "Permissionless. Optional pump `collect_creator_fee` (remaining = [fees, creator_vault, system, event_authority,",
        "pump]) and optional unwrap of a WSOL account owned by the Fees PDA (PumpSwap creator fees collected as WSOL by",
        "anyone), then books every new lamport of the Fees PDA: dev / spider (moved to the SpiderPot now) / silk / vib /",
        "treasury; the spider leg takes the rounding dust. Updates the coin's epoch fee ring."
      ],
      "discriminator": [
        208,
        47,
        194,
        155,
        17,
        98,
        82,
        236
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "spider_pot",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  112,
                  105,
                  100,
                  101,
                  114
                ]
              }
            ]
          }
        },
        {
          "name": "wsol",
          "writable": true,
          "optional": true
        },
        {
          "name": "spl_token",
          "optional": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "collect_treasury",
      "docs": [
        "Pays the treasury's booked share to config.treasury. Anyone."
      ],
      "discriminator": [
        48,
        255,
        226,
        214,
        221,
        81,
        222,
        65
      ],
      "accounts": [
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "treasury",
          "writable": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "expire_silk",
      "docs": [
        "Permissionless: a SilkEpoch whose claims are over (final + claim_window), or that never got a final root before",
        "its post deadline, closes: the unclaimed silk goes back into the coin's silk_open (it pays the next epochs'",
        "holders), the bitmap rent to the poster, the base rent to the opener."
      ],
      "discriminator": [
        42,
        22,
        91,
        80,
        195,
        25,
        198,
        47
      ],
      "accounts": [
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "silk",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  105,
                  108,
                  107
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              },
              {
                "kind": "account",
                "path": "silk.epoch",
                "account": "SilkEpoch"
              }
            ]
          }
        },
        {
          "name": "opener",
          "writable": true
        },
        {
          "name": "poster",
          "writable": true
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "feed_spider",
      "docs": [
        "Permissionless, alone in its transaction: the SpiderPot buys $SPIDER on its venue (pump curve or canonical",
        "PumpSwap pool) under the price guard and BURNS everything bought. spend = min(pot, spider_max_buy, impact cap,",
        "curve completion cost); `max_spend` > 0 only refuses a bigger buy (MaxSpendTooLow), it never shrinks it. The caller lends HEADROOM and gets back what rents did not use.",
        "remaining = pump buy accounts (user = Web, associated_user = Web's ATA) or PumpSwap buy accounts (user = Web,",
        "user_base = Web's ATA, user_quote = Web's WSOL ATA)."
      ],
      "discriminator": [
        250,
        1,
        183,
        8,
        174,
        215,
        145,
        125
      ],
      "accounts": [
        {
          "name": "caller",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "spider_pot",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  112,
                  105,
                  100,
                  101,
                  114
                ]
              }
            ]
          }
        },
        {
          "name": "web",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  119,
                  101,
                  98
                ]
              }
            ]
          }
        },
        {
          "name": "market",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  97,
                  114,
                  107,
                  101,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "mint",
          "writable": true
        },
        {
          "name": "curve"
        },
        {
          "name": "web_ata",
          "writable": true
        },
        {
          "name": "web_wsol",
          "writable": true
        },
        {
          "name": "instructions",
          "address": "Sysvar1nstructions1111111111111111111111111"
        },
        {
          "name": "token_program"
        },
        {
          "name": "spl_token",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "max_spend",
          "type": "u64"
        }
      ]
    },
    {
      "name": "init_config",
      "docs": [
        "Creates the Config, funds the SpiderPot and Web rent floors. Only INIT_AUTHORITY."
      ],
      "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": "spider_pot",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  112,
                  105,
                  100,
                  101,
                  114
                ]
              }
            ]
          }
        },
        {
          "name": "web",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  119,
                  101,
                  98
                ]
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "treasury",
          "type": "pubkey"
        },
        {
          "name": "attestor",
          "type": "pubkey"
        },
        {
          "name": "guardian",
          "type": "pubkey"
        },
        {
          "name": "params",
          "type": {
            "defined": {
              "name": "Params"
            }
          }
        },
        {
          "name": "guard",
          "type": {
            "defined": {
              "name": "Guard"
            }
          }
        },
        {
          "name": "silk",
          "type": {
            "defined": {
              "name": "SilkRules"
            }
          }
        },
        {
          "name": "molt_marks",
          "type": {
            "array": [
              "u64",
              5
            ]
          }
        },
        {
          "name": "tags",
          "type": {
            "vec": "string"
          }
        }
      ]
    },
    {
      "name": "launch",
      "docs": [
        "Creates the pump coin (creator = Fees PDA), optional dev buy into the dev's ATA, the Coin and its Market.",
        "The fixed launch fee goes to the treasury. `expected` must equal the config params (the dev signs the exact",
        "fee split and fee). Alone in its transaction (only ComputeBudget / System next to it).",
        "remaining = pump create_v2 accounts (16) [+ pump buy accounts (16+) when dev_buy > 0]."
      ],
      "discriminator": [
        153,
        241,
        93,
        225,
        22,
        69,
        74,
        61
      ],
      "accounts": [
        {
          "name": "dev",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "market",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  97,
                  114,
                  107,
                  101,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "mint",
          "writable": true,
          "signer": true
        },
        {
          "name": "dev_ata",
          "writable": true
        },
        {
          "name": "treasury",
          "writable": true
        },
        {
          "name": "instructions",
          "address": "Sysvar1nstructions1111111111111111111111111"
        },
        {
          "name": "token_program"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "symbol",
          "type": "string"
        },
        {
          "name": "uri",
          "type": "string"
        },
        {
          "name": "tag",
          "type": "u8"
        },
        {
          "name": "dev_buy",
          "type": "u64"
        },
        {
          "name": "dev_min_out",
          "type": "u64"
        },
        {
          "name": "expected",
          "type": {
            "defined": {
              "name": "Params"
            }
          }
        }
      ]
    },
    {
      "name": "molt",
      "docs": [
        "Permissionless: the spider molts to every stage whose mark the $SPIDER median market cap (median of the newest 7",
        "fresh observations x current supply) has reached. Stage only goes up."
      ],
      "discriminator": [
        65,
        158,
        150,
        51,
        234,
        28,
        236,
        40
      ],
      "accounts": [
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "market",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  97,
                  114,
                  107,
                  101,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "mint"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "observe",
      "docs": [
        "Appends the mint's price (pump curve, or its canonical PumpSwap pool after migration) to its Market ring, at",
        "least OBS_MIN_GAP apart, clamped to +-10 % of the median of the newest 7. Only other observes may share the",
        "transaction. remaining = [curve] or [curve, pool, pool base ta, pool quote ta]."
      ],
      "discriminator": [
        204,
        78,
        178,
        115,
        194,
        147,
        65,
        74
      ],
      "accounts": [
        {
          "name": "market",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  97,
                  114,
                  107,
                  101,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "market.mint",
                "account": "Market"
              }
            ]
          }
        },
        {
          "name": "instructions",
          "address": "Sysvar1nstructions1111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "post_silk",
      "docs": [
        "The attestor's silk root for one SilkEpoch, carried by anyone (the poster, bound in the signed message, pays the",
        "claim bitmap's rent and gets it back at the close). The Ed25519 precompile instruction must sit right before this",
        "one (crates/sigcheck). Bounds: total <= the snapshotted amount, 1..=MAX_LEAVES leaves, before the post deadline,",
        "at most MAX_POSTS posts (a vetoed root can be replaced). Claims open after rules.veto_secs."
      ],
      "discriminator": [
        139,
        206,
        172,
        69,
        114,
        61,
        198,
        2
      ],
      "accounts": [
        {
          "name": "poster",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "silk",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  105,
                  108,
                  107
                ]
              },
              {
                "kind": "account",
                "path": "silk.mint",
                "account": "SilkEpoch"
              },
              {
                "kind": "account",
                "path": "silk.epoch",
                "account": "SilkEpoch"
              }
            ]
          }
        },
        {
          "name": "instructions",
          "address": "Sysvar1nstructions1111111111111111111111111"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "root",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        },
        {
          "name": "leaves",
          "type": "u32"
        },
        {
          "name": "total",
          "type": "u64"
        },
        {
          "name": "report_hash",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        }
      ]
    },
    {
      "name": "propose_admin",
      "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
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "proposed",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "propose_attestor",
      "docs": [
        "Attestor rotation, step 1 (admin): takes effect only after ROTATION_DELAY via `accept_attestor` (anyone); the",
        "guardian or the admin can cancel meanwhile (batch-5 fans M-1: a stolen admin key cannot swap the attestor at once)."
      ],
      "discriminator": [
        213,
        183,
        66,
        250,
        112,
        205,
        150,
        30
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "key",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "propose_guardian",
      "docs": [
        "Guardian rotation (admin proposes, anyone completes after ROTATION_DELAY; only the admin can cancel: the guardian",
        "cannot block its own replacement)."
      ],
      "discriminator": [
        39,
        11,
        248,
        174,
        73,
        240,
        0,
        211
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "key",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "set_molt_marks",
      "docs": [
        "Molt marks may change only for stages not reached yet; they stay strictly increasing (stage only goes up)."
      ],
      "discriminator": [
        63,
        174,
        3,
        3,
        45,
        61,
        9,
        61
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "marks",
          "type": {
            "array": [
              "u64",
              5
            ]
          }
        }
      ]
    },
    {
      "name": "set_pad_mint",
      "docs": [
        "Sets $SPIDER (a pump.fun coin: Token-2022, no freeze authority, pump bonding curve exists). Once, then frozen.",
        "Creates its Market (observation ring) unless it was launched here (then it already has one)."
      ],
      "discriminator": [
        234,
        142,
        132,
        83,
        102,
        138,
        83,
        154
      ],
      "accounts": [
        {
          "name": "admin",
          "writable": true,
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "mint"
        },
        {
          "name": "curve"
        },
        {
          "name": "market",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  97,
                  114,
                  107,
                  101,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "set_paused",
      "docs": [
        "Pause blocks new coins only. Collects, buys, snapshots, posts, claims, expiries keep working (a pause must never",
        "freeze money already in)."
      ],
      "discriminator": [
        91,
        60,
        125,
        192,
        176,
        225,
        166,
        218
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "paused",
          "type": "bool"
        }
      ]
    },
    {
      "name": "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
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "treasury",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "snapshot_silk",
      "docs": [
        "Permissionless: closes the coin's silk for the LATEST finished epoch (audit M-2). Takes the whole silk_open (>=",
        "rules.min_silk; a smaller bucket keeps accruing) into a new SilkEpoch account (the caller pays its rent, refunded",
        "at the close).",
        "Score window = [previous snapshot's to_ts (or launch), (epoch + 1) x epoch_secs). Epochs only move forward."
      ],
      "discriminator": [
        214,
        4,
        135,
        104,
        233,
        93,
        23,
        220
      ],
      "accounts": [
        {
          "name": "caller",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "silk",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  105,
                  108,
                  107
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              },
              {
                "kind": "arg",
                "path": "epoch"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "epoch",
          "type": "u64"
        }
      ]
    },
    {
      "name": "sync_migration",
      "docs": [
        "Permissionless: flips a coin to Migrated once its curve is complete and its canonical PumpSwap pool exists."
      ],
      "discriminator": [
        225,
        231,
        95,
        199,
        32,
        239,
        236,
        87
      ],
      "accounts": [
        {
          "name": "coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "curve"
        },
        {
          "name": "pool"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "update_config",
      "docs": [
        "New params for FUTURE coins (existing coins keep their copy), the global price guard (hard-bounded) and the silk",
        "rules for future snapshots (existing SilkEpochs keep their copy)."
      ],
      "discriminator": [
        29,
        158,
        252,
        191,
        10,
        83,
        219,
        99
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "params",
          "type": {
            "defined": {
              "name": "Params"
            }
          }
        },
        {
          "name": "guard",
          "type": {
            "defined": {
              "name": "Guard"
            }
          }
        },
        {
          "name": "silk",
          "type": {
            "defined": {
              "name": "SilkRules"
            }
          }
        }
      ]
    },
    {
      "name": "veto_silk",
      "docs": [
        "Guardian: vetoes a posted root inside its veto window (nobody could claim under it yet). The attestor may post a",
        "corrected one (MAX_POSTS); otherwise the silk rolls back at the post deadline."
      ],
      "discriminator": [
        105,
        173,
        73,
        30,
        230,
        218,
        27,
        128
      ],
      "accounts": [
        {
          "name": "guardian",
          "signer": true,
          "relations": [
            "config"
          ]
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "silk",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  115,
                  105,
                  108,
                  107
                ]
              },
              {
                "kind": "account",
                "path": "silk.mint",
                "account": "SilkEpoch"
              },
              {
                "kind": "account",
                "path": "silk.epoch",
                "account": "SilkEpoch"
              }
            ]
          }
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": []
    },
    {
      "name": "vibrate",
      "docs": [
        "A big buy on `src` (the attestor saw it: sha256 of its signature, its SOL, its time) vibrates the web: up to 3",
        "same-tag pad coins != src get one guarded buy each, from src's vibration bucket (<= min(bucket, vib_max), split",
        "evenly), and every token bought is burned. The Ed25519 precompile with the attestor's signature over",
        "`vib_message` must sit right before. Checks: trigger >= src's vib_min, fresh (<= 15 min, newer than the last",
        "trigger), src cooldown, distinct dsts, same tag, real pad coins, price guard per dst. `counts[i]` = number of",
        "venue accounts of neighbour i. remaining per neighbour: [Coin (w), Market (w), mint (w), curve, Web's ATA of the",
        "mint (w), venue accounts...] (pump buy: user = Web; PumpSwap buy: user = Web, user_quote = Web's WSOL ATA)."
      ],
      "discriminator": [
        155,
        35,
        49,
        114,
        234,
        125,
        237,
        214
      ],
      "accounts": [
        {
          "name": "caller",
          "writable": true,
          "signer": true
        },
        {
          "name": "config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              }
            ]
          }
        },
        {
          "name": "src_coin",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "src_coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "src_fees",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  102,
                  101,
                  101,
                  115
                ]
              },
              {
                "kind": "account",
                "path": "src_coin.mint",
                "account": "Coin"
              }
            ]
          }
        },
        {
          "name": "web",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  119,
                  101,
                  98
                ]
              }
            ]
          }
        },
        {
          "name": "web_wsol",
          "writable": true
        },
        {
          "name": "instructions",
          "address": "Sysvar1nstructions1111111111111111111111111"
        },
        {
          "name": "token_program"
        },
        {
          "name": "spl_token",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "ata_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "counts",
          "type": "bytes"
        },
        {
          "name": "trigger",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        },
        {
          "name": "trigger_lamports",
          "type": "u64"
        },
        {
          "name": "trigger_ts",
          "type": "i64"
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "Coin",
      "discriminator": [
        215,
        195,
        53,
        238,
        217,
        196,
        213,
        51
      ]
    },
    {
      "name": "Config",
      "discriminator": [
        155,
        12,
        170,
        224,
        30,
        250,
        204,
        130
      ]
    },
    {
      "name": "Market",
      "discriminator": [
        219,
        190,
        213,
        55,
        0,
        227,
        198,
        154
      ]
    },
    {
      "name": "SilkEpoch",
      "discriminator": [
        240,
        130,
        178,
        56,
        118,
        99,
        23,
        79
      ]
    }
  ],
  "events": [
    {
      "name": "AdminProposed",
      "discriminator": [
        129,
        249,
        226,
        227,
        199,
        82,
        110,
        243
      ]
    },
    {
      "name": "AdminSet",
      "discriminator": [
        157,
        245,
        205,
        226,
        118,
        125,
        183,
        97
      ]
    },
    {
      "name": "Collected",
      "discriminator": [
        67,
        109,
        138,
        167,
        168,
        239,
        2,
        207
      ]
    },
    {
      "name": "ConfigInitialized",
      "discriminator": [
        181,
        49,
        200,
        156,
        19,
        167,
        178,
        91
      ]
    },
    {
      "name": "ConfigUpdated",
      "discriminator": [
        40,
        241,
        230,
        122,
        11,
        19,
        198,
        194
      ]
    },
    {
      "name": "DevPaid",
      "discriminator": [
        108,
        221,
        137,
        38,
        39,
        247,
        120,
        194
      ]
    },
    {
      "name": "KeyCancelled",
      "discriminator": [
        64,
        113,
        200,
        208,
        84,
        193,
        222,
        137
      ]
    },
    {
      "name": "KeyProposed",
      "discriminator": [
        12,
        192,
        56,
        55,
        1,
        109,
        229,
        21
      ]
    },
    {
      "name": "KeySet",
      "discriminator": [
        58,
        88,
        48,
        221,
        90,
        54,
        52,
        157
      ]
    },
    {
      "name": "Launched",
      "discriminator": [
        209,
        127,
        29,
        152,
        129,
        212,
        189,
        183
      ]
    },
    {
      "name": "Migrated",
      "discriminator": [
        2,
        66,
        164,
        53,
        158,
        122,
        128,
        236
      ]
    },
    {
      "name": "MoltMarksSet",
      "discriminator": [
        29,
        253,
        40,
        70,
        146,
        156,
        146,
        247
      ]
    },
    {
      "name": "Molted",
      "discriminator": [
        189,
        56,
        94,
        236,
        14,
        34,
        17,
        118
      ]
    },
    {
      "name": "Observed",
      "discriminator": [
        154,
        65,
        198,
        52,
        238,
        11,
        193,
        59
      ]
    },
    {
      "name": "PadMintSet",
      "discriminator": [
        36,
        57,
        117,
        98,
        7,
        209,
        231,
        41
      ]
    },
    {
      "name": "PausedSet",
      "discriminator": [
        171,
        125,
        127,
        156,
        233,
        81,
        68,
        66
      ]
    },
    {
      "name": "SilkClaimed",
      "discriminator": [
        222,
        42,
        65,
        9,
        230,
        20,
        52,
        107
      ]
    },
    {
      "name": "SilkExpired",
      "discriminator": [
        239,
        6,
        161,
        100,
        239,
        87,
        58,
        82
      ]
    },
    {
      "name": "SilkPosted",
      "discriminator": [
        70,
        68,
        157,
        30,
        76,
        113,
        145,
        40
      ]
    },
    {
      "name": "SilkSnapshotted",
      "discriminator": [
        111,
        195,
        126,
        164,
        181,
        5,
        46,
        44
      ]
    },
    {
      "name": "SilkVetoed",
      "discriminator": [
        200,
        180,
        160,
        99,
        221,
        165,
        22,
        143
      ]
    },
    {
      "name": "SpiderFed",
      "discriminator": [
        2,
        110,
        181,
        244,
        155,
        10,
        104,
        143
      ]
    },
    {
      "name": "TagAdded",
      "discriminator": [
        120,
        241,
        47,
        220,
        213,
        207,
        185,
        220
      ]
    },
    {
      "name": "TreasuryPaid",
      "discriminator": [
        203,
        141,
        198,
        183,
        132,
        74,
        239,
        248
      ]
    },
    {
      "name": "TreasurySet",
      "discriminator": [
        69,
        231,
        163,
        135,
        254,
        194,
        109,
        166
      ]
    },
    {
      "name": "VibBuy",
      "discriminator": [
        6,
        255,
        197,
        237,
        121,
        91,
        172,
        196
      ]
    },
    {
      "name": "Vibrated",
      "discriminator": [
        249,
        208,
        245,
        155,
        33,
        130,
        45,
        222
      ]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "Unauthorized",
      "msg": "Only the admin can do this"
    },
    {
      "code": 6001,
      "name": "BadParams",
      "msg": "A parameter is out of its allowed range"
    },
    {
      "code": 6002,
      "name": "BadKey",
      "msg": "Attestor and guardian must be real, different keys"
    },
    {
      "code": 6003,
      "name": "BadTreasury",
      "msg": "The treasury must be a real wallet"
    },
    {
      "code": 6004,
      "name": "NothingPending",
      "msg": "There is no pending key change"
    },
    {
      "code": 6005,
      "name": "TooEarly",
      "msg": "The timelock of this key change is not over yet"
    },
    {
      "code": 6006,
      "name": "Paused",
      "msg": "Cobweb Pad is paused: no new coins right now (claims and payouts still work)"
    },
    {
      "code": 6007,
      "name": "ParamsChanged",
      "msg": "The pad's fee settings changed since you looked: reload and sign again"
    },
    {
      "code": 6008,
      "name": "BadName",
      "msg": "Name: 1-32 bytes, no leading/trailing spaces, no invisible characters"
    },
    {
      "code": 6009,
      "name": "BadSymbol",
      "msg": "Ticker: 1-10 characters, no spaces or invisible characters"
    },
    {
      "code": 6010,
      "name": "BadUri",
      "msg": "The metadata link must be an IPFS link"
    },
    {
      "code": 6011,
      "name": "BadTag",
      "msg": "Theme tags: 1-16 characters a-z, 0-9 or '-', no duplicates"
    },
    {
      "code": 6012,
      "name": "TooManyTags",
      "msg": "No room for more theme tags"
    },
    {
      "code": 6013,
      "name": "UnknownTag",
      "msg": "Unknown theme tag"
    },
    {
      "code": 6014,
      "name": "BadAccounts",
      "msg": "Wrong accounts for this action"
    },
    {
      "code": 6015,
      "name": "UnsafeMint",
      "msg": "This mint has a freeze authority or unexpected extensions"
    },
    {
      "code": 6016,
      "name": "NotAlone",
      "msg": "This action must be alone in its transaction"
    },
    {
      "code": 6017,
      "name": "Math",
      "msg": "Arithmetic error"
    },
    {
      "code": 6018,
      "name": "NothingBought",
      "msg": "The buy returned no tokens"
    },
    {
      "code": 6019,
      "name": "NotMigrated",
      "msg": "This coin has not migrated to PumpSwap"
    },
    {
      "code": 6020,
      "name": "MigratedNeedsPool",
      "msg": "The coin migrated: pass its PumpSwap pool and the pool's two token accounts"
    },
    {
      "code": 6021,
      "name": "AlreadyMigrated",
      "msg": "This coin is already marked as migrated"
    },
    {
      "code": 6022,
      "name": "ObserveTooSoon",
      "msg": "Too soon: one price observation per 30 seconds"
    },
    {
      "code": 6023,
      "name": "StaleMedian",
      "msg": "Not enough fresh price observations yet (7 within 30 minutes)"
    },
    {
      "code": 6024,
      "name": "PricesDisagree",
      "msg": "The recent prices disagree too much to buy safely"
    },
    {
      "code": 6025,
      "name": "PriceAboveMedian",
      "msg": "The price is above its recent median: the web will not buy into a pump"
    },
    {
      "code": 6026,
      "name": "OneBuyPerSlot",
      "msg": "Only one program buy per coin per slot"
    },
    {
      "code": 6027,
      "name": "BuyTooSoon",
      "msg": "This coin was bought by the program too recently"
    },
    {
      "code": 6028,
      "name": "NothingToBuy",
      "msg": "Nothing to buy: the pot or the allowed size is below 0.001 SOL"
    },
    {
      "code": 6029,
      "name": "NoPadMint",
      "msg": "$SPIDER is not set yet"
    },
    {
      "code": 6030,
      "name": "PadMintSet",
      "msg": "$SPIDER is already set"
    },
    {
      "code": 6031,
      "name": "BadMarks",
      "msg": "Molt marks must rise strictly, and reached marks cannot change"
    },
    {
      "code": 6032,
      "name": "NoMolt",
      "msg": "The spider is not big enough to molt yet"
    },
    {
      "code": 6033,
      "name": "EpochNotOver",
      "msg": "This silk epoch is not over yet"
    },
    {
      "code": 6034,
      "name": "EpochOrder",
      "msg": "Silk snapshots go forward only: the latest finished epoch, after the coin's launch and its last snapshot"
    },
    {
      "code": 6035,
      "name": "SilkTooSmall",
      "msg": "Too little silk to snapshot yet: it keeps growing into the next epoch"
    },
    {
      "code": 6036,
      "name": "WrongSilkState",
      "msg": "This silk epoch is not in the right state for that"
    },
    {
      "code": 6037,
      "name": "PostWindowOver",
      "msg": "The posting window of this silk epoch is over"
    },
    {
      "code": 6038,
      "name": "TooManyPosts",
      "msg": "This silk epoch was re-posted too many times"
    },
    {
      "code": 6039,
      "name": "TooManyLeaves",
      "msg": "A silk root must have 1..65536 leaves"
    },
    {
      "code": 6040,
      "name": "RootOverBucket",
      "msg": "The root pays more than the silk of this epoch"
    },
    {
      "code": 6041,
      "name": "VetoWindowOver",
      "msg": "The veto window of this root is over"
    },
    {
      "code": 6042,
      "name": "NotFinal",
      "msg": "This silk root is still inside its veto window"
    },
    {
      "code": 6043,
      "name": "ClaimWindowOver",
      "msg": "The claim window of this silk epoch is over"
    },
    {
      "code": 6044,
      "name": "ClaimWindowOpen",
      "msg": "This silk epoch cannot be closed yet"
    },
    {
      "code": 6045,
      "name": "DevCannotClaim",
      "msg": "The coin's dev wallet already gets the dev share and earns no silk"
    },
    {
      "code": 6046,
      "name": "BadProof",
      "msg": "The proof does not match this silk root"
    },
    {
      "code": 6047,
      "name": "AlreadyClaimed",
      "msg": "This silk was already claimed"
    },
    {
      "code": 6048,
      "name": "ClaimOverTotal",
      "msg": "This claim would pay more than the root's total"
    },
    {
      "code": 6049,
      "name": "BelowRentFloor",
      "msg": "The receiving wallet would stay below the rent minimum: fund it with 0.001 SOL first"
    },
    {
      "code": 6050,
      "name": "NothingToClaim",
      "msg": "Nothing to claim"
    },
    {
      "code": 6051,
      "name": "VibCooldown",
      "msg": "This coin vibrated less than its cooldown ago"
    },
    {
      "code": 6052,
      "name": "VibTooSmall",
      "msg": "The trigger buy is smaller than this coin's vibration threshold"
    },
    {
      "code": 6053,
      "name": "StaleTrigger",
      "msg": "The trigger is too old, in the future, or not newer than the last one"
    },
    {
      "code": 6054,
      "name": "BadDsts",
      "msg": "1-3 distinct neighbours, none of them the source coin"
    },
    {
      "code": 6055,
      "name": "TagMismatch",
      "msg": "A neighbour must share the source coin's theme tag"
    },
    {
      "code": 6056,
      "name": "VibBucketEmpty",
      "msg": "The vibration bucket is too small for this many neighbours"
    },
    {
      "code": 6057,
      "name": "MaxSpendTooLow",
      "msg": "The buy the program sized is larger than your max_spend: nothing bought (pass 0 to accept the program's size)"
    }
  ],
  "types": [
    {
      "name": "AdminProposed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "current",
            "type": "pubkey"
          },
          {
            "name": "proposed",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "AdminSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "old",
            "type": "pubkey"
          },
          {
            "name": "admin",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "Coin",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "dev",
            "type": "pubkey"
          },
          {
            "name": "index",
            "type": "u64"
          },
          {
            "name": "tag",
            "type": "u8"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "symbol",
            "type": "string"
          },
          {
            "name": "uri",
            "type": "string"
          },
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "launched_at",
            "type": "i64"
          },
          {
            "name": "state",
            "type": "u8"
          },
          {
            "name": "migrated_at",
            "type": "i64"
          },
          {
            "name": "fees_total",
            "type": "u64"
          },
          {
            "name": "collects",
            "type": "u64"
          },
          {
            "name": "last_collect_at",
            "type": "i64"
          },
          {
            "name": "fee_ring",
            "docs": [
              "creator fees booked per epoch (ring of 8, slot = epoch % 8); fee / creator_fee_bps = on-chain volume"
            ],
            "type": {
              "array": [
                "u64",
                8
              ]
            }
          },
          {
            "name": "ring_epoch",
            "type": "u64"
          },
          {
            "name": "dev_pending",
            "type": "u64"
          },
          {
            "name": "dev_paid",
            "type": "u64"
          },
          {
            "name": "treasury_pending",
            "type": "u64"
          },
          {
            "name": "treasury_paid",
            "type": "u64"
          },
          {
            "name": "spider_sent",
            "docs": [
              "moved to the SpiderPot at collect"
            ],
            "type": "u64"
          },
          {
            "name": "silk_open",
            "docs": [
              "silk not snapshotted yet (sits in the Fees PDA)"
            ],
            "type": "u64"
          },
          {
            "name": "silk_in",
            "type": "u64"
          },
          {
            "name": "silk_snapshotted",
            "type": "u64"
          },
          {
            "name": "silk_rolled",
            "docs": [
              "unclaimed / unposted silk that came back from expired epochs into silk_open"
            ],
            "type": "u64"
          },
          {
            "name": "silk_epochs",
            "type": "u64"
          },
          {
            "name": "has_silk",
            "type": "bool"
          },
          {
            "name": "last_silk_epoch",
            "type": "u64"
          },
          {
            "name": "last_silk_to",
            "type": "i64"
          },
          {
            "name": "vib_bucket",
            "docs": [
              "vibration bucket (sits in the Fees PDA)"
            ],
            "type": "u64"
          },
          {
            "name": "vib_in",
            "type": "u64"
          },
          {
            "name": "vib_spent",
            "type": "u64"
          },
          {
            "name": "vib_count",
            "type": "u32"
          },
          {
            "name": "vib_last_at",
            "type": "i64"
          },
          {
            "name": "vib_last_trigger_ts",
            "type": "i64"
          },
          {
            "name": "vib_received",
            "docs": [
              "as a neighbour: lamports other coins' vibrations spent on this coin, and its tokens they burned"
            ],
            "type": "u64"
          },
          {
            "name": "vib_burned",
            "type": "u64"
          },
          {
            "name": "bump",
            "type": "u8"
          },
          {
            "name": "fees_bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "Collected",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "incoming",
            "type": "u64"
          },
          {
            "name": "dev",
            "type": "u64"
          },
          {
            "name": "spider",
            "type": "u64"
          },
          {
            "name": "silk",
            "type": "u64"
          },
          {
            "name": "vib",
            "type": "u64"
          },
          {
            "name": "treasury",
            "type": "u64"
          },
          {
            "name": "fees_total",
            "type": "u64"
          },
          {
            "name": "silk_open",
            "type": "u64"
          },
          {
            "name": "vib_bucket",
            "type": "u64"
          },
          {
            "name": "epoch",
            "type": "u64"
          },
          {
            "name": "epoch_fees",
            "type": "u64"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Config",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          },
          {
            "name": "pending_admin",
            "type": "pubkey"
          },
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "attestor",
            "docs": [
              "Ed25519 key that signs silk roots and vibration triggers (2-step rotation, ROTATION_DELAY)"
            ],
            "type": "pubkey"
          },
          {
            "name": "pending_attestor",
            "type": "pubkey"
          },
          {
            "name": "attestor_eta",
            "type": "i64"
          },
          {
            "name": "guardian",
            "docs": [
              "can veto a posted silk root inside its window; never touches funds (2-step rotation)"
            ],
            "type": "pubkey"
          },
          {
            "name": "pending_guardian",
            "type": "pubkey"
          },
          {
            "name": "guardian_eta",
            "type": "i64"
          },
          {
            "name": "paused",
            "type": "bool"
          },
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "guard",
            "type": {
              "defined": {
                "name": "Guard"
              }
            }
          },
          {
            "name": "silk",
            "type": {
              "defined": {
                "name": "SilkRules"
              }
            }
          },
          {
            "name": "pad_mint",
            "docs": [
              "$SPIDER (a pump.fun coin); set once by the admin, then frozen"
            ],
            "type": "pubkey"
          },
          {
            "name": "tag_count",
            "docs": [
              "theme tags (ASCII, <= 16 bytes, zero padded); the admin can add, never remove or rename"
            ],
            "type": "u8"
          },
          {
            "name": "tags",
            "type": {
              "array": [
                {
                  "array": [
                    "u8",
                    16
                  ]
                },
                16
              ]
            }
          },
          {
            "name": "molt_marks",
            "docs": [
              "molt marks: $SPIDER median market cap in lamports, strictly increasing"
            ],
            "type": {
              "array": [
                "u64",
                5
              ]
            }
          },
          {
            "name": "stage",
            "docs": [
              "current spider stage (0 = egg .. 5); only goes up"
            ],
            "type": "u8"
          },
          {
            "name": "molted_at",
            "type": {
              "array": [
                "i64",
                5
              ]
            }
          },
          {
            "name": "coins",
            "type": "u64"
          },
          {
            "name": "spider_in",
            "docs": [
              "SpiderPot books: lamports == floor + spider_in + spider_donated - spider_spent (+ strays not swept yet)"
            ],
            "type": "u64"
          },
          {
            "name": "spider_donated",
            "type": "u64"
          },
          {
            "name": "spider_spent",
            "type": "u64"
          },
          {
            "name": "spider_burned",
            "type": "u64"
          },
          {
            "name": "spider_buys",
            "type": "u64"
          },
          {
            "name": "spider_last_at",
            "type": "i64"
          },
          {
            "name": "bump",
            "type": "u8"
          },
          {
            "name": "spider_bump",
            "type": "u8"
          },
          {
            "name": "web_bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "ConfigInitialized",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          },
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "attestor",
            "type": "pubkey"
          },
          {
            "name": "guardian",
            "type": "pubkey"
          },
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "guard",
            "type": {
              "defined": {
                "name": "Guard"
              }
            }
          },
          {
            "name": "silk",
            "type": {
              "defined": {
                "name": "SilkRules"
              }
            }
          },
          {
            "name": "molt_marks",
            "type": {
              "array": [
                "u64",
                5
              ]
            }
          },
          {
            "name": "tags",
            "type": {
              "vec": "string"
            }
          }
        ]
      }
    },
    {
      "name": "ConfigUpdated",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "guard",
            "type": {
              "defined": {
                "name": "Guard"
              }
            }
          },
          {
            "name": "silk",
            "type": {
              "defined": {
                "name": "SilkRules"
              }
            }
          }
        ]
      }
    },
    {
      "name": "DevPaid",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "dev",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "total",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Guard",
      "docs": [
        "Price guard of every program buy (SPEC 0.3). Global, bounded; read at buy time."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "slippage_bps",
            "docs": [
              "min_out = median promise minus this; also the dispersion limit of the observation window (max/min <= 1+2x)"
            ],
            "type": "u16"
          },
          {
            "name": "max_impact_bps",
            "docs": [
              "a program buy may move the venue price by at most this (spend <= L x bps / 20000, L = SOL side)"
            ],
            "type": "u16"
          },
          {
            "name": "spider_max_buy",
            "docs": [
              "largest single $SPIDER buy"
            ],
            "type": "u64"
          },
          {
            "name": "buy_gap",
            "docs": [
              "seconds between two program buys of one mint (plus: never twice in one slot)"
            ],
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "KeyCancelled",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "role",
            "type": "u8"
          },
          {
            "name": "key",
            "type": "pubkey"
          },
          {
            "name": "by",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "KeyProposed",
      "docs": [
        "role 0 = attestor, 1 = guardian"
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "role",
            "type": "u8"
          },
          {
            "name": "key",
            "type": "pubkey"
          },
          {
            "name": "eta",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "KeySet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "role",
            "type": "u8"
          },
          {
            "name": "old",
            "type": "pubkey"
          },
          {
            "name": "key",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "Launched",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "dev",
            "type": "pubkey"
          },
          {
            "name": "index",
            "type": "u64"
          },
          {
            "name": "tag",
            "type": "u8"
          },
          {
            "name": "tag_name",
            "type": "string"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "symbol",
            "type": "string"
          },
          {
            "name": "uri",
            "type": "string"
          },
          {
            "name": "dev_buy",
            "type": "u64"
          },
          {
            "name": "dev_tokens",
            "type": "u64"
          },
          {
            "name": "launch_fee",
            "type": "u64"
          },
          {
            "name": "params",
            "type": {
              "defined": {
                "name": "Params"
              }
            }
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Market",
      "docs": [
        "Price observations of one mint (every pad coin + $SPIDER) and the per-mint program-buy limiter."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "ring",
            "type": {
              "array": [
                {
                  "defined": {
                    "name": "ObsSlot"
                  }
                },
                16
              ]
            }
          },
          {
            "name": "head",
            "type": "u8"
          },
          {
            "name": "count",
            "type": "u8"
          },
          {
            "name": "venue",
            "docs": [
              "venue of the stored observations: 0 = pump curve, 1 = canonical PumpSwap pool (the ring restarts when the coin",
              "migrates: a curve price and a pool price are different series)"
            ],
            "type": "u8"
          },
          {
            "name": "last_buy_slot",
            "type": "u64"
          },
          {
            "name": "last_buy_at",
            "type": "i64"
          },
          {
            "name": "buys",
            "type": "u64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "Migrated",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "pool",
            "type": "pubkey"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "MoltMarksSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "marks",
            "type": {
              "array": [
                "u64",
                5
              ]
            }
          },
          {
            "name": "stage",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "Molted",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "from",
            "type": "u8"
          },
          {
            "name": "stage",
            "type": "u8"
          },
          {
            "name": "mcap",
            "type": "u64"
          },
          {
            "name": "mark",
            "type": "u64"
          },
          {
            "name": "median_q9",
            "type": "u64"
          },
          {
            "name": "supply",
            "type": "u64"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "ObsSlot",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "ts",
            "type": "i64"
          },
          {
            "name": "price_q9",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Observed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "price_q9",
            "type": "u64"
          },
          {
            "name": "raw_q9",
            "type": "u64"
          },
          {
            "name": "median_q9",
            "type": "u64"
          },
          {
            "name": "count",
            "type": "u8"
          },
          {
            "name": "on_curve",
            "type": "bool"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "PadMintSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "Params",
      "docs": [
        "Launch / fee params. COPIED into every Coin at launch: a config change never touches an existing coin."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "launch_fee",
            "docs": [
              "fixed SOL fee per launch to config.treasury"
            ],
            "type": "u64"
          },
          {
            "name": "dev_bps",
            "docs": [
              "creator-fee split (sum 10000): dev / $SPIDER buy+burn / silk to holders / vibration / treasury"
            ],
            "type": "u16"
          },
          {
            "name": "spider_bps",
            "type": "u16"
          },
          {
            "name": "silk_bps",
            "type": "u16"
          },
          {
            "name": "vib_bps",
            "type": "u16"
          },
          {
            "name": "treasury_bps",
            "type": "u16"
          },
          {
            "name": "epoch_secs",
            "docs": [
              "silk epoch and fee-ring length (unix-aligned: epoch = now / epoch_secs)"
            ],
            "type": "i64"
          },
          {
            "name": "vib_min",
            "docs": [
              "a buy of at least this many lamports on the coin can trigger a vibration"
            ],
            "type": "u64"
          },
          {
            "name": "vib_max",
            "docs": [
              "at most this many lamports of the coin's vibration bucket are spent per trigger"
            ],
            "type": "u64"
          },
          {
            "name": "vib_cooldown",
            "docs": [
              "one vibration per source coin per this many seconds"
            ],
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "PausedSet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "paused",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "SilkClaimed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "epoch",
            "type": "u64"
          },
          {
            "name": "index",
            "type": "u32"
          },
          {
            "name": "claimant",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "claimed",
            "type": "u64"
          },
          {
            "name": "total",
            "type": "u64"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "SilkEpoch",
      "docs": [
        "One silk distribution of one coin: the silk bucket taken at the snapshot (held as lamports on top of the rent),",
        "the attested merkle root and the claim bitmap. Score window = [from_ts, to_ts)."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "epoch",
            "type": "u64"
          },
          {
            "name": "from_ts",
            "type": "i64"
          },
          {
            "name": "to_ts",
            "type": "i64"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "rules",
            "type": {
              "defined": {
                "name": "SilkRules"
              }
            }
          },
          {
            "name": "opener",
            "type": "pubkey"
          },
          {
            "name": "snapshot_at",
            "type": "i64"
          },
          {
            "name": "state",
            "type": "u8"
          },
          {
            "name": "root",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "leaves",
            "type": "u32"
          },
          {
            "name": "total",
            "type": "u64"
          },
          {
            "name": "report_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "posted_at",
            "type": "i64"
          },
          {
            "name": "final_at",
            "type": "i64"
          },
          {
            "name": "posts",
            "type": "u8"
          },
          {
            "name": "vetoes",
            "type": "u8"
          },
          {
            "name": "poster",
            "docs": [
              "pays the bitmap rent (bound in the attestor's message), gets it back at the close"
            ],
            "type": "pubkey"
          },
          {
            "name": "claimed",
            "type": "u64"
          },
          {
            "name": "claims",
            "type": "u32"
          },
          {
            "name": "bump",
            "type": "u8"
          },
          {
            "name": "bitmap",
            "docs": [
              "one bit per leaf; grows at post time (never shrinks)"
            ],
            "type": "bytes"
          }
        ]
      }
    },
    {
      "name": "SilkExpired",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "epoch",
            "type": "u64"
          },
          {
            "name": "state",
            "type": "u8"
          },
          {
            "name": "claimed",
            "type": "u64"
          },
          {
            "name": "claims",
            "type": "u32"
          },
          {
            "name": "rolled_back",
            "type": "u64"
          },
          {
            "name": "silk_open",
            "type": "u64"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "SilkPosted",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "epoch",
            "type": "u64"
          },
          {
            "name": "root",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "leaves",
            "type": "u32"
          },
          {
            "name": "total",
            "type": "u64"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "report_hash",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "final_at",
            "type": "i64"
          },
          {
            "name": "post",
            "type": "u8"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "SilkRules",
      "docs": [
        "Silk report windows. COPIED into every SilkEpoch at its snapshot."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "veto_secs",
            "docs": [
              "the guardian can veto a posted root for this long; claims open after it"
            ],
            "type": "i64"
          },
          {
            "name": "post_window",
            "docs": [
              "the attestor must post within this long after the snapshot, else the silk rolls back"
            ],
            "type": "i64"
          },
          {
            "name": "claim_window",
            "docs": [
              "claims stay open this long after the root is final; the rest rolls back into the coin's silk"
            ],
            "type": "i64"
          },
          {
            "name": "min_silk",
            "docs": [
              "a snapshot needs at least this much silk (smaller amounts keep accruing into the next epoch)"
            ],
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "SilkSnapshotted",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "epoch",
            "type": "u64"
          },
          {
            "name": "from_ts",
            "type": "i64"
          },
          {
            "name": "to_ts",
            "type": "i64"
          },
          {
            "name": "amount",
            "type": "u64"
          },
          {
            "name": "post_deadline",
            "type": "i64"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "SilkVetoed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "epoch",
            "type": "u64"
          },
          {
            "name": "root",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "guardian",
            "type": "pubkey"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "SpiderFed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "venue",
            "type": "u8"
          },
          {
            "name": "spend",
            "type": "u64"
          },
          {
            "name": "spent",
            "type": "u64"
          },
          {
            "name": "bought",
            "type": "u64"
          },
          {
            "name": "burned",
            "type": "u64"
          },
          {
            "name": "median_q9",
            "type": "u64"
          },
          {
            "name": "price_q9",
            "type": "u64"
          },
          {
            "name": "impact_cap",
            "type": "u64"
          },
          {
            "name": "donated",
            "type": "u64"
          },
          {
            "name": "pot_after",
            "type": "u64"
          },
          {
            "name": "burned_total",
            "type": "u64"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "TagAdded",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "index",
            "type": "u8"
          },
          {
            "name": "name",
            "type": "string"
          }
        ]
      }
    },
    {
      "name": "TreasuryPaid",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "treasury",
            "type": "pubkey"
          },
          {
            "name": "amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "TreasurySet",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "treasury",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "VibBuy",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "src",
            "type": "pubkey"
          },
          {
            "name": "dst",
            "type": "pubkey"
          },
          {
            "name": "venue",
            "type": "u8"
          },
          {
            "name": "spend",
            "type": "u64"
          },
          {
            "name": "used",
            "type": "u64"
          },
          {
            "name": "bought",
            "type": "u64"
          },
          {
            "name": "burned",
            "type": "u64"
          },
          {
            "name": "median_q9",
            "type": "u64"
          },
          {
            "name": "price_q9",
            "type": "u64"
          },
          {
            "name": "impact_cap",
            "type": "u64"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Vibrated",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "src",
            "type": "pubkey"
          },
          {
            "name": "tag",
            "type": "u8"
          },
          {
            "name": "trigger",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "trigger_lamports",
            "type": "u64"
          },
          {
            "name": "trigger_ts",
            "type": "i64"
          },
          {
            "name": "dsts",
            "type": {
              "vec": "pubkey"
            }
          },
          {
            "name": "budget",
            "type": "u64"
          },
          {
            "name": "spent",
            "type": "u64"
          },
          {
            "name": "donated",
            "type": "u64"
          },
          {
            "name": "vib_bucket",
            "type": "u64"
          },
          {
            "name": "ts",
            "type": "i64"
          }
        ]
      }
    }
  ]
}