Skip to content

feat(sdk-coin-polyx): add NominateBuilder for standalone nominate transactions (SI-686)#8844

Draft
bitgo-ai-agent-dev[bot] wants to merge 1 commit into
masterfrom
si-686-nominate-builder-v2
Draft

feat(sdk-coin-polyx): add NominateBuilder for standalone nominate transactions (SI-686)#8844
bitgo-ai-agent-dev[bot] wants to merge 1 commit into
masterfrom
si-686-nominate-builder-v2

Conversation

@bitgo-ai-agent-dev
Copy link
Copy Markdown

Summary

  • New NominateBuilder (src/lib/nominateBuilder.ts) extending PolyxBaseBuilder:
    • validators(validators: string[]) — validates each address, enforces 1–16 range
    • buildTransaction()methods.staking.nominate({ targets: validators }, ...)
    • transactionTypeTransactionType.StakingVote
    • validateDecodedTransaction() for method.name === 'nominate'
    • fromImplementation() parses targets back into builder state
  • Schema update (src/lib/txnSchema.ts) — added max(16) to NominateTransactionSchema and both batch nominate validators schemas
  • Factory routing (src/lib/transactionBuilderFactory.ts) — added getNominateBuilder(); methodName === 'nominate' now routes to NominateBuilder (batchAll bond+nominate still routes to BatchStakingBuilder)
  • Export (src/lib/index.ts) — NominateBuilder exported
  • Test resources — added nominateTx (signed hex from ticket), nominateSender, nominateValidators
  • Unit tests (test/unit/transactionBuilder/nominateBuilder.ts) — 14 tests covering transaction type, validators validation, build, parse, round-trip, and factory routing

Test plan

  • All 112 passing polyx unit tests continue to pass
  • Polyx Nominate Builder suite (14 tests) all pass
  • Factory routes raw nominate extrinsic to NominateBuilder
  • Factory still routes batchAll bond+nominate to BatchBuilder
  • Validators boundary conditions: empty/17+/malformed all throw
  • Round-trip: build unsigned → from() → validators preserved

Ticket: SI-686

🤖 Generated with Ralph

- Add NominateBuilder extending PolyxBaseBuilder with validators()/
  buildTransaction()/validateDecodedTransaction()/fromImplementation()
- transactionType returns TransactionType.StakingVote
- validators() enforces 1..16 addresses with per-address validation
- Add getNominateBuilder() to TransactionBuilderFactory; route
  methodName === 'nominate' to NominateBuilder (batchAll bond+nominate
  still routes to BatchStakingBuilder)
- Add max(16) to NominateTransactionSchema and batch nominate schemas
- Export NominateBuilder from src/lib/index.ts
- Add nominateTx/nominateSender/nominateValidators to test resources
- Add nominateBuilder unit tests (type, validation, build, parse,
  round-trip, factory routing)

Ticket: SI-686
Session-Id: cb0b09be-f8c9-4945-bd04-91833ab3dac2
Task-Id: 074c7742-b4dc-4fc0-82d6-5a716882f778
@linear-code
Copy link
Copy Markdown

linear-code Bot commented May 25, 2026

SI-686

@bitgo-ai-agent-dev bitgo-ai-agent-dev Bot force-pushed the si-686-nominate-builder-v2 branch from 1a96271 to 9f18bec Compare May 25, 2026 12:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant