import type * as Whop from "../index.js"; export interface Bounty { accepted_deliverable_types: Bounty.AcceptedDeliverableTypes.Item[]; /** Submissions accepted so far. */ accepted_submissions_count: number; /** Number of submissions that can be accepted (winner slots). */ accepted_submissions_limit: number; /** How many winner slots one worker can win. Defaults to `1`. Wins plus proofs awaiting review never exceed this number, and a worker runs one attempt at a time. Cannot exceed `accepted_submissions_limit`. */ accepted_submissions_per_user_limit: number; active_proof_livestream_feeds: Whop.BountyActiveLivestreamFeed[]; /** What a referrer earns per accepted submission when the worker arrived through their affiliate link, in whole currency units, at the standard platform fee rate. Taken out of the worker's post-fee reward rather than added on top. `0` when the bounty pays no affiliate share, including bounties tied to no account, which cannot record a referral. */ affiliate_share_amount: number; allowed_country_codes: string[]; /** Submissions delivered and waiting on review. A subset of `unresolved_submissions_count`, which also counts attempts still in progress. */ awaiting_review_submissions_count: number; /** Total gross budget committed to the bounty: `gross_reward_amount` times `accepted_submissions_limit`. */ budget_amount: number; /** What the poster wants the work to achieve, declared once at create. `null` for bounties created before the taxonomy rolled out. */ business_goal_type: Bounty.BusinessGoalType | null; /** When cancellation was requested, as an ISO 8601 timestamp. On a `closed` bounty this means the cancel is pending: submissions are stopped and the bounty cancels once in-flight submissions resolve. On a `canceled` bounty it records when the cancellation was requested. `null` when no cancellation was ever requested. */ cancel_requested_at: string | null; /** The technical contract footage must be recorded against. Present only on `data_capture` bounties; `null` for every other goal type. */ capture_spec: Whop.CaptureSpec | null; /** When the bounty was created, as an ISO 8601 timestamp. */ created_at: string; /** Currency for all amounts on the bounty, as a lowercase ISO 4217 code. */ currency: Bounty.Currency; /** Submissions reviewed and turned down. */ denied_submissions_count: number; /** Full task instructions shown to workers. */ description: string; /** Experience the bounty's discussion thread lives in, prefixed `exp_`. Read this — not `experience_id` — to open the thread: a platform-wide bounty has no hosting experience of its own but its discussion still lives in one. */ discussion_experience_id: string | null; /** Forum feed containing the bounty's discussion thread. `null` for a bounty with no forum post. */ discussion_feed_id: string | null; /** Forum post anchoring the bounty's discussion thread. Read together with `discussion_experience_id` to address the thread. `null` for a bounty with no forum post. */ discussion_post_id: string | null; /** Experience the bounty is hosted in, prefixed `exp_`. `null` for platform-wide bounties; may belong to a different account than the funder. */ experience_id: string | null; /** Account whose balance funds the bounty pool, or `null` when a user funds it personally. May differ from the account hosting `experience_id`. */ funding_account: Whop.AccountSummary | null; /** Gross amount paid out from the bounty pool across accepted submissions — worker payouts, platform fees, and affiliate shares together. Tips and reviewer rewards are excluded. */ gross_paid_out_amount: number; /** Gross bounty-pool amount allocated per accepted submission, in whole currency units. */ gross_reward_amount: number; /** Account hosting the bounty's forum — the one whose `route` and `experience_id` address its discussion thread, and where its submissions dashboard lives. `null` for a platform-wide bounty with no host. May differ from `funding_account`. */ hosting_account: Whop.StorefrontAccount | null; /** Bounty ID, prefixed `bnty_`. */ id: string; /** Total verified footage a submission must accumulate before it can be submitted, in seconds. Always a whole number of hours. Present only on `data_capture` bounties — it is what `net_reward_amount` pays for, so rate displays divide by it. `null` for every other goal type. */ min_total_verified_duration_seconds: number | null; /** What a worker is quoted per accepted submission after the platform fee, in whole currency units. The exact post-fee figure, at the standard platform fee rate — a worker who locked a different rate, or who arrived through an affiliate link, is paid a different amount. */ net_reward_amount: number; /** User who posted the bounty — the account owner when created with an account API key. */ poster: Whop.UserSummary; /** How often the schedule creates a new bounty. Each occurrence is a separate bounty; the original is not republished. */ scheduled_frequency: Bounty.ScheduledFrequency | null; /** When a scheduled bounty will publish, as an ISO 8601 timestamp. `null` once published, for bounties that were never scheduled, and for terminally failed drafts parked for manual rescheduling. */ scheduled_publish_at: string | null; /** Unfilled winner capacity: `accepted_submissions_limit` minus `accepted_submissions_count`, clamped to zero. Not on its own a signal that the bounty accepts new claims — read `status` for that: only an `open` bounty takes new submissions. */ spots_remaining: number; /** Lifecycle state. `scheduled` bounties are unpublished drafts, visible to their poster and the account's authorized managers; `open` bounties accept new submissions; `closed` bounties are live but no longer accept new submissions; `completed` bounties paid out every winner slot; `canceled` bounties ended before filling their slots. */ status: Bounty.Status; /** When new submissions stopped being accepted, as an ISO 8601 timestamp. Set when a cancellation is requested on a bounty with work in flight, so in-flight submissions can resolve before the bounty cancels. `null` when submissions were never stopped — including completed bounties that simply filled every winner slot. */ submissions_closed_at: string | null; /** Short name of the task shown to workers. */ title: string; /** Submissions still awaiting an outcome: in progress or pending review. */ unresolved_submissions_count: number; /** When the bounty was last updated, as an ISO 8601 timestamp. */ updated_at: string; /** How many winner slots the authenticated user has already won on this bounty. Read against `accepted_submissions_per_user_limit` to show a worker their remaining allowance. `0` when the request has no authenticated user. */ viewer_accepted_submissions_count: number; } export declare namespace Bounty { type AcceptedDeliverableTypes = AcceptedDeliverableTypes.Item[]; namespace AcceptedDeliverableTypes { /** The deliverable shapes this bounty accepts. Every bounty accepts any combination of `content_url` (posted links) and `media` (uploaded files), except `data_capture` bounties, whose proof is clips recorded in the Whop app that accumulate on the attempt. */ const Item: { readonly ContentUrl: "content_url"; readonly Media: "media"; readonly DataCapture: "data_capture"; }; type Item = (typeof Item)[keyof typeof Item]; } /** What the poster wants the work to achieve, declared once at create. `null` for bounties created before the taxonomy rolled out. */ const BusinessGoalType: { readonly Clipping: "clipping"; readonly PostEngagement: "post_engagement"; readonly OwnedAccountGrowth: "owned_account_growth"; readonly UgcContent: "ugc_content"; readonly LocalActivation: "local_activation"; readonly DataCapture: "data_capture"; readonly Other: "other"; }; type BusinessGoalType = (typeof BusinessGoalType)[keyof typeof BusinessGoalType]; /** Currency for all amounts on the bounty, as a lowercase ISO 4217 code. */ const Currency: { readonly Usd: "usd"; readonly Sgd: "sgd"; readonly Inr: "inr"; readonly Aud: "aud"; readonly Brl: "brl"; readonly Cad: "cad"; readonly Dkk: "dkk"; readonly Eur: "eur"; readonly Nok: "nok"; readonly Gbp: "gbp"; readonly Sek: "sek"; readonly Chf: "chf"; readonly Hkd: "hkd"; readonly Huf: "huf"; readonly Jpy: "jpy"; readonly Mxn: "mxn"; readonly Myr: "myr"; readonly Pln: "pln"; readonly Czk: "czk"; readonly Nzd: "nzd"; readonly Aed: "aed"; readonly Cop: "cop"; readonly Ron: "ron"; readonly Thb: "thb"; readonly Bgn: "bgn"; readonly Idr: "idr"; readonly Dop: "dop"; readonly Php: "php"; readonly Try: "try"; readonly Krw: "krw"; readonly Twd: "twd"; readonly Vnd: "vnd"; readonly Pkr: "pkr"; readonly Clp: "clp"; readonly Uyu: "uyu"; readonly Ars: "ars"; readonly Zar: "zar"; readonly Dzd: "dzd"; readonly Tnd: "tnd"; readonly Mad: "mad"; readonly Kes: "kes"; readonly Kwd: "kwd"; readonly Jod: "jod"; readonly All: "all"; readonly Xcd: "xcd"; readonly Amd: "amd"; readonly Bsd: "bsd"; readonly Bhd: "bhd"; readonly Bob: "bob"; readonly Bam: "bam"; readonly Khr: "khr"; readonly Crc: "crc"; readonly Xof: "xof"; readonly Egp: "egp"; readonly Etb: "etb"; readonly Gmd: "gmd"; readonly Ghs: "ghs"; readonly Gtq: "gtq"; readonly Gyd: "gyd"; readonly Ils: "ils"; readonly Jmd: "jmd"; readonly Mop: "mop"; readonly Mga: "mga"; readonly Mur: "mur"; readonly Mdl: "mdl"; readonly Mnt: "mnt"; readonly Nad: "nad"; readonly Ngn: "ngn"; readonly Mkd: "mkd"; readonly Omr: "omr"; readonly Pyg: "pyg"; readonly Pen: "pen"; readonly Qar: "qar"; readonly Rwf: "rwf"; readonly Sar: "sar"; readonly Rsd: "rsd"; readonly Lkr: "lkr"; readonly Tzs: "tzs"; readonly Ttd: "ttd"; readonly Uzs: "uzs"; readonly Rub: "rub"; readonly Cny: "cny"; readonly Kzt: "kzt"; readonly Awg: "awg"; }; type Currency = (typeof Currency)[keyof typeof Currency]; /** How often the schedule creates a new bounty. Each occurrence is a separate bounty; the original is not republished. */ const ScheduledFrequency: { readonly Once: "once"; readonly Hourly: "hourly"; readonly Daily: "daily"; readonly Weekly: "weekly"; readonly Monthly: "monthly"; }; type ScheduledFrequency = (typeof ScheduledFrequency)[keyof typeof ScheduledFrequency]; /** Lifecycle state. `scheduled` bounties are unpublished drafts, visible to their poster and the account's authorized managers; `open` bounties accept new submissions; `closed` bounties are live but no longer accept new submissions; `completed` bounties paid out every winner slot; `canceled` bounties ended before filling their slots. */ const Status: { readonly Scheduled: "scheduled"; readonly Open: "open"; readonly Closed: "closed"; readonly Completed: "completed"; readonly Canceled: "canceled"; }; type Status = (typeof Status)[keyof typeof Status]; }