{"address":"HotPeqmeyErto6PKfAZyVYCSajWRwWUbGno7McWGdihi","metadata":{"name":"potato","version":"0.1.0","spec":"0.1.0","description":"Hot Potato Pad: the potato jumps to whoever buys through the pad; holders earn the coin's fees per second held, the final stretch splits the jackpot"},"instructions":[{"name":"accept_admin","discriminator":[112,42,45,90,116,181,13,170],"accounts":[{"name":"proposed","signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[99,111,110,102,105,103]}]}}],"args":[]},{"name":"claim_fees","docs":["Pays a seat's earned holder fees to its wallet. First pump collect_creator_fee into the Oven, then","book (audit P-L-1: the booking window only ever moves together with a collect, so fees that","accrued during a hold are booked over a window that contains it) and, when the wallet is the","current holder, moves his running credit to the seat (no seconds / weight are accounted here).","Anyone can push it; it can only go to the seat's wallet.","remaining_accounts = [oven, creator_vault, system, event_authority, pump]."],"discriminator":[82,251,233,156,12,52,184,202],"accounts":[{"name":"caller","signer":true},{"name":"potato","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,111,116,97,116,111]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"seat","writable":true,"pda":{"seeds":[{"kind":"const","value":[115,101,97,116]},{"kind":"account","path":"potato.mint","account":"Potato"},{"kind":"account","path":"seat.wallet","account":"Seat"}]}},{"name":"wallet","writable":true},{"name":"oven","writable":true,"pda":{"seeds":[{"kind":"const","value":[111,118,101,110]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"claim_jackpot","docs":["After the serve: pays a seat its jackpot share, weight / divisor of the jackpot tokens (once)","and of the jackpot SOL (cumulative: fees keep flowing into the jackpot after the serve, so the","seat can claim again later). Weight = the seat's ramp-weighted potato-seconds, divisor = the","total frozen at the serve. Books the Oven first (after the serve the holder share is jackpot, so","the booking window does not matter). Anyone can push it; it can only go to the wallet. If the","SOL part is below the rent floor of an empty wallet it stays due (tokens are still paid)."],"discriminator":[28,214,134,248,249,81,206,198],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"potato","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,111,116,97,116,111]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"seat","writable":true,"pda":{"seeds":[{"kind":"const","value":[115,101,97,116]},{"kind":"account","path":"potato.mint","account":"Potato"},{"kind":"account","path":"seat.wallet","account":"Seat"}]}},{"name":"wallet","writable":true},{"name":"wallet_ata","writable":true},{"name":"oven","writable":true,"pda":{"seeds":[{"kind":"const","value":[111,118,101,110]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"oven_ata","writable":true},{"name":"mint"},{"name":"token_program"},{"name":"ata_program","address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"claim_orphan_jackpot","docs":["MODE_CREATOR only (nobody held the potato for a live second before the serve): the whole jackpot","(tokens once, SOL cumulative) goes to the coin's creator, who paid the jackpot seed. Anyone can","push it."],"discriminator":[99,245,169,222,66,145,51,28],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"potato","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,111,116,97,116,111]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"creator","writable":true},{"name":"creator_ata","writable":true},{"name":"oven","writable":true,"pda":{"seeds":[{"kind":"const","value":[111,118,101,110]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"oven_ata","writable":true},{"name":"mint"},{"name":"token_program"},{"name":"ata_program","address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"collect_treasury","docs":["Pays the treasury share booked for this coin to config.treasury. Anyone can push it."],"discriminator":[48,255,226,214,221,81,222,65],"accounts":[{"name":"caller","signer":true},{"name":"config","pda":{"seeds":[{"kind":"const","value":[99,111,110,102,105,103]}]}},{"name":"potato","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,111,116,97,116,111]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"oven","writable":true,"pda":{"seeds":[{"kind":"const","value":[111,118,101,110]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"treasury","writable":true},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"init_config","discriminator":[23,235,115,232,168,96,1,231],"accounts":[{"name":"admin","writable":true,"signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[99,111,110,102,105,103]}]}},{"name":"treasury"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"params","type":{"defined":{"name":"Params"}}}]},{"name":"launch","docs":["Launches a coin: pump create_v2 (creator = Oven PDA, payer = dev), then ONE pump buy of","jackpot_seed + dev_buy paid by the dev whose tokens land in the Oven's ATA; the dev's part","(dev_buy / (jackpot_seed + dev_buy) of the tokens, same price) is moved to the dev's ATA, the","rest is the jackpot bag. Nobody holds the potato after the launch: the first `take` gets it.","Launch fee floor((jackpot_seed + dev_buy) * launch_fee_bps / 10000) to config.treasury.","Must be the only program instruction of its tx (ComputeBudget / System aside): no snipe right","behind the create. `expected_*` = the fee values the client showed (ParamsChanged otherwise).","remaining_accounts = pump create_v2 accounts (16) + pump buy accounts (16+, user = dev,","associated_user = the Oven's ATA)."],"discriminator":[153,241,93,225,22,69,74,61],"accounts":[{"name":"dev","writable":true,"signer":true},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[99,111,110,102,105,103]}]}},{"name":"treasury","writable":true,"relations":["config"]},{"name":"mint","docs":["Fresh keypair; pump create_v2 creates the mint."],"writable":true,"signer":true},{"name":"potato","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,111,116,97,116,111]},{"kind":"account","path":"mint"}]}},{"name":"oven","writable":true,"pda":{"seeds":[{"kind":"const","value":[111,118,101,110]},{"kind":"account","path":"mint"}]}},{"name":"oven_ata","writable":true},{"name":"dev_ata","writable":true},{"name":"token_program"},{"name":"ata_program","address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"instructions","address":"Sysvar1nstructions1111111111111111111111111"}],"args":[{"name":"name","type":"string"},{"name":"symbol","type":"string"},{"name":"uri","type":"string"},{"name":"jackpot_seed","type":"u64"},{"name":"dev_buy","type":"u64"},{"name":"expected_launch_fee_bps","type":"u16"},{"name":"expected_treasury_bps","type":"u16"}]},{"name":"propose_admin","docs":["Two-step admin handover: the admin proposes (Pubkey::default() cancels), the key accepts."],"discriminator":[121,214,199,212,87,39,117,234],"accounts":[{"name":"admin","signer":true,"relations":["config"]},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[99,111,110,102,105,103]}]}}],"args":[{"name":"proposed","type":"pubkey"}]},{"name":"refresh","docs":["The live holder extends his hold to now + hold_secs with a buy of size >= min(last_take x","refresh_bps, room x room_cap_bps) (size = curve real SOL delta). The tokens are escrowed like a","take's. last_take becomes max(last_take, size): a big refresh raises the bar for the next steal","(still capped by the room left). No new grace. The holder's segment ends at the curve before the","buy; the next one starts after it. Must be the only program instruction of its tx. A refresh that","completes the curve serves.","remaining_accounts = pump buy accounts (16+, user = holder, associated_user = the Oven's ATA)."],"discriminator":[170,155,22,254,147,181,49,161],"accounts":[{"name":"holder","writable":true,"signer":true},{"name":"potato","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,111,116,97,116,111]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"seat","writable":true,"pda":{"seeds":[{"kind":"const","value":[115,101,97,116]},{"kind":"account","path":"potato.mint","account":"Potato"},{"kind":"account","path":"holder"}]}},{"name":"oven","writable":true,"pda":{"seeds":[{"kind":"const","value":[111,118,101,110]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"oven_ata","writable":true},{"name":"instructions","address":"Sysvar1nstructions1111111111111111111111111"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"sol_in","type":"u64"},{"name":"min_tokens_out","type":"u64"}]},{"name":"release","docs":["Sends a seat's escrowed tokens to its wallet (ATA created if needed, paid by the caller). Anyone","can push it; the tokens can only go to the seat's wallet. Locked while the wallet holds the","potato and until cooldown_secs after it lost it (or its hold expired)."],"discriminator":[253,249,15,206,28,127,193,241],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"potato","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,111,116,97,116,111]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"seat","writable":true,"pda":{"seeds":[{"kind":"const","value":[115,101,97,116]},{"kind":"account","path":"potato.mint","account":"Potato"},{"kind":"account","path":"seat.wallet","account":"Seat"}]}},{"name":"wallet"},{"name":"wallet_ata","writable":true},{"name":"oven","pda":{"seeds":[{"kind":"const","value":[111,118,101,110]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"oven_ata","writable":true},{"name":"mint"},{"name":"token_program"},{"name":"ata_program","address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"serve","docs":["Anyone, once the pump curve is complete: collect + book, account the last seconds (up to now or","the hold's expiry, at the rate of the last observation before the completion), move the holder's","credit to his seat (his escrow unlocks cooldown_secs after min(now, expires_at)), freeze the","jackpot divisor. `holder_seat` = the seat of potato.holder (None when nobody holds).","remaining_accounts = [oven, creator_vault, system, event_authority, pump]."],"discriminator":[215,43,127,87,196,220,166,32],"accounts":[{"name":"potato","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,111,116,97,116,111]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"oven","writable":true,"pda":{"seeds":[{"kind":"const","value":[111,118,101,110]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"curve"},{"name":"holder_seat","docs":["The holder's seat (None when nobody holds)."],"writable":true,"optional":true,"pda":{"seeds":[{"kind":"const","value":[115,101,97,116]},{"kind":"account","path":"potato.mint","account":"Potato"},{"kind":"account","path":"potato.holder","account":"Potato"}]}}],"args":[]},{"name":"set_paused","docs":["Pause blocks new launches only; takes, refreshes, serves and every claim keep working."],"discriminator":[91,60,125,192,176,225,166,218],"accounts":[{"name":"admin","signer":true,"relations":["config"]},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[99,111,110,102,105,103]}]}}],"args":[{"name":"paused","type":"bool"}]},{"name":"set_treasury","docs":["The treasury receives launch fees and the treasury share of creator fees (only through","`collect_treasury`). It must not be the default key or an executable account (either would","make every launch fail)."],"discriminator":[57,97,196,95,195,206,106,136],"accounts":[{"name":"admin","signer":true,"relations":["config"]},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[99,111,110,102,105,103]}]}},{"name":"treasury"}],"args":[]},{"name":"stoke","docs":["Permissionless crank: collect_creator_fee + book; while cooking also closes the holder's current","weight segment at the curve's progress now (and starts the next one there). Holders (and the","keeper) send it when the curve has risen, so the seconds since count at the higher weight, and","before a hold expires, so the fees of the hold are booked inside it. After the serve it only","collects and books (post-migration fees: first PumpSwap `transfer_creator_fees_to_pump`, or","`unwrap_fees` for WSOL collected to the Oven). While cooking it must be the only program","instruction of its tx (no same-tx flash reading of the curve).","remaining_accounts = [oven, creator_vault, system, event_authority, pump]."],"discriminator":[17,241,45,45,218,55,159,70],"accounts":[{"name":"potato","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,111,116,97,116,111]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"oven","writable":true,"pda":{"seeds":[{"kind":"const","value":[111,118,101,110]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"curve"},{"name":"instructions","address":"Sysvar1nstructions1111111111111111111111111"}],"args":[]},{"name":"take","docs":["Takes the potato. Order inside the instruction: collect_creator_fee into the Oven, book (the","outgoing holder is credited for his live seconds since the last booking), account seconds and","weight (the segment ends at the curve as it is BEFORE this buy), move the outgoing holder's credit","to his seat (his escrow unlocks cooldown_secs after he lost the potato or his hold expired), the","pump buy (payer = taker, tokens into the Oven's ATA, escrowed for the taker), then the ladder:","unless the buy completed the curve, the price (`price_now` before the buy: the ladder capped at","room_cap_bps of the room left) must be <= `max_required` (front-run guard: PriceMoved) and the","size (curve real SOL delta) >= the price (TakeTooSmall). The taker's segment starts at the curve","progress after his buy. A take that completes the curve serves the potato in the same instruction.","Must be the only program instruction of its tx (ComputeBudget / System aside).","`prev_seat` = the seat of potato.holder when someone else holds it (live or expired), else None.","remaining_accounts = pump buy accounts (16+, user = taker, associated_user = the Oven's ATA)."],"discriminator":[149,226,52,104,6,142,230,39],"accounts":[{"name":"taker","writable":true,"signer":true},{"name":"potato","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,111,116,97,116,111]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"seat","writable":true,"pda":{"seeds":[{"kind":"const","value":[115,101,97,116]},{"kind":"account","path":"potato.mint","account":"Potato"},{"kind":"account","path":"taker"}]}},{"name":"prev_seat","docs":["The current holder's seat (live or expired); None when nobody holds or the taker is the holder."],"writable":true,"optional":true,"pda":{"seeds":[{"kind":"const","value":[115,101,97,116]},{"kind":"account","path":"potato.mint","account":"Potato"},{"kind":"account","path":"potato.holder","account":"Potato"}]}},{"name":"oven","writable":true,"pda":{"seeds":[{"kind":"const","value":[111,118,101,110]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"oven_ata","writable":true},{"name":"instructions","address":"Sysvar1nstructions1111111111111111111111111"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"sol_in","type":"u64"},{"name":"max_required","type":"u64"},{"name":"min_tokens_out","type":"u64"}]},{"name":"unwrap_fees","docs":["Closes a WSOL account owned by the Oven (PumpSwap creator fees that anyone collected as WSOL","to it, audit M-2) so the lamports land in the Oven, where `book` counts them. Anyone."],"discriminator":[202,112,56,154,193,85,127,150],"accounts":[{"name":"potato","pda":{"seeds":[{"kind":"const","value":[112,111,116,97,116,111]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"oven","writable":true,"pda":{"seeds":[{"kind":"const","value":[111,118,101,110]},{"kind":"account","path":"potato.mint","account":"Potato"}]}},{"name":"wsol_ata","writable":true},{"name":"token_program","address":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"}],"args":[]},{"name":"update_config","docs":["New params apply to coins launched from now on; every existing Potato keeps its copy."],"discriminator":[29,158,252,191,10,83,219,99],"accounts":[{"name":"admin","signer":true,"relations":["config"]},{"name":"config","writable":true,"pda":{"seeds":[{"kind":"const","value":[99,111,110,102,105,103]}]}}],"args":[{"name":"params","type":{"defined":{"name":"Params"}}}]}],"accounts":[{"name":"Config","discriminator":[155,12,170,224,30,250,204,130]},{"name":"Potato","discriminator":[71,19,212,66,1,214,16,238]},{"name":"Seat","discriminator":[90,228,22,90,162,86,173,26]}],"events":[{"name":"AdminProposed","discriminator":[129,249,226,227,199,82,110,243]},{"name":"AdminSet","discriminator":[157,245,205,226,118,125,183,97]},{"name":"ConfigInitialized","discriminator":[181,49,200,156,19,167,178,91]},{"name":"ConfigUpdated","discriminator":[40,241,230,122,11,19,198,194]},{"name":"FeesBooked","discriminator":[87,243,16,153,199,25,153,251]},{"name":"FeesClaimed","discriminator":[22,104,110,222,38,157,14,62]},{"name":"FeesUnwrapped","discriminator":[146,111,114,101,19,203,134,142]},{"name":"JackpotClaimed","discriminator":[141,206,247,184,235,71,241,231]},{"name":"Launched","discriminator":[209,127,29,152,129,212,189,183]},{"name":"PausedSet","discriminator":[171,125,127,156,233,81,68,66]},{"name":"Refreshed","discriminator":[23,132,236,37,32,128,128,175]},{"name":"Released","discriminator":[232,229,255,136,101,189,15,220]},{"name":"Served","discriminator":[132,193,235,233,161,212,6,48]},{"name":"Stoked","discriminator":[254,69,112,59,35,119,106,8]},{"name":"Taken","discriminator":[201,248,248,128,170,80,234,249]},{"name":"TreasuryPaid","discriminator":[203,141,198,183,132,74,239,248]},{"name":"TreasurySet","discriminator":[69,231,163,135,254,194,109,166]}],"errors":[{"code":6000,"name":"Paused","msg":"New launches are paused"},{"code":6001,"name":"Unauthorized","msg":"Only the admin can do this"},{"code":6002,"name":"BadName","msg":"Coin name must be 1-32 bytes, no control, invisible or bidi characters, no edge spaces"},{"code":6003,"name":"BadSymbol","msg":"Ticker must be 1-10 bytes, no spaces, control, invisible or bidi characters"},{"code":6004,"name":"BadUri","msg":"Metadata uri must be ipfs://<cid> or https://ipfs.io/ipfs/<cid>"},{"code":6005,"name":"BadConfig","msg":"A parameter is out of its allowed range"},{"code":6006,"name":"ParamsChanged","msg":"The launch fee or the treasury share changed since the page was loaded: reload and try again"},{"code":6007,"name":"NotAlone","msg":"This action must be the only program instruction of its transaction (compute budget and system only)"},{"code":6008,"name":"BadAccounts","msg":"Wrong accounts"},{"code":6009,"name":"Math","msg":"Math overflow"},{"code":6010,"name":"SeedOutOfRange","msg":"Jackpot seed is outside the allowed range (default 0.2 - 1 SOL)"},{"code":6011,"name":"DevBuyTooLarge","msg":"Jackpot seed plus dev buy is more than the curve can take"},{"code":6012,"name":"NothingBought","msg":"The buy returned no tokens"},{"code":6013,"name":"AlreadyServed","msg":"The potato is served: the curve is complete"},{"code":6014,"name":"CurveComplete","msg":"The curve is complete: serve the potato"},{"code":6015,"name":"NotComplete","msg":"The curve is not complete yet: the potato is still cooking"},{"code":6016,"name":"UseRefresh","msg":"You already hold the potato: refresh it instead"},{"code":6017,"name":"PriceMoved","msg":"Someone took the potato first: the price is now above your max, check the new price"},{"code":6018,"name":"TakeTooSmall","msg":"Fuse still burning: buy at least the current price (1.1x the last take, 2x in the first minute after it, never more than the capped share, default half, of what is left on the curve) to steal the potato"},{"code":6019,"name":"NotHolder","msg":"Only the potato holder can refresh"},{"code":6020,"name":"HoldExpired","msg":"Your hold expired: take the potato again"},{"code":6021,"name":"RefreshTooSmall","msg":"A refresh must buy at least 50% of the last take (or the capped share, default half, of what is left on the curve, if that is less)"},{"code":6022,"name":"SlippageExceeded","msg":"Fewer tokens than your minimum: the price moved"},{"code":6023,"name":"PrevSeatMissing","msg":"Pass the seat of the current potato holder (and none when nobody holds it)"},{"code":6024,"name":"StillLocked","msg":"Tokens stay locked while you hold the potato and for the cooldown after you lose it"},{"code":6025,"name":"NothingToRelease","msg":"Nothing to release"},{"code":6026,"name":"NothingToClaim","msg":"Nothing to claim"},{"code":6027,"name":"BelowRentFloor","msg":"Payout is below the rent floor of an empty wallet: it stays claimable, fund the wallet or wait"},{"code":6028,"name":"WrongTreasury","msg":"The treasury account is not config.treasury"},{"code":6029,"name":"BadTreasury","msg":"The treasury cannot be the default key or a program"},{"code":6030,"name":"NotServed","msg":"The potato is not served yet"},{"code":6031,"name":"NoJackpotShare","msg":"This wallet held no live potato-seconds"},{"code":6032,"name":"OrphanJackpot","msg":"Nobody held the potato: the jackpot goes to the creator (claim_orphan_jackpot)"},{"code":6033,"name":"NotOrphan","msg":"The jackpot has holders: claim it per seat"}],"types":[{"name":"AdminProposed","type":{"kind":"struct","fields":[{"name":"current","type":"pubkey"},{"name":"proposed","type":"pubkey"}]}},{"name":"AdminSet","type":{"kind":"struct","fields":[{"name":"old","type":"pubkey"},{"name":"admin","type":"pubkey"}]}},{"name":"Config","type":{"kind":"struct","fields":[{"name":"admin","type":"pubkey"},{"name":"pending_admin","docs":["Proposed admin (default = none); becomes admin when it signs `accept_admin`."],"type":"pubkey"},{"name":"treasury","type":"pubkey"},{"name":"paused","type":"bool"},{"name":"coins","type":"u64"},{"name":"params","type":{"defined":{"name":"Params"}}},{"name":"bump","type":"u8"}]}},{"name":"ConfigInitialized","type":{"kind":"struct","fields":[{"name":"admin","type":"pubkey"},{"name":"treasury","type":"pubkey"},{"name":"params","type":{"defined":{"name":"Params"}}}]}},{"name":"ConfigUpdated","type":{"kind":"struct","fields":[{"name":"params","type":{"defined":{"name":"Params"}}}]}},{"name":"FeesBooked","type":{"kind":"struct","fields":[{"name":"mint","type":"pubkey"},{"name":"incoming","type":"u64"},{"name":"holder","type":"pubkey"},{"name":"holder_share","type":"u64"},{"name":"jackpot_share","type":"u64"},{"name":"treasury_share","type":"u64"},{"name":"jackpot_sol","type":"u64"},{"name":"fees_total","type":"u64"},{"name":"at","type":"i64"}]}},{"name":"FeesClaimed","type":{"kind":"struct","fields":[{"name":"mint","type":"pubkey"},{"name":"wallet","type":"pubkey"},{"name":"amount","type":"u64"},{"name":"earned","type":"u64"},{"name":"at","type":"i64"}]}},{"name":"FeesUnwrapped","type":{"kind":"struct","fields":[{"name":"mint","type":"pubkey"},{"name":"amount","type":"u64"}]}},{"name":"JackpotClaimed","type":{"kind":"struct","fields":[{"name":"mint","type":"pubkey"},{"name":"wallet","type":"pubkey"},{"name":"sol","type":"u64"},{"name":"tokens","type":"u64"},{"name":"weight","type":"u64"},{"name":"divisor","type":"u64"},{"name":"sol_deferred","type":"u64"},{"name":"at","type":"i64"}]}},{"name":"Launched","type":{"kind":"struct","fields":[{"name":"mint","type":"pubkey"},{"name":"creator","type":"pubkey"},{"name":"name","type":"string"},{"name":"symbol","type":"string"},{"name":"uri","type":"string"},{"name":"jackpot_seed","type":"u64"},{"name":"dev_buy","type":"u64"},{"name":"launch_fee","type":"u64"},{"name":"tokens","type":"u64"},{"name":"jackpot_tokens","type":"u64"},{"name":"dev_tokens","type":"u64"},{"name":"rtok_start","type":"u64"},{"name":"ramp_line","type":"u64"},{"name":"at","type":"i64"}]}},{"name":"Params","type":{"kind":"struct","fields":[{"name":"launch_fee_bps","docs":["Platform launch fee in bps of jackpot_seed + dev_buy, paid on top to config.treasury. <= 500."],"type":"u16"},{"name":"holder_bps","docs":["Creator fee split (sum 10000): holder >= 3000, jackpot >= 2000, treasury <= 2000."],"type":"u16"},{"name":"jackpot_bps","type":"u16"},{"name":"treasury_bps","type":"u16"},{"name":"min_take","docs":["Smallest take (curve real SOL delta), also the price when nobody holds / the hold expired."],"type":"u64"},{"name":"step_bps","docs":["Next take >= last x step_bps (10100..20000); inside the grace window >= last x grace_bps","(step..50000); refresh >= last x refresh_bps (1000..10000)."],"type":"u16"},{"name":"grace_bps","type":"u16"},{"name":"refresh_bps","type":"u16"},{"name":"ramp_bps","docs":["The weight ramp starts at this curve progress (sold / real tokens at launch), 5000..9500: a live","second weighs 1 below it and up to 1 + RAMP_SCALE at 100% (`ramp_weight`)."],"type":"u16"},{"name":"room_cap_bps","docs":["The take / refresh price is capped at this share of the room left on the curve, 1000..9000","(< 100%, so a steal that does not complete the curve always exists)."],"type":"u16"},{"name":"grace_secs","type":"i64"},{"name":"hold_secs","type":"i64"},{"name":"cooldown_secs","type":"i64"},{"name":"jackpot_seed_min","docs":["Bounds of the jackpot seed a launch must bring (0.05..5 SOL, min <= max)."],"type":"u64"},{"name":"jackpot_seed_max","type":"u64"}]}},{"name":"PausedSet","type":{"kind":"struct","fields":[{"name":"paused","type":"bool"}]}},{"name":"Potato","type":{"kind":"struct","fields":[{"name":"mint","type":"pubkey"},{"name":"creator","docs":["The dev who launched it (paid the jackpot seed; gets an orphan jackpot)."],"type":"pubkey"},{"name":"params","type":{"defined":{"name":"Params"}}},{"name":"state","docs":["COOKING / SERVED"],"type":"u8"},{"name":"launched_at","type":"i64"},{"name":"rtok_start","docs":["Real token reserves right after create_v2, and the weight-ramp line (rtok <= line = inside the ramp)."],"type":"u64"},{"name":"ramp_line","type":"u64"},{"name":"jackpot_seed","type":"u64"},{"name":"dev_buy","type":"u64"},{"name":"launch_fee","type":"u64"},{"name":"dev_tokens","type":"u64"},{"name":"holder","docs":["Current holder (default = nobody). A holder whose hold expired stays here until the next take."],"type":"pubkey"},{"name":"taken_at","type":"i64"},{"name":"expires_at","type":"i64"},{"name":"last_take","docs":["Size (curve real SOL delta) of the last take, raised by a bigger refresh."],"type":"u64"},{"name":"takes","type":"u32"},{"name":"passes","type":"u32"},{"name":"refreshes","type":"u32"},{"name":"volume","docs":["Sum of take / refresh sizes through the pad."],"type":"u64"},{"name":"pend_fees","docs":["The current holder's running credit, moved to his seat on pass / refresh / claim / serve."],"type":"u64"},{"name":"pend_game_secs","type":"u64"},{"name":"pend_weight","type":"u64"},{"name":"seg_at","docs":["Seconds / weight of the current holder are accounted up to this time; the current segment","started at this curve progress (bps)."],"type":"i64"},{"name":"seg_progress","type":"u16"},{"name":"last_book_at","type":"i64"},{"name":"fees_total","type":"u64"},{"name":"holder_booked","type":"u64"},{"name":"holder_paid","type":"u64"},{"name":"jackpot_sol","docs":["Cumulative jackpot SOL booked (grows after the serve too) and paid."],"type":"u64"},{"name":"jackpot_sol_paid","type":"u64"},{"name":"treasury_pending","type":"u64"},{"name":"treasury_paid","type":"u64"},{"name":"jackpot_tokens","type":"u64"},{"name":"jackpot_tokens_paid","type":"u64"},{"name":"escrow_total","type":"u64"},{"name":"weight_total","docs":["Ramp-weighted potato-seconds and plain live seconds of the whole game."],"type":"u64"},{"name":"game_total","type":"u64"},{"name":"served_at","type":"i64"},{"name":"final_holder","type":"pubkey"},{"name":"jackpot_mode","type":"u8"},{"name":"jackpot_weight","docs":["Jackpot divisor fixed at serve: weight_total (MODE_WEIGHT), 0 for MODE_CREATOR."],"type":"u64"},{"name":"bump","type":"u8"},{"name":"oven_bump","type":"u8"}]}},{"name":"Refreshed","type":{"kind":"struct","fields":[{"name":"mint","type":"pubkey"},{"name":"holder","type":"pubkey"},{"name":"sol_in","type":"u64"},{"name":"net","type":"u64"},{"name":"required","type":"u64"},{"name":"room","type":"u64"},{"name":"tokens","type":"u64"},{"name":"expires_at","type":"i64"},{"name":"last_take","type":"u64"},{"name":"rtok","type":"u64"},{"name":"progress_bps","type":"u16"},{"name":"at","type":"i64"}]}},{"name":"Released","type":{"kind":"struct","fields":[{"name":"mint","type":"pubkey"},{"name":"wallet","type":"pubkey"},{"name":"amount","type":"u64"},{"name":"at","type":"i64"}]}},{"name":"Seat","docs":["A wallet's potato history for one coin. Created by its first take (paid by the taker)."],"type":{"kind":"struct","fields":[{"name":"mint","type":"pubkey"},{"name":"wallet","type":"pubkey"},{"name":"escrowed","docs":["Tokens bought by this wallet's takes / refreshes, still in the Oven's ATA."],"type":"u64"},{"name":"unlock_at","docs":["Escrow unlock time after the wallet lost the potato (min(lost_at, expires_at) + cooldown)."],"type":"i64"},{"name":"released","type":"u64"},{"name":"earned","docs":["Holder fees credited / paid."],"type":"u64"},{"name":"claimed","type":"u64"},{"name":"game_secs","docs":["Live potato-seconds held in the whole game, and their ramp weight (the jackpot share)."],"type":"u64"},{"name":"weight","type":"u64"},{"name":"takes","type":"u32"},{"name":"refreshes","type":"u32"},{"name":"spent","type":"u64"},{"name":"tokens_bought","type":"u64"},{"name":"jackpot_sol_paid","type":"u64"},{"name":"jackpot_tokens_paid","type":"u64"},{"name":"bump","type":"u8"}]}},{"name":"Served","type":{"kind":"struct","fields":[{"name":"mint","type":"pubkey"},{"name":"final_holder","type":"pubkey"},{"name":"mode","type":"u8"},{"name":"divisor","type":"u64"},{"name":"game_total","type":"u64"},{"name":"jackpot_sol","type":"u64"},{"name":"jackpot_tokens","type":"u64"},{"name":"at","type":"i64"}]}},{"name":"Stoked","type":{"kind":"struct","fields":[{"name":"mint","type":"pubkey"},{"name":"state","type":"u8"},{"name":"holder","type":"pubkey"},{"name":"rtok","type":"u64"},{"name":"complete","type":"bool"},{"name":"progress_bps","type":"u16"},{"name":"pend_weight","type":"u64"},{"name":"weight_total","type":"u64"},{"name":"at","type":"i64"}]}},{"name":"Taken","docs":["`required` = the price this take had to reach (ladder capped by the room), `room` = the most a take","could add without completing the curve at that moment; `prev_weight` = the ramp weight credited to","the outgoing holder; `progress_bps` = curve progress after the buy (start of the taker's segment)."],"type":{"kind":"struct","fields":[{"name":"mint","type":"pubkey"},{"name":"taker","type":"pubkey"},{"name":"prev_holder","type":"pubkey"},{"name":"sol_in","type":"u64"},{"name":"net","type":"u64"},{"name":"required","type":"u64"},{"name":"room","type":"u64"},{"name":"tokens","type":"u64"},{"name":"takes","type":"u32"},{"name":"passes","type":"u32"},{"name":"expires_at","type":"i64"},{"name":"grace_until","type":"i64"},{"name":"prev_fees","type":"u64"},{"name":"prev_game_secs","type":"u64"},{"name":"prev_weight","type":"u64"},{"name":"rtok","type":"u64"},{"name":"progress_bps","type":"u16"},{"name":"weight_total","type":"u64"},{"name":"at","type":"i64"}]}},{"name":"TreasuryPaid","type":{"kind":"struct","fields":[{"name":"mint","type":"pubkey"},{"name":"treasury","type":"pubkey"},{"name":"amount","type":"u64"},{"name":"at","type":"i64"}]}},{"name":"TreasurySet","type":{"kind":"struct","fields":[{"name":"treasury","type":"pubkey"}]}}]}