Skip to content

FE: features/bounties participant data layer (escrow client + hooks) #621

Description

@0xdevcollins

Context

Part of the Bounty Builder Lifecycle milestone (v1 boundless). The Configure epic's features/bounties/api/escrow-client.ts is organizer-only (participant escrow is explicitly out of scope there). This issue adds the builder/participant data layer to features/bounties/, reusing the shared escrow runner. Default funding mode MANAGED (custodial, no wallet signature) to mirror hackathon participant anchoring.

Blueprint to mirror

  • features/hackathons/api/escrow-client.ts, use-escrow.ts (participant scope { kind: 'participant', ... }), use-submission-anchor.ts
  • lib/wallet/wallet-kit.ts (signXdrWithKit) for the EXTERNAL fallback

Tasks

  • features/bounties/api/participant-escrow-client.ts wrapping the participant REST surface: apply, submit, withdraw-application, withdraw-submission, contribute, ops poll, submit-signed.
  • react-query hooks: useBountiesList/useBounty (public), useMyBountyApplication(bountyId) (applications/me), useApplyToBounty / useJoinCompetition / useEditApplication / useWithdrawApplication, useSubmitBounty / useWithdrawSubmission, useMyBountyActivity (apps + submissions). Drive escrow ops through useEscrowOpRunner (participant scope, default MANAGED).
  • Types from the generated OpenAPI schema; run npm run codegen after the backend gap endpoints land.

Acceptance criteria

  • Hooks typecheck against the generated schema; escrow ops drive the runner to terminal state.

Depends on

  • Backend applications/me + participant dashboard queries (for the me/my-activity types via codegen).

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions