Learn-skills.dev basket-claim
Use when the agent needs to claim payout from a settled basket via vara-wallet. Do not use before settlement is finalized.
install
source · Clone the upstream repo
git clone https://github.com/NeverSight/learn-skills.dev
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/adityaakr/polybaskets/basket-claim" ~/.claude/skills/neversight-learn-skills-dev-basket-claim && rm -rf "$T"
manifest:
data/skills-md/adityaakr/polybaskets/basket-claim/SKILL.mdsource content
Basket Claim
Claim payout from a settled PolyBaskets basket via
vara-wallet.
Setup
MAINNET ONLY. Run
vara-wallet config set network mainnet before anything else. NEVER switch to testnet — there are no contracts there.
vara-wallet config set network mainnet BASKET_MARKET="0x1fa6fd12433accef350a68da4555a2a71acab261c4ae9eb713033023fc0775ea" BET_LANE="0x40dc1597c8e3beb3523f9c05ad2b44e00a11be6e665da20e4323bb7dfae1ecda" _PB="${POLYBASKETS_SKILLS_DIR:-skills}" IDL="$_PB/idl/polymarket-mirror.idl" BET_LANE_IDL="$_PB/idl/bet_lane_client.idl"
Pre-Check Workflow
1. Verify settlement is finalized
vara-wallet call $BASKET_MARKET BasketMarket/GetSettlement \ --args '[<basket_id>]' --idl $IDL
Check the result:
— ready to claimstatus: "Finalized"
— challenge window not yet passed. If you have the settler role, seestatus: "Proposed"
to finalize. Otherwise, wait for the settler to finalize (challenge window is ~12 minutes from../basket-settle/SKILL.md
).proposed_at- Error
— not yet settledSettlementNotFound
# Parse settlement status vara-wallet call $BASKET_MARKET BasketMarket/GetSettlement \ --args '[<basket_id>]' --idl $IDL | jq '.result.ok.status'
Get your hex address first (SS58 won't work for actor_id args):
MY_ADDR=$(vara-wallet balance | jq -r .address)
2. Verify position exists and is unclaimed
# VARA lane vara-wallet call $BASKET_MARKET BasketMarket/GetPositions \ --args '["'$MY_ADDR'"]' --idl $IDL | jq '.[] | select(.basket_id == <basket_id>)' # BET lane vara-wallet call $BET_LANE BetLane/GetPosition \ --args '["'$MY_ADDR'", <basket_id>]' --idl $BET_LANE_IDL
Check
claimed: false.
Claim (VARA Lane)
For baskets with
asset_kind: "Vara":
vara-wallet --account agent call $BASKET_MARKET BasketMarket/Claim --voucher $VOUCHER_ID \ --args '[<basket_id>]' --idl $IDL
Returns
u128 — payout amount in minimal VARA units (divide by 10^12 for VARA).
Example
# Claim from basket 0 PAYOUT=$(vara-wallet --account agent call $BASKET_MARKET BasketMarket/Claim --voucher $VOUCHER_ID \ --args '[0]' --idl $IDL) echo "Payout: $PAYOUT"
Claim (BET Token Lane)
For baskets with
asset_kind: "Bet":
vara-wallet --account agent call $BET_LANE BetLane/Claim --voucher $VOUCHER_ID \ --args '[<basket_id>]' --idl $BET_LANE_IDL
Returns
u256 — payout amount in BET token units.
Example
# Claim from basket 1 via BET lane vara-wallet --account agent call $BET_LANE BetLane/Claim --voucher $VOUCHER_ID \ --args '[1]' --idl $BET_LANE_IDL
Payout Calculation
payout = shares * (settlement_index / entry_index)
The
payout_per_share is pre-computed in the Settlement struct during proposal. You can preview your expected payout before claiming:
# Get settlement payout_per_share SETTLEMENT=$(vara-wallet call $BASKET_MARKET BasketMarket/GetSettlement \ --args '[<basket_id>]' --idl $IDL) echo $SETTLEMENT | jq '.result.ok.payout_per_share'
See
../references/index-math.md for detailed formula and examples.
Verify After Claim
# Check position is now claimed vara-wallet call $BASKET_MARKET BasketMarket/GetPositions \ --args '["'$MY_ADDR'"]' --idl $IDL | jq '.[] | select(.basket_id == <basket_id>) | .claimed' # Check VARA balance increased vara-wallet balance
Common Errors
| Error | Cause | Fix |
|---|---|---|
| Settlement not yet finalized | Wait for finalization |
| Already claimed this basket | No action needed |
| No position in this basket | Verify position exists |
| No settlement proposed | Wait for settler to propose |
| VARA transfer failed | Check contract balance, retry |