Developer docs

Rooms developer integration guide

View IDL
Program ID
CyenP3qnD453Lr6YD7aWzWajM1ytcYdjPmHpHgMrooms

Setup

npm install @coral-xyz/anchor @solana/web3.js
import * as anchor from "@coral-xyz/anchor";
import { Program } from "@coral-xyz/anchor";
import { PublicKey, Keypair, LAMPORTS_PER_SOL } from "@solana/web3.js";
import { BN } from "@coral-xyz/anchor";
import idl from "./target/idl/rooms.json";
import type { Rooms } from "./target/types/rooms";

const PROGRAM_ID = new PublicKey("CyenP3qnD453Lr6YD7aWzWajM1ytcYdjPmHpHgMrooms");

const provider = anchor.AnchorProvider.env();
anchor.setProvider(provider);
const program = new anchor.Program<Rooms>(idl as any, provider);

PDA Derivation

All PDAs are derived from the program ID.

// GlobalConfig (singleton)
const [globalConfigPda] = PublicKey.findProgramAddressSync(
  [Buffer.from("global_config")],
  PROGRAM_ID
);

// Room (derived from token mint)
const [roomPda] = PublicKey.findProgramAddressSync(
  [Buffer.from("rooms"), tokenMint.toBuffer()],
  PROGRAM_ID
);

// Room vault (SOL escrow for a room)
const [roomVaultPda] = PublicKey.findProgramAddressSync(
  [Buffer.from("room_vault"), roomPda.toBuffer()],
  PROGRAM_ID
);

// RoomUser (per-user state for a room)
const [roomUserPda] = PublicKey.findProgramAddressSync(
  [Buffer.from("room_user"), roomPda.toBuffer(), userPublicKey.toBuffer()],
  PROGRAM_ID
);

// RoomAccess (for gated rooms — Open rooms still require this account to exist)
const [roomAccessPda] = PublicKey.findProgramAddressSync(
  [Buffer.from("room_access"), roomPda.toBuffer(), userPublicKey.toBuffer()],
  PROGRAM_ID
);

What You Can Do (Public Instructions)

1. Create a Room

Anyone can create a room. You supply a fresh token_mint keypair — it becomes the unique identifier for that room.

PumpFun room (fixed raise target ~86.368 SOL, max 1 SOL per user):

const mintKP = Keypair.generate();

const [roomPda] = PublicKey.findProgramAddressSync(
  [Buffer.from("rooms"), mintKP.publicKey.toBuffer()],
  PROGRAM_ID
);
const [globalConfigPda] = PublicKey.findProgramAddressSync(
  [Buffer.from("global_config")],
  PROGRAM_ID
);
const [rewardWalletRoomUserPda] = PublicKey.findProgramAddressSync(
  [Buffer.from("room_user"), roomPda.toBuffer(), creator.publicKey.toBuffer()],
  PROGRAM_ID
);

await program.methods
  .createRoom(
    { pumpFun: {} },          // RoomPlatform
    { open: {} },             // RoomType
    { equal: {} },            // RewardStructure
    "https://your-metadata.json",
    null,                     // reward_wallet (null = creator)
    null                      // raise_lamports (null = use PumpFun defaults)
  )
  .accountsPartial({
    globalConfig: globalConfigPda,
    tokenMint: mintKP.publicKey,
    creator: creator.publicKey,
    rewardWallet: creator.publicKey,
    rewardWalletRoomUser: rewardWalletRoomUserPda,
  })
  .signers([creator, mintKP])
  .rpc();

Meteora (Rooms platform) room — requires raise_lamports between 30–300 SOL:

const raiseLamports = new BN(50 * LAMPORTS_PER_SOL); // 50 SOL

await program.methods
  .createRoom(
    { rooms: {} },            // RoomPlatform (Meteora)
    { open: {} },
    { equal: {} },
    "https://your-metadata.json",
    null,
    raiseLamports
  )
  .accountsPartial({ /* same structure */ })
  .signers([creator, mintKP])
  .rpc();

RoomType options: { open: {} } | { accessCode: {} } | { riddle: {} } | { approval: {} }
RewardStructure options: { equal: {} } | { creator: {} } | { custom: {} }

2. Contribute SOL

Sends SOL to the room vault. A 1% fee is taken and sent to admin_vault. Your contribution is capped at room.maxContribution; if you send more, only up to the cap is accepted.

For gated rooms (AccessCode, Riddle, Approval) you must call verify_access first. For Open rooms you still pass the roomAccess PDA — it will be created if it doesn't exist.

const [roomAccessPda] = PublicKey.findProgramAddressSync(
  [Buffer.from("room_access"), roomPda.toBuffer(), user.publicKey.toBuffer()],
  PROGRAM_ID
);

// Fetch admin vault from GlobalConfig
const globalConfig = await program.account.globalConfig.fetch(globalConfigPda);

await program.methods
  .increaseContribution(new BN(0.5 * LAMPORTS_PER_SOL))
  .accountsPartial({
    room: roomPda,
    adminVault: globalConfig.adminVault,
    user: user.publicKey,
    roomAccess: roomAccessPda,
  })
  .signers([user])
  .rpc();

3. Withdraw Contribution

Pull back SOL before finalization. Passing more than your balance withdraws everything you have.

await program.methods
  .withdrawContribution(new BN(0.5 * LAMPORTS_PER_SOL))
  .accountsPartial({
    room: roomPda,
    adminVault: globalConfig.adminVault,
    user: user.publicKey,
    roomAccess: roomAccessPda,
  })
  .signers([user])
  .rpc();

4. Claim Trading Fee Rewards

After finalization, contributors earn a share of trading fees proportional to their contribution. You must hold ≥ 50% of your allocated tokens at claim time, or your rewards are forfeited to admin_vault.

const roomAccount = await program.account.room.fetch(roomPda);

// Derive user's token account for the room's mint
const userTokenAccount = await getAssociatedTokenAddress(
  roomAccount.tokenMint,
  user.publicKey
);

await program.methods
  .claimRewards()
  .accountsPartial({
    room: roomPda,
    adminVault: globalConfig.adminVault,
    userTokenAccount,
    user: user.publicKey,
  })
  .signers([user])
  .rpc();

5. Swap (PumpFun rooms)

After finalization, swap tokens through PumpSwap. This is a pass-through that wraps the PumpSwap AMM.

await program.methods
  .swapPump(
    new BN(0.1 * LAMPORTS_PER_SOL), // amount (lamports for buy, tokens for sell)
    new BN(0),                       // min_out (slippage protection)
    true                             // is_buy
  )
  .accountsPartial({ /* pool, token accounts, etc. */ })
  .signers([user])
  .rpc();

6. Swap (Meteora rooms)

await program.methods
  .swapMeteora(
    new BN(0.1 * LAMPORTS_PER_SOL), // amount_in
    50,                              // slippage_bps (0.5%)
    true                             // is_buy
  )
  .accountsPartial({ /* meteora pool accounts */ })
  .signers([payer])
  .rpc();

7. Verify Access (Gated Rooms)

For AccessCode, Riddle, or Approval rooms a user must be verified by the rooms_authority before contributing. The flow is:

  1. Your backend (holding rooms_authority) signs a payload off-chain.
  2. The user submits a transaction with two instructions: an Ed25519 verification instruction followed by verify_access.

Payload format: keccak256(room_pubkey || user_pubkey || timestamp_i64_le)

import { Ed25519Program, SYSVAR_INSTRUCTIONS_PUBKEY } from "@solana/web3.js";
import { keccak_256 } from "@noble/hashes/sha3";
import * as nacl from "tweetnacl";

// --- Backend: generate signed payload ---
function signAccessPayload(
  roomPubkey: PublicKey,
  userPubkey: PublicKey,
  timestamp: number,
  roomsAuthoritySecret: Uint8Array
): { signature: Uint8Array; messageHash: Uint8Array } {
  const tsBuffer = Buffer.alloc(8);
  tsBuffer.writeBigInt64LE(BigInt(timestamp));

  const message = Buffer.concat([
    roomPubkey.toBuffer(),
    userPubkey.toBuffer(),
    tsBuffer,
  ]);
  const messageHash = keccak_256(message);
  const signature = nacl.sign.detached(messageHash, roomsAuthoritySecret);
  return { signature, messageHash };
}

// --- Client: submit verification ---
const timestamp = Math.floor(Date.now() / 1000);
const { signature, messageHash } = signAccessPayload(
  roomPda, user.publicKey, timestamp, roomsAuthority.secretKey
);

const [roomAccessPda] = PublicKey.findProgramAddressSync(
  [Buffer.from("room_access"), roomPda.toBuffer(), user.publicKey.toBuffer()],
  PROGRAM_ID
);

const ed25519Ix = Ed25519Program.createInstructionWithPublicKey({
  publicKey: roomsAuthority.publicKey.toBytes(),
  message: messageHash,
  signature,
});

const verifyIx = await program.methods
  .verifyAccess(new BN(timestamp))
  .accountsPartial({
    room: roomPda,
    roomAccess: roomAccessPda,
    instructionSysvar: SYSVAR_INSTRUCTIONS_PUBKEY,
    user: user.publicKey,
  })
  .signers([user])
  .instruction();

// Both instructions MUST be in the same transaction, Ed25519 ix first
const { blockhash, lastValidBlockHeight } =
  await provider.connection.getLatestBlockhash();
const message = new TransactionMessage({
  payerKey: user.publicKey,
  recentBlockhash: blockhash,
  instructions: [ed25519Ix, verifyIx],
}).compileToV0Message();

const tx = new VersionedTransaction(message);
tx.sign([user]);
await provider.connection.sendTransaction(tx);

Verification is permanent — a user only needs to call verify_access once per room.

Reading Account State

// Room state
const room = await program.account.room.fetch(roomPda);
console.log({
  creator: room.creator.toBase58(),
  finalized: room.finalized,
  raisedLamports: room.raisedLamports.toString(),
  targetLamports: room.targetLamports.toString(),
  maxContribution: room.maxContribution.toString(),
  minContribution: room.minContribution.toString(),
  platform: room.platform,       // { pumpFun: {} } or { rooms: {} }
  roomType: room.roomType,       // { open: {} }, { accessCode: {} }, etc.
  users: room.users,
});

// User's contribution state
const roomUser = await program.account.roomUser.fetch(roomUserPda);
console.log({
  lamportsContributed: roomUser.lamportsContributed.toString(),
  claimedAllocationAmount: roomUser.claimedAllocationAmount.toString(),
  treasuryFeeClaimed: roomUser.treasuryFeeClaimed.toString(),
});

// Check if a user is access-verified
const roomAccess = await program.account.roomAccess.fetch(roomAccessPda);
console.log({ verified: roomAccess.verified });

Listening to Events

program.addEventListener("roomCreated", (event) => {
  console.log("Room created:", {
    room: event.room.toBase58(),
    tokenMint: event.tokenMint.toBase58(),
    targetLamports: event.targetLamports.toString(),
    platform: event.platform,
  });
});

program.addEventListener("contributionIncreased", (event) => {
  console.log("Contribution:", {
    user: event.user.toBase58(),
    added: event.lamportsAdded.toString(),
    total: event.currentContribution.toString(),
  });
});

program.addEventListener("launchFinalized", (event) => {
  console.log("Launch finalized:", {
    room: event.room.toBase58(),
    tokenMint: event.tokenMint.toBase58(),
    totalRaised: event.totalRaised.toString(),
  });
});

program.addEventListener("rewardsClaimed", (event) => {
  console.log("Rewards claimed:", {
    user: event.user.toBase58(),
    lamports: event.lamportsClaimed.toString(),
  });
});

// Full event list:
// roomCreated | contributionIncreased | contributionWithdrawn |
// launchFinalized | poolMigrated | airdrop |
// rewardsClaimed | rewardsForfeited | feesCollected | swapExecuted

Error Reference

CodeNameMeaning
6000Unauthorizedrooms_authority must sign
6001UnauthorizedAdminCaller is not the admin
6004MinimumContributionAmount below room.minContribution
6005ExceedsMaxContributionUser is already at room.maxContribution
6007MinimumWithdrawNot enough balance to withdraw
6008AlreadyFinalizedRoom has already launched
6009TargetNotReachedFinalization called before target hit
6011InsufficientFundsNot enough SOL in wallet
6013RoomNotFinalizedInstruction requires finalization first
6015AlreadyClaimedAllocationToken allocation already claimed
6017NoRewardsToClaimNo unclaimed trading fees available
6020AccessSignatureRequiredGated room requires verify_access first
6021InvalidAccessSignatureEd25519 signature does not match rooms_authority
6022AccessSignatureExpiredSignature timestamp is more than ~5 minutes old
6023NotFinalizedRoom must be finalized for this instruction
6026InvalidRoomPlatformWrong platform instruction for this room
6028RoomFullRoom has reached its contributor limit
6029InvalidRaiseAmountMeteora raise must be 30–300 SOL

Program Addresses (Mainnet)

ProgramAddress
RoomsCyenP3qnD453Lr6YD7aWzWajM1ytcYdjPmHpHgMrooms
PumpFun6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
PumpSwappAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA
Meteora DAMM v2cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG
Meteora DFSdfsdo2UqvwfN8DuUVrMRNfQe11VaiNoKcMqLHVvDPzh

IDL

{
  "address": "CyenP3qnD453Lr6YD7aWzWajM1ytcYdjPmHpHgMrooms",
  "metadata": {
    "name": "rooms",
    "version": "1.0.0",
    "spec": "0.1.0",
    "description": "Pre-sale token launch platform — rooms.run"
  },
  "instructions": [
    {
      "name": "airdrop_tokens",
      "discriminator": [242, 252, 19, 227, 43, 233, 89, 122],
      "accounts": [
        {
          "name": "global_config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108, 95, 99, 111, 110, 102, 105, 103]
              }
            ]
          }
        },
        {
          "name": "room",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 115]
              },
              {
                "kind": "account",
                "path": "room.token_mint",
                "account": "Room"
              }
            ]
          }
        },
        {
          "name": "token_mint",
          "writable": true
        },
        {
          "name": "room_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 118, 97, 117, 108, 116]
              },
              {
                "kind": "account",
                "path": "room"
              }
            ]
          }
        },
        {
          "name": "room_vault_ata",
          "writable": true
        },
        {
          "name": "rooms_authority",
          "writable": true,
          "signer": true
        },
        {
          "name": "token_program"
        },
        {
          "name": "associated_token_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "allocation_basis_points",
          "type": "u16"
        }
      ]
    },
    {
      "name": "claim_rewards",
      "discriminator": [4, 144, 132, 71, 116, 23, 151, 80],
      "accounts": [
        {
          "name": "global_config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108, 95, 99, 111, 110, 102, 105, 103]
              }
            ]
          }
        },
        {
          "name": "room",
          "writable": true
        },
        {
          "name": "room_user",
          "docs": ["The RoomUser PDA for the signing user."],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 117, 115, 101, 114]
              },
              {
                "kind": "account",
                "path": "room"
              },
              {
                "kind": "account",
                "path": "user"
              }
            ]
          }
        },
        {
          "name": "room_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 118, 97, 117, 108, 116]
              },
              {
                "kind": "account",
                "path": "room"
              }
            ]
          }
        },
        {
          "name": "user_token_account",
          "docs": ["The user's token account for the room's token mint."]
        },
        {
          "name": "admin_vault",
          "writable": true
        },
        {
          "name": "user",
          "writable": true,
          "signer": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "collect_meteora_fees",
      "discriminator": [18, 65, 200, 231, 64, 14, 5, 135],
      "accounts": [
        {
          "name": "global_config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108, 95, 99, 111, 110, 102, 105, 103]
              }
            ]
          }
        },
        {
          "name": "admin_vault",
          "writable": true
        },
        {
          "name": "admin_wsol_vault",
          "writable": true
        },
        {
          "name": "room",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 115]
              },
              {
                "kind": "account",
                "path": "room.token_mint",
                "account": "Room"
              }
            ]
          }
        },
        {
          "name": "token_mint",
          "writable": true
        },
        {
          "name": "room_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 118, 97, 117, 108, 116]
              },
              {
                "kind": "account",
                "path": "room"
              }
            ]
          }
        },
        {
          "name": "room_vault_ata",
          "writable": true
        },
        {
          "name": "wsol_mint",
          "address": "So11111111111111111111111111111111111111112"
        },
        {
          "name": "meteora_fee_vault",
          "writable": true
        },
        {
          "name": "meteora_fee_vault_authority"
        },
        {
          "name": "meteora_token_vault",
          "writable": true
        },
        {
          "name": "rooms_fee_claim_admin",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [102, 101, 101, 95, 99, 108, 97, 105, 109]
              },
              {
                "kind": "account",
                "path": "room"
              }
            ]
          }
        },
        {
          "name": "dynamic_fee_sharing_event_authority"
        },
        {
          "name": "dynamic_fee_sharing_program"
        },
        {
          "name": "meteora_source_program"
        },
        {
          "name": "meteora_pool_authority"
        },
        {
          "name": "meteora_pool",
          "writable": true
        },
        {
          "name": "meteora_position",
          "writable": true
        },
        {
          "name": "meteora_token_a_account",
          "writable": true
        },
        {
          "name": "meteora_token_b_account",
          "writable": true
        },
        {
          "name": "meteora_token_a_vault",
          "writable": true
        },
        {
          "name": "meteora_token_b_vault",
          "writable": true
        },
        {
          "name": "meteora_token_a_mint"
        },
        {
          "name": "meteora_token_b_mint"
        },
        {
          "name": "meteora_position_nft_account"
        },
        {
          "name": "meteora_owner"
        },
        {
          "name": "meteora_token_a_program"
        },
        {
          "name": "meteora_token_b_program"
        },
        {
          "name": "meteora_event_authority"
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "collect_pump_fees",
      "discriminator": [117, 129, 9, 79, 108, 55, 145, 38],
      "accounts": [
        {
          "name": "room",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 115]
              },
              {
                "kind": "account",
                "path": "room.token_mint",
                "account": "Room"
              }
            ]
          }
        },
        {
          "name": "token_mint",
          "writable": true
        },
        {
          "name": "room_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 118, 97, 117, 108, 116]
              },
              {
                "kind": "account",
                "path": "room"
              }
            ]
          }
        },
        {
          "name": "wsol_mint",
          "address": "So11111111111111111111111111111111111111112"
        },
        {
          "name": "pumpfun_creator_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [99, 114, 101, 97, 116, 111, 114, 45, 118, 97, 117, 108, 116]
              },
              {
                "kind": "account",
                "path": "room_vault"
              }
            ],
            "program": {
              "kind": "account",
              "path": "pumpfun_program"
            }
          }
        },
        {
          "name": "pumpfun_event_authority",
          "address": "Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"
        },
        {
          "name": "pumpswap_creator_vault_authority",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [99, 114, 101, 97, 116, 111, 114, 95, 118, 97, 117, 108, 116]
              },
              {
                "kind": "account",
                "path": "room_vault"
              }
            ],
            "program": {
              "kind": "account",
              "path": "pumpswap_program"
            }
          }
        },
        {
          "name": "pumpswap_creator_vault_ata",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "pumpswap_creator_vault_authority"
              },
              {
                "kind": "account",
                "path": "token_program"
              },
              {
                "kind": "account",
                "path": "wsol_mint"
              }
            ],
            "program": {
              "kind": "const",
              "value": [140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89]
            }
          }
        },
        {
          "name": "pumpswap_creator_token_account",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "room_vault"
              },
              {
                "kind": "account",
                "path": "token_program"
              },
              {
                "kind": "account",
                "path": "wsol_mint"
              }
            ],
            "program": {
              "kind": "const",
              "value": [140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89]
            }
          }
        },
        {
          "name": "pumpswap_event_authority",
          "address": "GS4CU59F31iL7aR2Q8zVS8DRrcRnXX1yjQ66TqNVQnaR"
        },
        {
          "name": "pumpfun_program",
          "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"
        },
        {
          "name": "pumpswap_program",
          "address": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA"
        },
        {
          "name": "claimer",
          "writable": true,
          "signer": true
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "associated_token_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "rent",
          "address": "SysvarRent111111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "create_room",
      "discriminator": [130, 166, 32, 2, 247, 120, 178, 53],
      "accounts": [
        {
          "name": "global_config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108, 95, 99, 111, 110, 102, 105, 103]
              }
            ]
          }
        },
        {
          "name": "token_mint",
          "signer": true
        },
        {
          "name": "room",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 115]
              },
              {
                "kind": "account",
                "path": "token_mint"
              }
            ]
          }
        },
        {
          "name": "creator",
          "writable": true,
          "signer": true
        },
        {
          "name": "reward_wallet"
        },
        {
          "name": "reward_wallet_room_user",
          "docs": ["RoomUser PDA for the reward wallet, created at room creation time."],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 117, 115, 101, 114]
              },
              {
                "kind": "account",
                "path": "room"
              },
              {
                "kind": "account",
                "path": "reward_wallet"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "room_platform",
          "type": {
            "defined": {
              "name": "RoomPlatform"
            }
          }
        },
        {
          "name": "room_type",
          "type": {
            "defined": {
              "name": "RoomType"
            }
          }
        },
        {
          "name": "reward_structure",
          "type": {
            "defined": {
              "name": "RewardStructure"
            }
          }
        },
        {
          "name": "metadata_uri",
          "type": "string"
        },
        {
          "name": "reward_wallet",
          "type": {
            "option": "pubkey"
          }
        },
        {
          "name": "raise_lamports",
          "type": {
            "option": "u64"
          }
        }
      ]
    },
    {
      "name": "finalize_meteora",
      "discriminator": [60, 135, 220, 179, 252, 25, 239, 24],
      "accounts": [
        {
          "name": "room",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 115]
              },
              {
                "kind": "account",
                "path": "room.token_mint",
                "account": "Room"
              }
            ]
          }
        },
        {
          "name": "room_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 118, 97, 117, 108, 116]
              },
              {
                "kind": "account",
                "path": "room"
              }
            ]
          }
        },
        {
          "name": "room_vault_ata",
          "writable": true
        },
        {
          "name": "token_mint",
          "writable": true,
          "signer": true
        },
        {
          "name": "meteora_program"
        },
        {
          "name": "meteora_pool_authority",
          "address": "HLnpSz9h2S4hiLQ43rnSD9XkcUThA7B8hQMKmDaiTLcC"
        },
        {
          "name": "meteora_position_nft_mint",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [112, 111, 115, 105, 116, 105, 111, 110, 95, 110, 102, 116, 95, 109, 105, 110, 116]
              },
              {
                "kind": "account",
                "path": "room"
              }
            ]
          }
        },
        {
          "name": "meteora_position_nft_account",
          "writable": true
        },
        {
          "name": "meteora_position",
          "writable": true
        },
        {
          "name": "meteora_pool",
          "writable": true
        },
        {
          "name": "meteora_token_a_vault",
          "writable": true
        },
        {
          "name": "meteora_token_b_vault",
          "writable": true
        },
        {
          "name": "token_a_mint"
        },
        {
          "name": "token_b_mint"
        },
        {
          "name": "payer_token_a",
          "writable": true
        },
        {
          "name": "payer_token_b",
          "writable": true
        },
        {
          "name": "meteora_event_authority"
        },
        {
          "name": "payer",
          "writable": true,
          "signer": true
        },
        {
          "name": "token_metadata_program",
          "address": "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"
        },
        {
          "name": "token_metadata",
          "writable": true
        },
        {
          "name": "sysvar_instructions",
          "address": "Sysvar1nstructions1111111111111111111111111"
        },
        {
          "name": "token_a_program"
        },
        {
          "name": "token_b_program"
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "token_2022_program",
          "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
        },
        {
          "name": "associated_token_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "symbol",
          "type": "string"
        },
        {
          "name": "uri",
          "type": "string"
        }
      ]
    },
    {
      "name": "finalize_pump",
      "discriminator": [127, 189, 77, 124, 52, 157, 18, 129],
      "accounts": [
        {
          "name": "room",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 115]
              },
              {
                "kind": "account",
                "path": "room.token_mint",
                "account": "Room"
              }
            ]
          }
        },
        {
          "name": "room_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 118, 97, 117, 108, 116]
              },
              {
                "kind": "account",
                "path": "room"
              }
            ]
          }
        },
        {
          "name": "room_vault_ata",
          "writable": true
        },
        {
          "name": "token_mint",
          "writable": true,
          "signer": true
        },
        {
          "name": "pumpfun_mint_authority",
          "address": "TSLvdd1pWpHVjahSpsvCXUbgwsL3JAcvokwaKt1eokM"
        },
        {
          "name": "pumpfun_bonding_curve",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [98, 111, 110, 100, 105, 110, 103, 45, 99, 117, 114, 118, 101]
              },
              {
                "kind": "account",
                "path": "room.token_mint",
                "account": "Room"
              }
            ],
            "program": {
              "kind": "account",
              "path": "pumpfun_program"
            }
          }
        },
        {
          "name": "pumpfun_associated_bonding_curve",
          "writable": true
        },
        {
          "name": "pumpfun_global",
          "address": "4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf"
        },
        {
          "name": "pumpfun_global_params",
          "address": "13ec7XdrjF3h3YcqBTFDSReRcUFwbCnJaAQspM4j6DDJ"
        },
        {
          "name": "pumpfun_sol_vault",
          "writable": true,
          "address": "BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s"
        },
        {
          "name": "pumpfun_creator_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [99, 114, 101, 97, 116, 111, 114, 45, 118, 97, 117, 108, 116]
              },
              {
                "kind": "account",
                "path": "room_vault"
              }
            ],
            "program": {
              "kind": "account",
              "path": "pumpfun_program"
            }
          }
        },
        {
          "name": "pumpfun_program",
          "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"
        },
        {
          "name": "pumpfun_event_authority",
          "address": "Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"
        },
        {
          "name": "pumpfun_fee_recipient",
          "writable": true,
          "address": "CebN5WGQ4jvEPvsVU4EoHEpgzq1VV7AbicfhtW4xC9iM"
        },
        {
          "name": "pumpfun_global_volume_accumulator",
          "address": "Hq2wp8uJ9jCPsYgNHex8RtqdvMPfVGoYwjvF1ATiwn2Y"
        },
        {
          "name": "pumpfun_user_volume_accumulator",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [117, 115, 101, 114, 95, 118, 111, 108, 117, 109, 101, 95, 97, 99, 99, 117, 109, 117, 108, 97, 116, 111, 114]
              },
              {
                "kind": "account",
                "path": "room_vault"
              }
            ],
            "program": {
              "kind": "account",
              "path": "pumpfun_program"
            }
          }
        },
        {
          "name": "pumpfun_fee_config"
        },
        {
          "name": "pumpfun_fee_program",
          "address": "pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ"
        },
        {
          "name": "pumpfun_bonding_curve_v2",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [98, 111, 110, 100, 105, 110, 103, 45, 99, 117, 114, 118, 101, 45, 118, 50]
              },
              {
                "kind": "account",
                "path": "token_mint"
              }
            ],
            "program": {
              "kind": "account",
              "path": "pumpfun_program"
            }
          }
        },
        {
          "name": "pumpfun_mayhem_program",
          "writable": true,
          "address": "MAyhSmzXzV1pTf7LsNkrNwkWKTo4ougAJ1PPg47MD4e"
        },
        {
          "name": "pumpfun_mayhem_state",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [109, 97, 121, 104, 101, 109, 45, 115, 116, 97, 116, 101]
              },
              {
                "kind": "account",
                "path": "token_mint"
              }
            ],
            "program": {
              "kind": "account",
              "path": "pumpfun_mayhem_program"
            }
          }
        },
        {
          "name": "pumpfun_mayhem_vault",
          "writable": true
        },
        {
          "name": "payer",
          "signer": true
        },
        {
          "name": "token_program",
          "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
        },
        {
          "name": "associated_token_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "rent",
          "address": "SysvarRent111111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "symbol",
          "type": "string"
        },
        {
          "name": "uri",
          "type": "string"
        }
      ]
    },
    {
      "name": "increase_contribution",
      "discriminator": [144, 208, 182, 185, 26, 149, 18, 207],
      "accounts": [
        {
          "name": "room",
          "writable": true
        },
        {
          "name": "global_config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108, 95, 99, 111, 110, 102, 105, 103]
              }
            ]
          }
        },
        {
          "name": "admin_vault",
          "writable": true
        },
        {
          "name": "room_user",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 117, 115, 101, 114]
              },
              {
                "kind": "account",
                "path": "room"
              },
              {
                "kind": "account",
                "path": "user"
              }
            ]
          }
        },
        {
          "name": "room_access",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 97, 99, 99, 101, 115, 115]
              },
              {
                "kind": "account",
                "path": "room"
              },
              {
                "kind": "account",
                "path": "user"
              }
            ]
          }
        },
        {
          "name": "room_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 118, 97, 117, 108, 116]
              },
              {
                "kind": "account",
                "path": "room"
              }
            ]
          }
        },
        {
          "name": "user",
          "writable": true,
          "signer": true
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "rent",
          "address": "SysvarRent111111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "lamports_amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "initialize_global_config",
      "discriminator": [113, 216, 122, 131, 225, 209, 22, 55],
      "accounts": [
        {
          "name": "global_config",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108, 95, 99, 111, 110, 102, 105, 103]
              }
            ]
          }
        },
        {
          "name": "admin_vault",
          "writable": true
        },
        {
          "name": "wsol_mint",
          "address": "So11111111111111111111111111111111111111112"
        },
        {
          "name": "admin_wsol_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "admin_vault"
              },
              {
                "kind": "account",
                "path": "token_program"
              },
              {
                "kind": "account",
                "path": "wsol_mint"
              }
            ],
            "program": {
              "kind": "const",
              "value": [140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89]
            }
          }
        },
        {
          "name": "rooms_authority",
          "writable": true,
          "signer": true
        },
        {
          "name": "initializer",
          "writable": true,
          "signer": true
        },
        {
          "name": "token_program"
        },
        {
          "name": "associated_token_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "initialize_meteora_dfs",
      "discriminator": [197, 166, 159, 120, 29, 35, 183, 35],
      "accounts": [
        {
          "name": "global_config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108, 95, 99, 111, 110, 102, 105, 103]
              }
            ]
          }
        },
        {
          "name": "admin_vault",
          "writable": true
        },
        {
          "name": "room",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 115]
              },
              {
                "kind": "account",
                "path": "room.token_mint",
                "account": "Room"
              }
            ]
          }
        },
        {
          "name": "room_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 118, 97, 117, 108, 116]
              },
              {
                "kind": "account",
                "path": "room"
              }
            ]
          }
        },
        {
          "name": "room_vault_ata",
          "writable": true
        },
        {
          "name": "token_mint",
          "writable": true
        },
        {
          "name": "wsol_mint",
          "address": "So11111111111111111111111111111111111111112"
        },
        {
          "name": "rooms_fee_claim_admin",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [102, 101, 101, 95, 99, 108, 97, 105, 109]
              },
              {
                "kind": "account",
                "path": "room"
              }
            ]
          }
        },
        {
          "name": "dynamic_fee_sharing_program",
          "address": "dfsdo2UqvwfN8DuUVrMRNfQe11VaiNoKcMqLHVvDPzh"
        },
        {
          "name": "dynamic_fee_sharing_event_authority",
          "address": "EjRrm5Ptzzbp4fft5k4oC9LvbXqVA4UV4Sc9RNULDhCA"
        },
        {
          "name": "meteora_position_nft_account",
          "writable": true
        },
        {
          "name": "meteora_fee_vault",
          "writable": true
        },
        {
          "name": "meteora_token_vault",
          "writable": true
        },
        {
          "name": "meteora_fee_vault_authority",
          "writable": true
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "token_2022_program",
          "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "migrate_pump_pool",
      "discriminator": [224, 239, 90, 233, 231, 188, 197, 147],
      "accounts": [
        {
          "name": "room",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 115]
              },
              {
                "kind": "account",
                "path": "room.token_mint",
                "account": "Room"
              }
            ]
          }
        },
        {
          "name": "room_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 118, 97, 117, 108, 116]
              },
              {
                "kind": "account",
                "path": "room"
              }
            ]
          }
        },
        {
          "name": "room_vault_ata",
          "writable": true
        },
        {
          "name": "token_mint",
          "writable": true
        },
        {
          "name": "pumpfun_bonding_curve",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [98, 111, 110, 100, 105, 110, 103, 45, 99, 117, 114, 118, 101]
              },
              {
                "kind": "account",
                "path": "room.token_mint",
                "account": "Room"
              }
            ],
            "program": {
              "kind": "account",
              "path": "pumpfun_program"
            }
          }
        },
        {
          "name": "pumpfun_associated_bonding_curve",
          "writable": true
        },
        {
          "name": "pumpfun_global",
          "address": "4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf"
        },
        {
          "name": "pumpfun_program",
          "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"
        },
        {
          "name": "pumpfun_event_authority",
          "address": "Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"
        },
        {
          "name": "pumpfun_withdraw_authority",
          "writable": true,
          "address": "39azUYFWPz3VHgKCf3VChUwbpURdCHRxjWVowf5jUJjg"
        },
        {
          "name": "pumpswap_program",
          "address": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA"
        },
        {
          "name": "wsol_mint",
          "address": "So11111111111111111111111111111111111111112"
        },
        {
          "name": "pumpswap_event_authority",
          "address": "GS4CU59F31iL7aR2Q8zVS8DRrcRnXX1yjQ66TqNVQnaR"
        },
        {
          "name": "pumpswap_pool_authority",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [112, 111, 111, 108, 45, 97, 117, 116, 104, 111, 114, 105, 116, 121]
              },
              {
                "kind": "account",
                "path": "token_mint"
              }
            ],
            "program": {
              "kind": "account",
              "path": "pumpfun_program"
            }
          }
        },
        {
          "name": "pumpswap_pool",
          "writable": true
        },
        {
          "name": "pumpswap_pool_authority_mint_account",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "pumpswap_pool_authority"
              },
              {
                "kind": "account",
                "path": "token_2022_program"
              },
              {
                "kind": "account",
                "path": "token_mint"
              }
            ],
            "program": {
              "kind": "account",
              "path": "associated_token_program"
            }
          }
        },
        {
          "name": "pumpswap_pool_authority_wsol_account",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "pumpswap_pool_authority"
              },
              {
                "kind": "account",
                "path": "token_program"
              },
              {
                "kind": "account",
                "path": "wsol_mint"
              }
            ],
            "program": {
              "kind": "account",
              "path": "associated_token_program"
            }
          }
        },
        {
          "name": "pumpswap_amm_global_config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108, 95, 99, 111, 110, 102, 105, 103]
              }
            ],
            "program": {
              "kind": "account",
              "path": "pumpswap_program"
            }
          }
        },
        {
          "name": "pumpswap_lp_mint",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [112, 111, 111, 108, 95, 108, 112, 95, 109, 105, 110, 116]
              },
              {
                "kind": "account",
                "path": "pumpswap_pool"
              }
            ],
            "program": {
              "kind": "account",
              "path": "pumpswap_program"
            }
          }
        },
        {
          "name": "pumpswap_user_pool_token_account",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "pumpswap_pool_authority"
              },
              {
                "kind": "account",
                "path": "token_2022_program"
              },
              {
                "kind": "account",
                "path": "pumpswap_lp_mint"
              }
            ],
            "program": {
              "kind": "account",
              "path": "associated_token_program"
            }
          }
        },
        {
          "name": "pumpswap_pool_base_token_account",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "pumpswap_pool"
              },
              {
                "kind": "account",
                "path": "token_2022_program"
              },
              {
                "kind": "account",
                "path": "token_mint"
              }
            ],
            "program": {
              "kind": "account",
              "path": "associated_token_program"
            }
          }
        },
        {
          "name": "pumpswap_pool_quote_token_account",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "pumpswap_pool"
              },
              {
                "kind": "account",
                "path": "token_program"
              },
              {
                "kind": "account",
                "path": "wsol_mint"
              }
            ],
            "program": {
              "kind": "account",
              "path": "associated_token_program"
            }
          }
        },
        {
          "name": "token_2022_program",
          "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "associated_token_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "rent",
          "address": "SysvarRent111111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "swap_meteora",
      "discriminator": [208, 69, 36, 115, 209, 44, 77, 171],
      "accounts": [
        {
          "name": "global_config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108, 95, 99, 111, 110, 102, 105, 103]
              }
            ]
          }
        },
        {
          "name": "admin_vault",
          "writable": true
        },
        {
          "name": "admin_wsol_vault",
          "docs": ["Admin's WSOL vault for receiving fees"],
          "writable": true
        },
        {
          "name": "room",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 115]
              },
              {
                "kind": "account",
                "path": "room.token_mint",
                "account": "Room"
              }
            ]
          }
        },
        {
          "name": "room_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 118, 97, 117, 108, 116]
              },
              {
                "kind": "account",
                "path": "room"
              }
            ]
          }
        },
        {
          "name": "payer",
          "writable": true,
          "signer": true
        },
        {
          "name": "input_token_account",
          "writable": true
        },
        {
          "name": "output_token_account",
          "writable": true
        },
        {
          "name": "referral_token_account",
          "writable": true
        },
        {
          "name": "meteora_pool",
          "writable": true
        },
        {
          "name": "meteora_pool_authority"
        },
        {
          "name": "meteora_token_a_mint",
          "docs": ["Meteora token A mint"]
        },
        {
          "name": "meteora_token_b_mint",
          "docs": ["Meteora token B mint"]
        },
        {
          "name": "meteora_token_a_vault",
          "writable": true
        },
        {
          "name": "meteora_token_b_vault",
          "writable": true
        },
        {
          "name": "meteora_event_authority"
        },
        {
          "name": "meteora_program"
        },
        {
          "name": "meteora_token_a_account",
          "writable": true
        },
        {
          "name": "meteora_token_b_account",
          "writable": true
        },
        {
          "name": "meteora_token_a_program"
        },
        {
          "name": "meteora_token_b_program"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "amount_in",
          "type": "u64"
        },
        {
          "name": "slippage_bps",
          "type": "u16"
        },
        {
          "name": "is_buy",
          "type": "bool"
        }
      ]
    },
    {
      "name": "swap_pump",
      "discriminator": [27, 23, 63, 99, 51, 106, 9, 21],
      "accounts": [
        {
          "name": "global_config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108, 95, 99, 111, 110, 102, 105, 103]
              }
            ]
          }
        },
        {
          "name": "admin_vault",
          "writable": true
        },
        {
          "name": "admin_wsol_vault",
          "docs": ["Admin's WSOL vault for receiving sell fees"],
          "writable": true
        },
        {
          "name": "user",
          "writable": true,
          "signer": true
        },
        {
          "name": "pool",
          "writable": true
        },
        {
          "name": "pump_global_config"
        },
        {
          "name": "base_mint",
          "writable": true
        },
        {
          "name": "quote_mint",
          "writable": true
        },
        {
          "name": "user_base_token_account",
          "writable": true
        },
        {
          "name": "user_quote_token_account",
          "writable": true
        },
        {
          "name": "pool_base_token_account",
          "writable": true
        },
        {
          "name": "pool_quote_token_account",
          "writable": true
        },
        {
          "name": "protocol_fee_recipient"
        },
        {
          "name": "protocol_fee_recipient_token_account",
          "writable": true
        },
        {
          "name": "base_token_program"
        },
        {
          "name": "quote_token_program"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "associated_token_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121]
              }
            ],
            "program": {
              "kind": "const",
              "value": [12, 20, 222, 252, 130, 94, 198, 118, 148, 37, 8, 24, 187, 101, 64, 101, 244, 41, 141, 49, 86, 213, 113, 180, 212, 248, 9, 12, 24, 233, 168, 99]
            }
          }
        },
        {
          "name": "program",
          "address": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA"
        },
        {
          "name": "coin_creator_vault_ata",
          "writable": true
        },
        {
          "name": "coin_creator_vault_authority"
        },
        {
          "name": "global_volume_accumulator",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108, 95, 118, 111, 108, 117, 109, 101, 95, 97, 99, 99, 117, 109, 117, 108, 97, 116, 111, 114]
              }
            ],
            "program": {
              "kind": "const",
              "value": [12, 20, 222, 252, 130, 94, 198, 118, 148, 37, 8, 24, 187, 101, 64, 101, 244, 41, 141, 49, 86, 213, 113, 180, 212, 248, 9, 12, 24, 233, 168, 99]
            }
          }
        },
        {
          "name": "user_volume_accumulator",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [117, 115, 101, 114, 95, 118, 111, 108, 117, 109, 101, 95, 97, 99, 99, 117, 109, 117, 108, 97, 116, 111, 114]
              },
              {
                "kind": "account",
                "path": "user"
              }
            ],
            "program": {
              "kind": "const",
              "value": [12, 20, 222, 252, 130, 94, 198, 118, 148, 37, 8, 24, 187, 101, 64, 101, 244, 41, 141, 49, 86, 213, 113, 180, 212, 248, 9, 12, 24, 233, 168, 99]
            }
          }
        },
        {
          "name": "fee_config"
        },
        {
          "name": "fee_program",
          "address": "pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ"
        },
        {
          "name": "pool_v2",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [112, 111, 111, 108, 45, 118, 50]
              },
              {
                "kind": "account",
                "path": "base_mint"
              }
            ],
            "program": {
              "kind": "const",
              "value": [12, 20, 222, 252, 130, 94, 198, 118, 148, 37, 8, 24, 187, 101, 64, 101, 244, 41, 141, 49, 86, 213, 113, 180, 212, 248, 9, 12, 24, 233, 168, 99]
            }
          }
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        },
        {
          "name": "min_out",
          "type": "u64"
        },
        {
          "name": "is_buy",
          "type": "bool"
        }
      ]
    },
    {
      "name": "verify_access",
      "discriminator": [198, 35, 119, 166, 140, 214, 241, 222],
      "accounts": [
        {
          "name": "global_config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108, 95, 99, 111, 110, 102, 105, 103]
              }
            ]
          }
        },
        {
          "name": "room",
          "writable": true
        },
        {
          "name": "room_access",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 97, 99, 99, 101, 115, 115]
              },
              {
                "kind": "account",
                "path": "room"
              },
              {
                "kind": "account",
                "path": "user"
              }
            ]
          }
        },
        {
          "name": "instruction_sysvar",
          "address": "Sysvar1nstructions1111111111111111111111111"
        },
        {
          "name": "user",
          "writable": true,
          "signer": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "timestamp",
          "type": "i64"
        }
      ]
    },
    {
      "name": "withdraw_contribution",
      "discriminator": [228, 248, 41, 205, 208, 250, 5, 65],
      "accounts": [
        {
          "name": "room",
          "writable": true
        },
        {
          "name": "global_config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108, 95, 99, 111, 110, 102, 105, 103]
              }
            ]
          }
        },
        {
          "name": "admin_vault",
          "writable": true
        },
        {
          "name": "room_user",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 117, 115, 101, 114]
              },
              {
                "kind": "account",
                "path": "room"
              },
              {
                "kind": "account",
                "path": "user"
              }
            ]
          }
        },
        {
          "name": "room_access",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 97, 99, 99, 101, 115, 115]
              },
              {
                "kind": "account",
                "path": "room"
              },
              {
                "kind": "account",
                "path": "user"
              }
            ]
          }
        },
        {
          "name": "room_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [114, 111, 111, 109, 95, 118, 97, 117, 108, 116]
              },
              {
                "kind": "account",
                "path": "room"
              }
            ]
          }
        },
        {
          "name": "user",
          "writable": true,
          "signer": true
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "rent",
          "address": "SysvarRent111111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "lamports_amount",
          "type": "u64"
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "GlobalConfig",
      "discriminator": [149, 8, 156, 202, 160, 252, 176, 217]
    },
    {
      "name": "Room",
      "discriminator": [156, 199, 67, 27, 222, 23, 185, 94]
    },
    {
      "name": "RoomAccess",
      "discriminator": [67, 109, 128, 117, 156, 151, 35, 99]
    },
    {
      "name": "RoomUser",
      "discriminator": [239, 106, 103, 202, 65, 40, 157, 62]
    }
  ],
  "events": [
    {
      "name": "Airdrop",
      "discriminator": [97, 226, 238, 215, 49, 4, 194, 161]
    },
    {
      "name": "ContributionIncreased",
      "discriminator": [144, 65, 114, 231, 18, 148, 214, 132]
    },
    {
      "name": "ContributionWithdrawn",
      "discriminator": [124, 236, 51, 5, 29, 2, 142, 62]
    },
    {
      "name": "FeesCollected",
      "discriminator": [233, 23, 117, 225, 107, 178, 254, 8]
    },
    {
      "name": "LaunchFinalized",
      "discriminator": [133, 100, 148, 180, 31, 64, 210, 203]
    },
    {
      "name": "PoolMigrated",
      "discriminator": [250, 204, 24, 195, 37, 253, 152, 6]
    },
    {
      "name": "RewardsClaimed",
      "discriminator": [75, 98, 88, 18, 219, 112, 88, 121]
    },
    {
      "name": "RewardsForfeited",
      "discriminator": [171, 190, 87, 208, 87, 188, 100, 177]
    },
    {
      "name": "RoomCreated",
      "discriminator": [9, 177, 128, 166, 26, 19, 14, 243]
    },
    {
      "name": "SwapExecuted",
      "discriminator": [150, 166, 26, 225, 28, 89, 38, 79]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "Unauthorized",
      "msg": "Rooms Authority must be a signer"
    },
    {
      "code": 6001,
      "name": "UnauthorizedAdmin",
      "msg": "Unauthorized Admin"
    },
    {
      "code": 6002,
      "name": "InvalidAdminVault",
      "msg": "Invalid admin vault"
    },
    {
      "code": 6003,
      "name": "InvalidMintAddress",
      "msg": "Invalid mint address"
    },
    {
      "code": 6004,
      "name": "MinimumContribution",
      "msg": "Contribution is below the minimum required amount"
    },
    {
      "code": 6005,
      "name": "ExceedsMaxContribution",
      "msg": "Contribution exceeds maximum allowed per user"
    },
    {
      "code": 6006,
      "name": "InvalidRoomVault",
      "msg": "Room vault PDA does not match the expected address"
    },
    {
      "code": 6007,
      "name": "MinimumWithdraw",
      "msg": "Not enough lamports to withdraw"
    },
    {
      "code": 6008,
      "name": "AlreadyFinalized",
      "msg": "Already Finalized"
    },
    {
      "code": 6009,
      "name": "TargetNotReached",
      "msg": "Target has not been reached"
    },
    {
      "code": 6010,
      "name": "InvalidCreator",
      "msg": "Invalid Creator"
    },
    {
      "code": 6011,
      "name": "InsufficientFunds",
      "msg": "Insufficient funds to cover contribution"
    },
    {
      "code": 6012,
      "name": "InvalidVaultAuthority",
      "msg": "Vault authority does not match the expected address"
    },
    {
      "code": 6013,
      "name": "RoomNotFinalized",
      "msg": "Room has not been finalized yet."
    },
    {
      "code": 6014,
      "name": "InvalidRoomUser",
      "msg": "Invalid Room User"
    },
    {
      "code": 6015,
      "name": "AlreadyClaimedAllocation",
      "msg": "Already Claimed Allocation"
    },
    {
      "code": 6016,
      "name": "InvalidTokenAccount",
      "msg": "Invalid token account"
    },
    {
      "code": 6017,
      "name": "NoRewardsToClaim",
      "msg": "No rewards available to claim"
    },
    {
      "code": 6018,
      "name": "MathOverflow",
      "msg": "Math overflow"
    },
    {
      "code": 6019,
      "name": "InvalidAccount",
      "msg": "Invalid account"
    },
    {
      "code": 6020,
      "name": "AccessSignatureRequired",
      "msg": "Access signature required for this room type"
    },
    {
      "code": 6021,
      "name": "InvalidAccessSignature",
      "msg": "Invalid access signature"
    },
    {
      "code": 6022,
      "name": "AccessSignatureExpired",
      "msg": "Access signature expired"
    },
    {
      "code": 6023,
      "name": "NotFinalized",
      "msg": "Room must be finalized first"
    },
    {
      "code": 6024,
      "name": "InvalidFeeClaimAuthority",
      "msg": "Invalid fee claim authority"
    },
    {
      "code": 6025,
      "name": "InvalidClaimPayload",
      "msg": "Invalid claim payload"
    },
    {
      "code": 6026,
      "name": "InvalidRoomPlatform",
      "msg": "You cannot use this instruction for this room's platform"
    },
    {
      "code": 6027,
      "name": "InvalidRewardStructure",
      "msg": "Invalid reward structure for this instruction"
    },
    {
      "code": 6028,
      "name": "RoomFull",
      "msg": "Room is full"
    },
    {
      "code": 6029,
      "name": "InvalidRaiseAmount",
      "msg": "Invalid raise amount: must be between 30 and 300 SOL for Rooms platform"
    }
  ],
  "types": [
    {
      "name": "Airdrop",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "token_mint",
            "type": "pubkey"
          },
          {
            "name": "user",
            "type": "pubkey"
          },
          {
            "name": "lamports_claimed",
            "type": "u64"
          },
          {
            "name": "timestamp",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "ContributionIncreased",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "token_mint",
            "type": "pubkey"
          },
          {
            "name": "user",
            "type": "pubkey"
          },
          {
            "name": "lamports_added",
            "type": "u64"
          },
          {
            "name": "current_contribution",
            "type": "u64"
          },
          {
            "name": "tokens_allocated",
            "type": "u64"
          },
          {
            "name": "timestamp",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "ContributionWithdrawn",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "token_mint",
            "type": "pubkey"
          },
          {
            "name": "user",
            "type": "pubkey"
          },
          {
            "name": "lamports_withdrawn",
            "type": "u64"
          },
          {
            "name": "current_contribution",
            "type": "u64"
          },
          {
            "name": "tokens_allocated",
            "type": "u64"
          },
          {
            "name": "timestamp",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "FeesCollected",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "token_mint",
            "type": "pubkey"
          },
          {
            "name": "lamports_collected",
            "type": "u64"
          },
          {
            "name": "timestamp",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "GlobalConfig",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin_vault",
            "type": "pubkey"
          },
          {
            "name": "admin_wsol_vault",
            "type": "pubkey"
          },
          {
            "name": "rooms_authority",
            "type": "pubkey"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "LaunchFinalized",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "room",
            "type": "pubkey"
          },
          {
            "name": "token_mint",
            "type": "pubkey"
          },
          {
            "name": "total_raised",
            "type": "u64"
          },
          {
            "name": "timestamp",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "PoolMigrated",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "room",
            "type": "pubkey"
          },
          {
            "name": "token_mint",
            "type": "pubkey"
          },
          {
            "name": "bonding_curve",
            "type": "pubkey"
          },
          {
            "name": "pool_address",
            "type": "pubkey"
          },
          {
            "name": "timestamp",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "RewardStructure",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Equal"
          },
          {
            "name": "Creator"
          },
          {
            "name": "Custom"
          }
        ]
      }
    },
    {
      "name": "RewardsClaimed",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "token_mint",
            "type": "pubkey"
          },
          {
            "name": "user",
            "type": "pubkey"
          },
          {
            "name": "lamports_claimed",
            "type": "u64"
          },
          {
            "name": "timestamp",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "RewardsForfeited",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "token_mint",
            "type": "pubkey"
          },
          {
            "name": "user",
            "type": "pubkey"
          },
          {
            "name": "lamports_forfeited",
            "type": "u64"
          },
          {
            "name": "timestamp",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "Room",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "creator",
            "type": "pubkey"
          },
          {
            "name": "token_mint",
            "type": "pubkey"
          },
          {
            "name": "room_type",
            "type": {
              "defined": {
                "name": "RoomType"
              }
            }
          },
          {
            "name": "platform",
            "type": {
              "defined": {
                "name": "RoomPlatform"
              }
            }
          },
          {
            "name": "reward_structure",
            "type": {
              "defined": {
                "name": "RewardStructure"
              }
            }
          },
          {
            "name": "max_contribution",
            "type": "u64"
          },
          {
            "name": "min_contribution",
            "type": "u64"
          },
          {
            "name": "metadata_uri",
            "type": "string"
          },
          {
            "name": "system_buy_lamports",
            "type": "u64"
          },
          {
            "name": "target_lamports",
            "type": "u64"
          },
          {
            "name": "raised_lamports",
            "type": "u64"
          },
          {
            "name": "users",
            "type": "u16"
          },
          {
            "name": "finalized",
            "type": "bool"
          },
          {
            "name": "token_allocation",
            "type": "u64"
          },
          {
            "name": "treasury_fee_accumulator",
            "type": "u128"
          },
          {
            "name": "reward_wallet",
            "type": {
              "option": "pubkey"
            }
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "RoomAccess",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "room",
            "type": "pubkey"
          },
          {
            "name": "user",
            "type": "pubkey"
          },
          {
            "name": "verified",
            "type": "bool"
          },
          {
            "name": "verified_at",
            "type": "i64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "RoomCreated",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "room",
            "type": "pubkey"
          },
          {
            "name": "platform",
            "type": {
              "defined": {
                "name": "RoomPlatform"
              }
            }
          },
          {
            "name": "creator",
            "type": "pubkey"
          },
          {
            "name": "token_mint",
            "type": "pubkey"
          },
          {
            "name": "metadata_uri",
            "type": "string"
          },
          {
            "name": "target_lamports",
            "type": "u64"
          },
          {
            "name": "system_buy_lamports",
            "type": "u64"
          },
          {
            "name": "max_contribution",
            "type": "u64"
          },
          {
            "name": "min_contribution",
            "type": "u64"
          },
          {
            "name": "timestamp",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "RoomPlatform",
      "repr": {
        "kind": "rust"
      },
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "PumpFun"
          },
          {
            "name": "Rooms"
          }
        ]
      }
    },
    {
      "name": "RoomType",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Open"
          },
          {
            "name": "AccessCode"
          },
          {
            "name": "Riddle"
          },
          {
            "name": "Approval"
          }
        ]
      }
    },
    {
      "name": "RoomUser",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "user",
            "type": "pubkey"
          },
          {
            "name": "authorized",
            "type": "bool"
          },
          {
            "name": "lamports_contributed",
            "type": "u64"
          },
          {
            "name": "claimed_allocation_amount",
            "type": "u64"
          },
          {
            "name": "treasury_fee_checkpoint",
            "type": "u128"
          },
          {
            "name": "treasury_fee_claimed",
            "type": "u64"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "SwapExecuted",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "user",
            "type": "pubkey"
          },
          {
            "name": "token_mint",
            "type": "pubkey"
          },
          {
            "name": "amount_in",
            "type": "u64"
          },
          {
            "name": "amount_out",
            "type": "u64"
          },
          {
            "name": "is_buy",
            "type": "bool"
          },
          {
            "name": "timestamp",
            "type": "i64"
          }
        ]
      }
    }
  ]
}