{
 "address": "DBrRh9ygeVXeTS7YRqHmhk79mG2RhxbQ3E6XaGZnXYKV",
 "metadata": {
  "name": "shittag_registry",
  "version": "0.1.0",
  "spec": "0.1.0",
  "description": "ShitTag registry and domain NFT state program"
 },
 "instructions": [
  {
   "name": "initialize_config",
   "discriminator": [
    208,
    127,
    21,
    1,
    194,
    190,
    196,
    70
   ],
   "accounts": [
    {
     "name": "config",
     "writable": true
    },
    {
     "name": "payer",
     "writable": true,
     "signer": true
    },
    {
     "name": "program_data",
     "docs": [
      "The program's own ProgramData: only its upgrade authority may initialize (no deploy-time front-run)."
     ]
    },
    {
     "name": "system_program"
    },
    {
     "name": "rekt_pool",
     "docs": [
      "Phase 1e: the Rekt-Fest pool, created here (`init_if_needed`: a pre-funded address cannot block it)."
     ],
     "writable": true
    },
    {
     "name": "usdc_mint",
     "docs": [
      "Must be the `usdc_mint` argument."
     ]
    },
    {
     "name": "rekt_pool_usdc_ata",
     "writable": true
    },
    {
     "name": "buyback_vault",
     "docs": [
      "Funded to its rent-exempt minimum here."
     ],
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "associated_token_program"
    }
   ],
   "args": [
    {
     "name": "authority",
     "type": "pubkey"
    },
    {
     "name": "treasury",
     "type": "pubkey"
    },
    {
     "name": "community_vault",
     "type": "pubkey"
    },
    {
     "name": "shit_mint",
     "type": "pubkey"
    },
    {
     "name": "usdc_mint",
     "type": "pubkey"
    },
    {
     "name": "daily_airdrop_limit",
     "type": "u64"
    },
    {
     "name": "airdrop_cooldown_seconds",
     "type": "i64"
    },
    {
     "name": "migration_authority",
     "type": "pubkey"
    }
   ]
  },
  {
   "name": "migrate_config_v2",
   "docs": [
    "Authority only, idempotent. Reallocs a legacy config to the v2 layout (new fields zeroed, then v2",
    "defaults applied once), creates the Rekt-Fest pool PDA and its USDC ATA, funds the buyback vault to",
    "its rent-exempt minimum and points `community_vault` at the Rekt-Fest pool, so every flow that paid",
    "the community vault pays the pool from now on. Running it again changes nothing that was already set."
   ],
   "discriminator": [
    21,
    39,
    88,
    172,
    254,
    205,
    30,
    141
   ],
   "accounts": [
    {
     "name": "config",
     "docs": [
      "the account is resized and decoded."
     ],
     "writable": true
    },
    {
     "name": "authority",
     "writable": true,
     "signer": true
    },
    {
     "name": "rekt_pool",
     "writable": true
    },
    {
     "name": "usdc_mint",
     "docs": [
      "Must be the config's USDC mint (checked in the handler)."
     ]
    },
    {
     "name": "rekt_pool_usdc_ata",
     "writable": true
    },
    {
     "name": "buyback_vault",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "associated_token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": []
  },
  {
   "name": "propose_config_authority",
   "docs": [
    "Step 1 of the two-step authority transfer. `Pubkey::default()` cancels a pending proposal."
   ],
   "discriminator": [
    31,
    229,
    9,
    231,
    45,
    153,
    123,
    235
   ],
   "accounts": [
    {
     "name": "config",
     "writable": true
    },
    {
     "name": "authority",
     "signer": true
    }
   ],
   "args": [
    {
     "name": "new_authority",
     "type": "pubkey"
    }
   ]
  },
  {
   "name": "accept_config_authority",
   "docs": [
    "Step 2: signed by the proposed authority (e.g. the Squads vault), which then becomes the authority.",
    "",
    "Audit R3 F-7, accepted by design (owner decision): this does not reset `config.buyback_keeper` or the",
    "`RewardSigner` hot key, and `set_treasury` does not either. Both are bounded delegates (per-call/interval",
    "buyback caps; per-claim and per-window reward caps) and the new authority rotates them explicitly",
    "(`set_buyback_config`, `set_reward_signer`) as a mandatory step of the authority handover runbook."
   ],
   "discriminator": [
    138,
    34,
    130,
    16,
    252,
    207,
    24,
    90
   ],
   "accounts": [
    {
     "name": "config",
     "writable": true
    },
    {
     "name": "new_authority",
     "signer": true
    }
   ],
   "args": []
  },
  {
   "name": "set_treasury",
   "docs": [
    "Authority only. USDC flows need the new treasury's USDC ATA to exist (clients create it idempotently).",
    "Phase 1e (audit I-4): `new_treasury_account` must be `new_treasury`, a system-program-owned, non-executable",
    "account that is already rent-exempt (a wallet or a Squads vault), so small fee credits can never fail."
   ],
   "discriminator": [
    57,
    97,
    196,
    95,
    195,
    206,
    106,
    136
   ],
   "accounts": [
    {
     "name": "config",
     "writable": true
    },
    {
     "name": "authority",
     "signer": true
    },
    {
     "name": "new_treasury_account"
    }
   ],
   "args": [
    {
     "name": "new_treasury",
     "type": "pubkey"
    }
   ]
  },
  {
   "name": "snapshot_rekt_epoch",
   "docs": [
    "Permissionless crank: freezes the pool amount of a finished week that has losses. Weeks are",
    "snapshotted in order (a week can only be snapshotted after the previous week with losses).",
    "Phase 1e: it freezes `min(50% of the undistributed SOL, the week's total forfeits)` and no USDC."
   ],
   "discriminator": [
    94,
    230,
    118,
    38,
    48,
    151,
    36,
    45
   ],
   "accounts": [
    {
     "name": "rekt_pool",
     "writable": true
    },
    {
     "name": "rekt_epoch",
     "writable": true
    },
    {
     "name": "rekt_pool_usdc_ata"
    }
   ],
   "args": [
    {
     "name": "epoch",
     "type": "u64"
    }
   ]
  },
  {
   "name": "claim_rekt_payout",
   "docs": [
    "Pays a wallet `snapshot * weight / total_weight` of the week, once (the claim record closes to the",
    "wallet). Phase 1e: the weight is what the wallet forfeited that week, and the payout never exceeds it. Permissionless: anyone may push a wallet's payout, it always goes to that wallet. Snapshots",
    "the week first if nobody did yet. `wallet_usdc_ata` is required only when the week has a USDC share."
   ],
   "discriminator": [
    209,
    13,
    0,
    162,
    29,
    41,
    109,
    69
   ],
   "accounts": [
    {
     "name": "rekt_pool",
     "writable": true
    },
    {
     "name": "rekt_epoch",
     "writable": true
    },
    {
     "name": "rekt_claim",
     "writable": true
    },
    {
     "name": "wallet",
     "writable": true
    },
    {
     "name": "rekt_pool_usdc_ata",
     "writable": true
    },
    {
     "name": "wallet_usdc_ata",
     "docs": [
      "The wallet's USDC ATA; required only when the week has a USDC share."
     ],
     "writable": true,
     "optional": true
    },
    {
     "name": "token_program"
    }
   ],
   "args": [
    {
     "name": "epoch",
     "type": "u64"
    }
   ]
  },
  {
   "name": "sweep_rekt_epoch",
   "docs": [
    "Permissionless crank: after the claim window of a snapshotted week, its unclaimed rest (including",
    "rounding dust) is released back into the pool and counts toward the next snapshot."
   ],
   "discriminator": [
    112,
    195,
    42,
    42,
    247,
    65,
    9,
    237
   ],
   "accounts": [
    {
     "name": "rekt_pool",
     "writable": true
    },
    {
     "name": "rekt_epoch",
     "writable": true
    }
   ],
   "args": [
    {
     "name": "epoch",
     "type": "u64"
    }
   ]
  },
  {
   "name": "sweep_rekt_pool_usdc",
   "docs": [
    "Phase 1f, authority only. Rekt-Fest is SOL-only: every USDC fee share now goes to the treasury, and",
    "this moves whatever USDC is still in the pool's canonical USDC ATA (shares paid before Phase 1f, or",
    "direct transfers) to the treasury's USDC account. USDC still owed to snapshotted weeks",
    "(`committed_usdc`, always 0 for Phase 1e+ snapshots) stays. An empty pool ATA is a no-op."
   ],
   "discriminator": [
    89,
    174,
    143,
    190,
    216,
    50,
    106,
    166
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "authority",
     "signer": true
    },
    {
     "name": "rekt_pool"
    },
    {
     "name": "rekt_pool_usdc_ata",
     "writable": true
    },
    {
     "name": "treasury_usdc_ata",
     "docs": [
      "USDC account owned by `config.treasury` (mint and owner checked in the handler)."
     ],
     "writable": true
    },
    {
     "name": "token_program"
    }
   ],
   "args": []
  },
  {
   "name": "set_buyback_config",
   "docs": [
    "Authority only. `buyback_bps` <= 5000; `keeper` (default = none) may also execute buybacks;",
    "`max_lamports_per_call` = 0 pauses buybacks."
   ],
   "discriminator": [
    35,
    120,
    206,
    228,
    55,
    58,
    177,
    155
   ],
   "accounts": [
    {
     "name": "config",
     "writable": true
    },
    {
     "name": "authority",
     "signer": true
    }
   ],
   "args": [
    {
     "name": "buyback_bps",
     "type": "u16"
    },
    {
     "name": "max_lamports_per_call",
     "type": "u64"
    },
    {
     "name": "min_interval_seconds",
     "type": "i64"
    },
    {
     "name": "keeper",
     "type": "pubkey"
    }
   ]
  },
  {
   "name": "set_buyback_pool",
   "docs": [
    "Authority only: sets the Raydium CPMM SHIT/WSOL pool the buyback swaps through. The account must be",
    "a Raydium CPMM `PoolState` whose two mints are exactly the config's SHIT mint and wrapped SOL."
   ],
   "discriminator": [
    23,
    196,
    81,
    176,
    98,
    82,
    83,
    116
   ],
   "accounts": [
    {
     "name": "config",
     "writable": true
    },
    {
     "name": "authority",
     "signer": true
    },
    {
     "name": "pool_state"
    }
   ],
   "args": []
  },
  {
   "name": "execute_buyback_and_burn",
   "docs": [
    "Config authority or the registered buyback keeper. Swaps `amount_in` lamports of the buyback vault",
    "to SHIT on the configured Raydium CPMM pool and burns every SHIT token received."
   ],
   "discriminator": [
    160,
    184,
    207,
    136,
    206,
    137,
    72,
    60
   ],
   "accounts": [
    {
     "name": "config",
     "writable": true
    },
    {
     "name": "executor",
     "docs": [
      "The config authority or `config.buyback_keeper` (checked in the handler)."
     ],
     "signer": true
    },
    {
     "name": "buyback_vault",
     "writable": true
    },
    {
     "name": "shit_mint",
     "docs": [
      "Writable: the bought SHIT is burned."
     ],
     "writable": true
    },
    {
     "name": "wsol_mint"
    },
    {
     "name": "vault_wsol_ata",
     "writable": true
    },
    {
     "name": "vault_shit_ata",
     "writable": true
    },
    {
     "name": "cp_swap_program"
    },
    {
     "name": "raydium_authority"
    },
    {
     "name": "amm_config"
    },
    {
     "name": "pool_state",
     "writable": true
    },
    {
     "name": "wsol_vault",
     "writable": true
    },
    {
     "name": "shit_vault",
     "writable": true
    },
    {
     "name": "observation_state",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "associated_token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "amount_in",
     "type": "u64"
    },
    {
     "name": "min_shit_out",
     "type": "u64"
    }
   ]
  },
  {
   "name": "create_vesting_lock",
   "docs": [
    "Anyone deposits `total_amount` tokens for `beneficiary`. Immutable and not cancelable. Nothing vests",
    "before `start + cliff`; afterwards the amount vests linearly over `duration_seconds` (0 = all at the",
    "cliff). `start_ts` = 0 means now; a start in the past is refused."
   ],
   "discriminator": [
    54,
    88,
    243,
    48,
    84,
    237,
    110,
    124
   ],
   "accounts": [
    {
     "name": "depositor",
     "writable": true,
     "signer": true
    },
    {
     "name": "beneficiary"
    },
    {
     "name": "mint"
    },
    {
     "name": "lock",
     "writable": true
    },
    {
     "name": "vault",
     "docs": [
      "`init_if_needed`: anyone can create a PDA's ATA in advance, which must not block the lock."
     ],
     "writable": true
    },
    {
     "name": "depositor_token_account",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "associated_token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "id",
     "type": "u64"
    },
    {
     "name": "total_amount",
     "type": "u64"
    },
    {
     "name": "start_ts",
     "type": "i64"
    },
    {
     "name": "cliff_seconds",
     "type": "i64"
    },
    {
     "name": "duration_seconds",
     "type": "i64"
    }
   ]
  },
  {
   "name": "release_vested",
   "docs": [
    "Permissionless: pays the beneficiary's ATA everything vested so far that was not released yet."
   ],
   "discriminator": [
    81,
    123,
    176,
    230,
    16,
    7,
    162,
    73
   ],
   "accounts": [
    {
     "name": "lock",
     "writable": true
    },
    {
     "name": "vault",
     "writable": true
    },
    {
     "name": "beneficiary_token_account",
     "writable": true
    },
    {
     "name": "token_program"
    }
   ],
   "args": []
  },
  {
   "name": "bind_referral",
   "docs": [
    "Spec 7 / Phase 1d: binds the signing wallet to a referrer DOMAIN, once (first touch; a second call fails",
    "because the binding PDA already exists). The domain must be Active and unexpired, its NFT held (amount 1)",
    "by its owner (`referrer`), and that owner must not be the signer. Shares later follow the domain's owner."
   ],
   "discriminator": [
    220,
    68,
    227,
    180,
    227,
    82,
    29,
    99
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "binding",
     "docs": [
      "`init` (not `init_if_needed`): a second binding for the same wallet fails, so the first referrer stays."
     ],
     "writable": true
    },
    {
     "name": "referred",
     "writable": true,
     "signer": true
    },
    {
     "name": "referrer"
    },
    {
     "name": "referrer_domain",
     "docs": [
      "The referrer domain the wallet is bound to."
     ]
    },
    {
     "name": "referrer_nft_ata",
     "docs": [
      "The domain owner's token account holding the domain NFT (amount 1)."
     ]
    },
    {
     "name": "system_program"
    }
   ],
   "args": []
  },
  {
   "name": "set_social_daily_cap",
   "docs": [
    "Spec 13: per-claimant daily $SHIT cap of the reward-signer social path (authority only, > 0)."
   ],
   "discriminator": [
    92,
    50,
    124,
    163,
    215,
    120,
    86,
    196
   ],
   "accounts": [
    {
     "name": "config",
     "writable": true
    },
    {
     "name": "authority",
     "signer": true
    }
   ],
   "args": [
    {
     "name": "cap",
     "type": "u64"
    }
   ]
  },
  {
   "name": "set_priority_window",
   "docs": [
    "P21: sets (or clears) the mainnet launch priority window: `root` = merkle root of the reserved",
    "(wallet, domain, tld) leaves (see `priority_leaf`), `start_ts` / `end_ts` = unix seconds. Authority only",
    "(Squads vault 0 on mainnet). A zero root with zero times clears the window (registration open to all).",
    "Costs nothing per name: no account is created; holders pass their proof with their own registration."
   ],
   "discriminator": [
    223,
    37,
    155,
    110,
    97,
    86,
    168,
    219
   ],
   "accounts": [
    {
     "name": "config",
     "writable": true
    },
    {
     "name": "authority",
     "signer": true
    }
   ],
   "args": [
    {
     "name": "root",
     "type": {
      "array": [
       "u8",
       32
      ]
     }
    },
    {
     "name": "start_ts",
     "type": "i64"
    },
    {
     "name": "end_ts",
     "type": "i64"
    }
   ]
  },
  {
   "name": "claim_priority_ticket",
   "docs": [
    "P21: during the priority window (root set, before its end) the holder proves (holder, domain, tld) is in the",
    "root and gets a `PriorityTicket` for that name (holder pays its rent; registration closes it and returns it)."
   ],
   "discriminator": [
    251,
    139,
    162,
    171,
    214,
    216,
    4,
    213
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record"
    },
    {
     "name": "ticket",
     "writable": true
    },
    {
     "name": "holder",
     "writable": true,
     "signer": true
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "domain_name",
     "type": "string"
    },
    {
     "name": "tld",
     "type": "string"
    },
    {
     "name": "proof",
     "type": {
      "vec": {
       "array": [
        "u8",
        32
       ]
      }
     }
    }
   ]
  },
  {
   "name": "close_priority_ticket",
   "docs": [
    "P21: the holder closes its ticket any time; anyone may close a stale one (other root, or the window is over).",
    "The rent always goes to the holder."
   ],
   "discriminator": [
    71,
    207,
    15,
    7,
    91,
    29,
    168,
    176
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "ticket",
     "writable": true
    },
    {
     "name": "holder",
     "writable": true
    },
    {
     "name": "caller",
     "signer": true
    }
   ],
   "args": []
  },
  {
   "name": "close_social_reward_day",
   "docs": [
    "Spec 13: permissionless; once its UTC day is over, a social reward day record is closed and its rent",
    "returns to the claimant who paid it."
   ],
   "discriminator": [
    209,
    204,
    129,
    116,
    162,
    93,
    252,
    247
   ],
   "accounts": [
    {
     "name": "record",
     "writable": true
    },
    {
     "name": "claimant",
     "writable": true
    }
   ],
   "args": []
  },
  {
   "name": "add_tld",
   "discriminator": [
    85,
    96,
    82,
    211,
    199,
    179,
    225,
    135
   ],
   "accounts": [
    {
     "name": "config",
     "writable": true
    },
    {
     "name": "tld_record",
     "writable": true
    },
    {
     "name": "authority",
     "writable": true,
     "signer": true
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "tld",
     "type": "string"
    },
    {
     "name": "display_name",
     "type": "string"
    },
    {
     "name": "category",
     "type": {
      "defined": {
       "name": "TldCategory"
      }
     }
    }
   ]
  },
  {
   "name": "set_tld_status",
   "discriminator": [
    73,
    25,
    99,
    169,
    0,
    186,
    45,
    35
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "tld_record",
     "writable": true
    },
    {
     "name": "authority",
     "signer": true
    }
   ],
   "args": [
    {
     "name": "enabled",
     "type": "bool"
    }
   ]
  },
  {
   "name": "update_tier_pricing",
   "docs": [
    "* Updates pricing and launch parameters for a specific domain tier.\n     * Supports both whole-token values (<= 2,500) and raw 6-decimal values\n     * (<= 2,500 * 10^6) so fractional halving epochs are supported natively\n     * while enforcing the 2,500 $SHIT maximum welcome airdrop cap."
   ],
   "discriminator": [
    196,
    58,
    30,
    63,
    78,
    150,
    228,
    135
   ],
   "accounts": [
    {
     "name": "config",
     "writable": true
    },
    {
     "name": "authority",
     "signer": true
    }
   ],
   "args": [
    {
     "name": "tier",
     "type": {
      "defined": {
       "name": "DomainTier"
      }
     }
    },
    {
     "name": "price_lamports",
     "type": "u64"
    },
    {
     "name": "price_usdc_raw",
     "type": "u64"
    },
    {
     "name": "welcome_airdrop_amount",
     "type": "u64"
    },
    {
     "name": "launch_rights_total",
     "type": "u8"
    },
    {
     "name": "creator_lock_seconds",
     "type": "i64"
    },
    {
     "name": "graduation_target_usdc",
     "type": "u64"
    },
    {
     "name": "graduation_target_lamports",
     "type": "u64"
    }
   ]
  },
  {
   "name": "register_domain_sol",
   "docs": [
    "Spec 7: remaining accounts `[payer's ReferralBinding, bound domain record, its owner's NFT account, owner wallet]` (binding and payee writable) pay the referrer",
    "15% of the 80% treasury share; pass none when the payer has no binding.",
    "",
    "P21: while the priority window binds, the payer's `PriorityTicket` of this name (`claim_priority_ticket`) is",
    "appended as the LAST remaining account (after the 4 referral accounts when present); it is closed to the payer."
   ],
   "discriminator": [
    49,
    130,
    197,
    249,
    11,
    36,
    22,
    48
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "tld_record"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "nft_domain_marker",
     "writable": true
    },
    {
     "name": "payer",
     "writable": true,
     "signer": true
    },
    {
     "name": "treasury",
     "writable": true
    },
    {
     "name": "community_vault",
     "writable": true
    },
    {
     "name": "buyback_vault",
     "docs": [
      "Spec 11: receives `config.buyback_bps` of the treasury's SOL revenue."
     ],
     "writable": true
    },
    {
     "name": "reward_authority"
    },
    {
     "name": "reward_vault",
     "writable": true
    },
    {
     "name": "shit_mint"
    },
    {
     "name": "user_shit_ata",
     "writable": true
    },
    {
     "name": "domain_nft_mint_account"
    },
    {
     "name": "domain_nft_token_account"
    },
    {
     "name": "wallet_airdrop_state",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    },
    {
     "name": "airdrop_epoch",
     "docs": [
      "Spec 10: global first-registration counter that sets the welcome-airdrop halving tier."
     ],
     "writable": true
    }
   ],
   "args": [
    {
     "name": "domain_name",
     "type": "string"
    },
    {
     "name": "tld",
     "type": "string"
    },
    {
     "name": "domain_nft_mint",
     "type": "pubkey"
    },
    {
     "name": "expected_price_lamports",
     "type": "u64"
    }
   ]
  },
  {
   "name": "register_domain_usdc",
   "docs": [
    "Spec 7: remaining accounts `[payer's ReferralBinding, bound domain record, its owner's NFT account, owner's USDC ATA]` (binding and payee writable).",
    "P21: the priority ticket as in `register_domain_sol`."
   ],
   "discriminator": [
    210,
    141,
    210,
    44,
    155,
    237,
    179,
    21
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "tld_record"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "nft_domain_marker",
     "writable": true
    },
    {
     "name": "payer",
     "writable": true,
     "signer": true
    },
    {
     "name": "user_usdc_ata",
     "writable": true
    },
    {
     "name": "treasury_usdc_ata",
     "writable": true
    },
    {
     "name": "reward_authority"
    },
    {
     "name": "reward_vault",
     "writable": true
    },
    {
     "name": "shit_mint"
    },
    {
     "name": "user_shit_ata",
     "writable": true
    },
    {
     "name": "domain_nft_mint_account"
    },
    {
     "name": "domain_nft_token_account"
    },
    {
     "name": "wallet_airdrop_state",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    },
    {
     "name": "airdrop_epoch",
     "docs": [
      "Spec 10: global first-registration counter that sets the welcome-airdrop halving tier."
     ],
     "writable": true
    }
   ],
   "args": [
    {
     "name": "domain_name",
     "type": "string"
    },
    {
     "name": "tld",
     "type": "string"
    },
    {
     "name": "domain_nft_mint",
     "type": "pubkey"
    },
    {
     "name": "quoted_usdc_amount",
     "type": "u64"
    }
   ]
  },
  {
   "name": "admin_airdrop_domain_nft",
   "discriminator": [
    49,
    57,
    225,
    126,
    200,
    246,
    111,
    214
   ],
   "accounts": [
    {
     "name": "config",
     "writable": true
    },
    {
     "name": "tld_record"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "nft_domain_marker",
     "writable": true
    },
    {
     "name": "authority",
     "writable": true,
     "signer": true
    },
    {
     "name": "recipient"
    },
    {
     "name": "reward_authority"
    },
    {
     "name": "reward_vault",
     "writable": true
    },
    {
     "name": "shit_mint"
    },
    {
     "name": "recipient_shit_ata",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "domain_name",
     "type": "string"
    },
    {
     "name": "tld",
     "type": "string"
    },
    {
     "name": "domain_nft_mint",
     "type": "pubkey"
    },
    {
     "name": "send_welcome_airdrop",
     "type": "bool"
    }
   ]
  },
  {
   "name": "revoke_admin_grant",
   "discriminator": [
    151,
    193,
    223,
    80,
    251,
    40,
    151,
    221
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "current_owner_profile",
     "writable": true
    },
    {
     "name": "authority",
     "writable": true,
     "signer": true
    },
    {
     "name": "listing"
    },
    {
     "name": "system_program"
    }
   ],
   "args": []
  },
  {
   "name": "migrate_launch_to_raydium",
   "docs": [
    "Permissionless: moves a graduated SOL launch's liquidity (the 210M liquidity tokens and the raised SOL",
    "minus the migration budget) into a new Raydium CPMM pool and burns all LP tokens, in one instruction.",
    "No admin, no custody: the pool is created by a program-derived account that only this code can sign",
    "for, and the price comes from the deposited reserves. Token claims open once this has run."
   ],
   "discriminator": [
    112,
    15,
    68,
    159,
    182,
    209,
    65,
    74
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "handoff",
     "writable": true
    },
    {
     "name": "cranker",
     "writable": true,
     "signer": true
    },
    {
     "name": "migrator",
     "writable": true
    },
    {
     "name": "token_mint",
     "docs": [
      "Writable: any surplus donated to the migrator's token account is burned."
     ],
     "writable": true
    },
    {
     "name": "wsol_mint"
    },
    {
     "name": "token_claim_vault",
     "writable": true
    },
    {
     "name": "migrator_token_ata",
     "writable": true
    },
    {
     "name": "migrator_wsol_ata",
     "writable": true
    },
    {
     "name": "treasury",
     "writable": true
    },
    {
     "name": "buyback_vault",
     "docs": [
      "Spec 11: receives `config.buyback_bps` of the treasury's SOL revenue."
     ],
     "writable": true
    },
    {
     "name": "cp_swap_program"
    },
    {
     "name": "amm_config"
    },
    {
     "name": "raydium_authority"
    },
    {
     "name": "pool_state",
     "writable": true
    },
    {
     "name": "lp_mint",
     "writable": true
    },
    {
     "name": "migrator_lp_ata",
     "writable": true
    },
    {
     "name": "token_0_vault",
     "writable": true
    },
    {
     "name": "token_1_vault",
     "writable": true
    },
    {
     "name": "create_pool_fee",
     "writable": true
    },
    {
     "name": "observation_state",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "associated_token_program"
    },
    {
     "name": "system_program"
    },
    {
     "name": "rent"
    },
    {
     "name": "abandoned_marker"
    },
    {
     "name": "clean_reward",
     "docs": [
      "here (seeds-verified; takes the slot of the former creator $SHIT ATA so the legacy transaction still fits)."
     ],
     "writable": true
    }
   ],
   "args": []
  },
  {
   "name": "set_reward_signer",
   "docs": [
    "Config authority delegates reward payouts to a separate hot key with per-claim and rolling",
    "24h caps per asset. Setting `signer` to the default pubkey disables the delegate."
   ],
   "discriminator": [
    118,
    64,
    164,
    46,
    80,
    226,
    201,
    255
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "reward_signer",
     "writable": true
    },
    {
     "name": "authority",
     "writable": true,
     "signer": true
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "limits",
     "type": {
      "defined": {
       "name": "RewardSignerLimits"
      }
     }
    }
   ]
  },
  {
   "name": "set_pause",
   "discriminator": [
    63,
    32,
    154,
    2,
    56,
    103,
    79,
    45
   ],
   "accounts": [
    {
     "name": "config",
     "writable": true
    },
    {
     "name": "authority",
     "signer": true
    }
   ],
   "args": [
    {
     "name": "paused",
     "type": "bool"
    }
   ]
  },
  {
   "name": "set_primary_domain",
   "discriminator": [
    18,
    2,
    170,
    172,
    190,
    140,
    242,
    27
   ],
   "accounts": [
    {
     "name": "profile",
     "writable": true
    },
    {
     "name": "domain_record"
    },
    {
     "name": "owner",
     "writable": true,
     "signer": true
    },
    {
     "name": "system_program"
    },
    {
     "name": "owner_nft_ata",
     "docs": [
      "AUD-PROG-6: the owner's token account holding the domain NFT (mint = domain_record.domain_nft_mint, amount 1),",
      "appended last like CancelDomain.owner_nft_ata."
     ]
    }
   ],
   "args": []
  },
  {
   "name": "transfer_domain",
   "discriminator": [
    129,
    115,
    193,
    43,
    174,
    5,
    241,
    52
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "current_owner_profile",
     "writable": true
    },
    {
     "name": "current_owner",
     "writable": true,
     "signer": true
    },
    {
     "name": "current_owner_nft_ata",
     "writable": true
    },
    {
     "name": "new_owner_nft_ata",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "new_owner",
     "type": "pubkey"
    }
   ]
  },
  {
   "name": "sync_domain_owner",
   "discriminator": [
    49,
    48,
    186,
    178,
    250,
    219,
    127,
    58
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "previous_owner_profile",
     "writable": true
    },
    {
     "name": "domain_nft_token_account"
    },
    {
     "name": "new_owner",
     "writable": true,
     "signer": true
    },
    {
     "name": "system_program"
    }
   ],
   "args": []
  },
  {
   "name": "renew_domain",
   "discriminator": [
    198,
    206,
    229,
    140,
    157,
    111,
    79,
    68
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "owner",
     "signer": true
    }
   ],
   "args": [
    {
     "name": "_additional_seconds",
     "type": "i64"
    }
   ]
  },
  {
   "name": "renew_domain_sol",
   "docs": [
    "Spec 7 (phase 5): remaining accounts `[owner's ReferralBinding, bound domain record, its owner's NFT account,",
    "owner wallet]` (binding and payee writable) pay the referrer 15% of the 80% treasury part; pass none when",
    "the renewing owner has no binding. Buyback is taken from what the treasury keeps after that share."
   ],
   "discriminator": [
    94,
    47,
    236,
    39,
    15,
    159,
    103,
    3
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "owner",
     "writable": true,
     "signer": true
    },
    {
     "name": "treasury",
     "writable": true
    },
    {
     "name": "community_vault",
     "writable": true
    },
    {
     "name": "buyback_vault",
     "docs": [
      "Spec 11: receives `config.buyback_bps` of the treasury's SOL revenue."
     ],
     "writable": true
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "additional_seconds",
     "type": "i64"
    },
    {
     "name": "expected_price_lamports",
     "type": "u64"
    }
   ]
  },
  {
   "name": "renew_domain_usdc",
   "docs": [
    "Spec 7 (phase 5): remaining accounts `[owner's ReferralBinding, bound domain record, its owner's NFT account,",
    "the domain owner's canonical USDC ATA]` (binding and payee writable) pay the referrer 15% of the 80% treasury",
    "part, as `register_domain_usdc` does; pass none when the renewing owner has no binding."
   ],
   "discriminator": [
    20,
    120,
    103,
    156,
    137,
    186,
    114,
    205
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "owner",
     "writable": true,
     "signer": true
    },
    {
     "name": "owner_usdc_ata",
     "writable": true
    },
    {
     "name": "treasury_usdc_ata",
     "writable": true
    },
    {
     "name": "token_program"
    }
   ],
   "args": [
    {
     "name": "additional_seconds",
     "type": "i64"
    },
    {
     "name": "quoted_usdc_amount",
     "type": "u64"
    }
   ]
  },
  {
   "name": "cancel_domain",
   "discriminator": [
    35,
    211,
    233,
    32,
    120,
    119,
    35,
    82
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "owner_profile",
     "writable": true
    },
    {
     "name": "owner",
     "writable": true,
     "signer": true
    },
    {
     "name": "system_program"
    },
    {
     "name": "owner_nft_ata",
     "docs": [
      "AUD-PROG-2: the owner's token account holding the domain NFT (mint = domain_record.domain_nft_mint, amount 1).",
      "A stale record owner who already sold the NFT elsewhere (Tensor / Magic Eden / a plain SPL transfer) must not be",
      "able to cancel the buyer's domain into its 30-day expiry."
     ]
    }
   ],
   "args": []
  },
  {
   "name": "expire_domain",
   "discriminator": [
    248,
    113,
    216,
    128,
    232,
    222,
    214,
    188
   ],
   "accounts": [
    {
     "name": "domain_record",
     "writable": true
    }
   ],
   "args": []
  },
  {
   "name": "create_launch_pool",
   "discriminator": [
    114,
    137,
    221,
    166,
    68,
    72,
    80,
    157
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "token_mint_account",
     "docs": [
      "Audit R3 F-8 (closes L-9): the launch token's mint keypair must sign, which binds a prepared mint to the",
      "creator who made it. Without it, a mint prepared in an earlier transaction could be front-run onto",
      "another creator's launch. The claim vault is the config's ATA of this mint (a PDA, it cannot sign), so it",
      "is bound through the mint."
     ],
     "signer": true
    },
    {
     "name": "mint_launch_marker",
     "writable": true
    },
    {
     "name": "token_claim_vault"
    },
    {
     "name": "creator",
     "writable": true,
     "signer": true
    },
    {
     "name": "system_program"
    },
    {
     "name": "creator_nft_ata",
     "docs": [
      "The creator's token account holding the domain NFT (mint = domain_record.domain_nft_mint, amount 1)."
     ]
    },
    {
     "name": "creator_vault",
     "docs": [
      "R10-P1/P2: the creator's fee vault [\"creator-vault\", creator], created here with the creator paying when",
      "it does not exist yet (an existing one is validated)."
     ],
     "writable": true
    }
   ],
   "args": [
    {
     "name": "token_symbol",
     "type": "string"
    },
    {
     "name": "token_mint",
     "type": "pubkey"
    },
    {
     "name": "pair_asset",
     "type": {
      "defined": {
       "name": "PaymentAsset"
      }
     }
    },
    {
     "name": "sniper_max_wallet_amount",
     "type": "u64"
    }
   ]
  },
  {
   "name": "create_launch_pool_v2",
   "docs": [
    "Growth plan item 1: a launch whose token carries on-chain Metaplex metadata (name, symbol, logo URI), so",
    "DexScreener / Jupiter / wallets show the token after graduation instead of \"Unknown\". The client creates the",
    "mint (decimals 6, supply 0) with the program's `[\"token-metadata-authority\"]` PDA as mint authority and no",
    "freeze authority, plus the config's claim-vault ATA. This instruction then mints the fixed 1,000,000,000",
    "supply into the claim vault, creates the Metaplex metadata account (name = `token_name`, symbol =",
    "`token_symbol`, uri = `TOKEN_METADATA_URI_BASE` + mint + \".json\", update authority = the same PDA, mutable",
    "only through `update_launch_token_metadata` by the config authority) and revokes the mint authority, all in",
    "one transaction. Afterwards the mint is exactly what `create_launch_pool` requires (fixed supply, no",
    "authorities). The launch itself is created exactly as by `create_launch_pool`."
   ],
   "discriminator": [
    121,
    117,
    40,
    165,
    94,
    193,
    229,
    220
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "token_mint_account",
     "docs": [
      "Audit R3 F-8: the mint keypair signs (binds a prepared mint to its creator). Mint authority = the",
      "metadata authority PDA, supply 0, no freeze authority (checked in the handler)."
     ],
     "writable": true,
     "signer": true
    },
    {
     "name": "mint_launch_marker",
     "writable": true
    },
    {
     "name": "token_claim_vault",
     "docs": [
      "The config's ATA of the mint (empty; receives the full supply here)."
     ],
     "writable": true
    },
    {
     "name": "creator",
     "writable": true,
     "signer": true
    },
    {
     "name": "system_program"
    },
    {
     "name": "creator_nft_ata"
    },
    {
     "name": "creator_vault",
     "writable": true
    },
    {
     "name": "metadata",
     "writable": true
    },
    {
     "name": "metadata_authority"
    },
    {
     "name": "token_program"
    },
    {
     "name": "token_metadata_program"
    },
    {
     "name": "rent"
    }
   ],
   "args": [
    {
     "name": "token_symbol",
     "type": "string"
    },
    {
     "name": "token_name",
     "type": "string"
    },
    {
     "name": "token_mint",
     "type": "pubkey"
    },
    {
     "name": "pair_asset",
     "type": {
      "defined": {
       "name": "PaymentAsset"
      }
     }
    },
    {
     "name": "sniper_max_wallet_amount",
     "type": "u64"
    }
   ]
  },
  {
   "name": "update_launch_token_metadata",
   "docs": [
    "Growth plan item 1: the config authority corrects a launch token's Metaplex name / URI (the program's",
    "`[\"token-metadata-authority\"]` PDA is the update authority of every metadata `create_launch_pool_v2` made). The",
    "symbol always stays the launch's symbol. Legacy launches (no metadata account) cannot be changed here."
   ],
   "discriminator": [
    235,
    189,
    249,
    205,
    11,
    125,
    85,
    38
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "authority",
     "signer": true
    },
    {
     "name": "launch_pool"
    },
    {
     "name": "metadata",
     "writable": true
    },
    {
     "name": "metadata_authority"
    },
    {
     "name": "token_metadata_program"
    }
   ],
   "args": [
    {
     "name": "token_name",
     "type": "string"
    },
    {
     "name": "uri",
     "type": "string"
    }
   ]
  },
  {
   "name": "buy_position",
   "discriminator": [
    210,
    108,
    108,
    28,
    10,
    46,
    226,
    137
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "position",
     "writable": true
    },
    {
     "name": "buyer",
     "writable": true,
     "signer": true
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "_amount_paid",
     "type": "u64"
    },
    {
     "name": "_receipt_units",
     "type": "u64"
    }
   ]
  },
  {
   "name": "buy_position_sol",
   "docs": [
    "Buy receipts with at most `max_gross_amount` lamports. Reverts if fewer than",
    "`min_receipt_units` would be received (slippage protection for instant trading).",
    "Spec 7: remaining accounts `[buyer's ReferralBinding, bound domain record, its owner's NFT account, owner wallet]` (binding and payee writable) pay the referrer",
    "15% of the 0.75% treasury fee; pass none when the buyer has no binding."
   ],
   "discriminator": [
    156,
    155,
    60,
    104,
    79,
    37,
    11,
    151
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "position",
     "writable": true
    },
    {
     "name": "buyer",
     "writable": true,
     "signer": true
    },
    {
     "name": "creator_vault",
     "writable": true
    },
    {
     "name": "treasury",
     "writable": true
    },
    {
     "name": "community_vault",
     "writable": true
    },
    {
     "name": "buyback_vault",
     "docs": [
      "Spec 11: receives `config.buyback_bps` of the treasury's SOL revenue."
     ],
     "writable": true
    },
    {
     "name": "system_program"
    },
    {
     "name": "sniper_tracker",
     "writable": true
    }
   ],
   "args": [
    {
     "name": "max_gross_amount",
     "type": "u64"
    },
    {
     "name": "min_receipt_units",
     "type": "u64"
    }
   ]
  },
  {
   "name": "buy_position_usdc",
   "discriminator": [
    105,
    189,
    162,
    54,
    73,
    100,
    31,
    172
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "position",
     "writable": true
    },
    {
     "name": "buyer",
     "writable": true,
     "signer": true
    },
    {
     "name": "user_usdc_ata",
     "writable": true
    },
    {
     "name": "launch_usdc_vault",
     "writable": true
    },
    {
     "name": "creator_usdc_ata",
     "writable": true
    },
    {
     "name": "treasury_usdc_ata",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    },
    {
     "name": "sniper_tracker",
     "writable": true
    }
   ],
   "args": [
    {
     "name": "max_gross_amount",
     "type": "u64"
    },
    {
     "name": "min_receipt_units",
     "type": "u64"
    }
   ]
  },
  {
   "name": "sell_position",
   "discriminator": [
    11,
    170,
    234,
    139,
    126,
    196,
    142,
    74
   ],
   "accounts": [
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "position",
     "writable": true
    },
    {
     "name": "buyer",
     "signer": true
    }
   ],
   "args": [
    {
     "name": "_receipt_units",
     "type": "u64"
    },
    {
     "name": "_refund_amount",
     "type": "u64"
    }
   ]
  },
  {
   "name": "sell_position_sol",
   "docs": [
    "Sell receipts back to the curve; reverts if the net proceeds would be below `min_refund_amount`.",
    "Spec 7: remaining accounts `[seller's ReferralBinding, bound domain record, its owner's NFT account, owner wallet]` (binding and payee writable)."
   ],
   "discriminator": [
    194,
    33,
    245,
    101,
    69,
    197,
    251,
    205
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "position",
     "writable": true
    },
    {
     "name": "buyer",
     "writable": true,
     "signer": true
    },
    {
     "name": "creator_vault",
     "writable": true
    },
    {
     "name": "treasury",
     "writable": true
    },
    {
     "name": "community_vault",
     "writable": true
    },
    {
     "name": "buyback_vault",
     "docs": [
      "Spec 11: receives `config.buyback_bps` of the treasury's SOL revenue."
     ],
     "writable": true
    },
    {
     "name": "system_program",
     "docs": [
      "Phase 5: creates the creator fee vault on first touch (the seller pays its rent)."
     ]
    }
   ],
   "args": [
    {
     "name": "receipt_units",
     "type": "u64"
    },
    {
     "name": "min_refund_amount",
     "type": "u64"
    }
   ]
  },
  {
   "name": "sell_position_usdc",
   "discriminator": [
    214,
    109,
    19,
    17,
    50,
    137,
    100,
    88
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "position",
     "writable": true
    },
    {
     "name": "buyer",
     "signer": true
    },
    {
     "name": "launch_usdc_vault",
     "writable": true
    },
    {
     "name": "buyer_usdc_ata",
     "writable": true
    },
    {
     "name": "creator_usdc_ata",
     "writable": true
    },
    {
     "name": "treasury_usdc_ata",
     "writable": true
    },
    {
     "name": "token_program"
    }
   ],
   "args": [
    {
     "name": "receipt_units",
     "type": "u64"
    },
    {
     "name": "min_refund_amount",
     "type": "u64"
    }
   ]
  },
  {
   "name": "set_launch_status",
   "discriminator": [
    32,
    119,
    46,
    141,
    41,
    233,
    253,
    44
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "authority",
     "signer": true
    }
   ],
   "args": [
    {
     "name": "_status",
     "type": {
      "defined": {
       "name": "LaunchStatus"
      }
     }
    }
   ]
  },
  {
   "name": "graduate_launch_pool",
   "docs": [
    "Permissionless finalisation of a graduated launch. Graduation itself happens atomically in the buy",
    "that completes the curve; this only releases the domain's active-launch slot and starts the",
    "creator lock from the graduation time. No observed price, no admin input."
   ],
   "discriminator": [
    185,
    187,
    113,
    13,
    179,
    182,
    81,
    15
   ],
   "accounts": [
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "launch_pool",
     "writable": true
    }
   ],
   "args": []
  },
  {
   "name": "fail_launch_pool",
   "docs": [
    "Permissionless: once the deadline passes without graduation anyone may fail the launch, so buyer",
    "funds can never be frozen waiting for an operator. There is no early/forced failure path."
   ],
   "discriminator": [
    134,
    150,
    247,
    183,
    231,
    155,
    210,
    86
   ],
   "accounts": [
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "launch_pool",
     "writable": true
    }
   ],
   "args": []
  },
  {
   "name": "claim_graduated_tokens",
   "discriminator": [
    85,
    57,
    103,
    240,
    25,
    227,
    92,
    75
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool"
    },
    {
     "name": "amm_handoff"
    },
    {
     "name": "position",
     "writable": true
    },
    {
     "name": "buyer",
     "signer": true
    },
    {
     "name": "token_claim_vault",
     "writable": true
    },
    {
     "name": "buyer_token_ata",
     "writable": true
    },
    {
     "name": "token_program"
    }
   ],
   "args": [
    {
     "name": "claim_amount",
     "type": "u64"
    }
   ]
  },
  {
   "name": "claim_creator_fees",
   "docs": [
    "Phase 5: the creator takes every lamport its creator fee vault holds above the vault's rent minimum",
    "(the rent stays, so the vault keeps accruing). Only the creator itself can sign: the vault is",
    "derived from the signer's key. Not pausable (a claim of fees already earned)."
   ],
   "discriminator": [
    0,
    23,
    125,
    234,
    156,
    118,
    134,
    89
   ],
   "accounts": [
    {
     "name": "creator_vault",
     "docs": [
      "Phase 5, [\"creator-vault\", creator]: derived from the signer, so only a creator's own vault can be claimed",
      "(it must exist: the first creator fee created it)."
     ],
     "writable": true
    },
    {
     "name": "creator",
     "writable": true,
     "signer": true
    }
   ],
   "args": []
  },
  {
   "name": "init_creator_vault",
   "docs": [
    "Phase 5: permissionless. Creates `creator`'s fee vault with `payer` paying its rent (the operator does this",
    "once for the creators of launches that predate the vault: scripts/init-creator-vaults.ts, so no trader ever",
    "fronts it there). New launches get it from `create_launch_pool` (R10); trades create a missing vault only as",
    "a fallback."
   ],
   "discriminator": [
    139,
    224,
    32,
    30,
    188,
    25,
    149,
    69
   ],
   "accounts": [
    {
     "name": "creator_vault",
     "writable": true
    },
    {
     "name": "payer",
     "writable": true,
     "signer": true
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "creator",
     "type": "pubkey"
    }
   ]
  },
  {
   "name": "claim_creator_allocation",
   "discriminator": [
    61,
    26,
    23,
    14,
    181,
    200,
    238,
    245
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "amm_handoff"
    },
    {
     "name": "creator",
     "writable": true,
     "signer": true
    },
    {
     "name": "token_claim_vault",
     "writable": true
    },
    {
     "name": "creator_token_ata",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "clean_reward",
     "docs": [
      "existed); seeds-verified, every withdrawal is recorded in it."
     ],
     "writable": true
    }
   ],
   "args": []
  },
  {
   "name": "claim_creator_allocation_part",
   "docs": [
    "Growth plan item 7: the creator takes `amount` raw units of its allocation (the rest stays in program",
    "custody and can be taken later, by this or `claim_creator_allocation`). Same rules as the full claim. A creator",
    "that keeps at least `1 - max_withdrawn_bps` of the allocation in custody until a checkpoint stays eligible",
    "for that checkpoint's clean-launch reward tranche."
   ],
   "discriminator": [
    55,
    17,
    80,
    110,
    37,
    93,
    8,
    1
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "amm_handoff"
    },
    {
     "name": "creator",
     "writable": true,
     "signer": true
    },
    {
     "name": "token_claim_vault",
     "writable": true
    },
    {
     "name": "creator_token_ata",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "clean_reward",
     "docs": [
      "existed); seeds-verified, every withdrawal is recorded in it."
     ],
     "writable": true
    }
   ],
   "args": [
    {
     "name": "amount",
     "type": "u64"
    }
   ]
  },
  {
   "name": "set_clean_reward_config",
   "docs": [
    "Growth plan item 7: config authority sets the clean-launch reward rules (applied to launches whose reward",
    "is started afterwards; a started reward keeps the rules it was started with)."
   ],
   "discriminator": [
    132,
    136,
    43,
    82,
    153,
    158,
    92,
    22
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "authority",
     "writable": true,
     "signer": true
    },
    {
     "name": "clean_reward_config",
     "writable": true
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "params",
     "type": {
      "defined": {
       "name": "CleanRewardParams"
      }
     }
    }
   ]
  },
  {
   "name": "start_clean_launch_reward",
   "docs": [
    "Growth plan item 7, permissionless: escrows a migrated launch's clean-launch reward from the reward vault",
    "into the launch's own vault [\"clean-reward-vault\", launch_pool] (owned by the reward authority) and fixes the",
    "rules (from `CleanRewardConfig`, defaults when it does not exist). A reward vault holding less than the",
    "reward skips it (status `CLEAN_REWARD_SKIPPED`), as the old direct payment did. Runs once."
   ],
   "discriminator": [
    51,
    84,
    197,
    175,
    201,
    207,
    1,
    174
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "clean_reward",
     "docs": [
      "[\"clean-reward\", launch_pool], created by the migration."
     ],
     "writable": true
    },
    {
     "name": "clean_reward_config"
    },
    {
     "name": "clean_reward_vault",
     "writable": true
    },
    {
     "name": "shit_mint"
    },
    {
     "name": "reward_authority"
    },
    {
     "name": "reward_vault",
     "writable": true
    },
    {
     "name": "payer",
     "writable": true,
     "signer": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": []
  },
  {
   "name": "settle_clean_launch_reward",
   "docs": [
    "Growth plan item 7, permissionless: settles every clean-launch reward tranche whose checkpoint has passed.",
    "A tranche is released to the creator's $SHIT ATA only if (a) the creator withdrew at most `max_withdrawn_bps`",
    "of its allocation from program custody before that checkpoint and (b) the launch's Raydium pool still holds",
    "at least `alive_min_pool_sol_bps` of the SOL the migration deposited; otherwise it returns to the reward",
    "vault (forfeited). The transaction may contain nothing but compute-budget, ATA-creation and this program's",
    "start / settle instructions (no swap can move the pool around the check in the same transaction)."
   ],
   "discriminator": [
    94,
    161,
    224,
    221,
    11,
    201,
    233,
    187
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "clean_reward",
     "docs": [
      "[\"clean-reward\", launch_pool]."
     ],
     "writable": true
    },
    {
     "name": "clean_reward_vault",
     "writable": true
    },
    {
     "name": "reward_authority"
    },
    {
     "name": "reward_vault",
     "writable": true
    },
    {
     "name": "creator_shit_ata",
     "writable": true
    },
    {
     "name": "pool_state"
    },
    {
     "name": "pool_sol_vault"
    },
    {
     "name": "token_program"
    },
    {
     "name": "instructions"
    }
   ],
   "args": []
  },
  {
   "name": "claim_unmigrated_refund_sol",
   "docs": [
    "Permissionless fallback for a graduated SOL launch that was not migrated within the grace period:",
    "each holder takes back its pro-rata share of the escrow (`raised_amount` and `receipt_units_sold` are",
    "frozen at graduation, so payouts are order-independent and sum to at most the escrow). The first",
    "refund creates the `migration-abandoned` marker, after which migration is refused, so the escrow is",
    "never both refunded and migrated. Tokens of such a launch stay in the claim vault forever."
   ],
   "discriminator": [
    29,
    121,
    183,
    19,
    160,
    240,
    243,
    241
   ],
   "accounts": [
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "amm_handoff"
    },
    {
     "name": "abandoned_marker",
     "docs": [
      "Created by the first refund; its existence blocks `migrate_launch_to_raydium` from then on."
     ],
     "writable": true
    },
    {
     "name": "position",
     "writable": true
    },
    {
     "name": "buyer",
     "writable": true,
     "signer": true
    },
    {
     "name": "system_program"
    }
   ],
   "args": []
  },
  {
   "name": "mark_failure_refund_claimed",
   "discriminator": [
    137,
    80,
    253,
    106,
    224,
    0,
    253,
    184
   ],
   "accounts": [
    {
     "name": "launch_pool"
    },
    {
     "name": "position",
     "writable": true
    },
    {
     "name": "buyer",
     "signer": true
    }
   ],
   "args": [
    {
     "name": "_refund_amount",
     "type": "u64"
    }
   ]
  },
  {
   "name": "claim_failure_refund_sol",
   "docs": [
    "`rekt_epoch_id` must be the current week (`unix_ts / 604800`); it names the Rekt-Fest accounts the",
    "forfeit is recorded in. Phase 1e: recorded only when the claimant is not the creator and the launch",
    "deadline passed at most 7 days ago (audit R3 F-1; otherwise `RektLossSkipped`, and the records are not kept)."
   ],
   "discriminator": [
    0,
    141,
    176,
    194,
    228,
    189,
    173,
    33
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool",
     "docs": [
      "Audit R3 F-10: boxed (with `position` and `shit_mint`) to keep the SBF stack frame small."
     ],
     "writable": true
    },
    {
     "name": "position",
     "writable": true
    },
    {
     "name": "buyer",
     "writable": true,
     "signer": true
    },
    {
     "name": "community_vault",
     "writable": true
    },
    {
     "name": "reward_authority"
    },
    {
     "name": "reward_vault",
     "writable": true
    },
    {
     "name": "shit_mint"
    },
    {
     "name": "buyer_shit_ata",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "rekt_pool",
     "docs": [
      "Spec 2: the Rekt-Fest pool (the same account as `community_vault` once migrated)."
     ],
     "writable": true
    },
    {
     "name": "rekt_epoch",
     "writable": true
    },
    {
     "name": "rekt_claim",
     "writable": true
    },
    {
     "name": "system_program"
    },
    {
     "name": "sniper_tracker"
    }
   ],
   "args": [
    {
     "name": "rekt_epoch_id",
     "type": "u64"
    }
   ]
  },
  {
   "name": "claim_failure_refund_usdc",
   "discriminator": [
    112,
    177,
    128,
    186,
    218,
    183,
    0,
    150
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool",
     "docs": [
      "Audit R3 F-10: boxed (with `position` and `shit_mint`) to keep the SBF stack frame small."
     ],
     "writable": true
    },
    {
     "name": "position",
     "writable": true
    },
    {
     "name": "buyer",
     "signer": true
    },
    {
     "name": "launch_usdc_vault",
     "writable": true
    },
    {
     "name": "buyer_usdc_ata",
     "writable": true
    },
    {
     "name": "treasury_usdc_ata",
     "docs": [
      "Phase 1f: the treasury's USDC account receives the 25% remainder (was the Rekt-Fest pool's USDC ATA)."
     ],
     "writable": true
    },
    {
     "name": "reward_authority"
    },
    {
     "name": "reward_vault",
     "writable": true
    },
    {
     "name": "shit_mint"
    },
    {
     "name": "buyer_shit_ata",
     "writable": true
    },
    {
     "name": "token_program"
    }
   ],
   "args": []
  },
  {
   "name": "list_domain",
   "discriminator": [
    140,
    232,
    109,
    191,
    154,
    7,
    181,
    108
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record"
    },
    {
     "name": "listing",
     "writable": true
    },
    {
     "name": "seller",
     "writable": true,
     "signer": true
    },
    {
     "name": "seller_nft_ata",
     "writable": true
    },
    {
     "name": "listing_nft_escrow",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "price",
     "type": "u64"
    },
    {
     "name": "asset",
     "type": {
      "defined": {
       "name": "PaymentAsset"
      }
     }
    }
   ]
  },
  {
   "name": "cancel_listing",
   "discriminator": [
    41,
    183,
    50,
    232,
    230,
    233,
    157,
    70
   ],
   "accounts": [
    {
     "name": "domain_record"
    },
    {
     "name": "listing",
     "writable": true
    },
    {
     "name": "seller",
     "writable": true,
     "signer": true
    },
    {
     "name": "seller_nft_ata",
     "writable": true
    },
    {
     "name": "listing_nft_escrow",
     "writable": true
    },
    {
     "name": "token_program"
    }
   ],
   "args": []
  },
  {
   "name": "buy_listing_sol",
   "docs": [
    "`expected_price` is the price the signer saw; a listing/offer/trade re-created at another price in",
    "front of this transaction makes it fail instead of settling at the new price (M-1).",
    "Spec 7: remaining accounts `[buyer's ReferralBinding, bound domain record, its owner's NFT account, owner wallet]` (binding and payee writable) pay the referrer",
    "15% of the 2.8% treasury part of the taker fee."
   ],
   "discriminator": [
    247,
    13,
    33,
    242,
    12,
    9,
    209,
    78
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "listing",
     "writable": true
    },
    {
     "name": "seller_profile",
     "writable": true
    },
    {
     "name": "buyer",
     "writable": true,
     "signer": true
    },
    {
     "name": "seller",
     "writable": true
    },
    {
     "name": "treasury",
     "writable": true
    },
    {
     "name": "community_vault",
     "writable": true
    },
    {
     "name": "buyback_vault",
     "docs": [
      "Spec 11: receives `config.buyback_bps` of the treasury's SOL revenue."
     ],
     "writable": true
    },
    {
     "name": "listing_nft_escrow",
     "writable": true
    },
    {
     "name": "buyer_nft_ata",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "expected_price",
     "type": "u64"
    }
   ]
  },
  {
   "name": "buy_listing_usdc",
   "docs": [
    "`expected_price` is the price the signer saw; a listing/offer/trade re-created at another price in",
    "front of this transaction makes it fail instead of settling at the new price (M-1).",
    "Spec 7: remaining accounts `[buyer's ReferralBinding, bound domain record, its owner's NFT account, owner's USDC ATA]` (binding and payee writable)."
   ],
   "discriminator": [
    21,
    65,
    220,
    148,
    50,
    175,
    69,
    205
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "listing",
     "writable": true
    },
    {
     "name": "seller_profile",
     "writable": true
    },
    {
     "name": "buyer",
     "writable": true,
     "signer": true
    },
    {
     "name": "buyer_usdc_ata",
     "writable": true
    },
    {
     "name": "seller_usdc_ata",
     "writable": true
    },
    {
     "name": "treasury_usdc_ata",
     "writable": true
    },
    {
     "name": "listing_nft_escrow",
     "writable": true
    },
    {
     "name": "buyer_nft_ata",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "expected_price",
     "type": "u64"
    }
   ]
  },
  {
   "name": "create_marketplace_offer_sol",
   "discriminator": [
    254,
    234,
    236,
    208,
    148,
    175,
    36,
    130
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record"
    },
    {
     "name": "offer",
     "writable": true
    },
    {
     "name": "buyer",
     "writable": true,
     "signer": true
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "offer_id",
     "type": {
      "array": [
       "u8",
       32
      ]
     }
    },
    {
     "name": "price",
     "type": "u64"
    }
   ]
  },
  {
   "name": "create_marketplace_offer_usdc",
   "discriminator": [
    235,
    183,
    191,
    102,
    4,
    60,
    114,
    170
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record"
    },
    {
     "name": "offer",
     "writable": true
    },
    {
     "name": "buyer",
     "writable": true,
     "signer": true
    },
    {
     "name": "buyer_usdc_ata",
     "writable": true
    },
    {
     "name": "escrow_authority"
    },
    {
     "name": "marketplace_usdc_vault",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "offer_id",
     "type": {
      "array": [
       "u8",
       32
      ]
     }
    },
    {
     "name": "price",
     "type": "u64"
    }
   ]
  },
  {
   "name": "cancel_marketplace_offer_sol",
   "discriminator": [
    199,
    221,
    119,
    53,
    102,
    90,
    50,
    12
   ],
   "accounts": [
    {
     "name": "offer",
     "writable": true
    },
    {
     "name": "buyer",
     "writable": true,
     "signer": true
    }
   ],
   "args": []
  },
  {
   "name": "cancel_marketplace_offer_usdc",
   "discriminator": [
    174,
    195,
    183,
    47,
    91,
    13,
    107,
    95
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "offer",
     "writable": true
    },
    {
     "name": "buyer",
     "writable": true,
     "signer": true
    },
    {
     "name": "escrow_authority"
    },
    {
     "name": "marketplace_usdc_vault",
     "writable": true
    },
    {
     "name": "buyer_usdc_ata",
     "writable": true
    },
    {
     "name": "token_program"
    }
   ],
   "args": []
  },
  {
   "name": "accept_marketplace_offer_sol",
   "docs": [
    "`expected_price` is the price the signer saw; a listing/offer/trade re-created at another price in",
    "front of this transaction makes it fail instead of settling at the new price (M-1).",
    "",
    "Spec 7: the taker fee is the offer buyer's (escrowed with the offer), so the referral is the buyer's:",
    "remaining accounts `[offer buyer's ReferralBinding, bound domain record, its owner's NFT account, owner wallet]` (binding and payee writable)."
   ],
   "discriminator": [
    70,
    90,
    213,
    173,
    210,
    56,
    75,
    77
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "offer",
     "writable": true
    },
    {
     "name": "seller_profile",
     "writable": true
    },
    {
     "name": "seller",
     "writable": true,
     "signer": true
    },
    {
     "name": "buyer"
    },
    {
     "name": "treasury",
     "writable": true
    },
    {
     "name": "community_vault",
     "writable": true
    },
    {
     "name": "buyback_vault",
     "docs": [
      "Spec 11: receives `config.buyback_bps` of the treasury's SOL revenue."
     ],
     "writable": true
    },
    {
     "name": "seller_nft_ata",
     "writable": true
    },
    {
     "name": "buyer_nft_ata",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "expected_price",
     "type": "u64"
    }
   ]
  },
  {
   "name": "accept_marketplace_offer_usdc",
   "docs": [
    "`expected_price` is the price the signer saw; a listing/offer/trade re-created at another price in",
    "front of this transaction makes it fail instead of settling at the new price (M-1).",
    "",
    "Spec 7: remaining accounts `[offer buyer's ReferralBinding, bound domain record, its owner's NFT account, owner's USDC ATA]` (binding and payee writable)."
   ],
   "discriminator": [
    192,
    199,
    160,
    222,
    86,
    134,
    81,
    88
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "offer",
     "writable": true
    },
    {
     "name": "seller_profile",
     "writable": true
    },
    {
     "name": "seller",
     "writable": true,
     "signer": true
    },
    {
     "name": "buyer"
    },
    {
     "name": "escrow_authority"
    },
    {
     "name": "marketplace_usdc_vault",
     "writable": true
    },
    {
     "name": "seller_usdc_ata",
     "writable": true
    },
    {
     "name": "treasury_usdc_ata",
     "writable": true
    },
    {
     "name": "seller_nft_ata",
     "writable": true
    },
    {
     "name": "buyer_nft_ata",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "expected_price",
     "type": "u64"
    }
   ]
  },
  {
   "name": "create_private_trade",
   "discriminator": [
    24,
    100,
    175,
    40,
    195,
    221,
    145,
    175
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record"
    },
    {
     "name": "trade",
     "writable": true
    },
    {
     "name": "seller",
     "writable": true,
     "signer": true
    },
    {
     "name": "buyer"
    },
    {
     "name": "seller_nft_ata",
     "writable": true
    },
    {
     "name": "trade_nft_escrow",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "trade_id",
     "type": {
      "array": [
       "u8",
       32
      ]
     }
    },
    {
     "name": "price",
     "type": "u64"
    },
    {
     "name": "asset",
     "type": {
      "defined": {
       "name": "PaymentAsset"
      }
     }
    },
    {
     "name": "expires_at",
     "type": "i64"
    }
   ]
  },
  {
   "name": "cancel_private_trade",
   "discriminator": [
    39,
    70,
    21,
    181,
    129,
    55,
    13,
    12
   ],
   "accounts": [
    {
     "name": "domain_record"
    },
    {
     "name": "trade",
     "writable": true
    },
    {
     "name": "seller",
     "writable": true,
     "signer": true
    },
    {
     "name": "seller_nft_ata",
     "writable": true
    },
    {
     "name": "trade_nft_escrow",
     "writable": true
    },
    {
     "name": "token_program"
    }
   ],
   "args": []
  },
  {
   "name": "accept_private_trade_sol",
   "docs": [
    "`expected_price` is the price the signer saw; a listing/offer/trade re-created at another price in",
    "front of this transaction makes it fail instead of settling at the new price (M-1).",
    "",
    "Spec 8: the buyer pays the price to the seller plus a fixed 0.01 SOL fee: 80% treasury (spec 7 referral",
    "share first, then the spec 11 buyback split), 20% Rekt-Fest pool. Remaining accounts",
    "`[buyer's ReferralBinding, bound domain record, its owner's NFT account, owner wallet]` (binding and payee writable) when the buyer has a binding."
   ],
   "discriminator": [
    230,
    14,
    184,
    151,
    14,
    27,
    180,
    224
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "trade",
     "writable": true
    },
    {
     "name": "seller_profile",
     "writable": true
    },
    {
     "name": "buyer",
     "writable": true,
     "signer": true
    },
    {
     "name": "seller",
     "writable": true
    },
    {
     "name": "treasury",
     "writable": true
    },
    {
     "name": "community_vault",
     "writable": true
    },
    {
     "name": "buyback_vault",
     "docs": [
      "Spec 11: receives `config.buyback_bps` of the treasury's SOL revenue."
     ],
     "writable": true
    },
    {
     "name": "trade_nft_escrow",
     "writable": true
    },
    {
     "name": "buyer_nft_ata",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "expected_price",
     "type": "u64"
    }
   ]
  },
  {
   "name": "accept_private_trade_usdc",
   "docs": [
    "`expected_price` is the price the signer saw; a listing/offer/trade re-created at another price in",
    "front of this transaction makes it fail instead of settling at the new price (M-1).",
    "",
    "Spec 8: price to the seller plus a fixed 1 USDC fee from the buyer: 80% treasury (minus the spec 7",
    "referral share); the 20% community part also goes to the treasury (Phase 1f: Rekt-Fest is SOL-only). Remaining accounts `[buyer's ReferralBinding, bound domain record, its owner's NFT account, owner's USDC ATA]`."
   ],
   "discriminator": [
    41,
    103,
    169,
    105,
    34,
    223,
    236,
    159
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "domain_record",
     "writable": true
    },
    {
     "name": "trade",
     "writable": true
    },
    {
     "name": "seller_profile",
     "writable": true
    },
    {
     "name": "buyer",
     "writable": true,
     "signer": true
    },
    {
     "name": "seller"
    },
    {
     "name": "buyer_usdc_ata",
     "writable": true
    },
    {
     "name": "seller_usdc_ata",
     "writable": true
    },
    {
     "name": "treasury_usdc_ata",
     "writable": true
    },
    {
     "name": "trade_nft_escrow",
     "writable": true
    },
    {
     "name": "buyer_nft_ata",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "expected_price",
     "type": "u64"
    }
   ]
  },
  {
   "name": "create_referral_reward",
   "discriminator": [
    17,
    236,
    69,
    49,
    40,
    5,
    95,
    186
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "referral_reward",
     "writable": true
    },
    {
     "name": "authority",
     "writable": true,
     "signer": true
    },
    {
     "name": "referrer"
    },
    {
     "name": "referred"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "_referral_id",
     "type": "string"
    },
    {
     "name": "_asset",
     "type": {
      "defined": {
       "name": "ReferralRewardAsset"
      }
     }
    },
    {
     "name": "_amount",
     "type": "u64"
    },
    {
     "name": "_unlock_at",
     "type": "i64"
    }
   ]
  },
  {
   "name": "create_referral_reward_sol",
   "discriminator": [
    92,
    92,
    48,
    110,
    199,
    57,
    5,
    233
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "reward_signer",
     "writable": true
    },
    {
     "name": "referral_reward",
     "writable": true
    },
    {
     "name": "authority",
     "writable": true,
     "signer": true
    },
    {
     "name": "referrer"
    },
    {
     "name": "referred"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "referral_id",
     "type": "string"
    },
    {
     "name": "amount",
     "type": "u64"
    },
    {
     "name": "unlock_at",
     "type": "i64"
    }
   ]
  },
  {
   "name": "create_referral_reward_token",
   "discriminator": [
    173,
    215,
    253,
    199,
    24,
    160,
    227,
    236
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "reward_signer",
     "writable": true
    },
    {
     "name": "referral_reward",
     "writable": true
    },
    {
     "name": "authority",
     "writable": true,
     "signer": true
    },
    {
     "name": "referrer"
    },
    {
     "name": "referred"
    },
    {
     "name": "reward_authority"
    },
    {
     "name": "funding_vault",
     "writable": true
    },
    {
     "name": "reward_token_vault",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "referral_id",
     "type": "string"
    },
    {
     "name": "asset",
     "type": {
      "defined": {
       "name": "ReferralRewardAsset"
      }
     }
    },
    {
     "name": "amount",
     "type": "u64"
    },
    {
     "name": "unlock_at",
     "type": "i64"
    }
   ]
  },
  {
   "name": "claim_referral_reward_sol",
   "discriminator": [
    118,
    251,
    96,
    96,
    150,
    246,
    20,
    249
   ],
   "accounts": [
    {
     "name": "referral_reward",
     "writable": true
    },
    {
     "name": "referrer",
     "writable": true,
     "signer": true
    }
   ],
   "args": []
  },
  {
   "name": "claim_referral_reward_token",
   "discriminator": [
    202,
    83,
    74,
    228,
    212,
    97,
    153,
    219
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "referral_reward",
     "writable": true
    },
    {
     "name": "referrer",
     "signer": true
    },
    {
     "name": "reward_token_vault",
     "writable": true
    },
    {
     "name": "referrer_token_ata",
     "writable": true
    },
    {
     "name": "token_program"
    }
   ],
   "args": []
  },
  {
   "name": "set_referral_review_status",
   "discriminator": [
    221,
    21,
    154,
    128,
    96,
    44,
    13,
    17
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "referral_reward",
     "writable": true
    },
    {
     "name": "authority",
     "signer": true
    }
   ],
   "args": [
    {
     "name": "status",
     "type": {
      "defined": {
       "name": "ReferralRewardStatus"
      }
     }
    }
   ]
  },
  {
   "name": "review_referral_reward",
   "docs": [
    "Approves (Claimable) or holds (UnderReview) one referral reward. Callable by the config authority or",
    "the delegated reward signer; the reward signer can only decide rewards that are still Pending."
   ],
   "discriminator": [
    224,
    6,
    76,
    13,
    160,
    215,
    191,
    69
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "reward_signer"
    },
    {
     "name": "referral_reward",
     "writable": true
    },
    {
     "name": "reviewer",
     "signer": true
    }
   ],
   "args": [
    {
     "name": "status",
     "type": {
      "defined": {
       "name": "ReferralRewardStatus"
      }
     }
    }
   ]
  },
  {
   "name": "review_referral_rewards",
   "docs": [
    "Batch form of `review_referral_reward`: every remaining account must be a writable ReferralReward",
    "(1..=MAX_REFERRAL_REVIEW_BATCH). All-or-nothing: one invalid reward fails the whole batch."
   ],
   "discriminator": [
    240,
    45,
    231,
    235,
    122,
    186,
    221,
    55
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "reward_signer"
    },
    {
     "name": "reviewer",
     "signer": true
    }
   ],
   "args": [
    {
     "name": "status",
     "type": {
      "defined": {
       "name": "ReferralRewardStatus"
      }
     }
    }
   ]
  },
  {
   "name": "cancel_referral_reward_sol",
   "discriminator": [
    28,
    197,
    145,
    33,
    146,
    55,
    249,
    172
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "referral_reward",
     "writable": true
    },
    {
     "name": "authority",
     "writable": true,
     "signer": true
    }
   ],
   "args": []
  },
  {
   "name": "cancel_referral_reward_token",
   "discriminator": [
    231,
    104,
    3,
    26,
    221,
    117,
    120,
    86
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "referral_reward",
     "writable": true
    },
    {
     "name": "authority",
     "signer": true
    },
    {
     "name": "reward_token_vault",
     "writable": true
    },
    {
     "name": "reward_authority"
    },
    {
     "name": "funding_vault",
     "writable": true
    },
    {
     "name": "token_program"
    }
   ],
   "args": []
  },
  {
   "name": "create_social_post",
   "discriminator": [
    87,
    36,
    170,
    35,
    188,
    245,
    235,
    12
   ],
   "accounts": [
    {
     "name": "profile"
    },
    {
     "name": "post",
     "writable": true
    },
    {
     "name": "author",
     "writable": true,
     "signer": true
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "content_uri",
     "type": "string"
    }
   ]
  },
  {
   "name": "set_post_reward_hold",
   "discriminator": [
    85,
    234,
    135,
    71,
    70,
    216,
    4,
    109
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "post",
     "writable": true
    },
    {
     "name": "authority",
     "signer": true
    }
   ],
   "args": [
    {
     "name": "hold",
     "type": "bool"
    }
   ]
  },
  {
   "name": "settle_social_burn",
   "discriminator": [
    37,
    152,
    199,
    197,
    13,
    189,
    222,
    151
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "action_receipt",
     "writable": true
    },
    {
     "name": "actor",
     "writable": true,
     "signer": true
    },
    {
     "name": "actor_shit_ata",
     "writable": true
    },
    {
     "name": "shit_mint",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "action_id",
     "type": {
      "array": [
       "u8",
       32
      ]
     }
    },
    {
     "name": "action_kind",
     "type": {
      "defined": {
       "name": "SocialActionKind"
      }
     }
    },
    {
     "name": "target_hash",
     "type": {
      "array": [
       "u8",
       32
      ]
     }
    },
    {
     "name": "amount",
     "type": "u64"
    }
   ]
  },
  {
   "name": "claim_social_reward",
   "discriminator": [
    240,
    17,
    165,
    169,
    13,
    201,
    123,
    56
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "reward_signer",
     "writable": true
    },
    {
     "name": "action_receipt",
     "writable": true
    },
    {
     "name": "claimant",
     "writable": true,
     "signer": true
    },
    {
     "name": "authority",
     "signer": true
    },
    {
     "name": "reward_authority"
    },
    {
     "name": "reward_vault",
     "writable": true
    },
    {
     "name": "claimant_shit_ata",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    },
    {
     "name": "post",
     "docs": [
      "Optional (pass the program id for None). When the reward is for an on-chain SocialPost, the post is",
      "passed so its moderation hold is enforced: target_hash must be the post address, the claimant its",
      "author, and `reward_hold` must be false. Off-chain posts (no SocialPost account) pass None."
     ],
     "optional": true
    },
    {
     "name": "social_reward_day",
     "docs": [
      "`day = unix_ts / 86400`; created on the day's first claim (paid by the claimant) and checked by hand."
     ],
     "writable": true
    }
   ],
   "args": [
    {
     "name": "action_id",
     "type": {
      "array": [
       "u8",
       32
      ]
     }
    },
    {
     "name": "target_hash",
     "type": {
      "array": [
       "u8",
       32
      ]
     }
    },
    {
     "name": "amount",
     "type": "u64"
    }
   ]
  },
  {
   "name": "open_say_hi_session",
   "discriminator": [
    149,
    136,
    55,
    217,
    182,
    162,
    252,
    174
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "session",
     "writable": true
    },
    {
     "name": "sender",
     "writable": true,
     "signer": true
    },
    {
     "name": "recipient"
    },
    {
     "name": "sender_shit_ata",
     "writable": true
    },
    {
     "name": "escrow_authority"
    },
    {
     "name": "say_hi_vault",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "session_id",
     "type": {
      "array": [
       "u8",
       32
      ]
     }
    },
    {
     "name": "offer_amount",
     "type": "u64"
    }
   ]
  },
  {
   "name": "accept_say_hi_session",
   "docs": [
    "Phase 5: 85% to the recipient, 10% to the treasury's canonical $SHIT ATA, 5% burned. Only before expiry."
   ],
   "discriminator": [
    170,
    133,
    192,
    72,
    180,
    148,
    4,
    27
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "session",
     "writable": true
    },
    {
     "name": "recipient",
     "signer": true
    },
    {
     "name": "escrow_authority"
    },
    {
     "name": "say_hi_vault",
     "writable": true
    },
    {
     "name": "recipient_shit_ata",
     "writable": true
    },
    {
     "name": "shit_mint",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "treasury_shit_ata",
     "docs": [
      "Phase 5: the config treasury's canonical $SHIT ATA (checked in the handler); receives 10%."
     ],
     "writable": true
    }
   ],
   "args": []
  },
  {
   "name": "cancel_say_hi_session",
   "docs": [
    "Phase 5: the sender withdraws a pending Say Hi (before or after expiry): 90% refunded, 5% to the",
    "treasury's canonical $SHIT ATA, 5% burned."
   ],
   "discriminator": [
    135,
    19,
    40,
    212,
    123,
    65,
    125,
    44
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "session",
     "writable": true
    },
    {
     "name": "sender",
     "signer": true
    },
    {
     "name": "escrow_authority"
    },
    {
     "name": "say_hi_vault",
     "writable": true
    },
    {
     "name": "sender_shit_ata",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "treasury_shit_ata",
     "docs": [
      "Phase 5: the config treasury's canonical $SHIT ATA (checked in the handler); receives 5%."
     ],
     "writable": true
    },
    {
     "name": "shit_mint",
     "docs": [
      "Phase 5: 5% of the offer is burned."
     ],
     "writable": true
    }
   ],
   "args": []
  },
  {
   "name": "expire_say_hi_session",
   "docs": [
    "Phase 5: permissionless once a pending Say Hi is older than 7 days: same rule as a cancel (90% back to the",
    "sender's canonical $SHIT ATA, 5% treasury, 5% burned). The recipient can no longer accept it."
   ],
   "discriminator": [
    37,
    75,
    69,
    104,
    72,
    52,
    174,
    49
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "session",
     "writable": true
    },
    {
     "name": "escrow_authority"
    },
    {
     "name": "say_hi_vault",
     "writable": true
    },
    {
     "name": "sender_shit_ata",
     "docs": [
      "The session sender's canonical $SHIT ATA (checked in the handler)."
     ],
     "writable": true
    },
    {
     "name": "treasury_shit_ata",
     "docs": [
      "The config treasury's canonical $SHIT ATA (checked in the handler)."
     ],
     "writable": true
    },
    {
     "name": "shit_mint",
     "writable": true
    },
    {
     "name": "token_program"
    }
   ],
   "args": []
  },
  {
   "name": "end_say_hi_session",
   "discriminator": [
    180,
    156,
    126,
    35,
    225,
    103,
    230,
    33
   ],
   "accounts": [
    {
     "name": "session",
     "writable": true
    },
    {
     "name": "actor",
     "signer": true
    }
   ],
   "args": []
  },
  {
   "name": "place_limit_buy_sol",
   "discriminator": [
    9,
    120,
    62,
    216,
    230,
    254,
    140,
    159
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool"
    },
    {
     "name": "position",
     "writable": true
    },
    {
     "name": "order",
     "writable": true
    },
    {
     "name": "owner",
     "writable": true,
     "signer": true
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "order_id",
     "type": "u64"
    },
    {
     "name": "gross_amount",
     "type": "u64"
    },
    {
     "name": "limit_price",
     "type": "u64"
    },
    {
     "name": "keeper_fee",
     "type": "u64"
    },
    {
     "name": "expires_at",
     "type": "i64"
    }
   ]
  },
  {
   "name": "place_limit_sell_sol",
   "discriminator": [
    101,
    217,
    66,
    133,
    201,
    201,
    41,
    129
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool"
    },
    {
     "name": "position",
     "writable": true
    },
    {
     "name": "order",
     "writable": true
    },
    {
     "name": "owner",
     "writable": true,
     "signer": true
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "order_id",
     "type": "u64"
    },
    {
     "name": "receipt_units",
     "type": "u64"
    },
    {
     "name": "limit_price",
     "type": "u64"
    },
    {
     "name": "keeper_fee",
     "type": "u64"
    },
    {
     "name": "expires_at",
     "type": "i64"
    }
   ]
  },
  {
   "name": "execute_limit_order_sol",
   "docs": [
    "Permissionless. Executes the order only if its price condition holds right now.",
    "Spec 7: remaining accounts `[order owner's ReferralBinding, bound domain record, its owner's NFT account, owner wallet]` (binding and payee writable) pay the",
    "referrer 15% of the treasury fee of the filled curve trade."
   ],
   "discriminator": [
    84,
    251,
    130,
    143,
    58,
    86,
    24,
    63
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "order",
     "writable": true
    },
    {
     "name": "position",
     "writable": true
    },
    {
     "name": "owner",
     "writable": true
    },
    {
     "name": "creator_vault",
     "writable": true
    },
    {
     "name": "treasury",
     "writable": true
    },
    {
     "name": "community_vault",
     "writable": true
    },
    {
     "name": "buyback_vault",
     "docs": [
      "Spec 11: receives `config.buyback_bps` of the treasury's SOL revenue."
     ],
     "writable": true
    },
    {
     "name": "keeper",
     "writable": true,
     "signer": true
    },
    {
     "name": "sniper_tracker",
     "writable": true
    },
    {
     "name": "system_program"
    }
   ],
   "args": []
  },
  {
   "name": "cancel_limit_order_sol",
   "docs": [
    "Owner may cancel anytime; anyone may cancel once expired or once the launch left the curve phase.",
    "Funds/units always go back to the owner."
   ],
   "discriminator": [
    91,
    110,
    48,
    179,
    235,
    2,
    22,
    243
   ],
   "accounts": [
    {
     "name": "launch_pool"
    },
    {
     "name": "order",
     "writable": true
    },
    {
     "name": "position",
     "docs": [
      "order's cancel works after the position was closed)."
     ],
     "writable": true
    },
    {
     "name": "owner",
     "writable": true
    },
    {
     "name": "caller",
     "signer": true
    }
   ],
   "args": []
  },
  {
   "name": "open_copy_vault",
   "discriminator": [
    137,
    177,
    148,
    109,
    163,
    138,
    132,
    206
   ],
   "accounts": [
    {
     "name": "vault",
     "writable": true
    },
    {
     "name": "follower",
     "writable": true,
     "signer": true
    },
    {
     "name": "leader"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "deposit",
     "type": "u64"
    },
    {
     "name": "max_per_trade",
     "type": "u64"
    },
    {
     "name": "slippage_bps",
     "type": "u16"
    },
    {
     "name": "keeper_fee",
     "type": "u64"
    },
    {
     "name": "copy_sells",
     "type": "bool"
    }
   ]
  },
  {
   "name": "update_copy_vault",
   "discriminator": [
    9,
    91,
    18,
    148,
    34,
    170,
    92,
    59
   ],
   "accounts": [
    {
     "name": "vault",
     "writable": true
    },
    {
     "name": "follower",
     "writable": true,
     "signer": true
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "add_deposit",
     "type": "u64"
    },
    {
     "name": "withdraw",
     "type": "u64"
    },
    {
     "name": "max_per_trade",
     "type": "u64"
    },
    {
     "name": "slippage_bps",
     "type": "u16"
    },
    {
     "name": "keeper_fee",
     "type": "u64"
    },
    {
     "name": "copy_sells",
     "type": "bool"
    },
    {
     "name": "active",
     "type": "bool"
    }
   ]
  },
  {
   "name": "close_copy_vault",
   "docs": [
    "Closing returns every lamport to the follower."
   ],
   "discriminator": [
    106,
    119,
    226,
    126,
    82,
    45,
    152,
    216
   ],
   "accounts": [
    {
     "name": "vault",
     "writable": true
    },
    {
     "name": "follower",
     "writable": true,
     "signer": true
    }
   ],
   "args": []
  },
  {
   "name": "execute_copy_buy_sol",
   "docs": [
    "Permissionless: mirrors a leader buy that the program itself recorded within COPY_MAX_SLOT_DELAY",
    "slots, at most once, at a price no worse than the leader's average plus the follower's slippage."
   ],
   "discriminator": [
    24,
    84,
    57,
    156,
    47,
    82,
    200,
    143
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "vault",
     "writable": true
    },
    {
     "name": "leader_position"
    },
    {
     "name": "follower_position",
     "writable": true
    },
    {
     "name": "creator_vault",
     "writable": true
    },
    {
     "name": "treasury",
     "writable": true
    },
    {
     "name": "community_vault",
     "writable": true
    },
    {
     "name": "buyback_vault",
     "docs": [
      "Spec 11: receives `config.buyback_bps` of the treasury's SOL revenue."
     ],
     "writable": true
    },
    {
     "name": "keeper",
     "writable": true,
     "signer": true
    },
    {
     "name": "system_program"
    },
    {
     "name": "sniper_tracker",
     "writable": true
    },
    {
     "name": "leader",
     "writable": true
    },
    {
     "name": "copy_cursor",
     "docs": [
      "R12PROG-1: this vault's cursor on this launch (created on first copy; the keeper fronts the rent, the vault repays it)."
     ],
     "writable": true
    }
   ],
   "args": []
  },
  {
   "name": "execute_copy_sell_sol",
   "docs": [
    "Permissionless: mirrors a leader sell (same fraction of the receipts this vault copied on the launch, R13PROG-1)",
    "when the follower opted into copy_sells. Proceeds return to the copy vault."
   ],
   "discriminator": [
    247,
    119,
    247,
    162,
    179,
    182,
    36,
    62
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "vault",
     "writable": true
    },
    {
     "name": "leader_position"
    },
    {
     "name": "follower_position",
     "writable": true
    },
    {
     "name": "creator_vault",
     "writable": true
    },
    {
     "name": "treasury",
     "writable": true
    },
    {
     "name": "community_vault",
     "writable": true
    },
    {
     "name": "buyback_vault",
     "docs": [
      "Spec 11: receives `config.buyback_bps` of the treasury's SOL revenue."
     ],
     "writable": true
    },
    {
     "name": "keeper",
     "writable": true,
     "signer": true
    },
    {
     "name": "leader",
     "writable": true
    },
    {
     "name": "system_program",
     "docs": [
      "Phase 5: creates the creator fee vault on first touch (the keeper fronts its rent, reimbursed from the sale)."
     ]
    },
    {
     "name": "copy_cursor",
     "docs": [
      "R12PROG-1: this vault's cursor on this launch (created on first copy; the keeper fronts the rent, the sale repays it)."
     ],
     "writable": true
    }
   ],
   "args": []
  },
  {
   "name": "close_marketplace_offer",
   "docs": [
    "R5PROG-1, permissionless: closes a marketplace offer that is no longer active (cancelled or accepted). Every",
    "lamport left in it (its rent) goes to the bidder who paid it. An active offer (its escrow inside) is refused."
   ],
   "discriminator": [
    203,
    21,
    118,
    214,
    201,
    41,
    135,
    103
   ],
   "accounts": [
    {
     "name": "offer",
     "writable": true
    },
    {
     "name": "buyer",
     "writable": true
    }
   ],
   "args": []
  },
  {
   "name": "close_listing",
   "docs": [
    "R5PROG-1, permissionless: closes an inactive listing (cancelled or sold) and its empty NFT escrow token account;",
    "both rents go to the seller who paid them. An active listing, or an escrow that still holds a token, is refused."
   ],
   "discriminator": [
    33,
    15,
    192,
    81,
    78,
    175,
    159,
    97
   ],
   "accounts": [
    {
     "name": "listing",
     "docs": [
      "Its address is checked against the escrow's mint when the escrow is closed (the listing PDA includes the mint)."
     ],
     "writable": true
    },
    {
     "name": "seller",
     "writable": true
    },
    {
     "name": "listing_nft_escrow",
     "writable": true
    },
    {
     "name": "token_program"
    }
   ],
   "args": []
  },
  {
   "name": "close_private_trade",
   "docs": [
    "R5PROG-1, permissionless: closes an inactive private trade (cancelled or accepted) and its empty NFT escrow token",
    "account; both rents go to the seller who paid them."
   ],
   "discriminator": [
    222,
    1,
    65,
    120,
    52,
    138,
    204,
    204
   ],
   "accounts": [
    {
     "name": "trade",
     "writable": true
    },
    {
     "name": "seller",
     "writable": true
    },
    {
     "name": "trade_nft_escrow",
     "writable": true
    },
    {
     "name": "token_program"
    }
   ],
   "args": []
  },
  {
   "name": "close_buyer_position",
   "docs": [
    "R5PROG-1 (R6MONEY-2: permissionless, the rent goes only to the buyer): closes a position once the launch is over and the position holds nothing any",
    "later instruction pays out (graduated: tokens claimed / unmigrated refund taken, or no receipts; failed: the",
    "failure settlement was claimed, or no receipts). A position of a launch still on the curve is never closed (copy",
    "trading and limit orders read it). The rent goes back to the buyer."
   ],
   "discriminator": [
    239,
    121,
    221,
    225,
    204,
    96,
    171,
    212
   ],
   "accounts": [
    {
     "name": "launch_pool"
    },
    {
     "name": "position",
     "writable": true
    },
    {
     "name": "buyer",
     "docs": [
      "keeper can return the rent of a finished position its holder has no transaction left to close it in (sold out)."
     ],
     "writable": true
    }
   ],
   "args": []
  },
  {
   "name": "close_sniper_tracker",
   "docs": [
    "R5PROG-1, permissionless: closes a wallet's sniper / late-buy tracker when nothing reads it any more (launch",
    "graduated; failed and the wallet's position settled, empty or closed; on the curve: anti-sniper window over and no",
    "late-buy record). The rent goes back to the wallet."
   ],
   "discriminator": [
    71,
    247,
    107,
    125,
    174,
    15,
    248,
    217
   ],
   "accounts": [
    {
     "name": "launch_pool"
    },
    {
     "name": "sniper_tracker",
     "writable": true
    },
    {
     "name": "position"
    },
    {
     "name": "wallet",
     "writable": true
    }
   ],
   "args": []
  },
  {
   "name": "close_copy_cursor",
   "docs": [
    "R12PROG-1, permissionless: closes a copy cursor once no leader action it guards can still be mirrored (both",
    "recorded slots are more than COPY_MAX_SLOT_DELAY slots old). The rent goes back to the follower, whose vault paid it.",
    "R14PROG-1: while the launch is still on its curve a cursor that still holds copied units is kept (its",
    "`copied_units` is what the leader's later sells are mirrored from); once the launch has finished it closes too."
   ],
   "discriminator": [
    35,
    115,
    181,
    87,
    153,
    175,
    229,
    2
   ],
   "accounts": [
    {
     "name": "copy_cursor",
     "docs": [
      "owner, discriminator, size and the [\"copy-cursor\", vault, launch_pool] seeds are checked in the handler."
     ],
     "writable": true
    },
    {
     "name": "follower",
     "writable": true
    },
    {
     "name": "launch_pool",
     "docs": [
      "R14PROG-1: the cursor's launch (checked against the cursor); a cursor with copied units is kept while it is Forming."
     ]
    }
   ],
   "args": []
  },
  {
   "name": "close_referral_reward_vault",
   "docs": [
    "R5PROG-1, config authority or reward signer: closes the token vault of a Claimed / Cancelled $SHIT / USDC referral",
    "receipt (a donated balance goes back to the funding vault first). The rent goes to the signer (the operator paid it)."
   ],
   "discriminator": [
    83,
    161,
    28,
    95,
    88,
    35,
    162,
    9
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "reward_signer"
    },
    {
     "name": "referral_reward"
    },
    {
     "name": "authority",
     "docs": [
      "Config authority or the reward signer; receives the vault rent."
     ],
     "writable": true,
     "signer": true
    },
    {
     "name": "reward_token_vault",
     "writable": true
    },
    {
     "name": "funding_vault",
     "writable": true
    },
    {
     "name": "reward_authority"
    },
    {
     "name": "token_program"
    }
   ],
   "args": []
  },
  {
   "name": "close_referral_reward",
   "docs": [
    "R5PROG-1, config authority or reward signer: closes a Claimed / Cancelled referral receipt",
    "`REFERRAL_RECEIPT_CLOSE_DELAY_SECONDS` (30 days) after it was created (a token receipt's vault must be closed first). The rent",
    "goes to the signer."
   ],
   "discriminator": [
    230,
    100,
    205,
    167,
    226,
    247,
    78,
    252
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "reward_signer"
    },
    {
     "name": "referral_reward",
     "writable": true
    },
    {
     "name": "authority",
     "docs": [
      "Config authority or the reward signer; receives the receipt rent."
     ],
     "writable": true,
     "signer": true
    },
    {
     "name": "reward_token_vault"
    }
   ],
   "args": []
  },
  {
   "name": "close_clean_reward_vault",
   "docs": [
    "R5PROG-1: closes a settled clean-launch reward's $SHIT vault (a donated balance goes back to the reward vault",
    "first). The rent goes to whoever paid it at `start_clean_launch_reward` (recorded since R5), who must sign",
    "(R6MONEY-1); for a reward started before R5 anyone may close it to the treasury."
   ],
   "discriminator": [
    96,
    164,
    116,
    138,
    48,
    102,
    216,
    43
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "clean_reward"
    },
    {
     "name": "clean_reward_vault",
     "writable": true
    },
    {
     "name": "reward_authority"
    },
    {
     "name": "reward_vault",
     "writable": true
    },
    {
     "name": "rent_receiver",
     "writable": true
    },
    {
     "name": "token_program"
    }
   ],
   "args": []
  },
  {
   "name": "sweep_failed_launch_remainder_sol",
   "docs": [
    "After the claim window, the rounding remainder of a failed SOL launch (escrow no position can",
    "claim) is swept to the community vault. Never touches funds while claims remain possible."
   ],
   "discriminator": [
    169,
    214,
    49,
    217,
    30,
    96,
    93,
    74
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "community_vault",
     "writable": true
    }
   ],
   "args": []
  },
  {
   "name": "handoff_amm_liquidity_sol",
   "docs": [
    "Retired: graduated liquidity moves only through the permissionless `migrate_launch_to_raydium`."
   ],
   "discriminator": [
    195,
    94,
    44,
    115,
    67,
    40,
    192,
    220
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool",
     "writable": true
    },
    {
     "name": "handoff",
     "writable": true
    },
    {
     "name": "authority",
     "writable": true,
     "signer": true
    },
    {
     "name": "migration_authority",
     "writable": true
    },
    {
     "name": "treasury",
     "writable": true
    },
    {
     "name": "token_claim_vault",
     "writable": true
    },
    {
     "name": "migration_token_ata",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "handoff_id",
     "type": {
      "array": [
       "u8",
       32
      ]
     }
    },
    {
     "name": "token_amount",
     "type": "u64"
    },
    {
     "name": "quote_amount",
     "type": "u64"
    },
    {
     "name": "graduation_fee_amount",
     "type": "u64"
    }
   ]
  },
  {
   "name": "handoff_amm_liquidity_usdc",
   "docs": [
    "Retired: graduated liquidity moves only through the permissionless `migrate_launch_to_raydium`."
   ],
   "discriminator": [
    95,
    121,
    83,
    143,
    43,
    156,
    118,
    215
   ],
   "accounts": [
    {
     "name": "config"
    },
    {
     "name": "launch_pool"
    },
    {
     "name": "handoff",
     "writable": true
    },
    {
     "name": "authority",
     "writable": true,
     "signer": true
    },
    {
     "name": "migration_authority"
    },
    {
     "name": "token_claim_vault",
     "writable": true
    },
    {
     "name": "migration_token_ata",
     "writable": true
    },
    {
     "name": "launch_usdc_vault",
     "writable": true
    },
    {
     "name": "migration_usdc_ata",
     "writable": true
    },
    {
     "name": "treasury_usdc_ata",
     "writable": true
    },
    {
     "name": "token_program"
    },
    {
     "name": "system_program"
    }
   ],
   "args": [
    {
     "name": "handoff_id",
     "type": {
      "array": [
       "u8",
       32
      ]
     }
    },
    {
     "name": "token_amount",
     "type": "u64"
    },
    {
     "name": "quote_amount",
     "type": "u64"
    },
    {
     "name": "graduation_fee_amount",
     "type": "u64"
    }
   ]
  }
 ],
 "accounts": [
  {
   "name": "AirdropEpoch",
   "discriminator": [
    72,
    144,
    130,
    9,
    127,
    60,
    59,
    190
   ]
  },
  {
   "name": "AmmLiquidityHandoff",
   "discriminator": [
    222,
    242,
    129,
    205,
    126,
    70,
    104,
    148
   ]
  },
  {
   "name": "BuyerPosition",
   "discriminator": [
    232,
    163,
    167,
    95,
    170,
    210,
    214,
    83
   ]
  },
  {
   "name": "CleanLaunchReward",
   "discriminator": [
    81,
    102,
    206,
    131,
    234,
    222,
    153,
    179
   ]
  },
  {
   "name": "CleanRewardConfig",
   "discriminator": [
    3,
    202,
    157,
    52,
    186,
    14,
    167,
    174
   ]
  },
  {
   "name": "CopyCursor",
   "discriminator": [
    96,
    113,
    222,
    247,
    145,
    176,
    240,
    254
   ]
  },
  {
   "name": "CopyVault",
   "discriminator": [
    108,
    97,
    223,
    85,
    198,
    127,
    88,
    38
   ]
  },
  {
   "name": "CreatorFeeVault",
   "discriminator": [
    21,
    14,
    215,
    247,
    197,
    137,
    200,
    121
   ]
  },
  {
   "name": "LaunchPool",
   "discriminator": [
    29,
    65,
    189,
    216,
    67,
    129,
    179,
    61
   ]
  },
  {
   "name": "LimitOrder",
   "discriminator": [
    137,
    183,
    212,
    91,
    115,
    29,
    141,
    227
   ]
  },
  {
   "name": "MarketplaceListing",
   "discriminator": [
    211,
    106,
    229,
    109,
    73,
    75,
    97,
    122
   ]
  },
  {
   "name": "MarketplaceOffer",
   "discriminator": [
    16,
    90,
    215,
    105,
    252,
    95,
    66,
    140
   ]
  },
  {
   "name": "MarketplacePrivateTrade",
   "discriminator": [
    220,
    102,
    188,
    140,
    84,
    189,
    0,
    14
   ]
  },
  {
   "name": "PriorityTicket",
   "discriminator": [
    2,
    131,
    231,
    169,
    129,
    243,
    99,
    106
   ]
  },
  {
   "name": "ReferralBinding",
   "discriminator": [
    22,
    207,
    5,
    244,
    67,
    215,
    130,
    156
   ]
  },
  {
   "name": "ReferralReward",
   "discriminator": [
    208,
    26,
    65,
    47,
    113,
    179,
    92,
    114
   ]
  },
  {
   "name": "RektClaim",
   "discriminator": [
    62,
    114,
    233,
    62,
    126,
    207,
    80,
    59
   ]
  },
  {
   "name": "RektEpoch",
   "discriminator": [
    238,
    238,
    215,
    138,
    174,
    24,
    1,
    72
   ]
  },
  {
   "name": "RektFestPool",
   "discriminator": [
    135,
    24,
    108,
    7,
    207,
    89,
    74,
    195
   ]
  },
  {
   "name": "RewardSigner",
   "discriminator": [
    109,
    3,
    254,
    133,
    76,
    67,
    216,
    80
   ]
  },
  {
   "name": "SayHiSession",
   "discriminator": [
    111,
    219,
    88,
    113,
    49,
    75,
    161,
    199
   ]
  },
  {
   "name": "ShitTagConfig",
   "discriminator": [
    70,
    67,
    247,
    85,
    202,
    18,
    68,
    23
   ]
  },
  {
   "name": "ShitTagRecord",
   "discriminator": [
    107,
    24,
    230,
    91,
    23,
    142,
    171,
    144
   ]
  },
  {
   "name": "SocialActionReceipt",
   "discriminator": [
    112,
    187,
    74,
    203,
    183,
    138,
    155,
    193
   ]
  },
  {
   "name": "SocialPost",
   "discriminator": [
    37,
    155,
    92,
    182,
    155,
    169,
    199,
    232
   ]
  },
  {
   "name": "SocialRewardDay",
   "discriminator": [
    204,
    116,
    2,
    198,
    181,
    35,
    68,
    215
   ]
  },
  {
   "name": "TldRecord",
   "discriminator": [
    195,
    156,
    120,
    235,
    20,
    2,
    87,
    90
   ]
  },
  {
   "name": "UniquenessMarker",
   "discriminator": [
    139,
    124,
    100,
    103,
    133,
    177,
    236,
    169
   ]
  },
  {
   "name": "UserProfile",
   "discriminator": [
    32,
    37,
    119,
    205,
    179,
    180,
    13,
    194
   ]
  },
  {
   "name": "VestingLock",
   "discriminator": [
    89,
    242,
    208,
    178,
    80,
    81,
    3,
    15
   ]
  },
  {
   "name": "WalletAirdropState",
   "discriminator": [
    213,
    75,
    91,
    241,
    177,
    70,
    13,
    134
   ]
  }
 ],
 "types": [
  {
   "name": "AirdropEpoch",
   "docs": [
    "Global counter of first domain registrations (registrations of a domain that never issued its welcome",
    "airdrop), shared by `register_domain_sol` and `register_domain_usdc`. Admin grants are not counted."
   ],
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "first_registrations",
      "type": "u64"
     },
     {
      "name": "bump",
      "type": "u8"
     },
     {
      "name": "reserved",
      "type": {
       "array": [
        "u8",
        32
       ]
      }
     }
    ]
   }
  },
  {
   "name": "AmmLiquidityHandoff",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "handoff_id",
      "type": {
       "array": [
        "u8",
        32
       ]
      }
     },
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "migration_authority",
      "type": "pubkey"
     },
     {
      "name": "pair_asset",
      "type": {
       "defined": {
        "name": "PaymentAsset"
       }
      }
     },
     {
      "name": "token_amount",
      "type": "u64"
     },
     {
      "name": "quote_amount",
      "type": "u64"
     },
     {
      "name": "graduation_fee_amount",
      "type": "u64"
     },
     {
      "name": "executed_at",
      "type": "i64"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "BuyerPosition",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "buyer",
      "type": "pubkey"
     },
     {
      "name": "paid_amount",
      "type": "u64"
     },
     {
      "name": "receipt_units",
      "type": "u64"
     },
     {
      "name": "refunded_amount",
      "type": "u64"
     },
     {
      "name": "failure_refund_claimed",
      "type": "bool"
     },
     {
      "name": "token_claimed",
      "type": "bool"
     },
     {
      "name": "closed",
      "type": "bool"
     },
     {
      "name": "created_at",
      "type": "i64"
     },
     {
      "name": "updated_at",
      "type": "i64"
     },
     {
      "name": "bump",
      "type": "u8"
     },
     {
      "name": "net_contribution",
      "docs": [
       "Escrow put in minus escrow taken out (floored at 0). Failure refunds are pro-rata to this."
      ],
      "type": "u64"
     },
     {
      "name": "last_buy_slot",
      "docs": [
       "Last buy/sell, recorded on-chain so copy-trading keepers can prove what the leader did."
      ],
      "type": "u64"
     },
     {
      "name": "last_buy_gross",
      "type": "u64"
     },
     {
      "name": "last_sell_slot",
      "type": "u64"
     },
     {
      "name": "last_sell_fraction_bps",
      "type": "u16"
     },
     {
      "name": "locked_units",
      "docs": [
       "Receipt units locked by open limit-sell orders (not sellable twice)."
      ],
      "type": "u64"
     },
     {
      "name": "last_buy_units",
      "type": "u64"
     },
     {
      "name": "copy_source_slot",
      "docs": [
       "Leader buy/sell slots already mirrored into this (follower) position: each leader action is",
       "copied at most once."
      ],
      "type": "u64"
     },
     {
      "name": "copy_sell_source_slot",
      "type": "u64"
     }
    ]
   }
  },
  {
   "name": "CleanLaunchReward",
   "docs": [
    "[\"clean-reward\", launch_pool]: one per launch migrated by this program version. Created by the migration,",
    "filled by `start_clean_launch_reward`, settled by `settle_clean_launch_reward`. Every withdrawal of the creator",
    "allocation (`claim_creator_allocation[_part]`) is recorded here with the checkpoint it happened before."
   ],
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "creator",
      "type": "pubkey"
     },
     {
      "name": "amm_pool",
      "docs": [
       "The Raydium pool the migration created (its SOL vault is the \"alive\" check)."
      ],
      "type": "pubkey"
     },
     {
      "name": "migrated_at",
      "type": "i64"
     },
     {
      "name": "quote_deposited",
      "docs": [
       "SOL (lamports) the migration deposited into the pool."
      ],
      "type": "u64"
     },
     {
      "name": "allocation_base",
      "docs": [
       "The creator allocation at migration (raw token units)."
      ],
      "type": "u64"
     },
     {
      "name": "status",
      "type": "u8"
     },
     {
      "name": "amount",
      "docs": [
       "$SHIT raw units: planned at migration, escrowed at start (0 when skipped)."
      ],
      "type": "u64"
     },
     {
      "name": "tranche_1_amount",
      "type": "u64"
     },
     {
      "name": "tranche_1",
      "type": "u8"
     },
     {
      "name": "tranche_2",
      "type": "u8"
     },
     {
      "name": "withdrawn_before_checkpoint_1",
      "type": "u64"
     },
     {
      "name": "withdrawn_before_checkpoint_2",
      "type": "u64"
     },
     {
      "name": "withdrawn_total",
      "type": "u64"
     },
     {
      "name": "params",
      "type": {
       "defined": {
        "name": "CleanRewardParams"
       }
      }
     },
     {
      "name": "checkpoint_1_at",
      "type": "i64"
     },
     {
      "name": "checkpoint_2_at",
      "type": "i64"
     },
     {
      "name": "bump",
      "type": "u8"
     },
     {
      "name": "vault_bump",
      "type": "u8"
     },
     {
      "name": "reserved",
      "type": {
       "array": [
        "u8",
        32
       ]
      }
     }
    ]
   }
  },
  {
   "name": "CleanRewardConfig",
   "docs": [
    "[\"clean-reward-config\"], written by `set_clean_reward_config` (config authority)."
   ],
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "params",
      "type": {
       "defined": {
        "name": "CleanRewardParams"
       }
      }
     },
     {
      "name": "bump",
      "type": "u8"
     },
     {
      "name": "reserved",
      "type": {
       "array": [
        "u8",
        32
       ]
      }
     }
    ]
   }
  },
  {
   "name": "CleanRewardParams",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "max_withdrawn_bps",
      "docs": [
       "A tranche is forfeited when more than this share (bps) of the creator allocation left program custody",
       "before its checkpoint."
      ],
      "type": "u16"
     },
     {
      "name": "checkpoint_1_seconds",
      "docs": [
       "Checkpoints, seconds after the migration."
      ],
      "type": "i64"
     },
     {
      "name": "checkpoint_2_seconds",
      "type": "i64"
     },
     {
      "name": "tranche_1_bps",
      "docs": [
       "Share (bps) of the reward released at checkpoint 1; the rest at checkpoint 2."
      ],
      "type": "u16"
     },
     {
      "name": "alive_min_pool_sol_bps",
      "docs": [
       "\"Alive\": the Raydium pool's SOL vault holds at least this share (bps) of the SOL the migration deposited."
      ],
      "type": "u16"
     }
    ]
   }
  },
  {
   "name": "CopyCursor",
   "docs": [
    "R12PROG-1: [\"copy-cursor\", copy_vault, launch_pool]. The at-most-once guard of copy trading, per vault and launch.",
    "Before R12PROG it lived on the follower's BuyerPosition, which every vault of that follower shares: when two copied",
    "leaders bought the same launch within the copy window only one of the buys could be mirrored. A separate account",
    "leaves the CopyVault and BuyerPosition layouts untouched (existing accounts read as before, no migration).",
    "`launch_pool` is first (offset 8) so the rent janitor filters a launch's cursors like its positions."
   ],
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "vault",
      "type": "pubkey"
     },
     {
      "name": "follower",
      "type": "pubkey"
     },
     {
      "name": "buy_source_slot",
      "docs": [
       "The leader buy slot last mirrored by this vault on this launch."
      ],
      "type": "u64"
     },
     {
      "name": "sell_source_slot",
      "docs": [
       "The leader sell slot last mirrored (or passed over by a later copied buy)."
      ],
      "type": "u64"
     },
     {
      "name": "bump",
      "type": "u8"
     },
     {
      "name": "copied_units",
      "docs": [
       "R13PROG-1: receipt units this vault bought by copying on this launch and has not sold by copying yet. A copied",
       "sell sells the leader's fraction of these (never of the follower's own buys or of another vault's copies, which",
       "share the follower's one BuyerPosition), capped by what the position still holds unlocked."
      ],
      "type": "u64"
     }
    ]
   }
  },
  {
   "name": "CopyVault",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "follower",
      "type": "pubkey"
     },
     {
      "name": "leader",
      "type": "pubkey"
     },
     {
      "name": "max_per_trade",
      "type": "u64"
     },
     {
      "name": "slippage_bps",
      "type": "u16"
     },
     {
      "name": "keeper_fee",
      "type": "u64"
     },
     {
      "name": "copy_sells",
      "type": "bool"
     },
     {
      "name": "active",
      "type": "bool"
     },
     {
      "name": "bump",
      "type": "u8"
     },
     {
      "name": "opened_slot",
      "docs": [
       "Slot the current settings took effect. Only leader actions strictly after it are mirrored, so a",
       "vault never copies trades the follower did not sign up for."
      ],
      "type": "u64"
     }
    ]
   }
  },
  {
   "name": "CreatorFeeVault",
   "docs": [
    "Phase 5: [\"creator-vault\", creator]. Program-owned; its lamports above the rent minimum are the creator's",
    "unclaimed fees. R10-P1/P2: created by `create_launch_pool` with the creator paying (idempotent), so no trader",
    "pays its rent. For creators whose launches predate that, `init_creator_vault` (anyone) pre-creates it; the",
    "first-touch creation by a trade (the trader, or a keeper reimbursed from the order / copy vault) stays as fallback."
   ],
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "creator",
      "type": "pubkey"
     },
     {
      "name": "accrued",
      "docs": [
       "Every creator fee ever accrued (lamports)."
      ],
      "type": "u64"
     },
     {
      "name": "claimed",
      "docs": [
       "Every lamport ever claimed by the creator."
      ],
      "type": "u64"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "DomainGrantSource",
   "type": {
    "kind": "enum",
    "variants": [
     {
      "name": "Paid"
     },
     {
      "name": "AdminGrant"
     }
    ]
   }
  },
  {
   "name": "DomainStatus",
   "type": {
    "kind": "enum",
    "variants": [
     {
      "name": "Active"
     },
     {
      "name": "Grace"
     },
     {
      "name": "Cancelled"
     },
     {
      "name": "Expired"
     }
    ]
   }
  },
  {
   "name": "DomainTier",
   "type": {
    "kind": "enum",
    "variants": [
     {
      "name": "God"
     },
     {
      "name": "Elite"
     },
     {
      "name": "Premium"
     },
     {
      "name": "Standard"
     }
    ]
   }
  },
  {
   "name": "LaunchPool",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "creator",
      "type": "pubkey"
     },
     {
      "name": "token_symbol",
      "type": "string"
     },
     {
      "name": "token_mint",
      "type": "pubkey"
     },
     {
      "name": "pair_asset",
      "type": {
       "defined": {
        "name": "PaymentAsset"
       }
      }
     },
     {
      "name": "status",
      "type": {
       "defined": {
        "name": "LaunchStatus"
       }
      }
     },
     {
      "name": "raised_amount",
      "type": "u64"
     },
     {
      "name": "receipt_units_sold",
      "type": "u64"
     },
     {
      "name": "graduation_target_usdc",
      "type": "u64"
     },
     {
      "name": "sniper_max_wallet_amount",
      "type": "u64"
     },
     {
      "name": "creator_unlock_at",
      "type": "i64"
     },
     {
      "name": "creator_allocation_amount",
      "type": "u64"
     },
     {
      "name": "creator_allocation_claimed",
      "type": "bool"
     },
     {
      "name": "deadline_at",
      "type": "i64"
     },
     {
      "name": "graduated_at",
      "type": "i64"
     },
     {
      "name": "failed_at",
      "type": "i64"
     },
     {
      "name": "created_at",
      "type": "i64"
     },
     {
      "name": "bump",
      "type": "u8"
     },
     {
      "name": "graduation_target_raw",
      "docs": [
       "Graduation target in the pair asset's raw units (lamports or USDC base units), fixed at creation."
      ],
      "type": "u64"
     },
     {
      "name": "virtual_base_reserve",
      "docs": [
       "Virtual pair-asset reserve chosen so the curve completes (740M receipts sold) at exactly the target."
      ],
      "type": "u64"
     },
     {
      "name": "total_net_contribution",
      "docs": [
       "Sum of open positions' net escrow contributions (basis for failure settlement)."
      ],
      "type": "u64"
     },
     {
      "name": "failure_escrow_snapshot",
      "docs": [
       "Escrow and contribution totals frozen when the launch fails; every refund is computed from them."
      ],
      "type": "u64"
     },
     {
      "name": "failure_contribution_snapshot",
      "type": "u64"
     },
     {
      "name": "open_positions",
      "docs": [
       "Number of positions with receipts; a failed pool's remainder is sweepable only when this reaches 0",
       "or after the claim window."
      ],
      "type": "u32"
     }
    ]
   }
  },
  {
   "name": "LaunchStatus",
   "type": {
    "kind": "enum",
    "variants": [
     {
      "name": "Forming"
     },
     {
      "name": "Graduated"
     },
     {
      "name": "Failed"
     }
    ]
   }
  },
  {
   "name": "LimitOrder",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "owner",
      "type": "pubkey"
     },
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "order_id",
      "type": "u64"
     },
     {
      "name": "side",
      "type": {
       "defined": {
        "name": "OrderSide"
       }
      }
     },
     {
      "name": "amount",
      "docs": [
       "Buy: max gross lamports. Sell: receipt units."
      ],
      "type": "u64"
     },
     {
      "name": "limit_price",
      "docs": [
       "Lamports per LIMIT_PRICE_UNIT (1,000,000,000,000) raw receipt units = per 1,000,000 whole tokens (e2x L-1)."
      ],
      "type": "u64"
     },
     {
      "name": "keeper_fee",
      "type": "u64"
     },
     {
      "name": "expires_at",
      "type": "i64"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "MarketplaceListing",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "seller",
      "type": "pubkey"
     },
     {
      "name": "price",
      "type": "u64"
     },
     {
      "name": "asset",
      "type": {
       "defined": {
        "name": "PaymentAsset"
       }
      }
     },
     {
      "name": "active",
      "type": "bool"
     },
     {
      "name": "created_at",
      "type": "i64"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "MarketplaceOffer",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "offer_id",
      "type": {
       "array": [
        "u8",
        32
       ]
      }
     },
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "buyer",
      "type": "pubkey"
     },
     {
      "name": "seller",
      "type": "pubkey"
     },
     {
      "name": "price",
      "type": "u64"
     },
     {
      "name": "escrow_amount",
      "type": "u64"
     },
     {
      "name": "asset",
      "type": {
       "defined": {
        "name": "PaymentAsset"
       }
      }
     },
     {
      "name": "active",
      "type": "bool"
     },
     {
      "name": "accepted",
      "type": "bool"
     },
     {
      "name": "created_at",
      "type": "i64"
     },
     {
      "name": "closed_at",
      "type": "i64"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "MarketplacePrivateTrade",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "trade_id",
      "type": {
       "array": [
        "u8",
        32
       ]
      }
     },
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "seller",
      "type": "pubkey"
     },
     {
      "name": "buyer",
      "type": "pubkey"
     },
     {
      "name": "price",
      "type": "u64"
     },
     {
      "name": "asset",
      "type": {
       "defined": {
        "name": "PaymentAsset"
       }
      }
     },
     {
      "name": "active",
      "type": "bool"
     },
     {
      "name": "accepted",
      "type": "bool"
     },
     {
      "name": "created_at",
      "type": "i64"
     },
     {
      "name": "expires_at",
      "type": "i64"
     },
     {
      "name": "closed_at",
      "type": "i64"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "OrderSide",
   "type": {
    "kind": "enum",
    "variants": [
     {
      "name": "Buy"
     },
     {
      "name": "Sell"
     }
    ]
   }
  },
  {
   "name": "PaymentAsset",
   "type": {
    "kind": "enum",
    "variants": [
     {
      "name": "Sol"
     },
     {
      "name": "Usdc"
     }
    ]
   }
  },
  {
   "name": "PriorityTicket",
   "docs": [
    "P21: proof that the holder's (wallet, domain, tld) leaf is in the current priority root, kept until the holder",
    "registers the name (closed there, rent back to the holder) or closes it. One per domain record. It exists because",
    "a depth-12..16 proof does not fit the registration transaction itself (measured: P21 report)."
   ],
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "holder",
      "type": "pubkey"
     },
     {
      "name": "domain_record",
      "type": "pubkey"
     },
     {
      "name": "root",
      "docs": [
       "The root the proof was checked against: a ticket of an older root is stale (registration refuses it)."
      ],
      "type": {
       "array": [
        "u8",
        32
       ]
      }
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "ReferralBinding",
   "docs": [
    "First-touch referral: created once by the referred wallet, never changed or closed. It binds the wallet to a",
    "referrer DOMAIN (its `ShitTagRecord` PDA), not to a wallet (owner decision, Phase 1d): every share is paid to",
    "whoever owns that domain (and holds its NFT) at payment time, so a sold or transferred domain pays its new",
    "owner from the next trade on, and an expired or inactive one pays nobody (the share stays with the treasury).",
    "",
    "Layout (161 bytes, byte-compatible with the Phase 1c layout; `version` sits in what was `reserved[0]`, so a",
    "Phase 1c account reads as `version == 0` with the same meaning for every field):",
    "disc[8] | referred[32] | referrer[32] | referrer_domain[32] | created_at i64 | total_paid_lamports u64 |",
    "total_paid_usdc u64 | bump u8 | version u8 | reserved[31] | domain_nft_mint[32] (version 2, audit R3 F-9)",
    "",
    "Audit R3 F-9 (owner decision): a version-2 binding (193 bytes) also stores the bound domain's NFT mint at bind",
    "time, and pays only while `domain_record.domain_nft_mint` is still that mint. A domain that lapses and is",
    "re-registered (same record PDA, new NFT) therefore stops paying: the referral stream is not inherited by",
    "whoever re-registers it. The mint is appended after `reserved` (31 bytes, too small for a pubkey), so a",
    "version 0/1 binding (161 bytes) is a prefix of this layout: it is read zero-padded (`load_referral_binding`)",
    "and, having no stored mint, matches any mint."
   ],
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "referred",
      "type": "pubkey"
     },
     {
      "name": "referrer",
      "docs": [
       "Owner of `referrer_domain` when the binding was created. Informational only: payouts never use it."
      ],
      "type": "pubkey"
     },
     {
      "name": "referrer_domain",
      "docs": [
       "The bound referrer domain record. The share follows this domain."
      ],
      "type": "pubkey"
     },
     {
      "name": "created_at",
      "type": "i64"
     },
     {
      "name": "total_paid_lamports",
      "docs": [
       "Running totals paid through this binding, to whichever owner held the domain (lamports / USDC raw)."
      ],
      "type": "u64"
     },
     {
      "name": "total_paid_usdc",
      "type": "u64"
     },
     {
      "name": "bump",
      "type": "u8"
     },
     {
      "name": "version",
      "docs": [
       "`REFERRAL_BINDING_VERSION` for bindings created since Phase 1d (0 = a Phase 1c binding)."
      ],
      "type": "u8"
     },
     {
      "name": "reserved",
      "type": {
       "array": [
        "u8",
        31
       ]
      }
     },
     {
      "name": "domain_nft_mint",
      "docs": [
       "Version 2 (audit R3 F-9): the bound domain's NFT mint at bind time. Zero (not stored) for version 0/1."
      ],
      "type": "pubkey"
     }
    ]
   }
  },
  {
   "name": "ReferralReward",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "referral_id",
      "type": "string"
     },
     {
      "name": "referrer",
      "type": "pubkey"
     },
     {
      "name": "referred",
      "type": "pubkey"
     },
     {
      "name": "asset",
      "type": {
       "defined": {
        "name": "ReferralRewardAsset"
       }
      }
     },
     {
      "name": "amount",
      "type": "u64"
     },
     {
      "name": "status",
      "type": {
       "defined": {
        "name": "ReferralRewardStatus"
       }
      }
     },
     {
      "name": "unlock_at",
      "type": "i64"
     },
     {
      "name": "created_at",
      "type": "i64"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "ReferralRewardAsset",
   "type": {
    "kind": "enum",
    "variants": [
     {
      "name": "Sol"
     },
     {
      "name": "Usdc"
     },
     {
      "name": "Shit"
     }
    ]
   }
  },
  {
   "name": "ReferralRewardStatus",
   "type": {
    "kind": "enum",
    "variants": [
     {
      "name": "Pending"
     },
     {
      "name": "Claimable"
     },
     {
      "name": "UnderReview"
     },
     {
      "name": "Released"
     },
     {
      "name": "Cancelled"
     },
     {
      "name": "Claimed"
     }
    ]
   }
  },
  {
   "name": "RektClaim",
   "docs": [
    "One wallet's Rekt-Fest weight in one week. Closed (rent back to the wallet) when the payout is claimed."
   ],
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "epoch",
      "type": "u64"
     },
     {
      "name": "wallet",
      "type": "pubkey"
     },
     {
      "name": "loss",
      "docs": [
       "Phase 1e: the SOL this wallet forfeited into the pool this week (the 25% failure remainders of its",
       "recorded refunds). It is both the payout weight and the payout cap. (Name kept for decoders.)"
      ],
      "type": "u64"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "RektEpoch",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "epoch",
      "type": "u64"
     },
     {
      "name": "prev_loss_epoch",
      "docs": [
       "The previous week that had losses (0 = none); it must be snapshotted before this one."
      ],
      "type": "u64"
     },
     {
      "name": "total_loss",
      "docs": [
       "Phase 1e: sum of the claimants' forfeits (weights) this week."
      ],
      "type": "u64"
     },
     {
      "name": "loser_count",
      "type": "u32"
     },
     {
      "name": "snapshotted",
      "type": "bool"
     },
     {
      "name": "snapshot_at",
      "type": "i64"
     },
     {
      "name": "pool_sol",
      "docs": [
       "Amounts frozen at the snapshot; claimants share them pro rata to their weight. Phase 1e:",
       "`pool_sol = min(50% of the undistributed SOL, total_loss)` and `pool_usdc` is always 0 for new snapshots."
      ],
      "type": "u64"
     },
     {
      "name": "pool_usdc",
      "type": "u64"
     },
     {
      "name": "claimed_sol",
      "type": "u64"
     },
     {
      "name": "claimed_usdc",
      "type": "u64"
     },
     {
      "name": "claims_paid",
      "type": "u32"
     },
     {
      "name": "swept",
      "type": "bool"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "RektFestPool",
   "docs": [
    "The Rekt-Fest pool: holds SOL itself (lamports above its rent minimum) and USDC in its ATA. Every",
    "lamport/token above `committed_*` is undistributed and goes to the next week that is snapshotted."
   ],
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "bump",
      "type": "u8"
     },
     {
      "name": "usdc_mint",
      "type": "pubkey"
     },
     {
      "name": "committed_sol",
      "docs": [
       "Snapshotted for weeks that are not fully claimed or swept yet (owed to their claimants)."
      ],
      "type": "u64"
     },
     {
      "name": "committed_usdc",
      "type": "u64"
     },
     {
      "name": "last_loss_epoch",
      "docs": [
       "Latest week with a recorded loss (0 = none yet); new weeks link to it (`RektEpoch::prev_loss_epoch`)."
      ],
      "type": "u64"
     },
     {
      "name": "last_snapshot_epoch",
      "docs": [
       "Latest week that was snapshotted; weeks are snapshotted strictly in order along that chain."
      ],
      "type": "u64"
     },
     {
      "name": "total_loss_recorded",
      "type": "u64"
     },
     {
      "name": "total_paid_sol",
      "type": "u64"
     },
     {
      "name": "total_paid_usdc",
      "type": "u64"
     },
     {
      "name": "reserved",
      "type": {
       "array": [
        "u8",
        64
       ]
      }
     }
    ]
   }
  },
  {
   "name": "RewardSigner",
   "docs": [
    "Index order for the per-asset arrays: [SOL, USDC, SHIT] (raw units)."
   ],
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "signer",
      "type": "pubkey"
     },
     {
      "name": "max_claim",
      "type": {
       "array": [
        "u64",
        3
       ]
      }
     },
     {
      "name": "daily_cap",
      "type": {
       "array": [
        "u64",
        3
       ]
      }
     },
     {
      "name": "window_start",
      "type": "i64"
     },
     {
      "name": "spent",
      "type": {
       "array": [
        "u64",
        3
       ]
      }
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "RewardSignerLimits",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "signer",
      "type": "pubkey"
     },
     {
      "name": "max_claim_sol",
      "type": "u64"
     },
     {
      "name": "max_claim_usdc",
      "type": "u64"
     },
     {
      "name": "max_claim_shit",
      "type": "u64"
     },
     {
      "name": "daily_cap_sol",
      "type": "u64"
     },
     {
      "name": "daily_cap_usdc",
      "type": "u64"
     },
     {
      "name": "daily_cap_shit",
      "type": "u64"
     }
    ]
   }
  },
  {
   "name": "SayHiSession",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "session_id",
      "type": {
       "array": [
        "u8",
        32
       ]
      }
     },
     {
      "name": "sender",
      "type": "pubkey"
     },
     {
      "name": "recipient",
      "type": "pubkey"
     },
     {
      "name": "offer_amount",
      "type": "u64"
     },
     {
      "name": "status",
      "type": {
       "defined": {
        "name": "SayHiStatus"
       }
      }
     },
     {
      "name": "created_at",
      "type": "i64"
     },
     {
      "name": "accepted_at",
      "type": "i64"
     },
     {
      "name": "ended_at",
      "type": "i64"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "SayHiStatus",
   "type": {
    "kind": "enum",
    "variants": [
     {
      "name": "Pending"
     },
     {
      "name": "Accepted"
     },
     {
      "name": "Ended"
     },
     {
      "name": "Cancelled"
     }
    ]
   }
  },
  {
   "name": "ShitTagConfig",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "authority",
      "type": "pubkey"
     },
     {
      "name": "treasury",
      "type": "pubkey"
     },
     {
      "name": "community_vault",
      "type": "pubkey"
     },
     {
      "name": "shit_mint",
      "type": "pubkey"
     },
     {
      "name": "usdc_mint",
      "type": "pubkey"
     },
     {
      "name": "tiers",
      "type": {
       "defined": {
        "name": "TierPricing"
       }
      }
     },
     {
      "name": "daily_airdrop_limit",
      "type": "u64"
     },
     {
      "name": "airdrop_cooldown_seconds",
      "type": "i64"
     },
     {
      "name": "paused",
      "type": "bool"
     },
     {
      "name": "bump",
      "type": "u8"
     },
     {
      "name": "migration_authority",
      "docs": [
       "Only wallet that may receive graduated liquidity for AMM seeding."
      ],
      "type": "pubkey"
     },
     {
      "name": "pending_migration_authority",
      "docs": [
       "Two-step, time-locked rotation of the migration authority (users see it coming on-chain)."
      ],
      "type": "pubkey"
     },
     {
      "name": "pending_migration_effective_at",
      "type": "i64"
     },
     {
      "name": "config_version",
      "docs": [
       "0 on a legacy config that was just realloc'd, `CONFIG_VERSION_V2` once v2 defaults were applied."
      ],
      "type": "u8"
     },
     {
      "name": "pending_authority",
      "docs": [
       "Spec 1: proposed authority; it becomes the authority when it signs `accept_config_authority`."
      ],
      "type": "pubkey"
     },
     {
      "name": "rekt_pool_bump",
      "docs": [
       "Bumps of the Rekt-Fest pool and buyback vault PDAs (set by `migrate_config_v2`)."
      ],
      "type": "u8"
     },
     {
      "name": "buyback_vault_bump",
      "type": "u8"
     },
     {
      "name": "buyback_bps",
      "docs": [
       "Spec 11: share of the treasury's (net) SOL revenue routed to the buyback vault."
      ],
      "type": "u16"
     },
     {
      "name": "buyback_pool",
      "docs": [
       "Raydium CPMM SHIT/WSOL pool used by `execute_buyback_and_burn`; default = unset (buyback refused)."
      ],
      "type": "pubkey"
     },
     {
      "name": "buyback_keeper",
      "docs": [
       "Optional keeper allowed to execute buybacks besides the authority; default = none."
      ],
      "type": "pubkey"
     },
     {
      "name": "buyback_max_lamports_per_call",
      "type": "u64"
     },
     {
      "name": "buyback_min_interval_seconds",
      "type": "i64"
     },
     {
      "name": "buyback_last_executed_at",
      "type": "i64"
     },
     {
      "name": "buyback_total_lamports_in",
      "type": "u64"
     },
     {
      "name": "buyback_total_shit_burned",
      "type": "u64"
     },
     {
      "name": "social_daily_cap_shit",
      "docs": [
       "Spec 13 (Phase 1c, carved from `reserved_v2`): per-claimant daily $SHIT cap of the reward-signer social",
       "path. 0 (a config migrated before this field existed) means `DEFAULT_SOCIAL_DAILY_CAP_RAW`."
      ],
      "type": "u64"
     },
     {
      "name": "priority_root",
      "docs": [
       "P21 (carved from `reserved_v2`, 48 bytes): the mainnet launch PRIORITY WINDOW. While",
       "`priority_root != 0` and `now < priority_window_end`, `register_domain_sol` / `_usdc` only accept a name whose",
       "(signer wallet, domain, tld) leaf is in this merkle root (proof passed as instruction data; no account per",
       "name). Before `priority_window_start` nobody can register; from `priority_window_end` registration is open to",
       "everyone again. A zeroed root (every existing / migrated config) = no window. Authority grants are unaffected."
      ],
      "type": {
       "array": [
        "u8",
        32
       ]
      }
     },
     {
      "name": "priority_window_start",
      "type": "i64"
     },
     {
      "name": "priority_window_end",
      "type": "i64"
     },
     {
      "name": "reserved_v2",
      "docs": [
       "Zeroed space for later v2 fields: carve new fields out of the front of this array and shrink it by",
       "the same number of bytes, so `SPACE` (and with it every migrated config) stays valid."
      ],
      "type": {
       "array": [
        "u8",
        200
       ]
      }
     }
    ]
   }
  },
  {
   "name": "ShitTagRecord",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "owner",
      "type": "pubkey"
     },
     {
      "name": "domain_nft_mint",
      "type": "pubkey"
     },
     {
      "name": "domain_name",
      "type": "string"
     },
     {
      "name": "tld",
      "type": "string"
     },
     {
      "name": "tier",
      "type": {
       "defined": {
        "name": "DomainTier"
       }
      }
     },
     {
      "name": "registered_at",
      "type": "i64"
     },
     {
      "name": "expires_at",
      "type": "i64"
     },
     {
      "name": "status",
      "type": {
       "defined": {
        "name": "DomainStatus"
       }
      }
     },
     {
      "name": "grace_period_ends_at",
      "type": "i64"
     },
     {
      "name": "cancelled_at",
      "type": "i64"
     },
     {
      "name": "renewed_at",
      "type": "i64"
     },
     {
      "name": "renewals_count",
      "type": "u32"
     },
     {
      "name": "dev_lock_duration",
      "type": "i64"
     },
     {
      "name": "launch_rights_total",
      "type": "u8"
     },
     {
      "name": "launch_rights_used",
      "type": "u8"
     },
     {
      "name": "active_launch_pool",
      "type": "pubkey"
     },
     {
      "name": "grant_source",
      "type": {
       "defined": {
        "name": "DomainGrantSource"
       }
      }
     },
     {
      "name": "grant_recipient",
      "type": "pubkey"
     },
     {
      "name": "welcome_airdrop_issued",
      "type": "bool"
     },
     {
      "name": "revoked_at",
      "type": "i64"
     },
     {
      "name": "revoked_by",
      "type": "pubkey"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "SocialActionKind",
   "type": {
    "kind": "enum",
    "variants": [
     {
      "name": "Reaction"
     },
     {
      "name": "PostBoost"
     },
     {
      "name": "ProfileBoost"
     },
     {
      "name": "PostReward"
     }
    ]
   }
  },
  {
   "name": "SocialActionReceipt",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "action_id",
      "type": {
       "array": [
        "u8",
        32
       ]
      }
     },
     {
      "name": "action_kind",
      "type": {
       "defined": {
        "name": "SocialActionKind"
       }
      }
     },
     {
      "name": "target_hash",
      "type": {
       "array": [
        "u8",
        32
       ]
      }
     },
     {
      "name": "actor",
      "type": "pubkey"
     },
     {
      "name": "amount",
      "type": "u64"
     },
     {
      "name": "status",
      "type": {
       "defined": {
        "name": "SocialSettlementStatus"
       }
      }
     },
     {
      "name": "settled_at",
      "type": "i64"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "SocialPost",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "author",
      "type": "pubkey"
     },
     {
      "name": "profile",
      "type": "pubkey"
     },
     {
      "name": "content_uri",
      "type": "string"
     },
     {
      "name": "estimated_reward_shit",
      "type": "u64"
     },
     {
      "name": "reward_hold",
      "type": "bool"
     },
     {
      "name": "report_count",
      "type": "u32"
     },
     {
      "name": "created_at",
      "type": "i64"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "SocialRewardDay",
   "docs": [
    "$SHIT a claimant received through `claim_social_reward` on one UTC day."
   ],
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "claimant",
      "type": "pubkey"
     },
     {
      "name": "day",
      "type": "u64"
     },
     {
      "name": "claimed",
      "type": "u64"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "SocialSettlementStatus",
   "type": {
    "kind": "enum",
    "variants": [
     {
      "name": "Burned"
     },
     {
      "name": "RewardPaid"
     }
    ]
   }
  },
  {
   "name": "TierPricing",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "god",
      "type": {
       "defined": {
        "name": "TierValues"
       }
      }
     },
     {
      "name": "elite",
      "type": {
       "defined": {
        "name": "TierValues"
       }
      }
     },
     {
      "name": "premium",
      "type": {
       "defined": {
        "name": "TierValues"
       }
      }
     },
     {
      "name": "standard",
      "type": {
       "defined": {
        "name": "TierValues"
       }
      }
     }
    ]
   }
  },
  {
   "name": "TierValues",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "price_lamports",
      "type": "u64"
     },
     {
      "name": "price_usdc_raw",
      "type": "u64"
     },
     {
      "name": "welcome_airdrop_amount",
      "type": "u64"
     },
     {
      "name": "launch_rights",
      "type": "u8"
     },
     {
      "name": "creator_lock_seconds",
      "type": "i64"
     },
     {
      "name": "graduation_target_usdc",
      "docs": [
       "Whole USDC (no decimals). Target for USDC-paired launches."
      ],
      "type": "u64"
     },
     {
      "name": "graduation_target_lamports",
      "docs": [
       "Lamports. Target for SOL-paired launches, denominated natively so no SOL/USD price is assumed."
      ],
      "type": "u64"
     }
    ]
   }
  },
  {
   "name": "TldCategory",
   "type": {
    "kind": "enum",
    "variants": [
     {
      "name": "PureDegen"
     },
     {
      "name": "FinancePosition"
     },
     {
      "name": "CryptoCore"
     },
     {
      "name": "ClansTrends"
     },
     {
      "name": "Numbers"
     }
    ]
   }
  },
  {
   "name": "TldRecord",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "tld",
      "type": "string"
     },
     {
      "name": "display_name",
      "type": "string"
     },
     {
      "name": "category",
      "type": {
       "defined": {
        "name": "TldCategory"
       }
      }
     },
     {
      "name": "enabled",
      "type": "bool"
     },
     {
      "name": "premium_allowed",
      "type": "bool"
     },
     {
      "name": "created_by",
      "type": "pubkey"
     },
     {
      "name": "created_at",
      "type": "i64"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "UniquenessMarker",
   "docs": [
    "Uniqueness marker: existence of this PDA means the seed key is already bound."
   ],
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "bound_to",
      "type": "pubkey"
     }
    ]
   }
  },
  {
   "name": "UserProfile",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "owner",
      "type": "pubkey"
     },
     {
      "name": "primary_domain",
      "type": "pubkey"
     },
     {
      "name": "reaction_influence_score",
      "type": "i64"
     },
     {
      "name": "social_earnings_shit",
      "type": "u64"
     },
     {
      "name": "updated_at",
      "type": "i64"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "VestingLock",
   "docs": [
    "Tokens locked for a beneficiary; immutable once created and never cancelable."
   ],
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "beneficiary",
      "type": "pubkey"
     },
     {
      "name": "mint",
      "type": "pubkey"
     },
     {
      "name": "id",
      "type": "u64"
     },
     {
      "name": "depositor",
      "docs": [
       "Who deposited (and paid for) the lock. Phase 1e: part of the PDA seeds."
      ],
      "type": "pubkey"
     },
     {
      "name": "vault",
      "docs": [
       "The lock PDA's canonical ATA for `mint`."
      ],
      "type": "pubkey"
     },
     {
      "name": "total_amount",
      "type": "u64"
     },
     {
      "name": "released_amount",
      "type": "u64"
     },
     {
      "name": "start_ts",
      "type": "i64"
     },
     {
      "name": "cliff_seconds",
      "type": "i64"
     },
     {
      "name": "duration_seconds",
      "docs": [
       "Linear vesting period that starts when the cliff ends (0 = everything vests at the cliff)."
      ],
      "type": "i64"
     },
     {
      "name": "created_at",
      "type": "i64"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "WalletAirdropState",
   "type": {
    "kind": "struct",
    "fields": [
     {
      "name": "owner",
      "type": "pubkey"
     },
     {
      "name": "window_started_at",
      "type": "i64"
     },
     {
      "name": "last_issued_at",
      "type": "i64"
     },
     {
      "name": "issued_in_window",
      "type": "u64"
     },
     {
      "name": "lifetime_issued",
      "type": "u64"
     },
     {
      "name": "bump",
      "type": "u8"
     }
    ]
   }
  },
  {
   "name": "AmmLiquidityHandedOff",
   "type": {
    "fields": [
     {
      "name": "handoff",
      "type": "pubkey"
     },
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "migration_authority",
      "type": "pubkey"
     },
     {
      "name": "pair_asset",
      "type": {
       "defined": {
        "name": "PaymentAsset"
       }
      }
     },
     {
      "name": "token_amount",
      "type": "u64"
     },
     {
      "name": "quote_amount",
      "type": "u64"
     },
     {
      "name": "graduation_fee_amount",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "BuybackConfigUpdated",
   "type": {
    "fields": [
     {
      "name": "buyback_bps",
      "type": "u16"
     },
     {
      "name": "max_lamports_per_call",
      "type": "u64"
     },
     {
      "name": "min_interval_seconds",
      "type": "i64"
     },
     {
      "name": "keeper",
      "type": "pubkey"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "BuybackExecuted",
   "type": {
    "fields": [
     {
      "name": "executor",
      "type": "pubkey"
     },
     {
      "name": "pool_state",
      "type": "pubkey"
     },
     {
      "name": "amount_in",
      "type": "u64"
     },
     {
      "name": "shit_received",
      "type": "u64"
     },
     {
      "name": "shit_burned",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "BuybackPoolUpdated",
   "type": {
    "fields": [
     {
      "name": "pool_state",
      "type": "pubkey"
     },
     {
      "name": "amm_config",
      "type": "pubkey"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "CleanLaunchRewardSettled",
   "type": {
    "fields": [
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "creator",
      "type": "pubkey"
     },
     {
      "docs": [
       "1 or 2."
      ],
      "name": "tranche",
      "type": "u8"
     },
     {
      "name": "released",
      "type": "bool"
     },
     {
      "name": "amount",
      "type": "u64"
     },
     {
      "docs": [
       "0 when released, else `CLEAN_FORFEIT_*` bits."
      ],
      "name": "reason",
      "type": "u8"
     },
     {
      "name": "withdrawn_before_checkpoint",
      "type": "u64"
     },
     {
      "name": "allocation_base",
      "type": "u64"
     },
     {
      "name": "pool_sol",
      "type": "u64"
     },
     {
      "name": "quote_deposited",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "CleanLaunchRewardStarted",
   "type": {
    "fields": [
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "creator",
      "type": "pubkey"
     },
     {
      "docs": [
       "$SHIT escrowed (0 when skipped)."
      ],
      "name": "amount",
      "type": "u64"
     },
     {
      "name": "status",
      "type": "u8"
     },
     {
      "name": "tranche_1_amount",
      "type": "u64"
     },
     {
      "name": "checkpoint_1_at",
      "type": "i64"
     },
     {
      "name": "checkpoint_2_at",
      "type": "i64"
     },
     {
      "name": "params",
      "type": {
       "defined": {
        "name": "CleanRewardParams"
       }
      }
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "CleanRewardConfigSet",
   "type": {
    "fields": [
     {
      "name": "params",
      "type": {
       "defined": {
        "name": "CleanRewardParams"
       }
      }
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "ConfigAuthorityProposed",
   "type": {
    "fields": [
     {
      "name": "authority",
      "type": "pubkey"
     },
     {
      "name": "pending_authority",
      "type": "pubkey"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "ConfigAuthorityTransferred",
   "type": {
    "fields": [
     {
      "name": "previous_authority",
      "type": "pubkey"
     },
     {
      "name": "new_authority",
      "type": "pubkey"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "ConfigMigratedV2",
   "type": {
    "fields": [
     {
      "name": "authority",
      "type": "pubkey"
     },
     {
      "name": "previous_len",
      "type": "u32"
     },
     {
      "name": "first_migration",
      "type": "bool"
     },
     {
      "name": "previous_community_vault",
      "type": "pubkey"
     },
     {
      "name": "rekt_pool",
      "type": "pubkey"
     },
     {
      "name": "buyback_vault",
      "type": "pubkey"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "CopyLeaderRebatePaid",
   "type": {
    "fields": [
     {
      "name": "vault",
      "type": "pubkey"
     },
     {
      "name": "leader",
      "type": "pubkey"
     },
     {
      "docs": [
       "Paid to the leader (25% of `treasury_portion`, floored)."
      ],
      "name": "amount",
      "type": "u64"
     },
     {
      "name": "treasury_portion",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "CopyTradeExecuted",
   "type": {
    "fields": [
     {
      "name": "vault",
      "type": "pubkey"
     },
     {
      "name": "follower",
      "type": "pubkey"
     },
     {
      "name": "leader",
      "type": "pubkey"
     },
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "side",
      "type": {
       "defined": {
        "name": "OrderSide"
       }
      }
     },
     {
      "name": "receipt_units",
      "type": "u64"
     },
     {
      "name": "amount",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "CreatorAllocationClaimed",
   "type": {
    "fields": [
     {
      "name": "creator",
      "type": "pubkey"
     },
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "allocation_amount",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "CreatorAllocationWithdrawn",
   "type": {
    "fields": [
     {
      "name": "creator",
      "type": "pubkey"
     },
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "amount",
      "type": "u64"
     },
     {
      "name": "remaining",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "CreatorFeeAccrued",
   "type": {
    "fields": [
     {
      "name": "creator",
      "type": "pubkey"
     },
     {
      "name": "vault",
      "type": "pubkey"
     },
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "amount",
      "type": "u64"
     },
     {
      "name": "total_accrued",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "CreatorFeesClaimed",
   "type": {
    "fields": [
     {
      "name": "creator",
      "type": "pubkey"
     },
     {
      "name": "vault",
      "type": "pubkey"
     },
     {
      "name": "amount",
      "type": "u64"
     },
     {
      "name": "total_accrued",
      "type": "u64"
     },
     {
      "name": "total_claimed",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "DomainCancelled",
   "type": {
    "fields": [
     {
      "name": "owner",
      "type": "pubkey"
     },
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "cancelled_at",
      "type": "i64"
     },
     {
      "name": "grace_period_ends_at",
      "type": "i64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "DomainExpired",
   "type": {
    "fields": [
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "expired_at",
      "type": "i64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "DomainGraceStarted",
   "type": {
    "fields": [
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "grace_period_ends_at",
      "type": "i64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "DomainGrantRevoked",
   "type": {
    "fields": [
     {
      "name": "authority",
      "type": "pubkey"
     },
     {
      "name": "recipient",
      "type": "pubkey"
     },
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "revoked_at",
      "type": "i64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "DomainGranted",
   "type": {
    "fields": [
     {
      "name": "recipient",
      "type": "pubkey"
     },
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "tier",
      "type": {
       "defined": {
        "name": "DomainTier"
       }
      }
     },
     {
      "name": "welcome_airdrop_amount",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "DomainListed",
   "type": {
    "fields": [
     {
      "name": "seller",
      "type": "pubkey"
     },
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "price",
      "type": "u64"
     },
     {
      "name": "asset",
      "type": {
       "defined": {
        "name": "PaymentAsset"
       }
      }
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "DomainListingCancelled",
   "type": {
    "fields": [
     {
      "name": "seller",
      "type": "pubkey"
     },
     {
      "name": "domain",
      "type": "pubkey"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "DomainListingPurchased",
   "type": {
    "fields": [
     {
      "name": "seller",
      "type": "pubkey"
     },
     {
      "name": "buyer",
      "type": "pubkey"
     },
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "price",
      "type": "u64"
     },
     {
      "name": "asset",
      "type": {
       "defined": {
        "name": "PaymentAsset"
       }
      }
     },
     {
      "name": "taker_fee",
      "type": "u64"
     },
     {
      "name": "community_fee",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "DomainOwnerSynced",
   "type": {
    "fields": [
     {
      "name": "previous_owner",
      "type": "pubkey"
     },
     {
      "name": "new_owner",
      "type": "pubkey"
     },
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "domain_nft_mint",
      "type": "pubkey"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "DomainRegistered",
   "type": {
    "fields": [
     {
      "name": "owner",
      "type": "pubkey"
     },
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "tier",
      "type": {
       "defined": {
        "name": "DomainTier"
       }
      }
     },
     {
      "name": "paid_asset",
      "type": {
       "defined": {
        "name": "PaymentAsset"
       }
      }
     },
     {
      "name": "paid_amount",
      "type": "u64"
     },
     {
      "name": "welcome_airdrop_amount",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "DomainRenewed",
   "type": {
    "fields": [
     {
      "name": "owner",
      "type": "pubkey"
     },
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "expires_at",
      "type": "i64"
     },
     {
      "name": "renewed_at",
      "type": "i64"
     },
     {
      "name": "paid_asset",
      "type": {
       "defined": {
        "name": "PaymentAsset"
       }
      }
     },
     {
      "name": "paid_amount",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "DomainTransferred",
   "type": {
    "fields": [
     {
      "name": "previous_owner",
      "type": "pubkey"
     },
     {
      "name": "new_owner",
      "type": "pubkey"
     },
     {
      "name": "domain",
      "type": "pubkey"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "FailureSettlementClaimed",
   "type": {
    "fields": [
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "buyer",
      "type": "pubkey"
     },
     {
      "name": "refund_amount",
      "type": "u64"
     },
     {
      "name": "rekt_amount",
      "type": "u64"
     },
     {
      "name": "consolation_amount",
      "type": "u64"
     },
     {
      "name": "asset",
      "type": {
       "defined": {
        "name": "PaymentAsset"
       }
      }
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "GraduatedTokensClaimed",
   "type": {
    "fields": [
     {
      "name": "buyer",
      "type": "pubkey"
     },
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "claim_amount",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "GraduationRewardSettled",
   "type": {
    "fields": [
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "creator",
      "type": "pubkey"
     },
     {
      "docs": [
       "$SHIT raw units paid (0 when skipped)."
      ],
      "name": "amount",
      "type": "u64"
     },
     {
      "docs": [
       "`GRADUATION_REWARD_PAID` (0), `..._SKIPPED_VAULT_SHORT` (1), `..._SKIPPED_NO_CREATOR_ATA` (2) (programs before the",
       "clean-launch reward), or `GRADUATION_REWARD_VESTING` (3): `amount` is the planned reward, see `CleanLaunchReward`."
      ],
      "name": "status",
      "type": "u8"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "LaunchFailed",
   "type": {
    "fields": [
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "failed_at",
      "type": "i64"
     },
     {
      "name": "force",
      "type": "bool"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "LaunchGraduated",
   "type": {
    "fields": [
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "observed_raised_usdc",
      "type": "u64"
     },
     {
      "name": "graduated_at",
      "type": "i64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "LaunchMigrated",
   "type": {
    "fields": [
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "amm_pool",
      "type": "pubkey"
     },
     {
      "name": "lp_mint",
      "type": "pubkey"
     },
     {
      "name": "lp_burned",
      "type": "u64"
     },
     {
      "name": "token_amount",
      "type": "u64"
     },
     {
      "name": "quote_amount",
      "type": "u64"
     },
     {
      "name": "treasury_amount",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "LaunchPoolCreated",
   "type": {
    "fields": [
     {
      "name": "creator",
      "type": "pubkey"
     },
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "token_mint",
      "type": "pubkey"
     },
     {
      "name": "pair_asset",
      "type": {
       "defined": {
        "name": "PaymentAsset"
       }
      }
     },
     {
      "name": "sniper_max_wallet_amount",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "LaunchTokenMetadataSet",
   "type": {
    "fields": [
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "token_mint",
      "type": "pubkey"
     },
     {
      "name": "metadata",
      "type": "pubkey"
     },
     {
      "name": "name",
      "type": "string"
     },
     {
      "name": "symbol",
      "type": "string"
     },
     {
      "name": "uri",
      "type": "string"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "LimitOrderCancelled",
   "type": {
    "fields": [
     {
      "name": "order",
      "type": "pubkey"
     },
     {
      "name": "owner",
      "type": "pubkey"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "LimitOrderFilled",
   "type": {
    "fields": [
     {
      "name": "order",
      "type": "pubkey"
     },
     {
      "name": "owner",
      "type": "pubkey"
     },
     {
      "name": "side",
      "type": {
       "defined": {
        "name": "OrderSide"
       }
      }
     },
     {
      "name": "receipt_units",
      "type": "u64"
     },
     {
      "name": "amount",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "LimitOrderPlaced",
   "type": {
    "fields": [
     {
      "name": "order",
      "type": "pubkey"
     },
     {
      "name": "owner",
      "type": "pubkey"
     },
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "side",
      "type": {
       "defined": {
        "name": "OrderSide"
       }
      }
     },
     {
      "name": "amount",
      "type": "u64"
     },
     {
      "name": "limit_price",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "MarketplaceOfferAccepted",
   "type": {
    "fields": [
     {
      "name": "offer",
      "type": "pubkey"
     },
     {
      "name": "seller",
      "type": "pubkey"
     },
     {
      "name": "buyer",
      "type": "pubkey"
     },
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "price",
      "type": "u64"
     },
     {
      "name": "asset",
      "type": {
       "defined": {
        "name": "PaymentAsset"
       }
      }
     },
     {
      "name": "taker_fee",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "MarketplaceOfferCancelled",
   "type": {
    "fields": [
     {
      "name": "offer",
      "type": "pubkey"
     },
     {
      "name": "buyer",
      "type": "pubkey"
     },
     {
      "name": "refund_amount",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "MarketplaceOfferCreated",
   "type": {
    "fields": [
     {
      "name": "offer",
      "type": "pubkey"
     },
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "buyer",
      "type": "pubkey"
     },
     {
      "name": "seller",
      "type": "pubkey"
     },
     {
      "name": "price",
      "type": "u64"
     },
     {
      "name": "asset",
      "type": {
       "defined": {
        "name": "PaymentAsset"
       }
      }
     }
    ],
    "kind": "struct"
   }
  },
  {
   "docs": [
    "Emitted by every position buy (manual, limit order, copy trade) with the resulting state, so an",
    "indexer can follow positions from events alone."
   ],
   "name": "PositionBought",
   "type": {
    "fields": [
     {
      "name": "buyer",
      "type": "pubkey"
     },
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "docs": [
       "Gross amount charged (escrow + fees), raw pair-asset units."
      ],
      "name": "amount_paid",
      "type": "u64"
     },
     {
      "name": "escrow_amount",
      "type": "u64"
     },
     {
      "name": "receipt_units",
      "type": "u64"
     },
     {
      "name": "position_receipt_units",
      "type": "u64"
     },
     {
      "name": "position_paid_amount",
      "type": "u64"
     },
     {
      "name": "pool_raised_amount",
      "type": "u64"
     },
     {
      "name": "pool_receipt_units_sold",
      "type": "u64"
     },
     {
      "name": "graduated",
      "type": "bool"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "docs": [
    "Emitted by every position sell (manual, limit order, copy trade) with the resulting state."
   ],
   "name": "PositionSold",
   "type": {
    "fields": [
     {
      "name": "buyer",
      "type": "pubkey"
     },
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "docs": [
       "Net proceeds released to the seller side (gross output minus fees), raw pair-asset units."
      ],
      "name": "refund_amount",
      "type": "u64"
     },
     {
      "name": "gross_output",
      "type": "u64"
     },
     {
      "name": "receipt_units",
      "type": "u64"
     },
     {
      "name": "position_receipt_units",
      "type": "u64"
     },
     {
      "name": "position_refunded_amount",
      "type": "u64"
     },
     {
      "name": "pool_raised_amount",
      "type": "u64"
     },
     {
      "name": "pool_receipt_units_sold",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "PrimaryDomainSet",
   "type": {
    "fields": [
     {
      "name": "owner",
      "type": "pubkey"
     },
     {
      "name": "domain",
      "type": "pubkey"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "docs": [
    "P21"
   ],
   "name": "PriorityTicketClaimed",
   "type": {
    "fields": [
     {
      "name": "holder",
      "type": "pubkey"
     },
     {
      "name": "domain_record",
      "type": "pubkey"
     },
     {
      "name": "root",
      "type": {
       "array": [
        "u8",
        32
       ]
      }
     }
    ],
    "kind": "struct"
   }
  },
  {
   "docs": [
    "P21"
   ],
   "name": "PriorityTicketClosed",
   "type": {
    "fields": [
     {
      "name": "holder",
      "type": "pubkey"
     },
     {
      "name": "domain_record",
      "type": "pubkey"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "docs": [
    "P21: the priority window was set or cleared (zero root)."
   ],
   "name": "PriorityWindowSet",
   "type": {
    "fields": [
     {
      "name": "authority",
      "type": "pubkey"
     },
     {
      "name": "root",
      "type": {
       "array": [
        "u8",
        32
       ]
      }
     },
     {
      "name": "start_ts",
      "type": "i64"
     },
     {
      "name": "end_ts",
      "type": "i64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "PrivateTradeAccepted",
   "type": {
    "fields": [
     {
      "name": "trade",
      "type": "pubkey"
     },
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "seller",
      "type": "pubkey"
     },
     {
      "name": "buyer",
      "type": "pubkey"
     },
     {
      "name": "price",
      "type": "u64"
     },
     {
      "name": "asset",
      "type": {
       "defined": {
        "name": "PaymentAsset"
       }
      }
     },
     {
      "name": "taker_fee",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "PrivateTradeCancelled",
   "type": {
    "fields": [
     {
      "name": "trade",
      "type": "pubkey"
     },
     {
      "name": "seller",
      "type": "pubkey"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "PrivateTradeCreated",
   "type": {
    "fields": [
     {
      "name": "trade",
      "type": "pubkey"
     },
     {
      "name": "domain",
      "type": "pubkey"
     },
     {
      "name": "seller",
      "type": "pubkey"
     },
     {
      "name": "buyer",
      "type": "pubkey"
     },
     {
      "name": "price",
      "type": "u64"
     },
     {
      "name": "asset",
      "type": {
       "defined": {
        "name": "PaymentAsset"
       }
      }
     },
     {
      "name": "expires_at",
      "type": "i64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "ProgramAccountClosed",
   "type": {
    "fields": [
     {
      "name": "account",
      "type": "pubkey"
     },
     {
      "docs": [
       "`CLOSED_*`."
      ],
      "name": "kind",
      "type": "u8"
     },
     {
      "name": "rent_receiver",
      "type": "pubkey"
     },
     {
      "name": "lamports",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "ReferralBound",
   "type": {
    "fields": [
     {
      "name": "referred",
      "type": "pubkey"
     },
     {
      "docs": [
       "The bound domain record (the share follows it)."
      ],
      "name": "referrer_domain",
      "type": "pubkey"
     },
     {
      "docs": [
       "The domain's owner at bind time (who would be paid if a trade happened now)."
      ],
      "name": "referrer",
      "type": "pubkey"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "ReferralFeePaid",
   "type": {
    "fields": [
     {
      "name": "referred",
      "type": "pubkey"
     },
     {
      "docs": [
       "The bound domain record."
      ],
      "name": "referrer_domain",
      "type": "pubkey"
     },
     {
      "docs": [
       "The domain's owner at payment time (wallet), who received the share."
      ],
      "name": "referrer",
      "type": "pubkey"
     },
     {
      "docs": [
       "The account actually credited: `referrer` (SOL) or `referrer`'s USDC ATA (USDC)."
      ],
      "name": "payee",
      "type": "pubkey"
     },
     {
      "name": "asset",
      "type": {
       "defined": {
        "name": "PaymentAsset"
       }
      }
     },
     {
      "docs": [
       "Paid to the payee (15% of `treasury_portion`, floored)."
      ],
      "name": "amount",
      "type": "u64"
     },
     {
      "docs": [
       "The treasury fee portion of the trade before the referral share was taken out."
      ],
      "name": "treasury_portion",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "ReferralRewardReviewed",
   "type": {
    "fields": [
     {
      "name": "referral_reward",
      "type": "pubkey"
     },
     {
      "name": "reviewer",
      "type": "pubkey"
     },
     {
      "name": "status",
      "type": {
       "defined": {
        "name": "ReferralRewardStatus"
       }
      }
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "RektEpochSnapshotted",
   "type": {
    "fields": [
     {
      "name": "epoch",
      "type": "u64"
     },
     {
      "name": "total_loss",
      "type": "u64"
     },
     {
      "name": "loser_count",
      "type": "u32"
     },
     {
      "name": "pool_sol",
      "type": "u64"
     },
     {
      "name": "pool_usdc",
      "type": "u64"
     },
     {
      "name": "claim_deadline",
      "type": "i64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "RektEpochSwept",
   "type": {
    "fields": [
     {
      "name": "epoch",
      "type": "u64"
     },
     {
      "name": "unclaimed_sol",
      "type": "u64"
     },
     {
      "name": "unclaimed_usdc",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "RektLossRecorded",
   "type": {
    "fields": [
     {
      "name": "epoch",
      "type": "u64"
     },
     {
      "name": "wallet",
      "type": "pubkey"
     },
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "loss",
      "type": "u64"
     },
     {
      "name": "wallet_epoch_loss",
      "type": "u64"
     },
     {
      "name": "epoch_total_loss",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "docs": [
    "Phase 1e: a failure refund whose forfeit went into the pool without Rekt-Fest weight",
    "(`reason`: 1 = the launch's creator, 2 = the launch's deadline passed more than 7 days ago, 3 = R5PROG-3: all of the",
    "position's contribution came from buys in the last 24 h before the deadline)."
   ],
   "name": "RektLossSkipped",
   "type": {
    "fields": [
     {
      "name": "wallet",
      "type": "pubkey"
     },
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "forfeited",
      "type": "u64"
     },
     {
      "name": "reason",
      "type": "u8"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "RektPayoutClaimed",
   "type": {
    "fields": [
     {
      "name": "epoch",
      "type": "u64"
     },
     {
      "name": "wallet",
      "type": "pubkey"
     },
     {
      "name": "loss",
      "type": "u64"
     },
     {
      "name": "sol",
      "type": "u64"
     },
     {
      "name": "usdc",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "docs": [
    "Phase 1f: `amount` USDC moved from the Rekt-Fest pool's USDC ATA to the treasury's USDC account;",
    "`remaining_committed` is what stayed for snapshotted weeks."
   ],
   "name": "RektPoolUsdcSwept",
   "type": {
    "fields": [
     {
      "name": "authority",
      "type": "pubkey"
     },
     {
      "name": "treasury_usdc_ata",
      "type": "pubkey"
     },
     {
      "name": "amount",
      "type": "u64"
     },
     {
      "name": "remaining_committed",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "RewardPayoutAuthorized",
   "type": {
    "fields": [
     {
      "name": "signer",
      "type": "pubkey"
     },
     {
      "name": "asset",
      "type": {
       "defined": {
        "name": "ReferralRewardAsset"
       }
      }
     },
     {
      "name": "amount",
      "type": "u64"
     },
     {
      "name": "spent_in_window",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "RewardSignerUpdated",
   "type": {
    "fields": [
     {
      "name": "signer",
      "type": "pubkey"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "SayHiAccepted",
   "type": {
    "fields": [
     {
      "name": "session",
      "type": "pubkey"
     },
     {
      "name": "recipient",
      "type": "pubkey"
     },
     {
      "name": "recipient_amount",
      "type": "u64"
     },
     {
      "name": "platform_fee_burned",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "SayHiCancelled",
   "type": {
    "fields": [
     {
      "name": "session",
      "type": "pubkey"
     },
     {
      "name": "sender",
      "type": "pubkey"
     },
     {
      "name": "refund_amount",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "SayHiEnded",
   "type": {
    "fields": [
     {
      "name": "session",
      "type": "pubkey"
     },
     {
      "name": "actor",
      "type": "pubkey"
     },
     {
      "name": "ended_at",
      "type": "i64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "docs": [
    "Phase 5: the $SHIT fees of a settled Say Hi (accept 10% treasury + 5% burn; cancel / expiry 5% + 5%).",
    "`paid_out` = to the recipient (accept) or refunded to the sender (cancel / expiry)."
   ],
   "name": "SayHiFeesPaid",
   "type": {
    "fields": [
     {
      "name": "session",
      "type": "pubkey"
     },
     {
      "name": "kind",
      "type": "u8"
     },
     {
      "name": "treasury_amount",
      "type": "u64"
     },
     {
      "name": "burned_amount",
      "type": "u64"
     },
     {
      "name": "paid_out",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "SayHiOpened",
   "type": {
    "fields": [
     {
      "name": "session",
      "type": "pubkey"
     },
     {
      "name": "sender",
      "type": "pubkey"
     },
     {
      "name": "recipient",
      "type": "pubkey"
     },
     {
      "name": "offer_amount",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "SocialBurnSettled",
   "type": {
    "fields": [
     {
      "name": "action",
      "type": "pubkey"
     },
     {
      "name": "actor",
      "type": "pubkey"
     },
     {
      "name": "action_kind",
      "type": {
       "defined": {
        "name": "SocialActionKind"
       }
      }
     },
     {
      "name": "target_hash",
      "type": {
       "array": [
        "u8",
        32
       ]
      }
     },
     {
      "name": "amount",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "SocialDailyCapUpdated",
   "type": {
    "fields": [
     {
      "name": "cap",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "SocialRewardSettled",
   "type": {
    "fields": [
     {
      "name": "action",
      "type": "pubkey"
     },
     {
      "name": "claimant",
      "type": "pubkey"
     },
     {
      "name": "target_hash",
      "type": {
       "array": [
        "u8",
        32
       ]
      }
     },
     {
      "name": "amount",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "TierPricingUpdated",
   "type": {
    "fields": [
     {
      "name": "authority",
      "type": "pubkey"
     },
     {
      "name": "tier",
      "type": {
       "defined": {
        "name": "DomainTier"
       }
      }
     },
     {
      "name": "price_lamports",
      "type": "u64"
     },
     {
      "name": "price_usdc_raw",
      "type": "u64"
     },
     {
      "name": "welcome_airdrop_amount",
      "type": "u64"
     },
     {
      "name": "launch_rights_total",
      "type": "u8"
     },
     {
      "name": "creator_lock_seconds",
      "type": "i64"
     },
     {
      "name": "graduation_target_usdc",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "TreasuryUpdated",
   "type": {
    "fields": [
     {
      "name": "authority",
      "type": "pubkey"
     },
     {
      "name": "previous_treasury",
      "type": "pubkey"
     },
     {
      "name": "new_treasury",
      "type": "pubkey"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "UnmigratedRefundClaimed",
   "type": {
    "fields": [
     {
      "name": "launch_pool",
      "type": "pubkey"
     },
     {
      "name": "buyer",
      "type": "pubkey"
     },
     {
      "name": "receipt_units",
      "type": "u64"
     },
     {
      "name": "refund_amount",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "VestedReleased",
   "type": {
    "fields": [
     {
      "name": "lock",
      "type": "pubkey"
     },
     {
      "name": "beneficiary",
      "type": "pubkey"
     },
     {
      "name": "amount",
      "type": "u64"
     },
     {
      "name": "released_amount",
      "type": "u64"
     },
     {
      "name": "total_amount",
      "type": "u64"
     }
    ],
    "kind": "struct"
   }
  },
  {
   "name": "VestingLockCreated",
   "type": {
    "fields": [
     {
      "name": "lock",
      "type": "pubkey"
     },
     {
      "name": "beneficiary",
      "type": "pubkey"
     },
     {
      "name": "mint",
      "type": "pubkey"
     },
     {
      "name": "id",
      "type": "u64"
     },
     {
      "name": "depositor",
      "type": "pubkey"
     },
     {
      "name": "total_amount",
      "type": "u64"
     },
     {
      "name": "start_ts",
      "type": "i64"
     },
     {
      "name": "cliff_seconds",
      "type": "i64"
     },
     {
      "name": "duration_seconds",
      "type": "i64"
     }
    ],
    "kind": "struct"
   }
  }
 ],
 "events": [
  {
   "discriminator": [
    218,
    143,
    172,
    46,
    118,
    100,
    239,
    96
   ],
   "name": "AmmLiquidityHandedOff"
  },
  {
   "discriminator": [
    106,
    226,
    147,
    39,
    169,
    115,
    214,
    165
   ],
   "name": "BuybackConfigUpdated"
  },
  {
   "discriminator": [
    150,
    109,
    157,
    10,
    124,
    24,
    38,
    189
   ],
   "name": "BuybackExecuted"
  },
  {
   "discriminator": [
    103,
    62,
    95,
    188,
    37,
    148,
    211,
    250
   ],
   "name": "BuybackPoolUpdated"
  },
  {
   "discriminator": [
    82,
    115,
    146,
    125,
    33,
    106,
    111,
    83
   ],
   "name": "CleanLaunchRewardSettled"
  },
  {
   "discriminator": [
    102,
    158,
    134,
    48,
    205,
    243,
    237,
    193
   ],
   "name": "CleanLaunchRewardStarted"
  },
  {
   "discriminator": [
    33,
    61,
    173,
    224,
    50,
    22,
    185,
    166
   ],
   "name": "CleanRewardConfigSet"
  },
  {
   "discriminator": [
    125,
    29,
    33,
    186,
    153,
    16,
    155,
    229
   ],
   "name": "ConfigAuthorityProposed"
  },
  {
   "discriminator": [
    116,
    152,
    24,
    23,
    117,
    176,
    34,
    143
   ],
   "name": "ConfigAuthorityTransferred"
  },
  {
   "discriminator": [
    32,
    9,
    114,
    246,
    247,
    82,
    60,
    128
   ],
   "name": "ConfigMigratedV2"
  },
  {
   "discriminator": [
    172,
    80,
    28,
    214,
    17,
    201,
    31,
    167
   ],
   "name": "CopyLeaderRebatePaid"
  },
  {
   "discriminator": [
    10,
    221,
    238,
    12,
    249,
    147,
    202,
    193
   ],
   "name": "CopyTradeExecuted"
  },
  {
   "discriminator": [
    63,
    172,
    72,
    167,
    57,
    98,
    201,
    65
   ],
   "name": "CreatorAllocationClaimed"
  },
  {
   "discriminator": [
    49,
    100,
    215,
    13,
    123,
    173,
    186,
    50
   ],
   "name": "CreatorAllocationWithdrawn"
  },
  {
   "discriminator": [
    5,
    196,
    108,
    44,
    75,
    239,
    153,
    150
   ],
   "name": "CreatorFeeAccrued"
  },
  {
   "discriminator": [
    189,
    178,
    21,
    181,
    171,
    179,
    131,
    1
   ],
   "name": "CreatorFeesClaimed"
  },
  {
   "discriminator": [
    164,
    242,
    211,
    144,
    13,
    32,
    125,
    115
   ],
   "name": "DomainCancelled"
  },
  {
   "discriminator": [
    251,
    30,
    112,
    249,
    61,
    107,
    132,
    165
   ],
   "name": "DomainExpired"
  },
  {
   "discriminator": [
    73,
    189,
    46,
    70,
    93,
    237,
    245,
    1
   ],
   "name": "DomainGraceStarted"
  },
  {
   "discriminator": [
    209,
    168,
    143,
    6,
    181,
    9,
    49,
    185
   ],
   "name": "DomainGrantRevoked"
  },
  {
   "discriminator": [
    40,
    71,
    181,
    50,
    215,
    81,
    87,
    132
   ],
   "name": "DomainGranted"
  },
  {
   "discriminator": [
    43,
    40,
    239,
    174,
    124,
    142,
    254,
    160
   ],
   "name": "DomainListed"
  },
  {
   "discriminator": [
    91,
    236,
    6,
    123,
    72,
    112,
    81,
    157
   ],
   "name": "DomainListingCancelled"
  },
  {
   "discriminator": [
    216,
    240,
    198,
    106,
    7,
    146,
    78,
    17
   ],
   "name": "DomainListingPurchased"
  },
  {
   "discriminator": [
    31,
    35,
    107,
    52,
    206,
    169,
    88,
    40
   ],
   "name": "DomainOwnerSynced"
  },
  {
   "discriminator": [
    225,
    126,
    10,
    149,
    131,
    238,
    145,
    224
   ],
   "name": "DomainRegistered"
  },
  {
   "discriminator": [
    56,
    234,
    141,
    127,
    43,
    207,
    181,
    152
   ],
   "name": "DomainRenewed"
  },
  {
   "discriminator": [
    32,
    158,
    235,
    113,
    58,
    90,
    33,
    137
   ],
   "name": "DomainTransferred"
  },
  {
   "discriminator": [
    17,
    83,
    127,
    252,
    144,
    196,
    211,
    28
   ],
   "name": "FailureSettlementClaimed"
  },
  {
   "discriminator": [
    45,
    179,
    159,
    17,
    107,
    36,
    27,
    21
   ],
   "name": "GraduatedTokensClaimed"
  },
  {
   "discriminator": [
    142,
    47,
    127,
    248,
    64,
    28,
    35,
    253
   ],
   "name": "GraduationRewardSettled"
  },
  {
   "discriminator": [
    237,
    176,
    20,
    83,
    102,
    56,
    66,
    116
   ],
   "name": "LaunchFailed"
  },
  {
   "discriminator": [
    79,
    140,
    188,
    70,
    185,
    121,
    130,
    216
   ],
   "name": "LaunchGraduated"
  },
  {
   "discriminator": [
    135,
    27,
    61,
    35,
    85,
    170,
    159,
    33
   ],
   "name": "LaunchMigrated"
  },
  {
   "discriminator": [
    236,
    87,
    164,
    190,
    58,
    215,
    62,
    252
   ],
   "name": "LaunchPoolCreated"
  },
  {
   "discriminator": [
    62,
    88,
    169,
    126,
    25,
    172,
    245,
    137
   ],
   "name": "LaunchTokenMetadataSet"
  },
  {
   "discriminator": [
    244,
    219,
    115,
    91,
    20,
    209,
    47,
    209
   ],
   "name": "LimitOrderCancelled"
  },
  {
   "discriminator": [
    47,
    24,
    246,
    214,
    176,
    226,
    158,
    0
   ],
   "name": "LimitOrderFilled"
  },
  {
   "discriminator": [
    104,
    46,
    231,
    29,
    78,
    174,
    107,
    112
   ],
   "name": "LimitOrderPlaced"
  },
  {
   "discriminator": [
    5,
    43,
    96,
    131,
    217,
    73,
    111,
    128
   ],
   "name": "MarketplaceOfferAccepted"
  },
  {
   "discriminator": [
    97,
    17,
    156,
    29,
    132,
    219,
    8,
    39
   ],
   "name": "MarketplaceOfferCancelled"
  },
  {
   "discriminator": [
    247,
    199,
    248,
    247,
    170,
    249,
    2,
    246
   ],
   "name": "MarketplaceOfferCreated"
  },
  {
   "discriminator": [
    195,
    211,
    22,
    156,
    218,
    3,
    223,
    135
   ],
   "name": "PositionBought"
  },
  {
   "discriminator": [
    117,
    122,
    235,
    232,
    80,
    15,
    94,
    179
   ],
   "name": "PositionSold"
  },
  {
   "discriminator": [
    10,
    66,
    30,
    107,
    119,
    38,
    10,
    176
   ],
   "name": "PrimaryDomainSet"
  },
  {
   "discriminator": [
    64,
    214,
    203,
    192,
    159,
    236,
    104,
    211
   ],
   "name": "PriorityTicketClaimed"
  },
  {
   "discriminator": [
    120,
    195,
    237,
    197,
    210,
    172,
    184,
    195
   ],
   "name": "PriorityTicketClosed"
  },
  {
   "discriminator": [
    208,
    26,
    78,
    33,
    233,
    104,
    101,
    98
   ],
   "name": "PriorityWindowSet"
  },
  {
   "discriminator": [
    32,
    229,
    158,
    70,
    162,
    231,
    254,
    241
   ],
   "name": "PrivateTradeAccepted"
  },
  {
   "discriminator": [
    139,
    23,
    242,
    82,
    96,
    217,
    51,
    208
   ],
   "name": "PrivateTradeCancelled"
  },
  {
   "discriminator": [
    224,
    103,
    154,
    32,
    50,
    112,
    52,
    88
   ],
   "name": "PrivateTradeCreated"
  },
  {
   "discriminator": [
    45,
    67,
    33,
    32,
    244,
    188,
    92,
    208
   ],
   "name": "ProgramAccountClosed"
  },
  {
   "discriminator": [
    12,
    28,
    152,
    148,
    55,
    210,
    102,
    190
   ],
   "name": "ReferralBound"
  },
  {
   "discriminator": [
    202,
    116,
    225,
    250,
    115,
    147,
    10,
    18
   ],
   "name": "ReferralFeePaid"
  },
  {
   "discriminator": [
    45,
    83,
    127,
    232,
    98,
    172,
    82,
    87
   ],
   "name": "ReferralRewardReviewed"
  },
  {
   "discriminator": [
    41,
    71,
    21,
    122,
    215,
    225,
    126,
    171
   ],
   "name": "RektEpochSnapshotted"
  },
  {
   "discriminator": [
    132,
    107,
    105,
    7,
    42,
    85,
    162,
    20
   ],
   "name": "RektEpochSwept"
  },
  {
   "discriminator": [
    82,
    91,
    30,
    96,
    33,
    248,
    88,
    144
   ],
   "name": "RektLossRecorded"
  },
  {
   "discriminator": [
    195,
    162,
    57,
    94,
    82,
    175,
    204,
    191
   ],
   "name": "RektLossSkipped"
  },
  {
   "discriminator": [
    27,
    227,
    137,
    81,
    204,
    172,
    143,
    165
   ],
   "name": "RektPayoutClaimed"
  },
  {
   "discriminator": [
    226,
    138,
    136,
    240,
    225,
    241,
    5,
    168
   ],
   "name": "RektPoolUsdcSwept"
  },
  {
   "discriminator": [
    166,
    145,
    197,
    192,
    190,
    86,
    132,
    223
   ],
   "name": "RewardPayoutAuthorized"
  },
  {
   "discriminator": [
    4,
    12,
    80,
    176,
    14,
    63,
    174,
    200
   ],
   "name": "RewardSignerUpdated"
  },
  {
   "discriminator": [
    170,
    9,
    242,
    66,
    59,
    27,
    192,
    217
   ],
   "name": "SayHiAccepted"
  },
  {
   "discriminator": [
    200,
    156,
    157,
    6,
    48,
    96,
    73,
    82
   ],
   "name": "SayHiCancelled"
  },
  {
   "discriminator": [
    89,
    170,
    145,
    134,
    57,
    119,
    128,
    241
   ],
   "name": "SayHiEnded"
  },
  {
   "discriminator": [
    77,
    34,
    197,
    157,
    177,
    8,
    110,
    221
   ],
   "name": "SayHiFeesPaid"
  },
  {
   "discriminator": [
    122,
    207,
    111,
    231,
    21,
    10,
    83,
    84
   ],
   "name": "SayHiOpened"
  },
  {
   "discriminator": [
    227,
    138,
    138,
    115,
    200,
    172,
    169,
    18
   ],
   "name": "SocialBurnSettled"
  },
  {
   "discriminator": [
    179,
    187,
    44,
    69,
    207,
    69,
    131,
    172
   ],
   "name": "SocialDailyCapUpdated"
  },
  {
   "discriminator": [
    149,
    230,
    2,
    96,
    39,
    217,
    207,
    86
   ],
   "name": "SocialRewardSettled"
  },
  {
   "discriminator": [
    13,
    155,
    117,
    46,
    179,
    150,
    1,
    101
   ],
   "name": "TierPricingUpdated"
  },
  {
   "discriminator": [
    80,
    239,
    54,
    168,
    43,
    38,
    85,
    145
   ],
   "name": "TreasuryUpdated"
  },
  {
   "discriminator": [
    103,
    207,
    39,
    182,
    14,
    169,
    28,
    160
   ],
   "name": "UnmigratedRefundClaimed"
  },
  {
   "discriminator": [
    74,
    224,
    153,
    126,
    96,
    136,
    232,
    246
   ],
   "name": "VestedReleased"
  },
  {
   "discriminator": [
    47,
    153,
    80,
    6,
    5,
    191,
    94,
    230
   ],
   "name": "VestingLockCreated"
  }
 ],
 "errors": [
  {
   "code": 6000,
   "name": "UnauthorizedAdmin",
   "msg": "The executing wallet is not the configured admin."
  },
  {
   "code": 6001,
   "name": "ProgramPaused",
   "msg": "The ShitTag program is paused."
  },
  {
   "code": 6002,
   "name": "InvalidDomainLength",
   "msg": "Domain length must be between 3 and 32 characters."
  },
  {
   "code": 6003,
   "name": "InvalidDomainCharacters",
   "msg": "Domain may contain only lowercase a-z, numbers and hyphen."
  },
  {
   "code": 6004,
   "name": "InvalidTldLength",
   "msg": "TLD length is invalid."
  },
  {
   "code": 6005,
   "name": "InvalidTldFormat",
   "msg": "TLD must start with dot and contain lowercase letters or numbers."
  },
  {
   "code": 6006,
   "name": "TldDisabled",
   "msg": "TLD is disabled."
  },
  {
   "code": 6007,
   "name": "DisplayNameTooLong",
   "msg": "Display name is too long."
  },
  {
   "code": 6008,
   "name": "InvalidTreasury",
   "msg": "Invalid treasury account."
  },
  {
   "code": 6009,
   "name": "InvalidCommunityVault",
   "msg": "Invalid community vault account."
  },
  {
   "code": 6010,
   "name": "InvalidMint",
   "msg": "Invalid token mint."
  },
  {
   "code": 6011,
   "name": "InvalidTokenOwner",
   "msg": "Invalid token owner."
  },
  {
   "code": 6012,
   "name": "InvalidDomainNft",
   "msg": "Domain NFT mint or owner token account is invalid."
  },
  {
   "code": 6013,
   "name": "InvalidPaymentAmount",
   "msg": "Invalid payment amount."
  },
  {
   "code": 6014,
   "name": "InvalidPairAsset",
   "msg": "Launch pool pair asset does not match this instruction."
  },
  {
   "code": 6015,
   "name": "InvalidCreator",
   "msg": "Creator account does not match launch pool creator."
  },
  {
   "code": 6016,
   "name": "RefundTooHigh",
   "msg": "Requested refund exceeds position escrow balance."
  },
  {
   "code": 6017,
   "name": "InvalidCurveQuote",
   "msg": "Client curve quote does not match the canonical on-chain quote."
  },
  {
   "code": 6018,
   "name": "InsufficientEscrow",
   "msg": "Launch escrow has insufficient balance."
  },
  {
   "code": 6019,
   "name": "MathOverflow",
   "msg": "Math overflow."
  },
  {
   "code": 6020,
   "name": "UnauthorizedOwner",
   "msg": "The signer does not own this ShitTag domain or profile."
  },
  {
   "code": 6021,
   "name": "ActiveLaunchExists",
   "msg": "This domain already has an active launch pool."
  },
  {
   "code": 6022,
   "name": "NoLaunchRights",
   "msg": "This domain has no remaining launch rights."
  },
  {
   "code": 6023,
   "name": "LaunchNotForming",
   "msg": "Launch pool is not in forming status."
  },
  {
   "code": 6024,
   "name": "LaunchNotFailed",
   "msg": "Launch pool is not failed."
  },
  {
   "code": 6025,
   "name": "LaunchNotGraduated",
   "msg": "Launch pool is not graduated."
  },
  {
   "code": 6026,
   "name": "GraduationTargetNotMet",
   "msg": "Graduation target has not been met."
  },
  {
   "code": 6027,
   "name": "LaunchDeadlineNotReached",
   "msg": "Launch deadline has not been reached."
  },
  {
   "code": 6028,
   "name": "TokenAlreadyClaimed",
   "msg": "Graduated token claim was already completed."
  },
  {
   "code": 6029,
   "name": "InvalidTokenClaimAmount",
   "msg": "Graduated token claim must exactly match the buyer position receipt balance."
  },
  {
   "code": 6030,
   "name": "InvalidBuyerPosition",
   "msg": "Invalid buyer position."
  },
  {
   "code": 6031,
   "name": "InsufficientReceiptUnits",
   "msg": "Buyer position has insufficient receipt units."
  },
  {
   "code": 6032,
   "name": "RefundAlreadyClaimed",
   "msg": "Failure refund was already claimed."
  },
  {
   "code": 6033,
   "name": "CreatorAllocationLocked",
   "msg": "Creator allocation is still locked."
  },
  {
   "code": 6034,
   "name": "CreatorAllocationAlreadyClaimed",
   "msg": "Creator allocation was already claimed."
  },
  {
   "code": 6035,
   "name": "InvalidCreatorLock",
   "msg": "Creator lock duration is invalid."
  },
  {
   "code": 6036,
   "name": "InvalidSymbol",
   "msg": "Token symbol must be 1-16 uppercase letters or numbers."
  },
  {
   "code": 6037,
   "name": "UriTooLong",
   "msg": "URI is too long."
  },
  {
   "code": 6038,
   "name": "ReferralIdTooLong",
   "msg": "Referral id is too long."
  },
  {
   "code": 6039,
   "name": "SelfReferral",
   "msg": "Self-referral is not allowed."
  },
  {
   "code": 6040,
   "name": "ReferralFundingRequired",
   "msg": "Referral rewards must be funded before they can be claimed."
  },
  {
   "code": 6041,
   "name": "InvalidReferralAsset",
   "msg": "Referral reward asset does not match this instruction."
  },
  {
   "code": 6042,
   "name": "InvalidReferralStatus",
   "msg": "Referral reward status transition is invalid."
  },
  {
   "code": 6043,
   "name": "ReferralNotClaimable",
   "msg": "Referral reward is not claimable."
  },
  {
   "code": 6044,
   "name": "ReferralStillLocked",
   "msg": "Referral reward is still locked."
  },
  {
   "code": 6045,
   "name": "ReferralBelowMinimum",
   "msg": "Referral reward is below the minimum claim amount."
  },
  {
   "code": 6046,
   "name": "InvalidReferrer",
   "msg": "Referral reward referrer does not match the signer."
  },
  {
   "code": 6047,
   "name": "SniperCapExceeded",
   "msg": "Wallet exceeds the launch sniper protection cap."
  },
  {
   "code": 6048,
   "name": "InvalidRecipient",
   "msg": "Invalid recipient."
  },
  {
   "code": 6049,
   "name": "DomainTransferLocked",
   "msg": "Domain cannot be transferred while locked by active launch state."
  },
  {
   "code": 6050,
   "name": "InvalidProfile",
   "msg": "Invalid profile account."
  },
  {
   "code": 6051,
   "name": "DomainNotActive",
   "msg": "Domain is not active."
  },
  {
   "code": 6052,
   "name": "DomainNotRenewable",
   "msg": "Domain cannot be renewed in its current lifecycle state."
  },
  {
   "code": 6053,
   "name": "DomainNotExpired",
   "msg": "Domain has not reached an expiry transition."
  },
  {
   "code": 6054,
   "name": "InvalidRenewalDuration",
   "msg": "Invalid domain renewal duration."
  },
  {
   "code": 6055,
   "name": "RenewalPaymentRequired",
   "msg": "Domain renewal requires an explicit SOL or USDC payment instruction."
  },
  {
   "code": 6056,
   "name": "InvalidSeller",
   "msg": "Invalid marketplace seller."
  },
  {
   "code": 6057,
   "name": "ListingInactive",
   "msg": "Marketplace listing is not active."
  },
  {
   "code": 6058,
   "name": "ListingDomainMismatch",
   "msg": "Marketplace listing does not match the domain record."
  },
  {
   "code": 6059,
   "name": "ListingAlreadyActive",
   "msg": "Marketplace listing is already active."
  },
  {
   "code": 6060,
   "name": "MarketplaceOfferAlreadyActive",
   "msg": "Marketplace offer is already active for this buyer and domain."
  },
  {
   "code": 6061,
   "name": "MarketplaceOfferInactive",
   "msg": "Marketplace offer is not active."
  },
  {
   "code": 6062,
   "name": "PrivateTradeAlreadyActive",
   "msg": "Private trade is already active for this domain and wallet pair."
  },
  {
   "code": 6063,
   "name": "PrivateTradeInactive",
   "msg": "Private trade is not active."
  },
  {
   "code": 6064,
   "name": "PrivateTradeExpired",
   "msg": "Private trade has expired."
  },
  {
   "code": 6065,
   "name": "InvalidLaunchTokenSupply",
   "msg": "Launch token mint must have exactly 1B fixed supply, six decimals and revoked authorities."
  },
  {
   "code": 6066,
   "name": "LaunchReceiptSupplyExceeded",
   "msg": "Buyer receipts would exceed fixed supply after reserving creator allocation."
  },
  {
   "code": 6067,
   "name": "InvalidAmmHandoff",
   "msg": "AMM liquidity handoff does not match canonical launch accounting."
  },
  {
   "code": 6068,
   "name": "SayHiNotPending",
   "msg": "Say Hi session is not pending."
  },
  {
   "code": 6069,
   "name": "SayHiNotAccepted",
   "msg": "Say Hi session is not accepted."
  },
  {
   "code": 6070,
   "name": "SayHiParticipantRequired",
   "msg": "Only a Say Hi participant can end the session."
  },
  {
   "code": 6071,
   "name": "InvalidNftBalance",
   "msg": "Domain NFT account must hold exactly one NFT."
  },
  {
   "code": 6072,
   "name": "LegacyInstructionDisabled",
   "msg": "This legacy accounting-only instruction is disabled; use the paid settlement instruction."
  },
  {
   "code": 6073,
   "name": "NotAdminGrant",
   "msg": "Only admin-granted domains can be revoked through this instruction."
  },
  {
   "code": 6074,
   "name": "GrantAlreadyTransferred",
   "msg": "Admin grant has already been transferred away from the original recipient."
  },
  {
   "code": 6075,
   "name": "GrantAlreadyUsed",
   "msg": "Admin grant has already been used for launch rights or launch state."
  },
  {
   "code": 6076,
   "name": "GrantMarketplaceActivityExists",
   "msg": "Admin grant has marketplace activity and cannot be revoked."
  },
  {
   "code": 6077,
   "name": "SlippageExceeded",
   "msg": "Price moved beyond the caller's slippage limit."
  },
  {
   "code": 6078,
   "name": "MintAlreadyLaunched",
   "msg": "This token mint is already bound to a launch."
  },
  {
   "code": 6079,
   "name": "UnauthorizedInitializer",
   "msg": "Only the program upgrade authority can initialize the config."
  },
  {
   "code": 6080,
   "name": "InvalidVault",
   "msg": "Account is not the canonical program vault for this purpose."
  },
  {
   "code": 6081,
   "name": "OrderConditionNotMet",
   "msg": "Order condition is not met at the current curve price."
  },
  {
   "code": 6082,
   "name": "OrderNotOpen",
   "msg": "Order is not open."
  },
  {
   "code": 6083,
   "name": "CopySignalInvalid",
   "msg": "Copy-trade signal is stale, already copied, or invalid."
  },
  {
   "code": 6084,
   "name": "ClaimWindowOpen",
   "msg": "Claim window still open."
  },
  {
   "code": 6085,
   "name": "RewardCapExceeded",
   "msg": "Reward exceeds the delegated signer's per-claim or 24h cap."
  },
  {
   "code": 6086,
   "name": "LaunchNotMigrated",
   "msg": "Liquidity has not been migrated to the AMM yet."
  },
  {
   "code": 6087,
   "name": "MigrationAbandoned",
   "msg": "Unmigrated-launch refunds have started; this launch can no longer be migrated."
  },
  {
   "code": 6088,
   "name": "LaunchAlreadyMigrated",
   "msg": "Liquidity was already migrated to the AMM; claim tokens instead."
  },
  {
   "code": 6089,
   "name": "PriceChanged",
   "msg": "The on-chain price differs from the price the signer agreed to."
  },
  {
   "code": 6090,
   "name": "GraduationTargetTooLow",
   "msg": "Graduation target is below the minimum that can be migrated."
  },
  {
   "code": 6091,
   "name": "SniperCapTooHigh",
   "msg": "Sniper cap exceeds the allowed share of the graduation target."
  },
  {
   "code": 6092,
   "name": "KeeperFeeTooHigh",
   "msg": "Keeper fee exceeds the allowed share of the copied amount."
  },
  {
   "code": 6093,
   "name": "ReferralReviewNotAllowed",
   "msg": "The reward signer can only review referral rewards that are still pending."
  },
  {
   "code": 6094,
   "name": "ReferralReviewBatchInvalid",
   "msg": "Referral review batch is empty, too large or has a read-only reward."
  },
  {
   "code": 6095,
   "name": "PostRewardOnHold",
   "msg": "Social post rewards are on hold."
  },
  {
   "code": 6096,
   "name": "SocialPostMismatch",
   "msg": "Social post does not match this reward claim."
  },
  {
   "code": 6097,
   "name": "InvalidConfigAccount",
   "msg": "Config account is not a ShitTag config owned by this program."
  },
  {
   "code": 6098,
   "name": "NoPendingAuthority",
   "msg": "No config authority transfer is pending."
  },
  {
   "code": 6099,
   "name": "UnauthorizedPendingAuthority",
   "msg": "Only the proposed authority can accept the config authority."
  },
  {
   "code": 6100,
   "name": "InvalidNewTreasury",
   "msg": "The new treasury must be a non-default address."
  },
  {
   "code": 6101,
   "name": "RektEpochMismatch",
   "msg": "Rekt-Fest epoch does not match the current week or the recorded week."
  },
  {
   "code": 6102,
   "name": "RektEpochNotEnded",
   "msg": "This Rekt-Fest week has not ended yet."
  },
  {
   "code": 6103,
   "name": "RektEpochOutOfOrder",
   "msg": "An earlier Rekt-Fest week with losses must be snapshotted first."
  },
  {
   "code": 6104,
   "name": "RektEpochAlreadySnapshotted",
   "msg": "This Rekt-Fest week is already snapshotted."
  },
  {
   "code": 6105,
   "name": "RektEpochNotSnapshotted",
   "msg": "This Rekt-Fest week is not snapshotted yet."
  },
  {
   "code": 6106,
   "name": "RektClaimWindowClosed",
   "msg": "The claim window of this Rekt-Fest week is over."
  },
  {
   "code": 6107,
   "name": "RektClaimWindowOpen",
   "msg": "The claim window of this Rekt-Fest week is still open."
  },
  {
   "code": 6108,
   "name": "RektEpochAlreadySwept",
   "msg": "This Rekt-Fest week was already swept."
  },
  {
   "code": 6109,
   "name": "RektUsdcAccountRequired",
   "msg": "This Rekt-Fest payout includes USDC: pass the wallet's USDC ATA."
  },
  {
   "code": 6110,
   "name": "BuybackBpsTooHigh",
   "msg": "Buyback share exceeds the maximum (5000 bps)."
  },
  {
   "code": 6111,
   "name": "InvalidBuybackConfig",
   "msg": "Invalid buyback configuration."
  },
  {
   "code": 6112,
   "name": "BuybackPoolNotSet",
   "msg": "No buyback pool is configured."
  },
  {
   "code": 6113,
   "name": "InvalidBuybackPool",
   "msg": "Buyback pool or pool account does not match the configured SHIT/WSOL Raydium CPMM pool."
  },
  {
   "code": 6114,
   "name": "UnauthorizedBuybackExecutor",
   "msg": "Only the config authority or the buyback keeper can execute a buyback."
  },
  {
   "code": 6115,
   "name": "BuybackAmountExceedsMax",
   "msg": "Buyback amount exceeds the configured maximum per call."
  },
  {
   "code": 6116,
   "name": "BuybackTooSoon",
   "msg": "The minimum interval since the last buyback has not passed."
  },
  {
   "code": 6117,
   "name": "BuybackInsufficientFunds",
   "msg": "The buyback vault does not hold enough SOL."
  },
  {
   "code": 6118,
   "name": "InvalidVestingSchedule",
   "msg": "Invalid vesting schedule or amount."
  },
  {
   "code": 6119,
   "name": "VestingNothingReleasable",
   "msg": "Nothing is releasable from this vesting lock yet."
  },
  {
   "code": 6120,
   "name": "InvalidSniperTracker",
   "msg": "Sniper tracker account does not belong to this launch and wallet."
  },
  {
   "code": 6121,
   "name": "ReferrerNotDomainHolder",
   "msg": "The referrer must hold an active domain record and its NFT."
  },
  {
   "code": 6122,
   "name": "InvalidReferralBinding",
   "msg": "Referral accounts must be the actor's own referral binding, the domain record, the owner's NFT account and the payee."
  },
  {
   "code": 6123,
   "name": "ReferrerAccountMismatch",
   "msg": "Referral payee mismatch (unused since Phase 1d: a mismatched payee leaves the share with the treasury)."
  },
  {
   "code": 6124,
   "name": "SocialDayMismatch",
   "msg": "Social reward record is not the claimant's record for today."
  },
  {
   "code": 6125,
   "name": "SocialDailyCapExceeded",
   "msg": "Reward exceeds the claimant's daily social reward cap."
  },
  {
   "code": 6126,
   "name": "InvalidSocialDailyCap",
   "msg": "Invalid social daily cap."
  },
  {
   "code": 6127,
   "name": "SocialDayNotEnded",
   "msg": "This social reward day has not ended yet."
  },
  {
   "code": 6128,
   "name": "NonCanonicalCommunityUsdcAccount",
   "msg": "Community USDC account must be the canonical ATA of the Rekt-Fest pool."
  },
  {
   "code": 6129,
   "name": "TreasuryNotSystemAccount",
   "msg": "Treasury must be a funded, non-executable system-program account."
  },
  {
   "code": 6130,
   "name": "InvalidCreatorFeeVault",
   "msg": "Creator fee vault does not belong to this launch's creator."
  },
  {
   "code": 6131,
   "name": "NoCreatorFeesToClaim",
   "msg": "Nothing to claim: the creator fee vault holds only its rent."
  },
  {
   "code": 6132,
   "name": "SayHiExpired",
   "msg": "This Say Hi expired (7 days): it can no longer be accepted, only closed with a refund."
  },
  {
   "code": 6133,
   "name": "SayHiNotExpired",
   "msg": "This Say Hi has not expired yet."
  },
  {
   "code": 6134,
   "name": "NothingToSweep",
   "msg": "Nothing to sweep: the failed launch pool holds only its rent."
  },
  {
   "code": 6135,
   "name": "InvalidPriorityWindow",
   "msg": "Priority window: zero root needs zero times; otherwise start < end, end in the future, at most 30 days long and starting within 30 days."
  },
  {
   "code": 6136,
   "name": "PriorityWindowNotStarted",
   "msg": "The launch has not opened yet: the priority window starts later."
  },
  {
   "code": 6137,
   "name": "PriorityProofTooLong",
   "msg": "Priority window: the proof is too long."
  },
  {
   "code": 6138,
   "name": "NameReservedForPriorityHolder",
   "msg": "During the priority window this name can only be minted by the early participant it is reserved for."
  },
  {
   "code": 6139,
   "name": "PriorityWindowNotOpen",
   "msg": "There is no open priority window."
  },
  {
   "code": 6140,
   "name": "PriorityTicketInUse",
   "msg": "Only the holder can close a priority ticket that is still valid."
  },
  {
   "code": 6141,
   "name": "InvalidTokenMetadata",
   "msg": "Invalid launch token metadata (name 1-32 bytes, symbol up to 10, https URI up to 200)."
  },
  {
   "code": 6142,
   "name": "InvalidCleanRewardParams",
   "msg": "Invalid clean-launch reward parameters."
  },
  {
   "code": 6143,
   "name": "CleanRewardMissing",
   "msg": "This launch has no clean-launch reward record."
  },
  {
   "code": 6144,
   "name": "CleanRewardNotStarted",
   "msg": "The clean-launch reward has not been started yet (start_clean_launch_reward is permissionless)."
  },
  {
   "code": 6145,
   "name": "CleanRewardAlreadyStarted",
   "msg": "The clean-launch reward was already started."
  },
  {
   "code": 6146,
   "name": "CleanRewardNotDue",
   "msg": "No clean-launch reward tranche is due yet."
  },
  {
   "code": 6147,
   "name": "CleanRewardTransactionNotAllowed",
   "msg": "The settle transaction may only contain compute-budget, ATA-creation and clean-reward instructions."
  },
  {
   "code": 6148,
   "name": "CreatorShitAtaMissing",
   "msg": "The creator's $SHIT token account must exist to receive the clean-launch reward."
  },
  {
   "code": 6149,
   "name": "AccountStillInUse",
   "msg": "This account still holds value or is still read by a later instruction; it cannot be closed yet."
  },
  {
   "code": 6150,
   "name": "ReferralReceiptCloseTooEarly",
   "msg": "A finished referral receipt can be closed only 30 days after it was created (until then it guards its claim)."
  },
  {
   "code": 6151,
   "name": "DomainPriceChanged",
   "msg": "The SOL domain price changed after it was quoted; review the new price and sign again."
  }
 ]
}
