{
  "version": "0.1.0",
  "name": "drift_competitions",
  "instructions": [
    {
      "name": "initializeCompetition",
      "accounts": [
        {
          "name": "competition",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sponsor",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "payer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "params",
          "type": {
            "defined": "CompetitionParams"
          }
        }
      ]
    },
    {
      "name": "updateCompetition",
      "accounts": [
        {
          "name": "competition",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sponsor",
          "isMut": false,
          "isSigner": true
        }
      ],
      "args": [
        {
          "name": "params",
          "type": {
            "defined": "UpdateCompetitionParams"
          }
        }
      ]
    },
    {
      "name": "updateSwitchboardFunction",
      "accounts": [
        {
          "name": "sponsor",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "competition",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "competitionAuthority",
          "isMut": false,
          "isSigner": false,
          "docs": [
            "CHECK"
          ]
        },
        {
          "name": "switchboard",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "switchboardState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "switchboardAttestationQueue",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "switchboardFunction",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "switchboardRequest",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "switchboardRequestEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "switchboardMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "updateCompetitorStatus",
      "accounts": [
        {
          "name": "competition",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sponsor",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "competitor",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "driftUserStats",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "newStatus",
          "type": {
            "defined": "CompetitorStatus"
          }
        }
      ]
    },
    {
      "name": "initializeCompetitor",
      "accounts": [
        {
          "name": "competitor",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "competition",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "driftUserStats",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "authority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "payer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "claimEntry",
      "accounts": [
        {
          "name": "authority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "competitor",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "competition",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "driftUserStats",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructions",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "claimMultipleEntries",
      "accounts": [
        {
          "name": "authority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "competitor",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "competition",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "driftUserStats",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "driftState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "spotMarket",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "spotMarketVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "driftProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "entries",
          "type": "u64"
        }
      ]
    },
    {
      "name": "claimWinnings",
      "accounts": [
        {
          "name": "authority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "competitor",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "competition",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "driftUserStats",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "spotMarket",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "insuranceFundVault",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "insuranceFundStake",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "driftProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "competitionAuthority",
          "isMut": false,
          "isSigner": false,
          "docs": [
            "CHECK"
          ]
        },
        {
          "name": "driftTransferConfig",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "CHECK in cpi"
          ]
        },
        {
          "name": "driftState",
          "isMut": false,
          "isSigner": false,
          "docs": [
            "CHECK in cpi"
          ]
        }
      ],
      "args": [
        {
          "name": "nShares",
          "type": {
            "option": "u64"
          }
        }
      ]
    },
    {
      "name": "settleCompetitor",
      "accounts": [
        {
          "name": "keeper",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "competitor",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "competition",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "driftUserStats",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "requestRandomness",
      "accounts": [
        {
          "name": "competition",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "keeper",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "competitionAuthority",
          "isMut": false,
          "isSigner": false,
          "docs": [
            "CHECK"
          ]
        },
        {
          "name": "spotMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "insuranceFundVault",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "switchboard",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "switchboardState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "switchboardAttestationQueue",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "switchboardFunction",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "switchboardRequest",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "switchboardRequestEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "bounty",
          "type": {
            "option": "u64"
          }
        }
      ]
    },
    {
      "name": "receiveRandomness",
      "accounts": [
        {
          "name": "competition",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "spotMarket",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "insuranceFundVault",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "switchboardFunction",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "switchboardRequest",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "enclaveSigner",
          "isMut": false,
          "isSigner": true
        }
      ],
      "args": [
        {
          "name": "winnerRandomness",
          "type": "u128"
        },
        {
          "name": "prizeRandomness",
          "type": "u128"
        }
      ]
    },
    {
      "name": "settleWinner",
      "accounts": [
        {
          "name": "keeper",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "competitor",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "competition",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "driftUserStats",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "spotMarket",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "insuranceFundVault",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    }
  ],
  "accounts": [
    {
      "name": "Competition",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "name",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "sponsorInfo",
            "type": {
              "defined": "SponsorInfo"
            }
          },
          {
            "name": "switchboardFunction",
            "type": "publicKey"
          },
          {
            "name": "switchboardFunctionRequest",
            "type": "publicKey"
          },
          {
            "name": "switchboardFunctionRequestEscrow",
            "type": "publicKey"
          },
          {
            "name": "competitionAuthority",
            "type": "publicKey"
          },
          {
            "name": "numberOfCompetitors",
            "type": "u128"
          },
          {
            "name": "numberOfCompetitorsSettled",
            "type": "u128"
          },
          {
            "name": "totalScoreSettled",
            "type": "u128"
          },
          {
            "name": "maxEntriesPerCompetitor",
            "type": "u128"
          },
          {
            "name": "prizeAmount",
            "type": "u128"
          },
          {
            "name": "prizeAmountSettled",
            "type": "u128"
          },
          {
            "name": "prizeBase",
            "type": "u128"
          },
          {
            "name": "winnerRandomness",
            "type": "u128"
          },
          {
            "name": "prizeRandomness",
            "type": "u128"
          },
          {
            "name": "prizeRandomnessMax",
            "type": "u128"
          },
          {
            "name": "outstandingUnclaimedWinnings",
            "type": "u128"
          },
          {
            "name": "roundNumber",
            "type": "u64"
          },
          {
            "name": "nextRoundExpiryTs",
            "type": "i64"
          },
          {
            "name": "competitionExpiryTs",
            "type": "i64"
          },
          {
            "name": "roundDuration",
            "type": "u64"
          },
          {
            "name": "numberOfWinners",
            "type": "u32"
          },
          {
            "name": "numberOfWinnersSettled",
            "type": "u32"
          },
          {
            "name": "status",
            "type": {
              "defined": "CompetitionRoundStatus"
            }
          },
          {
            "name": "competitionAuthorityBump",
            "type": "u8"
          },
          {
            "name": "padding",
            "type": {
              "array": [
                "u8",
                30
              ]
            }
          }
        ]
      }
    },
    {
      "name": "Competitor",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "authority",
            "type": "publicKey"
          },
          {
            "name": "competition",
            "type": "publicKey"
          },
          {
            "name": "userStats",
            "type": "publicKey"
          },
          {
            "name": "minDraw",
            "type": "u128"
          },
          {
            "name": "maxDraw",
            "type": "u128"
          },
          {
            "name": "unclaimedWinningsBase",
            "type": "u128"
          },
          {
            "name": "unclaimedWinnings",
            "type": "u64"
          },
          {
            "name": "competitionRoundNumber",
            "type": "u64"
          },
          {
            "name": "previousSnapshotScore",
            "type": "u64"
          },
          {
            "name": "latestSnapshotScore",
            "type": "u64"
          },
          {
            "name": "bonusScore",
            "type": "u64"
          },
          {
            "name": "status",
            "type": {
              "defined": "CompetitorStatus"
            }
          },
          {
            "name": "padding",
            "type": {
              "array": [
                "u8",
                31
              ]
            }
          }
        ]
      }
    }
  ],
  "types": [
    {
      "name": "CompetitionParams",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "name",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "nextRoundExpiryTs",
            "type": "i64"
          },
          {
            "name": "competitionExpiryTs",
            "type": "i64"
          },
          {
            "name": "roundDuration",
            "type": "u64"
          },
          {
            "name": "maxEntriesPerCompetitor",
            "type": "u128"
          },
          {
            "name": "minSponsorAmount",
            "type": "u64"
          },
          {
            "name": "maxSponsorFraction",
            "type": "u64"
          },
          {
            "name": "numberOfWinners",
            "type": "u32"
          }
        ]
      }
    },
    {
      "name": "UpdateCompetitionParams",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "nextRoundExpiryTs",
            "type": {
              "option": "i64"
            }
          },
          {
            "name": "competitionExpiryTs",
            "type": {
              "option": "i64"
            }
          },
          {
            "name": "roundDuration",
            "type": {
              "option": "u64"
            }
          },
          {
            "name": "maxEntriesPerCompetitor",
            "type": {
              "option": "u128"
            }
          },
          {
            "name": "minSponsorAmount",
            "type": {
              "option": "u64"
            }
          },
          {
            "name": "maxSponsorFraction",
            "type": {
              "option": "u64"
            }
          },
          {
            "name": "numberOfWinners",
            "type": {
              "option": "u32"
            }
          },
          {
            "name": "resetRoundState",
            "type": {
              "option": "bool"
            }
          }
        ]
      }
    },
    {
      "name": "SponsorInfo",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "sponsor",
            "type": "publicKey"
          },
          {
            "name": "minSponsorAmount",
            "type": "u64"
          },
          {
            "name": "maxSponsorFraction",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "CompetitionRoundStatus",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Active"
          },
          {
            "name": "WinnerAndPrizeRandomnessRequested"
          },
          {
            "name": "WinnerAndPrizeRandomnessComplete"
          },
          {
            "name": "WinnerSettlementComplete"
          },
          {
            "name": "Expired"
          }
        ]
      }
    },
    {
      "name": "CompetitorStatus",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Active"
          },
          {
            "name": "Disqualified"
          }
        ]
      }
    }
  ],
  "events": [
    {
      "name": "CompetitionRoundSummaryRecord",
      "fields": [
        {
          "name": "competition",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "roundNumber",
          "type": "u64",
          "index": false
        },
        {
          "name": "roundStartTs",
          "type": "i64",
          "index": false
        },
        {
          "name": "roundEndTs",
          "type": "i64",
          "index": false
        },
        {
          "name": "prizePlacement",
          "type": "u32",
          "index": false
        },
        {
          "name": "prizeOddsNumerator",
          "type": "u128",
          "index": false
        },
        {
          "name": "prizeRandomness",
          "type": "u128",
          "index": false
        },
        {
          "name": "prizeRandomnessMax",
          "type": "u128",
          "index": false
        },
        {
          "name": "maxPrizeBucketValue",
          "type": "u64",
          "index": false
        },
        {
          "name": "prizeAmount",
          "type": "u128",
          "index": false
        },
        {
          "name": "prizeValue",
          "type": "u64",
          "index": false
        },
        {
          "name": "prizeBase",
          "type": "u128",
          "index": false
        },
        {
          "name": "numberOfWinners",
          "type": "u32",
          "index": false
        },
        {
          "name": "numberOfCompetitorsSettled",
          "type": "u128",
          "index": false
        },
        {
          "name": "totalScoreSettled",
          "type": "u128",
          "index": false
        },
        {
          "name": "insuranceVaultBalance",
          "type": "u64",
          "index": false
        },
        {
          "name": "protocolIfShares",
          "type": "u128",
          "index": false
        },
        {
          "name": "totalIfShares",
          "type": "u128",
          "index": false
        },
        {
          "name": "ts",
          "type": "i64",
          "index": false
        }
      ]
    },
    {
      "name": "CompetitionRoundWinnerRecord",
      "fields": [
        {
          "name": "roundNumber",
          "type": "u64",
          "index": false
        },
        {
          "name": "competitor",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "competition",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "competitorAuthority",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "minDraw",
          "type": "u128",
          "index": false
        },
        {
          "name": "maxDraw",
          "type": "u128",
          "index": false
        },
        {
          "name": "winnerPlacement",
          "type": "u32",
          "index": false
        },
        {
          "name": "numberOfWinners",
          "type": "u32",
          "index": false
        },
        {
          "name": "numberOfCompetitorsSettled",
          "type": "u128",
          "index": false
        },
        {
          "name": "winnerRandomness",
          "type": "u128",
          "index": false
        },
        {
          "name": "totalScoreSettled",
          "type": "u128",
          "index": false
        },
        {
          "name": "prizeRandomness",
          "type": "u128",
          "index": false
        },
        {
          "name": "prizeRandomnessMax",
          "type": "u128",
          "index": false
        },
        {
          "name": "prizeAmount",
          "type": "u128",
          "index": false
        },
        {
          "name": "prizeBase",
          "type": "u128",
          "index": false
        },
        {
          "name": "prizeValue",
          "type": "u64",
          "index": false
        },
        {
          "name": "ts",
          "type": "i64",
          "index": false
        }
      ]
    },
    {
      "name": "CompetitorSettledRecord",
      "fields": [
        {
          "name": "roundNumber",
          "type": "u64",
          "index": false
        },
        {
          "name": "competitor",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "competition",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "competitorAuthority",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "status",
          "type": {
            "defined": "CompetitorStatus"
          },
          "index": false
        },
        {
          "name": "unclaimedWinnings",
          "type": "u64",
          "index": false
        },
        {
          "name": "minDraw",
          "type": "u128",
          "index": false
        },
        {
          "name": "maxDraw",
          "type": "u128",
          "index": false
        },
        {
          "name": "bonusScoreBefore",
          "type": "u64",
          "index": false
        },
        {
          "name": "bonusScoreAfter",
          "type": "u64",
          "index": false
        },
        {
          "name": "previousSnapshotScoreBefore",
          "type": "u64",
          "index": false
        },
        {
          "name": "snapshotScore",
          "type": "u64",
          "index": false
        },
        {
          "name": "ts",
          "type": "i64",
          "index": false
        }
      ]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "Default",
      "msg": "Default"
    },
    {
      "code": 6001,
      "name": "DriftError",
      "msg": "DriftError"
    },
    {
      "code": 6002,
      "name": "CompetitionRoundOngoing",
      "msg": "CompetitionRoundOngoing"
    },
    {
      "code": 6003,
      "name": "CompetitionRoundInSettlementPhase",
      "msg": "CompetitionRoundInSettlementPhase"
    },
    {
      "code": 6004,
      "name": "CompetitionStatusNotActive",
      "msg": "CompetitionStatusNotActive"
    },
    {
      "code": 6005,
      "name": "CompetitionExpired",
      "msg": "CompetitionExpired"
    },
    {
      "code": 6006,
      "name": "InvalidRoundSettlementDetected",
      "msg": "InvalidRoundSettlementDetected"
    },
    {
      "code": 6007,
      "name": "CompetitionWinnerNotDetermined",
      "msg": "CompetitionWinnerNotDetermined"
    },
    {
      "code": 6008,
      "name": "CompetitorHasWrongRoundNumber",
      "msg": "CompetitorHasWrongRoundNumber"
    },
    {
      "code": 6009,
      "name": "CompetitorNotWinner",
      "msg": "CompetitorNotWinner"
    },
    {
      "code": 6010,
      "name": "InvalidStatusUpdateDetected",
      "msg": "InvalidStatusUpdateDetected"
    },
    {
      "code": 6011,
      "name": "InvalidIFRebase",
      "msg": "InvalidIFRebase"
    },
    {
      "code": 6012,
      "name": "CompetitorHasAlreadyClaimedEntry",
      "msg": "CompetitorHasAlreadyClaimedEntry"
    },
    {
      "code": 6013,
      "name": "CompetitorNeedsToRebaseInsuranceFundStake",
      "msg": "CompetitorNeedsToRebaseInsuranceFundStake"
    },
    {
      "code": 6014,
      "name": "CompetitorHasNoUnclaimedWinnings",
      "msg": "CompetitorHasNoUnclaimedWinnings"
    },
    {
      "code": 6015,
      "name": "CompetitionRoundNumberIssue",
      "msg": "CompetitionRoundNumberIssue"
    },
    {
      "code": 6016,
      "name": "CompetitorSnapshotIssue",
      "msg": "CompetitorSnapshotIssue"
    },
    {
      "code": 6017,
      "name": "CompetitorHasInvalidClaim",
      "msg": "CompetitorHasInvalidClaim"
    },
    {
      "code": 6018,
      "name": "CompetitorUpdateInvalid",
      "msg": "CompetitorUpdateInvalid"
    },
    {
      "code": 6019,
      "name": "CompetitionInvariantIssue",
      "msg": "CompetitionInvariantIssue"
    },
    {
      "code": 6020,
      "name": "CompetitorHasPendingInsuranceWithdraw",
      "msg": "CompetitorHasPendingInsuranceWithdraw"
    }
  ],
  "metadata": {
    "address": "DraWMeQX9LfzQQSYoeBwHAgM5JcqFkgrX7GbTfjzVMVL"
  }
}