{"address":"44gAuvd36LqRNNMqDMCvmoJFNm3eoEGGyaHWeyBeQMPW","metadata":{"name":"sospeso_verifier","version":"0.1.3","spec":"0.1.0","description":"Created with Anchor"},"instructions":[{"name":"bridge_pulse","docs":["Stamp the bridge's on-chain pulse: liveness timestamp, cumulative relayed","claims, and reported version. Creates the pulse account on first call.","Only the bridge `authority` may call (enforced via has_one on the bridge)."],"discriminator":[202,236,240,92,217,54,10,179],"accounts":[{"name":"authority","writable":true,"signer":true,"relations":["bridge"]},{"name":"bridge","pda":{"seeds":[{"kind":"const","value":[98,114,105,100,103,101]},{"kind":"account","path":"authority"}]}},{"name":"pulse","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,117,108,115,101]},{"kind":"account","path":"bridge"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"relayed_delta","type":"u64"},{"name":"version","type":"u32"}]},{"name":"claim_sospeso","docs":["A beneficiary (or a relayer paying rent on their behalf) claims `amount`","lamports from the pool. The ClaimReceipt PDA is `init`-ed here, so a","second claim by the same beneficiary fails at account creation -- the","receipt's existence is the double-claim guard.","","Because the Sospeso PDA carries data, lamports cannot leave it through a","System transfer; we move them by directly mutating both accounts'","lamports (the escrow stays above its rent floor since only the","claimable `lamports_remaining` is ever debited)."],"discriminator":[206,175,40,85,52,228,74,31],"accounts":[{"name":"payer","docs":["Pays for the ClaimReceipt rent. May be the beneficiary itself or a","relayer fronting the rent (Octane pattern). Must sign."],"writable":true,"signer":true},{"name":"beneficiary","docs":["The wallet credited with the claimed lamports and bound into the","receipt seeds. Not required to sign (a relayer can claim on its behalf),","but it is the identity the per-beneficiary double-claim guard keys on.","is read from or written to this account."],"writable":true},{"name":"sospeso","writable":true,"pda":{"seeds":[{"kind":"const","value":[115,111,115,112,101,115,111]},{"kind":"account","path":"sospeso.sponsor","account":"Sospeso"},{"kind":"account","path":"sospeso.nonce","account":"Sospeso"}]}},{"name":"claim_receipt","writable":true,"pda":{"seeds":[{"kind":"const","value":[99,108,97,105,109]},{"kind":"account","path":"sospeso"},{"kind":"account","path":"beneficiary"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"amount","type":"u64"}]},{"name":"clear_meta","docs":["Sponsor closes a pool's metadata account, refunding its rent."],"discriminator":[229,58,204,190,138,241,45,180],"accounts":[{"name":"sponsor","writable":true,"signer":true,"relations":["sospeso","meta"]},{"name":"sospeso","pda":{"seeds":[{"kind":"const","value":[115,111,115,112,101,115,111]},{"kind":"account","path":"sospeso.sponsor","account":"Sospeso"},{"kind":"account","path":"sospeso.nonce","account":"Sospeso"}]}},{"name":"meta","writable":true,"pda":{"seeds":[{"kind":"const","value":[109,101,116,97]},{"kind":"account","path":"sospeso"}]}}],"args":[]},{"name":"create_sospeso","docs":["Sponsor opens a sospeso pool and funds it with `amount` lamports.","","The PDA is created rent-exempt; `amount` is transferred on top of rent","via a System Program CPI (sponsor signs). `lamports_total` /","`lamports_remaining` track only the claimable balance (rent stays in the","account forever and is never handed out to beneficiaries)."],"discriminator":[11,202,95,160,0,153,169,34],"accounts":[{"name":"sponsor","writable":true,"signer":true},{"name":"sospeso","writable":true,"pda":{"seeds":[{"kind":"const","value":[115,111,115,112,101,115,111]},{"kind":"account","path":"sponsor"},{"kind":"arg","path":"nonce"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"nonce","type":"u64"},{"name":"amount","type":"u64"},{"name":"max_per_claim","type":"u64"},{"name":"max_claims","type":"u32"},{"name":"expiry_ts","type":"i64"},{"name":"new_wallet_only","type":"bool"}]},{"name":"emit_version","docs":["Emit the live on-chain [`VERSION`] as an event so indexers and clients can","confirm which build is deployed without an RPC account read."],"discriminator":[246,206,44,135,75,38,133,193],"accounts":[{"name":"caller","signer":true}],"args":[]},{"name":"extend_expiry","docs":["Sponsor pushes a pool's expiry further into the future. Only the","`expiry_ts` field is touched -- the account layout is unchanged, so this","is safe for pools created before 0.1.2. The new expiry must be both in","the future and strictly later than the current expiry."],"discriminator":[216,39,141,15,230,100,24,26],"accounts":[{"name":"sponsor","writable":true,"signer":true,"relations":["sospeso"]},{"name":"sospeso","writable":true,"pda":{"seeds":[{"kind":"const","value":[115,111,115,112,101,115,111]},{"kind":"account","path":"sospeso.sponsor","account":"Sospeso"},{"kind":"account","path":"sospeso.nonce","account":"Sospeso"}]}}],"args":[{"name":"new_expiry_ts","type":"i64"}]},{"name":"init_registry","docs":["Initialize the singleton `BarRegistry` aggregate. Permissionless: whoever","calls it becomes the recorded (informational) authority."],"discriminator":[131,22,4,103,24,94,163,239],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"registry","writable":true,"pda":{"seeds":[{"kind":"const","value":[114,101,103,105,115,116,114,121]}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"reclaim","docs":["After expiry, the sponsor reclaims the entire remaining (claimable)","balance. Rent stays in the PDA. Uses direct lamport math for the same","data-bearing-PDA reason as `claim_sospeso`."],"discriminator":[44,177,236,249,145,109,163,186],"accounts":[{"name":"sponsor","writable":true,"signer":true,"relations":["sospeso"]},{"name":"sospeso","writable":true,"pda":{"seeds":[{"kind":"const","value":[115,111,115,112,101,115,111]},{"kind":"account","path":"sospeso.sponsor","account":"Sospeso"},{"kind":"account","path":"sospeso.nonce","account":"Sospeso"}]}}],"args":[]},{"name":"register_bridge","docs":["Register a bridge linking the program to an off-chain service. Creates","the `[b\"bridge\", authority]` PDA, marks it `enabled`, and stamps both","timestamps. All payload fields are fixed-size ascii byte arrays so the","consuming service can decode them at constant offsets."],"discriminator":[111,142,235,236,70,9,5,133],"accounts":[{"name":"authority","writable":true,"signer":true},{"name":"bridge","writable":true,"pda":{"seeds":[{"kind":"const","value":[98,114,105,100,103,101]},{"kind":"account","path":"authority"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"kind","type":{"array":["u8",16]}},{"name":"endpoint","type":{"array":["u8",160]}},{"name":"label","type":{"array":["u8",48]}}]},{"name":"register_pool","docs":["Fold a pool into the registry aggregate for the first time. The `init`-ed","`RegistryEntry` PDA blocks a pool from being counted twice."],"discriminator":[85,229,114,47,75,145,166,100],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"registry","writable":true,"pda":{"seeds":[{"kind":"const","value":[114,101,103,105,115,116,114,121]}]}},{"name":"sospeso","pda":{"seeds":[{"kind":"const","value":[115,111,115,112,101,115,111]},{"kind":"account","path":"sospeso.sponsor","account":"Sospeso"},{"kind":"account","path":"sospeso.nonce","account":"Sospeso"}]}},{"name":"entry","writable":true,"pda":{"seeds":[{"kind":"const","value":[114,101,103,101,110,116,114,121]},{"kind":"account","path":"sospeso"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"revoke_bridge","docs":["Revoke a bridge: close its account and refund the rent to the authority.","Only the bridge `authority` (enforced by `has_one`) may call this."],"discriminator":[218,251,54,121,189,220,6,83],"accounts":[{"name":"authority","writable":true,"signer":true,"relations":["bridge"]},{"name":"bridge","writable":true,"pda":{"seeds":[{"kind":"const","value":[98,114,105,100,103,101]},{"kind":"account","path":"bridge.authority","account":"Bridge"}]}}],"args":[]},{"name":"set_meta","docs":["Sponsor attaches descriptive metadata (label / description / URI /","category) to one of their pools, stored in a dedicated `SospesoMeta`","PDA so the pool account itself is never touched."],"discriminator":[97,58,251,239,141,100,6,81],"accounts":[{"name":"sponsor","writable":true,"signer":true,"relations":["sospeso"]},{"name":"sospeso","pda":{"seeds":[{"kind":"const","value":[115,111,115,112,101,115,111]},{"kind":"account","path":"sospeso.sponsor","account":"Sospeso"},{"kind":"account","path":"sospeso.nonce","account":"Sospeso"}]}},{"name":"meta","writable":true,"pda":{"seeds":[{"kind":"const","value":[109,101,116,97]},{"kind":"account","path":"sospeso"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"label","type":"string"},{"name":"description","type":"string"},{"name":"uri","type":"string"},{"name":"category","type":"u8"}]},{"name":"sync_pool_stats","docs":["Re-sync a registered pool: add the lamports/claims that accrued since the","last record (from top-ups and claims) into the registry aggregate. Deltas","are computed against the entry's recorded values, so re-running is safe","and never double-counts."],"discriminator":[203,167,106,35,108,12,90,181],"accounts":[{"name":"registry","writable":true,"pda":{"seeds":[{"kind":"const","value":[114,101,103,105,115,116,114,121]}]}},{"name":"sospeso","pda":{"seeds":[{"kind":"const","value":[115,111,115,112,101,115,111]},{"kind":"account","path":"sospeso.sponsor","account":"Sospeso"},{"kind":"account","path":"sospeso.nonce","account":"Sospeso"}]}},{"name":"entry","writable":true,"pda":{"seeds":[{"kind":"const","value":[114,101,103,101,110,116,114,121]},{"kind":"account","path":"sospeso"}]}}],"args":[]},{"name":"top_up","docs":["Sponsor adds more lamports to an existing, non-expired pool."],"discriminator":[236,225,96,9,60,106,77,208],"accounts":[{"name":"sponsor","writable":true,"signer":true,"relations":["sospeso"]},{"name":"sospeso","writable":true,"pda":{"seeds":[{"kind":"const","value":[115,111,115,112,101,115,111]},{"kind":"account","path":"sospeso.sponsor","account":"Sospeso"},{"kind":"account","path":"sospeso.nonce","account":"Sospeso"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"amount","type":"u64"}]},{"name":"update_bridge","docs":["Update a bridge's endpoint, label, and enabled flag. The account is","fixed-size, so no reallocation is needed. Only the bridge `authority`","(enforced by `has_one`) may call this."],"discriminator":[63,84,4,143,161,150,74,195],"accounts":[{"name":"authority","writable":true,"signer":true,"relations":["bridge"]},{"name":"bridge","writable":true,"pda":{"seeds":[{"kind":"const","value":[98,114,105,100,103,101]},{"kind":"account","path":"bridge.authority","account":"Bridge"}]}}],"args":[{"name":"endpoint","type":{"array":["u8",160]}},{"name":"label","type":{"array":["u8",48]}},{"name":"enabled","type":"bool"}]},{"name":"update_meta","docs":["Sponsor overwrites an existing pool's metadata. The account is fixed-size","(strings sized at max) so no reallocation is needed."],"discriminator":[160,105,223,206,141,251,3,88],"accounts":[{"name":"sponsor","writable":true,"signer":true,"relations":["sospeso","meta"]},{"name":"sospeso","pda":{"seeds":[{"kind":"const","value":[115,111,115,112,101,115,111]},{"kind":"account","path":"sospeso.sponsor","account":"Sospeso"},{"kind":"account","path":"sospeso.nonce","account":"Sospeso"}]}},{"name":"meta","writable":true,"pda":{"seeds":[{"kind":"const","value":[109,101,116,97]},{"kind":"account","path":"sospeso"}]}}],"args":[{"name":"label","type":"string"},{"name":"description","type":"string"},{"name":"uri","type":"string"},{"name":"category","type":"u8"}]}],"accounts":[{"name":"BarRegistry","discriminator":[133,16,199,210,168,98,64,197]},{"name":"Bridge","discriminator":[231,232,31,98,110,3,23,59]},{"name":"BridgePulse","discriminator":[179,196,53,85,130,129,78,211]},{"name":"ClaimReceipt","discriminator":[223,233,11,229,124,165,207,28]},{"name":"RegistryEntry","discriminator":[48,198,240,252,155,186,72,16]},{"name":"Sospeso","discriminator":[142,102,106,55,215,250,16,252]},{"name":"SospesoMeta","discriminator":[96,90,243,32,208,16,152,145]}],"events":[{"name":"BridgePulsed","discriminator":[243,30,91,32,138,113,83,91]},{"name":"BridgeRegistered","discriminator":[100,152,98,137,208,182,165,204]},{"name":"BridgeRevoked","discriminator":[111,37,62,76,27,171,155,234]},{"name":"BridgeUpdated","discriminator":[1,97,244,7,211,112,70,63]},{"name":"ExpiryExtended","discriminator":[42,36,216,72,68,2,156,245]},{"name":"MetaCleared","discriminator":[173,49,206,123,52,13,195,161]},{"name":"MetaSet","discriminator":[110,231,18,231,10,245,18,129]},{"name":"MetaUpdated","discriminator":[217,10,90,9,118,172,203,99]},{"name":"PoolRegistered","discriminator":[77,114,165,230,33,230,135,215]},{"name":"PoolStatsSynced","discriminator":[190,133,241,251,217,204,240,250]},{"name":"RegistryInitialized","discriminator":[144,138,62,105,58,38,100,177]},{"name":"SospesoClaimed","discriminator":[153,47,209,77,42,154,40,159]},{"name":"SospesoCreated","discriminator":[14,162,72,20,225,113,143,187]},{"name":"SospesoReclaimed","discriminator":[152,183,138,212,154,112,98,71]},{"name":"SospesoToppedUp","discriminator":[110,246,129,91,132,150,235,179]},{"name":"VersionEmitted","discriminator":[58,129,68,86,42,134,64,163]}],"errors":[{"code":6000,"name":"Expired","msg":"The sospeso pool has expired"},{"code":6001,"name":"ClaimCapReached","msg":"The pool has reached its maximum number of claims"},{"code":6002,"name":"InsufficientFunds","msg":"Not enough lamports remaining in the pool"},{"code":6003,"name":"AmountTooLarge","msg":"Requested amount exceeds the per-claim cap (or the initial deposit)"},{"code":6004,"name":"NotExpiredYet","msg":"The pool has not expired yet; reclaim is unavailable"},{"code":6005,"name":"Unauthorized","msg":"Signer is not authorized for this sospeso"},{"code":6006,"name":"ZeroAmount","msg":"Amount must be greater than zero"},{"code":6007,"name":"ZeroMaxClaims","msg":"max_claims must be greater than zero"},{"code":6008,"name":"ZeroMaxPerClaim","msg":"max_per_claim must be greater than zero"},{"code":6009,"name":"Overflow","msg":"Arithmetic overflow"},{"code":6010,"name":"LabelEmpty","msg":"The label is empty"},{"code":6011,"name":"LabelTooLong","msg":"The label exceeds the maximum length"},{"code":6012,"name":"DescriptionTooLong","msg":"The description exceeds the maximum length"},{"code":6013,"name":"UriTooLong","msg":"The URI exceeds the maximum length"},{"code":6014,"name":"InvalidCategory","msg":"The category value is out of range"},{"code":6015,"name":"ExpiryNotInFuture","msg":"The new expiry must be in the future"},{"code":6016,"name":"ExpiryNotExtended","msg":"The new expiry must be later than the current expiry"},{"code":6017,"name":"SospesoMismatch","msg":"The provided sospeso does not match this record"},{"code":6018,"name":"RegistryMismatch","msg":"The provided registry does not match this entry"}],"types":[{"name":"BarRegistry","docs":["Singleton global statistics account (\"the bar's ledger\"): an aggregate roll-up","across registered pools. PDA: seeds `[b\"registry\"]`.","","Updating it is opt-in via `register_pool` / `sync_pool_stats`; the four core","instructions never touch it, preserving their behaviour and compute cost."],"type":{"kind":"struct","fields":[{"name":"authority","docs":["Wallet that initialized the registry. Informational; the registry is a","permissionless aggregate and anyone may register their own pools into it."],"type":"pubkey"},{"name":"total_pools","docs":["Count of distinct pools registered (one per [`RegistryEntry`])."],"type":"u64"},{"name":"total_suspended_lamports","docs":["Sum of every registered pool's `lamports_total`, kept in sync via","`sync_pool_stats`. `u128` so it cannot overflow across many large pools."],"type":"u128"},{"name":"total_claims","docs":["Sum of every registered pool's `claims_count`."],"type":"u64"},{"name":"created_ts","docs":["Unix timestamp the registry was created."],"type":"i64"},{"name":"last_update_ts","docs":["Unix timestamp of the most recent registry mutation."],"type":"i64"},{"name":"bump","docs":["PDA bump."],"type":"u8"}]}},{"name":"Bridge","docs":["On-chain registry record connecting the program to an off-chain service.","","PDA: seeds `[b\"bridge\", authority]` -- one bridge per authority. Created by","`register_bridge`, mutated by `update_bridge`, and closed (rent refunded to","the authority) by `revoke_bridge`. Only the recorded `authority` may write.","","Every field is a fixed-width primitive or byte array, so the serialized","account has a constant layout the consuming Java service can read by offset:","","```text","offset  size  field","0       8     anchor discriminator","8       32    authority      (Pubkey)","40      16    kind           ([u8; 16],  ascii null-padded)","56      160   endpoint       ([u8; 160], ascii null-padded)","216     48    label          ([u8; 48],  ascii null-padded)","264     1     enabled        (bool, 0/1)","265     8     registered_at  (i64, little-endian)","273     8     updated_at     (i64, little-endian)","281     1     bump           (u8)","---     282   total account size","```"],"type":{"kind":"struct","fields":[{"name":"authority","docs":["Wallet that registered and controls this bridge; the only writer."],"type":"pubkey"},{"name":"kind","docs":["Short ascii tag for the bridge kind, null-padded (e.g. `\"jvm\"`)."],"type":{"array":["u8",16]}},{"name":"endpoint","docs":["Off-chain service endpoint URI, ascii, null-padded."],"type":{"array":["u8",160]}},{"name":"label","docs":["Human-readable label, ascii, null-padded."],"type":{"array":["u8",48]}},{"name":"enabled","docs":["Whether the bridge is currently advertised as live."],"type":"bool"},{"name":"registered_at","docs":["Unix timestamp the bridge was first registered."],"type":"i64"},{"name":"updated_at","docs":["Unix timestamp of the last `update_bridge`."],"type":"i64"},{"name":"bump","docs":["PDA bump."],"type":"u8"}]}},{"name":"BridgePulse","docs":["On-chain liveness + work oracle for a registered Bridge. The bridge's","off-chain service (e.g. the JVM relayer) stamps this so anyone can verify,","from the chain alone, that the bridge is operating and how much it settled.","","PDA: seeds `[b\"pulse\", bridge]` -- one pulse per bridge. Created on the first","`bridge_pulse` call and updated on every subsequent call. Only the bridge","`authority` may write (enforced via `has_one` on the bridge)."],"type":{"kind":"struct","fields":[{"name":"bridge","type":"pubkey"},{"name":"authority","type":"pubkey"},{"name":"last_ts","type":"i64"},{"name":"pulse_count","type":"u64"},{"name":"relayed_claims","type":"u64"},{"name":"version","type":"u32"},{"name":"bump","type":"u8"}]}},{"name":"BridgePulsed","docs":["Emitted on every `bridge_pulse`; lets indexers track bridge liveness and","cumulative relayed work without an account read."],"type":{"kind":"struct","fields":[{"name":"bridge","type":"pubkey"},{"name":"authority","type":"pubkey"},{"name":"pulse_count","type":"u64"},{"name":"relayed_claims","type":"u64"},{"name":"version","type":"u32"},{"name":"ts","type":"i64"}]}},{"name":"BridgeRegistered","docs":["Emitted when an off-chain-service bridge is first registered."],"type":{"kind":"struct","fields":[{"name":"bridge","type":"pubkey"},{"name":"authority","type":"pubkey"},{"name":"kind","type":{"array":["u8",16]}},{"name":"enabled","type":"bool"},{"name":"ts","type":"i64"}]}},{"name":"BridgeRevoked","docs":["Emitted when a bridge is revoked (its account closed, rent refunded)."],"type":{"kind":"struct","fields":[{"name":"bridge","type":"pubkey"},{"name":"authority","type":"pubkey"},{"name":"ts","type":"i64"}]}},{"name":"BridgeUpdated","docs":["Emitted on every successful `update_bridge`."],"type":{"kind":"struct","fields":[{"name":"bridge","type":"pubkey"},{"name":"authority","type":"pubkey"},{"name":"enabled","type":"bool"},{"name":"ts","type":"i64"}]}},{"name":"ClaimReceipt","docs":["Proof that a given beneficiary has already claimed from a given sospeso.","","PDA: seeds `[b\"claim\", sospeso, beneficiary]`. Created (`init`) inside","`claim_sospeso`; its existence alone makes a second claim by the same","beneficiary fail, so it is the on-chain double-claim guard."],"type":{"kind":"struct","fields":[{"name":"beneficiary","docs":["The wallet that claimed."],"type":"pubkey"},{"name":"amount","docs":["Lamports granted in the (single) claim."],"type":"u64"},{"name":"ts","docs":["Unix timestamp of the claim."],"type":"i64"},{"name":"bump","docs":["PDA bump."],"type":"u8"}]}},{"name":"ExpiryExtended","docs":["Emitted when a sponsor pushes a pool's expiry further out."],"type":{"kind":"struct","fields":[{"name":"sospeso","type":"pubkey"},{"name":"sponsor","type":"pubkey"},{"name":"old_expiry_ts","type":"i64"},{"name":"new_expiry_ts","type":"i64"}]}},{"name":"MetaCleared","docs":["Emitted when a metadata account is closed via `clear_meta`."],"type":{"kind":"struct","fields":[{"name":"sospeso","type":"pubkey"},{"name":"sponsor","type":"pubkey"},{"name":"ts","type":"i64"}]}},{"name":"MetaSet","docs":["Emitted when a pool's metadata account is first created via `set_meta`."],"type":{"kind":"struct","fields":[{"name":"sospeso","type":"pubkey"},{"name":"sponsor","type":"pubkey"},{"name":"category","type":"u8"},{"name":"ts","type":"i64"}]}},{"name":"MetaUpdated","docs":["Emitted on every successful `update_meta`."],"type":{"kind":"struct","fields":[{"name":"sospeso","type":"pubkey"},{"name":"sponsor","type":"pubkey"},{"name":"category","type":"u8"},{"name":"ts","type":"i64"}]}},{"name":"PoolRegistered","docs":["Emitted when a pool is folded into the registry aggregate for the first time."],"type":{"kind":"struct","fields":[{"name":"registry","type":"pubkey"},{"name":"sospeso","type":"pubkey"},{"name":"recorded_lamports","type":"u64"},{"name":"recorded_claims","type":"u32"},{"name":"total_pools","type":"u64"}]}},{"name":"PoolStatsSynced","docs":["Emitted when a registered pool's deltas (top-ups, new claims) are re-synced","into the registry aggregate."],"type":{"kind":"struct","fields":[{"name":"registry","type":"pubkey"},{"name":"sospeso","type":"pubkey"},{"name":"lamports_delta","type":"u64"},{"name":"claims_delta","type":"u32"},{"name":"total_suspended_lamports","type":"u128"},{"name":"total_claims","type":"u64"}]}},{"name":"RegistryEntry","docs":["Per-pool membership record inside the registry. Its `init` makes a second","`register_pool` for the same pool fail (the existence-is-the-guard pattern,","same idea as [`ClaimReceipt`]), preventing a pool from being double-counted.","","PDA: seeds `[b\"regentry\", sospeso]`."],"type":{"kind":"struct","fields":[{"name":"sospeso","docs":["The registered pool."],"type":"pubkey"},{"name":"registry","docs":["The registry this entry belongs to."],"type":"pubkey"},{"name":"recorded_lamports","docs":["`sospeso.lamports_total` last folded into the registry aggregate."],"type":"u64"},{"name":"recorded_claims","docs":["`sospeso.claims_count` last folded into the registry aggregate."],"type":"u32"},{"name":"registered_ts","docs":["Unix timestamp the pool was first registered."],"type":"i64"},{"name":"synced_ts","docs":["Unix timestamp of the last `sync_pool_stats`."],"type":"i64"},{"name":"bump","docs":["PDA bump."],"type":"u8"}]}},{"name":"RegistryInitialized","docs":["Emitted once, when the singleton registry is initialized."],"type":{"kind":"struct","fields":[{"name":"registry","type":"pubkey"},{"name":"authority","type":"pubkey"},{"name":"ts","type":"i64"}]}},{"name":"Sospeso","docs":["A suspended-gas escrow pool opened by a sponsor.","","PDA: seeds `[b\"sospeso\", sponsor, nonce.to_le_bytes()]`.","","Actual lamports held by the account = rent-exempt minimum + `lamports_remaining`.","`lamports_total` is the cumulative amount ever funded (create + top_ups); it is","informational and never decreases on claim."],"type":{"kind":"struct","fields":[{"name":"sponsor","docs":["Wallet that opened and funds the pool; the only party allowed to top up or reclaim."],"type":"pubkey"},{"name":"lamports_total","docs":["Cumulative lamports funded into the pool (create + all top_ups). Informational."],"type":"u64"},{"name":"lamports_remaining","docs":["Lamports still claimable. Debited on each claim, zeroed on reclaim."],"type":"u64"},{"name":"max_per_claim","docs":["Hard cap on a single claim."],"type":"u64"},{"name":"claims_count","docs":["Number of successful claims so far."],"type":"u32"},{"name":"max_claims","docs":["Maximum number of claims the pool will ever honour."],"type":"u32"},{"name":"expiry_ts","docs":["Unix timestamp after which claims are rejected and reclaim becomes possible."],"type":"i64"},{"name":"new_wallet_only","docs":["If true, off-chain eligibility (relayer) should restrict claims to new wallets.","Enforced off-chain by the relayer; stored on-chain so the policy is auditable."],"type":"bool"},{"name":"nonce","docs":["Sponsor-chosen nonce allowing many concurrent pools per sponsor."],"type":"u64"},{"name":"bump","docs":["PDA bump."],"type":"u8"}]}},{"name":"SospesoClaimed","type":{"kind":"struct","fields":[{"name":"sospeso","type":"pubkey"},{"name":"beneficiary","type":"pubkey"},{"name":"amount","type":"u64"},{"name":"claims_count","type":"u32"},{"name":"lamports_remaining","type":"u64"},{"name":"ts","type":"i64"}]}},{"name":"SospesoCreated","type":{"kind":"struct","fields":[{"name":"sospeso","type":"pubkey"},{"name":"sponsor","type":"pubkey"},{"name":"amount","type":"u64"},{"name":"max_per_claim","type":"u64"},{"name":"max_claims","type":"u32"},{"name":"expiry_ts","type":"i64"},{"name":"new_wallet_only","type":"bool"},{"name":"nonce","type":"u64"}]}},{"name":"SospesoMeta","docs":["Off-chain-facing descriptive metadata for a pool, stored in its own PDA so","that the hot-path `Sospeso` account stays small and its layout frozen.","","PDA: seeds `[b\"meta\", sospeso]`. One meta account per pool. Created with","`set_meta`, mutated with `update_meta`, and closed (rent refunded to the","sponsor) with `clear_meta`. Only the pool's sponsor may write to it."],"type":{"kind":"struct","fields":[{"name":"sospeso","docs":["The pool this metadata describes."],"type":"pubkey"},{"name":"sponsor","docs":["Sponsor of the pool; the only writer."],"type":"pubkey"},{"name":"label","docs":["Short human-readable name (<= [`MAX_LABEL_LEN`] bytes)."],"type":"string"},{"name":"description","docs":["Longer description (<= [`MAX_DESCRIPTION_LEN`] bytes)."],"type":"string"},{"name":"uri","docs":["Off-chain resource URI, e.g. an icon or campaign page (<= [`MAX_URI_LEN`] bytes)."],"type":"string"},{"name":"category","docs":["Sponsor-defined category tag in `0..=MAX_CATEGORY`."],"type":"u8"},{"name":"created_ts","docs":["Unix timestamp the meta was first set."],"type":"i64"},{"name":"updated_ts","docs":["Unix timestamp of the last `update_meta`."],"type":"i64"},{"name":"bump","docs":["PDA bump."],"type":"u8"}]}},{"name":"SospesoReclaimed","type":{"kind":"struct","fields":[{"name":"sospeso","type":"pubkey"},{"name":"sponsor","type":"pubkey"},{"name":"amount","type":"u64"}]}},{"name":"SospesoToppedUp","type":{"kind":"struct","fields":[{"name":"sospeso","type":"pubkey"},{"name":"sponsor","type":"pubkey"},{"name":"amount","type":"u64"},{"name":"lamports_remaining","type":"u64"}]}},{"name":"VersionEmitted","docs":["Emitted by `emit_version`; lets indexers pin the live on-chain version."],"type":{"kind":"struct","fields":[{"name":"version","type":"string"},{"name":"caller","type":"pubkey"},{"name":"ts","type":"i64"}]}}],"constants":[{"name":"VERSION","docs":["On-chain program version. Bumped on each upgrade so the deployed binary","(and IDL) provably changes; also lets clients read the live version."],"type":"string","value":"\"0.1.3\""}]}