{ "version": "0.1.0", "name": "soar", "constants": [ { "name": "MAX_TITLE_LEN", "type": { "defined": "usize" }, "value": "30" }, { "name": "MAX_DESCRIPTION_LEN", "type": { "defined": "usize" }, "value": "200" } ], "instructions": [ { "name": "initializeGame", "docs": [ "Initialize a new [Game] and register its [LeaderBoard]." ], "accounts": [ { "name": "creator", "isMut": true, "isSigner": true }, { "name": "game", "isMut": true, "isSigner": true }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "gameMeta", "type": { "defined": "GameAttributes" } }, { "name": "gameAuth", "type": { "vec": "publicKey" } } ] }, { "name": "updateGame", "docs": [ "Update a [Game]'s meta-information or authority list." ], "accounts": [ { "name": "authority", "isMut": false, "isSigner": true }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "game", "isMut": true, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "newMeta", "type": { "option": { "defined": "GameAttributes" } } }, { "name": "newAuth", "type": { "option": { "vec": "publicKey" } } } ] }, { "name": "addAchievement", "docs": [ "Add a new [Achievement] that can be attained for a particular [Game]." ], "accounts": [ { "name": "authority", "isMut": false, "isSigner": true }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "game", "isMut": true, "isSigner": false }, { "name": "newAchievement", "isMut": true, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "title", "type": "string" }, { "name": "description", "type": "string" }, { "name": "nftMeta", "type": "publicKey" } ] }, { "name": "updateAchievement", "docs": [ "Update an [Achievement]'s meta information." ], "accounts": [ { "name": "authority", "isMut": false, "isSigner": true }, { "name": "game", "isMut": false, "isSigner": false }, { "name": "achievement", "isMut": true, "isSigner": false } ], "args": [ { "name": "newTitle", "type": { "option": "string" } }, { "name": "newDescription", "type": { "option": "string" } }, { "name": "nftMeta", "type": { "option": "publicKey" } } ] }, { "name": "addLeaderboard", "docs": [ "Overwrite the active [LeaderBoard] and set a newly created one." ], "accounts": [ { "name": "authority", "isMut": false, "isSigner": true }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "game", "isMut": true, "isSigner": false }, { "name": "leaderboard", "isMut": true, "isSigner": false }, { "name": "topEntries", "isMut": true, "isSigner": false, "isOptional": true }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "input", "type": { "defined": "RegisterLeaderBoardInput" } } ] }, { "name": "updateLeaderboard", "docs": [ "Update's a leaderboard's description and nft metadata information." ], "accounts": [ { "name": "authority", "isMut": false, "isSigner": true }, { "name": "game", "isMut": false, "isSigner": false }, { "name": "leaderboard", "isMut": true, "isSigner": false } ], "args": [ { "name": "newDescription", "type": { "option": "string" } }, { "name": "newNftMeta", "type": { "option": "publicKey" } } ] }, { "name": "initializePlayer", "docs": [ "Create a [Player] account for a particular user." ], "accounts": [ { "name": "payer", "isMut": true, "isSigner": true }, { "name": "user", "isMut": false, "isSigner": true }, { "name": "playerAccount", "isMut": true, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "username", "type": "string" }, { "name": "nftMeta", "type": "publicKey" } ] }, { "name": "updatePlayer", "docs": [ "Update the username or nft_meta for a [Player] account." ], "accounts": [ { "name": "user", "isMut": false, "isSigner": true }, { "name": "playerAccount", "isMut": true, "isSigner": false } ], "args": [ { "name": "username", "type": { "option": "string" } }, { "name": "nftMeta", "type": { "option": "publicKey" } } ] }, { "name": "registerPlayer", "docs": [ "Register a [Player] for a particular [Leaderboard], resulting in a newly-", "created [PlayerEntryList] account." ], "accounts": [ { "name": "payer", "isMut": true, "isSigner": true }, { "name": "user", "isMut": false, "isSigner": true }, { "name": "playerAccount", "isMut": false, "isSigner": false }, { "name": "game", "isMut": false, "isSigner": false }, { "name": "leaderboard", "isMut": false, "isSigner": false }, { "name": "newList", "isMut": true, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "submitScore", "docs": [ "Submit a score for a player and have it timestamped and added to the [PlayerEntryList].", "Optionally increase the player's rank if needed.", "", "This instruction automatically resizes the [PlayerScoresList] account if needed." ], "accounts": [ { "name": "user", "isMut": false, "isSigner": true }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "authority", "isMut": false, "isSigner": true }, { "name": "playerAccount", "isMut": false, "isSigner": false }, { "name": "game", "isMut": false, "isSigner": false }, { "name": "leaderboard", "isMut": false, "isSigner": false }, { "name": "topEntries", "isMut": true, "isSigner": false, "isOptional": true }, { "name": "playerScores", "isMut": true, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "score", "type": "u64" } ] }, { "name": "initiateMerge", "docs": [ "Initialize a new merge account and await approval from the verified users of all the", "specified [Player] accounts.", "", "A merge is complete when all the users of the [Player] account keys referenced in it", "have signed to set their approval to `true`." ], "accounts": [ { "name": "payer", "isMut": true, "isSigner": true }, { "name": "user", "isMut": false, "isSigner": true }, { "name": "playerAccount", "isMut": false, "isSigner": false }, { "name": "mergeAccount", "isMut": true, "isSigner": true }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "keys", "type": { "vec": "publicKey" } } ] }, { "name": "approveMerge", "docs": [ "Register merge confirmation for a particular [Player] account included in a [Merged]." ], "accounts": [ { "name": "user", "isMut": false, "isSigner": true }, { "name": "playerAccount", "isMut": false, "isSigner": false }, { "name": "mergeAccount", "isMut": true, "isSigner": false } ], "args": [] }, { "name": "unlockPlayerAchievement", "docs": [ "Indicate that a player has completed some [Achievement] and creates a [PlayerAchievement]", "as proof.", "", "The existence of this player-achievement account and its `unlocked` flag being set", "to true can serve as a gated verification-method for custom-instruction rewards." ], "accounts": [ { "name": "authority", "isMut": false, "isSigner": true }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "user", "isMut": false, "isSigner": false }, { "name": "playerAccount", "isMut": false, "isSigner": false }, { "name": "playerScores", "isMut": false, "isSigner": false }, { "name": "leaderboard", "isMut": false, "isSigner": false }, { "name": "game", "isMut": false, "isSigner": false }, { "name": "achievement", "isMut": false, "isSigner": false }, { "name": "playerAchievement", "isMut": true, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "addFtReward", "docs": [ "Add a fungible token [Reward] to an [Achievement] to mint to users on unlock.", "", "Overwrites the current reward if one exists." ], "accounts": [ { "name": "authority", "isMut": false, "isSigner": true }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "game", "isMut": false, "isSigner": false }, { "name": "achievement", "isMut": true, "isSigner": false }, { "name": "newReward", "isMut": true, "isSigner": true }, { "name": "rewardTokenMint", "isMut": false, "isSigner": false }, { "name": "delegateFromTokenAccount", "isMut": true, "isSigner": false }, { "name": "tokenAccountOwner", "isMut": false, "isSigner": true }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "input", "type": { "defined": "AddNewRewardInput" } } ] }, { "name": "addNftReward", "docs": [ "Add a nft [Reward] to an [Achievement] to mint to users on unlock.", "", "Overwrites the current reward if one exists." ], "accounts": [ { "name": "authority", "isMut": false, "isSigner": true }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "game", "isMut": false, "isSigner": false }, { "name": "achievement", "isMut": true, "isSigner": false }, { "name": "newReward", "isMut": true, "isSigner": true }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "rewardCollectionMint", "isMut": false, "isSigner": false, "isOptional": true }, { "name": "collectionUpdateAuth", "isMut": false, "isSigner": true, "isOptional": true }, { "name": "collectionMetadata", "isMut": true, "isSigner": false, "isOptional": true }, { "name": "tokenMetadataProgram", "isMut": false, "isSigner": false, "isOptional": true } ], "args": [ { "name": "input", "type": { "defined": "AddNewRewardInput" } } ] }, { "name": "claimFtReward", "docs": [ "Mint an NFT reward for unlocking a [PlayerAchievement] account.", "", "Relevant `ONLY` if an FT reward is specified for that achievement." ], "accounts": [ { "name": "user", "isMut": false, "isSigner": false }, { "name": "authority", "isMut": false, "isSigner": true }, { "name": "game", "isMut": false, "isSigner": false }, { "name": "achievement", "isMut": false, "isSigner": false }, { "name": "reward", "isMut": true, "isSigner": false }, { "name": "playerAccount", "isMut": false, "isSigner": false }, { "name": "playerAchievement", "isMut": true, "isSigner": false }, { "name": "sourceTokenAccount", "isMut": true, "isSigner": false }, { "name": "userTokenAccount", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "claimNftReward", "docs": [ "Mint an NFT reward for unlocking a [PlayerAchievement] account.", "", "Relevant `ONLY` if an NFT reward is specified for that achievement." ], "accounts": [ { "name": "user", "isMut": false, "isSigner": false }, { "name": "authority", "isMut": false, "isSigner": true }, { "name": "game", "isMut": false, "isSigner": false }, { "name": "payer", "isMut": true, "isSigner": true }, { "name": "achievement", "isMut": false, "isSigner": false }, { "name": "reward", "isMut": true, "isSigner": false }, { "name": "playerAccount", "isMut": false, "isSigner": false }, { "name": "playerAchievement", "isMut": true, "isSigner": false }, { "name": "claim", "isMut": true, "isSigner": false }, { "name": "newMint", "isMut": true, "isSigner": true }, { "name": "newMetadata", "isMut": true, "isSigner": false }, { "name": "newMasterEdition", "isMut": true, "isSigner": false }, { "name": "mintTo", "isMut": true, "isSigner": false }, { "name": "tokenMetadataProgram", "isMut": false, "isSigner": false }, { "name": "associatedTokenProgram", "isMut": false, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "rent", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "verifyNftReward", "docs": [ "Verify NFT reward as belonging to a particular collection.", "", "Optional: Only relevant if an NFT reward is specified and the reward's", "`collection_mint` is Some(...)" ], "accounts": [ { "name": "payer", "isMut": true, "isSigner": true }, { "name": "game", "isMut": false, "isSigner": false }, { "name": "achievement", "isMut": false, "isSigner": false }, { "name": "reward", "isMut": false, "isSigner": false }, { "name": "user", "isMut": false, "isSigner": true }, { "name": "playerAccount", "isMut": false, "isSigner": false }, { "name": "claim", "isMut": false, "isSigner": false }, { "name": "playerAchievement", "isMut": false, "isSigner": false }, { "name": "mint", "isMut": false, "isSigner": false }, { "name": "metadataToVerify", "isMut": true, "isSigner": false }, { "name": "collectionMint", "isMut": false, "isSigner": false }, { "name": "collectionMetadata", "isMut": true, "isSigner": false }, { "name": "collectionEdition", "isMut": false, "isSigner": false }, { "name": "tokenMetadataProgram", "isMut": false, "isSigner": false } ], "args": [] } ], "accounts": [ { "name": "Achievement", "docs": [ "Represents an achievement(with optional rewards) for this game", "that can be attained by players.", "", "PDA with seeds = `[b\"achievement\", game.key().as_ref(), &id.to_le_bytes()]`", "", "`id` is an incrementing index stored in the game account." ], "type": { "kind": "struct", "fields": [ { "name": "game", "docs": [ "Public key of the game account this achievement is derived from." ], "type": "publicKey" }, { "name": "id", "docs": [ "The achievement_count of the game account when this account was", "created, also used as a seed for its PDA." ], "type": "u64" }, { "name": "title", "docs": [ "Achievement title." ], "type": "string" }, { "name": "description", "docs": [ "Achievement description." ], "type": "string" }, { "name": "nftMeta", "docs": [ "Public key of a nft metadata account describing this achievement." ], "type": "publicKey" }, { "name": "reward", "docs": [ "Optional: Specify a reward to players for unlocking this achievement." ], "type": { "option": "publicKey" } } ] } }, { "name": "Game", "docs": [ "An account representing a single game." ], "type": { "kind": "struct", "fields": [ { "name": "meta", "docs": [ "Game meta-information." ], "type": { "defined": "GameAttributes" } }, { "name": "leaderboardCount", "docs": [ "Number of leaderboards this game has created. Used both", "in determining the most recent leaderboard address, and", "as a seed for the next leaderboard." ], "type": "u64" }, { "name": "achievementCount", "docs": [ "Number of achievements that exist for this game. Also", "used to determine the u64 seed for the next achievement." ], "type": "u64" }, { "name": "auth", "docs": [ "A collection of pubkeys which each represent a valid", "authority for this game." ], "type": { "vec": "publicKey" } } ] } }, { "name": "LeaderBoard", "docs": [ "Represents a [Game][super::Game]'s leaderboard.", "", "Seeds: `[b\"leaderboard\", game.key().as_ref(), &id.to_le_bytes()]`" ], "type": { "kind": "struct", "fields": [ { "name": "id", "docs": [ "The leaderboard's id, used in deriving its address from the game." ], "type": "u64" }, { "name": "game", "docs": [ "The game this leaderboard belongs to and is derived from." ], "type": "publicKey" }, { "name": "description", "docs": [ "Leaderboard description." ], "type": "string" }, { "name": "nftMeta", "docs": [ "Pubkey of an nft metadata account that describes this leaderboard." ], "type": "publicKey" }, { "name": "decimals", "docs": [ "Used to contextualize scores for this leaderboard." ], "type": "u8" }, { "name": "minScore", "docs": [ "Minimum possible score for this leaderboard." ], "type": "u64" }, { "name": "maxScore", "docs": [ "Maximum possible score for this leaderboard." ], "type": "u64" }, { "name": "topEntries", "docs": [ "Top [entries](ScoreEntry) for a leaderboard." ], "type": { "option": "publicKey" } } ] } }, { "name": "Merged", "docs": [ "An account that represents a single user's ownership of", "multiple [Player][super::Player] accounts." ], "type": { "kind": "struct", "fields": [ { "name": "initiator", "docs": [ "The user that initialized this merge." ], "type": "publicKey" }, { "name": "approvals", "docs": [ "Details of all the player accounts to be merged with the main_user's." ], "type": { "vec": { "defined": "MergeApproval" } } }, { "name": "mergeComplete", "docs": [ "Set to true when every user in `others` has registered their approval." ], "type": "bool" } ] } }, { "name": "PlayerAchievement", "docs": [ "Represents a player's status for a particular [Achievement](super::Achievement).", "", "Seeds = `[b\"player-achievement\", player.key().as_ref(), achievement.key().as_ref()]`." ], "type": { "kind": "struct", "fields": [ { "name": "playerAccount", "docs": [ "The user's [player][super::Player] account." ], "type": "publicKey" }, { "name": "achievement", "docs": [ "The key of the achievement unlocked for this player." ], "type": "publicKey" }, { "name": "timestamp", "docs": [ "Timestamp showing when this achievement was unlocked." ], "type": "i64" }, { "name": "unlocked", "docs": [ "A player's unlock status for this achievement." ], "type": "bool" }, { "name": "claims", "docs": [ "Number of claims a user has for this achievement's reward." ], "type": "u64" }, { "name": "claimed", "docs": [ "Whether or not this player has completely claimed their reward." ], "type": "bool" } ] } }, { "name": "PlayerScoresList", "docs": [ "Holds a list of a [player][super::Player]'s [scores][ScoreEntry])", "for a particular [LeaderBoard].", "", "Seeds: `[b\"player-scores-list\", player_account.key().as_ref(), leaderboard.key().as_ref()]`" ], "type": { "kind": "struct", "fields": [ { "name": "playerAccount", "docs": [ "The player[super::Player] account this entry is derived from" ], "type": "publicKey" }, { "name": "leaderboard", "docs": [ "The leaderboard these scores are for." ], "type": "publicKey" }, { "name": "allocCount", "docs": [ "Max number of [scores][ScoreEntry] the current space allocation supports." ], "type": "u16" }, { "name": "scores", "docs": [ "Collection of [scores][ScoreEntry]." ], "type": { "vec": { "defined": "ScoreEntry" } } } ] } }, { "name": "Player", "docs": [ "An account representing a player.", "", "Seeds: `[b\"player\", user.key().as_ref()]`" ], "type": { "kind": "struct", "fields": [ { "name": "user", "docs": [ "The wallet that owns this player-info account" ], "type": "publicKey" }, { "name": "username", "docs": [ "The player's username." ], "type": "string" }, { "name": "nftMeta", "docs": [ "Metadata to represent this player." ], "type": "publicKey" } ] } }, { "name": "NftClaim", "type": { "kind": "struct", "fields": [] } }, { "name": "Reward", "docs": [ "An account representing a reward for a given achievement." ], "type": { "kind": "struct", "fields": [ { "name": "achievement", "docs": [ "The achievement this reward is given for." ], "type": "publicKey" }, { "name": "available", "docs": [ "Number of available reward spots." ], "type": "u64" }, { "name": "amountPerUser", "docs": [ "Reward amount per user." ], "type": "u64" }, { "name": "reward", "docs": [ "The reward kind. Current supports Nft and Ft rewards only." ], "type": { "defined": "RewardKind" } } ] } }, { "name": "LeaderTopEntries", "docs": [ "Keeps track of a sorted list of top scores for a leaderboard.", "", "Seeds = [b\"top-scores\", leaderboard.key().as_ref()]" ], "type": { "kind": "struct", "fields": [ { "name": "isAscending", "docs": [ "Arrangement order." ], "type": "bool" }, { "name": "topScores", "docs": [ "Top scores." ], "type": { "vec": { "defined": "LeaderBoardScore" } } } ] } } ], "types": [ { "name": "GameAttributes", "docs": [ "A type that represents game-specific information." ], "type": { "kind": "struct", "fields": [ { "name": "title", "docs": [ "The title of the game, max length = 30 bytes." ], "type": "string" }, { "name": "description", "docs": [ "The game description, max length = 200 bytes." ], "type": "string" }, { "name": "genre", "docs": [ "The game's [genre](super::Genre), as a u8." ], "type": "u8" }, { "name": "gameType", "docs": [ "The game's [type](super::GameType), as a u8." ], "type": "u8" }, { "name": "nftMeta", "docs": [ "An nft metadata account describing the game." ], "type": "publicKey" } ] } }, { "name": "ScoreEntry", "docs": [ "A single score entry for a player." ], "type": { "kind": "struct", "fields": [ { "name": "score", "docs": [ "The player's score." ], "type": "u64" }, { "name": "timestamp", "docs": [ "When this entry was made." ], "type": "i64" } ] } }, { "name": "MergeApproval", "docs": [ "Represents a [Player][super::Player] account involved in a merge", "and if that account's user/authority has granted approval." ], "type": { "kind": "struct", "fields": [ { "name": "key", "docs": [ "The player_account pubkey." ], "type": "publicKey" }, { "name": "approved", "docs": [ "User's approval status." ], "type": "bool" } ] } }, { "name": "LeaderBoardScore", "docs": [ "An single entry to a [LeaderTopEntries]." ], "type": { "kind": "struct", "fields": [ { "name": "user", "docs": [ "The user." ], "type": "publicKey" }, { "name": "entry", "docs": [ "The user's [score][super::ScoreEntry]." ], "type": { "defined": "ScoreEntry" } } ] } }, { "name": "RegisterLeaderBoardInput", "docs": [ "Parameters needed when registering a leaderboard." ], "type": { "kind": "struct", "fields": [ { "name": "description", "docs": [ "Leaderboard description." ], "type": "string" }, { "name": "nftMeta", "docs": [ "Nft metadata representing the leaderboard." ], "type": "publicKey" }, { "name": "decimals", "docs": [ "Specify the decimals score values are represented in. Defaults to `0` if [None]." ], "type": { "option": "u8" } }, { "name": "minScore", "docs": [ "Specifies minimum allowed score. Defaults to `u64::MIN` if [None]." ], "type": { "option": "u64" } }, { "name": "maxScore", "docs": [ "Specifies maximum allowed score. Defaults to `u64::MAX` if [None]." ], "type": { "option": "u64" } }, { "name": "scoresToRetain", "docs": [ "Number of top scores to store on-chain." ], "type": "u8" }, { "name": "scoresOrder", "docs": [ "Order by which scores are stored. `true` for ascending, `false` for descending." ], "type": "bool" } ] } }, { "name": "AddNewRewardInput", "docs": [ "Input to add a new reward for an achievement." ], "type": { "kind": "struct", "fields": [ { "name": "amountPerUser", "docs": [ "Rewards given per user." ], "type": "u64" }, { "name": "availableRewards", "docs": [ "Number of reward spots." ], "type": "u64" }, { "name": "kind", "docs": [ "Specific reward kind." ], "type": { "defined": "RewardKindInput" } } ] } }, { "name": "GameType", "type": { "kind": "enum", "variants": [ { "name": "Mobile" }, { "name": "Desktop" }, { "name": "Web" }, { "name": "Unspecified" } ] } }, { "name": "Genre", "type": { "kind": "enum", "variants": [ { "name": "Rpg" }, { "name": "Mmo" }, { "name": "Action" }, { "name": "Adventure" }, { "name": "Puzzle" }, { "name": "Casual" }, { "name": "Unspecified" } ] } }, { "name": "RewardKind", "docs": [ "The kind of reward to be given out." ], "type": { "kind": "enum", "variants": [ { "name": "FungibleToken", "fields": [ { "name": "mint", "docs": [ "The mint of the token to be given out." ], "type": "publicKey" }, { "name": "account", "docs": [ "The token account to withdraw from." ], "type": "publicKey" } ] }, { "name": "NonFungibleToken", "fields": [ { "name": "uri", "docs": [ "URI of the NFT to be minted." ], "type": "string" }, { "name": "name", "docs": [ "Name of the NFT to be minted." ], "type": "string" }, { "name": "symbol", "docs": [ "Symbol of the NFT to be minted." ], "type": "string" }, { "name": "minted", "docs": [ "Total NFTs minted so far." ], "type": "u64" }, { "name": "collection", "docs": [ "Optional field for a collection mint used for", "verifying minted rewards." ], "type": { "option": "publicKey" } } ] } ] } }, { "name": "RewardKindInput", "docs": [ "Specific variant of [AddNewRewardInput]." ], "type": { "kind": "enum", "variants": [ { "name": "Ft", "fields": [ { "name": "deposit", "docs": [ "Amount to be delegated to this program's PDA", "so it can spend for reward claims." ], "type": "u64" } ] }, { "name": "Nft", "fields": [ { "name": "uri", "docs": [ "Uri of the minted nft." ], "type": "string" }, { "name": "name", "docs": [ "Name of the minted nft." ], "type": "string" }, { "name": "symbol", "docs": [ "Symbol of the minted nft." ], "type": "string" } ] } ] } } ], "errors": [ { "code": 6000, "name": "InvalidFieldLength", "msg": "Exceeded max length for field." }, { "code": 6001, "name": "InvalidAuthority", "msg": "Invalid authority for instruction" }, { "code": 6002, "name": "MissingSignature", "msg": "An expected signature isn't present" }, { "code": 6003, "name": "NoRewardForAchievement", "msg": "Reward not specified for this achievement" }, { "code": 6004, "name": "AccountNotPartOfMerge", "msg": "The merge account does not include this player account" }, { "code": 6005, "name": "ScoreNotWithinBounds", "msg": "Tried to input score that is below the minimum or above the maximum" }, { "code": 6006, "name": "MissingExpectedAccount", "msg": "An optional but expected account is missing" }, { "code": 6007, "name": "MissingRequiredAccountsForFtReward", "msg": "An account required for setting up this reward kind is missing" }, { "code": 6008, "name": "MissingRequiredAccountsForNftReward", "msg": "An account required for setting up this reward kind is missing" }, { "code": 6009, "name": "NoAvailableRewards", "msg": "No more rewards are being given out for this game" }, { "code": 6010, "name": "FullyClaimedReward", "msg": "This user has fully claimed their reward" }, { "code": 6011, "name": "PlayerAchievementLocked", "msg": "This player has not yet unlocked this achievement" } ], "metadata": { "address": "SoarmxsvnGcQzLGaiue8mVTko7uuEfTY5zwdKKCnQDU" } }