/** * Program IDL in camelCase format in order to be used in JS/TS. * * Note that this is only a type helper and is not the actual IDL. The original * IDL can be found at `target/idl/pit.json`. */ export type Pit = { "address": "pit9HnTZ2r7KTfbDKYHuc5tYVcpbj4QE4PnzEEXsZx6", "metadata": { "name": "pit", "version": "0.1.0", "spec": "0.1.0", "description": "Created with Anchor" }, "instructions": [ { "name": "claimFees", "discriminator": [ 82, 251, 233, 156, 12, 52, 184, 202 ], "accounts": [ { "name": "marketState", "writable": true }, { "name": "operator", "writable": true, "signer": true, "relations": [ "marketState" ] }, { "name": "operatorWsolAccount", "writable": true }, { "name": "wsolVault", "writable": true, "relations": [ "marketState" ] }, { "name": "wsolMint" }, { "name": "tokenProgram" } ], "args": [] }, { "name": "createMarketMints", "discriminator": [ 215, 58, 93, 191, 214, 185, 164, 237 ], "accounts": [ { "name": "operator", "writable": true, "signer": true }, { "name": "marketAuthority", "docs": [ "Verified via seeds - must match the week_number." ], "pda": { "seeds": [ { "kind": "const", "value": [ 109, 97, 114, 107, 101, 116 ] }, { "kind": "arg", "path": "weekNumber" } ] } }, { "name": "highHitMint0", "writable": true }, { "name": "highHitMint1", "writable": true }, { "name": "highHitMint2", "writable": true }, { "name": "highMissMint0", "writable": true }, { "name": "highMissMint1", "writable": true }, { "name": "highMissMint2", "writable": true }, { "name": "lowHitMint0", "writable": true }, { "name": "lowHitMint1", "writable": true }, { "name": "lowHitMint2", "writable": true }, { "name": "lowMissMint0", "writable": true }, { "name": "lowMissMint1", "writable": true }, { "name": "lowMissMint2", "writable": true }, { "name": "systemProgram", "address": "11111111111111111111111111111111" }, { "name": "token2022Program" }, { "name": "rent", "address": "SysvarRent111111111111111111111111111111111" } ], "args": [ { "name": "weekNumber", "type": "u32" } ] }, { "name": "initializeMarket", "discriminator": [ 35, 35, 189, 193, 155, 48, 170, 203 ], "accounts": [ { "name": "marketState", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 109, 97, 114, 107, 101, 116 ] }, { "kind": "arg", "path": "weekNumber" } ] } }, { "name": "operator", "writable": true, "signer": true }, { "name": "wsolMint" }, { "name": "wsolVault", "writable": true, "pda": { "seeds": [ { "kind": "account", "path": "marketState" }, { "kind": "const", "value": [ 6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235, 121, 172, 28, 180, 133, 237, 95, 91, 55, 145, 58, 140, 245, 133, 126, 255, 0, 169 ] }, { "kind": "account", "path": "wsolMint" } ], "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": "registry", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 114, 101, 103, 105, 115, 116, 114, 121 ] } ] } }, { "name": "priceUpdate", "docs": [ "Pyth price update account for SOL/USD", "Used to determine current price and auto-calculate strikes", "Must be the sponsored SOL/USD price feed account (shard 0):", "7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE" ] }, { "name": "systemProgram", "address": "11111111111111111111111111111111" }, { "name": "tokenProgram" }, { "name": "associatedTokenProgram", "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" }, { "name": "token2022Program" }, { "name": "rent", "address": "SysvarRent111111111111111111111111111111111" } ], "args": [ { "name": "weekNumber", "type": "u32" }, { "name": "endTimestamp", "type": "i64" }, { "name": "totalSubsidy", "type": "u64" }, { "name": "highQVector", "type": { "array": [ "u128", 4 ] } }, { "name": "lowQVector", "type": { "array": [ "u128", 4 ] } } ] }, { "name": "initializeMetadata", "discriminator": [ 35, 215, 241, 156, 122, 208, 206, 212 ], "accounts": [ { "name": "marketState", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 109, 97, 114, 107, 101, 116 ] }, { "kind": "arg", "path": "weekNumber" } ] } }, { "name": "operator", "writable": true, "signer": true }, { "name": "token2022Program" } ], "args": [ { "name": "weekNumber", "type": "u32" }, { "name": "poolType", "type": { "defined": { "name": "poolType" } } } ] }, { "name": "initializeRegistry", "discriminator": [ 189, 181, 20, 17, 174, 57, 249, 59 ], "accounts": [ { "name": "registry", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 114, 101, 103, 105, 115, 116, 114, 121 ] } ] } }, { "name": "operator", "writable": true, "signer": true }, { "name": "systemProgram", "address": "11111111111111111111111111111111" } ], "args": [] }, { "name": "markExtreme", "discriminator": [ 205, 187, 4, 45, 249, 254, 50, 158 ], "accounts": [ { "name": "marketState", "writable": true }, { "name": "keeper", "docs": [ "The caller of this instruction.", "- Without `operator-bypass`: Permissionless (keeper bot)", "- With `operator-bypass`: Operator can bypass Pyth verification" ], "writable": true, "signer": true }, { "name": "priceUpdate", "docs": [ "Pyth price update account for SOL/USD.", "Required when:", "- `operator-bypass` is NOT enabled (always required)", "- `operator-bypass` IS enabled but caller is NOT the operator", "Optional when:", "- `operator-bypass` IS enabled AND caller is the operator" ] } ], "args": [ { "name": "poolType", "type": { "defined": { "name": "poolType" } } }, { "name": "newOutcome", "type": "u8" } ] }, { "name": "pauseMarket", "discriminator": [ 216, 238, 4, 164, 65, 11, 162, 91 ], "accounts": [ { "name": "marketState", "writable": true }, { "name": "operator", "docs": [ "Only the operator can pause the market" ], "writable": true, "signer": true, "relations": [ "marketState" ] } ], "args": [] }, { "name": "redeem", "discriminator": [ 184, 12, 86, 149, 70, 196, 97, 225 ], "accounts": [ { "name": "marketState", "writable": true }, { "name": "user", "writable": true, "signer": true }, { "name": "userTokenAccount", "writable": true }, { "name": "userWsolAccount", "writable": true }, { "name": "wsolMint" }, { "name": "wsolVault", "writable": true }, { "name": "tokenMint", "writable": true }, { "name": "tokenProgram" }, { "name": "token2022Program" } ], "args": [ { "name": "poolType", "type": { "defined": { "name": "poolType" } } }, { "name": "strikeIndex", "type": "u8" }, { "name": "isHit", "type": "bool" }, { "name": "amount", "type": "u64" }, { "name": "isWin", "type": "bool" } ] }, { "name": "setNickname", "discriminator": [ 213, 22, 78, 19, 90, 40, 35, 13 ], "accounts": [ { "name": "userProfile", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 117, 115, 101, 114, 95, 112, 114, 111, 102, 105, 108, 101 ] }, { "kind": "account", "path": "user" } ] } }, { "name": "user", "writable": true, "signer": true }, { "name": "systemProgram", "address": "11111111111111111111111111111111" } ], "args": [ { "name": "nickname", "type": "string" } ] }, { "name": "settleMarket", "discriminator": [ 193, 153, 95, 216, 166, 6, 144, 217 ], "accounts": [ { "name": "marketState", "writable": true }, { "name": "registry", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 114, 101, 103, 105, 115, 116, 114, 121 ] } ] } }, { "name": "settler", "writable": true, "signer": true } ], "args": [] }, { "name": "trade", "discriminator": [ 178, 144, 26, 216, 241, 187, 206, 130 ], "accounts": [ { "name": "marketState", "writable": true }, { "name": "user", "writable": true, "signer": true }, { "name": "userTokenAccount", "writable": true }, { "name": "userWsolAccount", "writable": true }, { "name": "wsolMint" }, { "name": "wsolVault", "writable": true }, { "name": "tokenMint", "writable": true }, { "name": "tokenProgram" }, { "name": "token2022Program" } ], "args": [ { "name": "poolType", "type": { "defined": { "name": "poolType" } } }, { "name": "strikeIndex", "type": "u8" }, { "name": "isHit", "type": "bool" }, { "name": "amount", "type": "u64" }, { "name": "isBuy", "type": "bool" }, { "name": "limitLamports", "type": "u64" } ] }, { "name": "unpauseMarket", "discriminator": [ 219, 203, 199, 170, 212, 45, 170, 80 ], "accounts": [ { "name": "marketState", "writable": true }, { "name": "operator", "docs": [ "Only the operator can unpause the market" ], "writable": true, "signer": true, "relations": [ "marketState" ] } ], "args": [] }, { "name": "withdrawSubsidy", "discriminator": [ 50, 153, 32, 94, 158, 144, 180, 74 ], "accounts": [ { "name": "marketState", "writable": true }, { "name": "operator", "writable": true, "signer": true, "relations": [ "marketState" ] }, { "name": "operatorWsolAccount", "writable": true }, { "name": "wsolVault", "writable": true, "relations": [ "marketState" ] }, { "name": "wsolMint" }, { "name": "tokenProgram" }, { "name": "token2022Program" } ], "args": [] } ], "accounts": [ { "name": "marketState", "discriminator": [ 0, 125, 123, 215, 95, 96, 164, 194 ] }, { "name": "priceUpdateV2", "discriminator": [ 34, 241, 35, 99, 157, 126, 244, 205 ] }, { "name": "registryState", "discriminator": [ 29, 34, 224, 195, 175, 183, 99, 97 ] }, { "name": "userProfile", "discriminator": [ 32, 37, 119, 205, 179, 180, 13, 194 ] } ], "errors": [ { "code": 6000, "name": "customError", "msg": "Custom error message" }, { "code": 6001, "name": "invalidSubsidyAmount", "msg": "Total subsidy must be greater than 0." }, { "code": 6002, "name": "poolAlreadyInitialized", "msg": "Pool is already initialized." }, { "code": 6003, "name": "poolNotInitialized", "msg": "Pool is not initialized." }, { "code": 6004, "name": "poolAlreadySettled", "msg": "Pool is already settled." }, { "code": 6005, "name": "marketIsClosedForTrading", "msg": "Market is closed for trading." }, { "code": 6006, "name": "mathError", "msg": "Math error occurred." }, { "code": 6007, "name": "mathUnderflow", "msg": "Math underflow occurred." }, { "code": 6008, "name": "mathOverflow", "msg": "Math overflow occurred." }, { "code": 6009, "name": "marketNotExpired", "msg": "Market has not yet expired." }, { "code": 6010, "name": "poolNotSettled", "msg": "Pool is not settled." }, { "code": 6011, "name": "zeroBalance", "msg": "User has zero tokens to redeem." }, { "code": 6012, "name": "noFeesToClaim", "msg": "There are no fees to claim." }, { "code": 6013, "name": "poolsNotSettled", "msg": "Both pools must be settled before withdrawing subsidy." }, { "code": 6014, "name": "gracePeriodNotPassed", "msg": "Grace period for withdrawal has not passed." }, { "code": 6015, "name": "noSubsidyToWithdraw", "msg": "There is no subsidy to withdraw." }, { "code": 6016, "name": "missingTokenAccount", "msg": "Missing token account in remaining accounts." }, { "code": 6017, "name": "invalidTokenProgram", "msg": "Invalid Token Program" }, { "code": 6018, "name": "invalidOutcome", "msg": "Invalid outcome value. Must be 0-3." }, { "code": 6019, "name": "outcomeNotHigher", "msg": "New outcome must be higher than current outcome." }, { "code": 6020, "name": "invalidPythPrice", "msg": "Invalid Pyth price feed." }, { "code": 6021, "name": "priceOutcomeMismatch", "msg": "Price does not match the expected outcome." }, { "code": 6022, "name": "pythPriceExpired", "msg": "Pyth price is stale or expired." }, { "code": 6023, "name": "marketPaused", "msg": "Market is paused." }, { "code": 6024, "name": "marketNotPaused", "msg": "Market is not paused." }, { "code": 6025, "name": "operatorOnly", "msg": "Only the market operator can perform this action." }, { "code": 6026, "name": "unauthorizedOperator", "msg": "Unauthorized operator. Only the hardcoded OPERATOR address can initialize markets." }, { "code": 6027, "name": "missingPriceUpdate", "msg": "Price update account is required for non-operator callers." }, { "code": 6028, "name": "invalidTokenMint", "msg": "Invalid token mint. Must be a valid pool token." }, { "code": 6029, "name": "invalidStrikeIndex", "msg": "Invalid strike index. Must be 0, 1, or 2." }, { "code": 6030, "name": "invalidAmount", "msg": "Trade amount must be greater than 0." }, { "code": 6031, "name": "slippageExceeded", "msg": "Slippage exceeded: actual cost/refund outside user's limit." }, { "code": 6032, "name": "invalidEndTimestamp", "msg": "End timestamp must be in the future." }, { "code": 6033, "name": "invalidStrikeOrder", "msg": "Strikes must be in ascending order." }, { "code": 6034, "name": "registryFull", "msg": "Market registry is full. Maximum active markets reached." }, { "code": 6035, "name": "marketAlreadyExists", "msg": "Market with this week number already exists in registry." }, { "code": 6036, "name": "marketAlreadyActive", "msg": "A market is already active. Only one market can be active at a time." }, { "code": 6037, "name": "strikeAlreadyHit", "msg": "This strike has been hit. Trading is halted for this strike." }, { "code": 6038, "name": "priceTooLow", "msg": "SOL price is too low to initialize a pool. Minimum price is $30 USD." }, { "code": 6039, "name": "invalidRemainingAccounts", "msg": "Invalid remaining accounts. Expected 12 mint accounts." }, { "code": 6040, "name": "invalidInitialQVector", "msg": "Initial q_vector must be all zeros to prevent bankrun." }, { "code": 6041, "name": "insufficientVaultFunds", "msg": "Insufficient vault funds to cover outstanding winnings." }, { "code": 6042, "name": "insufficientBalance", "msg": "Insufficient token balance for the requested amount." }, { "code": 6043, "name": "invalidWinStatus", "msg": "Provided is_win parameter does not match actual winner status." }, { "code": 6044, "name": "nicknameTooLong", "msg": "Nickname exceeds maximum length of 32 bytes." }, { "code": 6045, "name": "qVectorDiffTooLarge", "msg": "Trade would cause q_vector difference to exceed safe limit" }, { "code": 6046, "name": "qVectorOverflow", "msg": "q_vector value would exceed safe storage limit (u128 overflow risk)" } ], "types": [ { "name": "marketState", "type": { "kind": "struct", "fields": [ { "name": "weekNumber", "type": "u32" }, { "name": "operator", "type": "pubkey" }, { "name": "wsolVault", "type": "pubkey" }, { "name": "startTimestamp", "docs": [ "Unix timestamp when the market started (for frontend display)" ], "type": "i64" }, { "name": "endTimestamp", "type": "i64" }, { "name": "totalSubsidy", "type": "u64" }, { "name": "feesCollected", "type": "u64" }, { "name": "highPool", "type": { "defined": { "name": "poolState" } } }, { "name": "lowPool", "type": { "defined": { "name": "poolState" } } }, { "name": "bump", "type": "u8" }, { "name": "isPaused", "docs": [ "Emergency pause flag - when true, trading is halted" ], "type": "bool" } ] } }, { "name": "poolState", "type": { "kind": "struct", "fields": [ { "name": "isInitialized", "type": "bool" }, { "name": "isSettled", "type": "bool" }, { "name": "winningOutcome", "type": "u8" }, { "name": "qVector", "type": { "array": [ "u128", 4 ] } }, { "name": "b", "type": "u128" }, { "name": "strikes", "type": { "array": [ "u64", 3 ] } }, { "name": "hitMints", "type": { "array": [ "pubkey", 3 ] } }, { "name": "missMints", "type": { "array": [ "pubkey", 3 ] } }, { "name": "claimedWinnings", "type": "u64" } ] } }, { "name": "poolType", "type": { "kind": "enum", "variants": [ { "name": "high" }, { "name": "low" } ] } }, { "name": "priceFeedMessage", "repr": { "kind": "c" }, "type": { "kind": "struct", "fields": [ { "name": "feedId", "docs": [ "`FeedId` but avoid the type alias because of compatibility issues with Anchor's `idl-build` feature." ], "type": { "array": [ "u8", 32 ] } }, { "name": "price", "type": "i64" }, { "name": "conf", "type": "u64" }, { "name": "exponent", "type": "i32" }, { "name": "publishTime", "docs": [ "The timestamp of this price update in seconds" ], "type": "i64" }, { "name": "prevPublishTime", "docs": [ "The timestamp of the previous price update. This field is intended to allow users to", "identify the single unique price update for any moment in time:", "for any time t, the unique update is the one such that prev_publish_time < t <= publish_time.", "", "Note that there may not be such an update while we are migrating to the new message-sending logic,", "as some price updates on pythnet may not be sent to other chains (because the message-sending", "logic may not have triggered). We can solve this problem by making the message-sending mandatory", "(which we can do once publishers have migrated over).", "", "Additionally, this field may be equal to publish_time if the message is sent on a slot where", "where the aggregation was unsuccesful. This problem will go away once all publishers have", "migrated over to a recent version of pyth-agent." ], "type": "i64" }, { "name": "emaPrice", "type": "i64" }, { "name": "emaConf", "type": "u64" } ] } }, { "name": "priceUpdateV2", "docs": [ "A price update account. This account is used by the Pyth Receiver program to store a verified price update from a Pyth price feed.", "It contains:", "- `write_authority`: The write authority for this account. This authority can close this account to reclaim rent or update the account to contain a different price update.", "- `verification_level`: The [`VerificationLevel`] of this price update. This represents how many Wormhole guardian signatures have been verified for this price update.", "- `price_message`: The actual price update.", "- `posted_slot`: The slot at which this price update was posted." ], "type": { "kind": "struct", "fields": [ { "name": "writeAuthority", "type": "pubkey" }, { "name": "verificationLevel", "type": { "defined": { "name": "verificationLevel" } } }, { "name": "priceMessage", "type": { "defined": { "name": "priceFeedMessage" } } }, { "name": "postedSlot", "type": "u64" } ] } }, { "name": "registryState", "docs": [ "Registry account that tracks the active market week number.", "Only one market can be active at a time - weekly market model." ], "type": { "kind": "struct", "fields": [ { "name": "bump", "docs": [ "PDA bump seed" ], "type": "u8" }, { "name": "activeCount", "docs": [ "Number of currently active markets (0 or 1)" ], "type": "u16" }, { "name": "activeWeeks", "docs": [ "Array of active week numbers (only first slot used)" ], "type": { "array": [ "u32", 1 ] } }, { "name": "lastWeekNumber", "docs": [ "The week number of the most recently settled market (0 if none)", "Used by frontend to show historical data and by operator for reference" ], "type": "u32" }, { "name": "totalMarketsCount", "docs": [ "Total number of markets ever created (cumulative counter)", "Used by frontend to display total market count in registry status" ], "type": "u32" } ] } }, { "name": "userProfile", "docs": [ "User profile account storing custom nickname", "", "PDA Seeds: [\"user_profile\", user_pubkey]", "", "Space calculation:", "- Discriminator: 8 bytes", "- owner (Pubkey): 32 bytes", "- nickname (String): 4 (length prefix) + 32 (max bytes) = 36 bytes", "- bump: 1 byte", "Total: 8 + 32 + 36 + 1 = 77 bytes" ], "type": { "kind": "struct", "fields": [ { "name": "owner", "docs": [ "Wallet address that owns this profile" ], "type": "pubkey" }, { "name": "nickname", "docs": [ "Custom nickname (max 32 UTF-8 bytes, not characters!)", "Empty string means no custom nickname set (use default)", "", "Note: This is a BYTE limit. Multi-byte UTF-8 characters (emoji, CJK)", "will consume more space than ASCII characters." ], "type": "string" }, { "name": "bump", "docs": [ "PDA bump seed" ], "type": "u8" } ] } }, { "name": "verificationLevel", "docs": [ "Pyth price updates are bridged to all blockchains via Wormhole.", "Using the price updates on another chain requires verifying the signatures of the Wormhole guardians.", "The usual process is to check the signatures for two thirds of the total number of guardians, but this can be cumbersome on Solana because of the transaction size limits,", "so we also allow for partial verification.", "", "This enum represents how much a price update has been verified:", "- If `Full`, we have verified the signatures for two thirds of the current guardians.", "- If `Partial`, only `num_signatures` guardian signatures have been checked.", "", "# Warning", "Using partially verified price updates is dangerous, as it lowers the threshold of guardians that need to collude to produce a malicious price update." ], "type": { "kind": "enum", "variants": [ { "name": "partial", "fields": [ { "name": "numSignatures", "type": "u8" } ] }, { "name": "full" } ] } } ], "constants": [ { "name": "gracePeriodSeconds", "type": "i64", "value": "604800" }, { "name": "ln2Wad", "type": "u128", "value": "693147180559945309" }, { "name": "ln4Wad", "type": "u128", "value": "1386294361119890612" }, { "name": "marketPdaSeed", "type": "bytes", "value": "[109, 97, 114, 107, 101, 116]" }, { "name": "maxQVectorDiffMultiplier", "docs": [ "Maximum allowed q_vector difference as a multiplier of b (liquidity parameter)", "", "**Mathematical basis**: exp_wad safely handles inputs up to 40 WAD (MAX_EXP_INPUT)", "", "In cost_function's Log-Sum-Exp calculation:", "- Input to exp_wad: (q_i - max_q) / b", "- Safety requirement: |(q_i - max_q) / b| < 40", "- This translates to: (max_q - min_q) / b < 40", "- Therefore: q_diff < 40 × b", "", "**No additional MAX_TRADE_AMOUNT needed**:", "- u256 multiply_wad handles values up to ~10^28 WAD", "- Dynamic validation based on actual q_vector state is sufficient", "- Provides market-specific limits based on subsidy/b parameter", "", "**Example** (subsidy = 9 SOL, b ≈ 6.49 SOL):", "- max_allowed_diff = 40 × 6.49 ≈ 259.6 SOL WAD", "- Safe for all LMSR operations with u256 multiply_wad", "", "**Storage Constraint**: While exp_wad supports multiplier=40, actual market capacity", "is also limited by u128 storage (u128::MAX ≈ 3.4e20). The trade instruction enforces", "an additional check: `max(q_i) < u128::MAX / 2`. This means:", "- Markets with 9 SOL subsidy can safely reach ~260 SOL cumulative diff (76% capacity)", "- Markets with larger subsidies may hit storage limits before reaching 40× multiplier", "- Runtime validation (QVectorOverflow) prevents overflow when capacity is reached", "", "**Constraint enforced in trade instruction**:", "1. require!(max(q_i) - min(q_i) < MAX_Q_VECTOR_DIFF_MULTIPLIER × b) [exp_wad safety]", "2. require!(max(q_i) < u128::MAX / 2) [u128 storage safety]" ], "type": "u128", "value": "40" }, { "name": "mintPdaSeed", "type": "bytes", "value": "[109, 105, 110, 116]" }, { "name": "minSolPriceCents", "docs": [ "Minimum SOL price in cents required to initialize a pool", "This prevents pool initialization during extreme market conditions", "$30 USD = 3000 cents" ], "type": "u64", "value": "3000" }, { "name": "pythMaxPriceAgeSeconds", "docs": [ "Maximum age for Pyth price updates", "Prices older than this are considered stale and will be rejected", "", "Mainnet: 180 seconds (3 minutes) - Sponsored Push Feed has 1 minute heartbeat", "Devnet: 1800 seconds (30 minutes) - Devnet feed updates less frequently" ], "type": "u64", "value": "180" }, { "name": "registryPdaSeed", "type": "bytes", "value": "[114, 101, 103, 105, 115, 116, 114, 121]" }, { "name": "tradeFeePercentage", "type": "u128", "value": "30000000000000000" }, { "name": "userProfilePdaSeed", "type": "bytes", "value": "[117, 115, 101, 114, 95, 112, 114, 111, 102, 105, 108, 101]" }, { "name": "vaultPdaSeed", "type": "bytes", "value": "[118, 97, 117, 108, 116]" } ] };