Rooms developer integration guide
View IDLCyenP3qnD453Lr6YD7aWzWajM1ytcYdjPmHpHgMroomsSetup
npm install @coral-xyz/anchor @solana/web3.jsimport * 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:
- Your backend (holding
rooms_authority) signs a payload off-chain. - 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 | swapExecutedError Reference
| Code | Name | Meaning |
|---|---|---|
| 6000 | Unauthorized | rooms_authority must sign |
| 6001 | UnauthorizedAdmin | Caller is not the admin |
| 6004 | MinimumContribution | Amount below room.minContribution |
| 6005 | ExceedsMaxContribution | User is already at room.maxContribution |
| 6007 | MinimumWithdraw | Not enough balance to withdraw |
| 6008 | AlreadyFinalized | Room has already launched |
| 6009 | TargetNotReached | Finalization called before target hit |
| 6011 | InsufficientFunds | Not enough SOL in wallet |
| 6013 | RoomNotFinalized | Instruction requires finalization first |
| 6015 | AlreadyClaimedAllocation | Token allocation already claimed |
| 6017 | NoRewardsToClaim | No unclaimed trading fees available |
| 6020 | AccessSignatureRequired | Gated room requires verify_access first |
| 6021 | InvalidAccessSignature | Ed25519 signature does not match rooms_authority |
| 6022 | AccessSignatureExpired | Signature timestamp is more than ~5 minutes old |
| 6023 | NotFinalized | Room must be finalized for this instruction |
| 6026 | InvalidRoomPlatform | Wrong platform instruction for this room |
| 6028 | RoomFull | Room has reached its contributor limit |
| 6029 | InvalidRaiseAmount | Meteora raise must be 30–300 SOL |
Program Addresses (Mainnet)
| Program | Address |
|---|---|
| Rooms | CyenP3qnD453Lr6YD7aWzWajM1ytcYdjPmHpHgMrooms |
| PumpFun | 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P |
| PumpSwap | pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA |
| Meteora DAMM v2 | cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG |
| Meteora DFS | dfsdo2UqvwfN8DuUVrMRNfQe11VaiNoKcMqLHVvDPzh |
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"
}
]
}
}
]
}