Skip to content

[draft]: perps-controller preview#7841

Draft
gambinish wants to merge 7 commits intomainfrom
feat/perps/controller-mocks-preview
Draft

[draft]: perps-controller preview#7841
gambinish wants to merge 7 commits intomainfrom
feat/perps/controller-mocks-preview

Conversation

@gambinish
Copy link
Contributor

Explanation

Creating a separate branch from #7749 to test preview package publishing via metamask bot. This is just an internal draft, don't worry about reviewing.

References

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

abretonc7s and others added 7 commits January 28, 2026 14:52
Complete migration of PerpsController implementation from MetaMask Mobile
to enable cross-platform sharing of Perps (Perpetual Futures) functionality.

This includes:
- PerpsController (~3,000 lines) with full trading functionality
- 8 state selectors for UI integration
- Comprehensive TypeScript type definitions
- 18 utility modules for calculations, formatting, validation
- 8 service modules (Trading, MarketData, Eligibility, etc.)
- HyperLiquidProvider with full protocol integration
- AggregatedPerpsProvider for multi-provider support
- Platform services for HyperLiquid client, subscriptions, wallet
- Test infrastructure with mocks and 40 unit tests

The package uses dependency injection via PerpsPlatformDependencies
interface to remain platform-agnostic, allowing Mobile and Extension
to provide their own implementations while sharing core business logic.
Add 17 test files migrated from metamask-mobile covering:
- Amount conversion, margin, PnL, and position calculations
- Order book grouping and order utilities
- Market data transformation and sorting
- HyperLiquid adapter and validation
- TP/SL validation and string parsing utilities

Add MIGRATION.md documenting migration status and coverage priorities.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Update @metamask/transaction-controller to ^62.12.0
- Add PR references to CHANGELOG.md
- Regenerate yarn.lock

Co-Authored-By: Claude Opus 4.5 <[email protected]>
@gambinish gambinish changed the title Feat/perps/controller mocks preview [draft]: perps-controller preview Feb 4, 2026
@gambinish
Copy link
Contributor Author

@metamaskbot publish-previews

@github-actions
Copy link
Contributor

github-actions bot commented Feb 4, 2026

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "4.0.0-preview-e4aa1532",
  "@metamask-previews/accounts-controller": "35.0.2-preview-e4aa1532",
  "@metamask-previews/address-book-controller": "7.0.1-preview-e4aa1532",
  "@metamask-previews/ai-controllers": "0.0.0-preview-e4aa1532",
  "@metamask-previews/analytics-controller": "1.0.0-preview-e4aa1532",
  "@metamask-previews/analytics-data-regulation-controller": "0.0.0-preview-e4aa1532",
  "@metamask-previews/announcement-controller": "8.0.0-preview-e4aa1532",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-e4aa1532",
  "@metamask-previews/approval-controller": "8.0.0-preview-e4aa1532",
  "@metamask-previews/assets-controller": "0.0.0-preview-e4aa1532",
  "@metamask-previews/assets-controllers": "99.1.0-preview-e4aa1532",
  "@metamask-previews/base-controller": "9.0.0-preview-e4aa1532",
  "@metamask-previews/bridge-controller": "65.1.0-preview-e4aa1532",
  "@metamask-previews/bridge-status-controller": "65.0.1-preview-e4aa1532",
  "@metamask-previews/build-utils": "3.0.4-preview-e4aa1532",
  "@metamask-previews/chain-agnostic-permission": "1.4.0-preview-e4aa1532",
  "@metamask-previews/claims-controller": "0.4.1-preview-e4aa1532",
  "@metamask-previews/composable-controller": "12.0.0-preview-e4aa1532",
  "@metamask-previews/connectivity-controller": "0.1.0-preview-e4aa1532",
  "@metamask-previews/controller-utils": "11.18.0-preview-e4aa1532",
  "@metamask-previews/core-backend": "5.0.0-preview-e4aa1532",
  "@metamask-previews/delegation-controller": "2.0.0-preview-e4aa1532",
  "@metamask-previews/earn-controller": "11.1.0-preview-e4aa1532",
  "@metamask-previews/eip-5792-middleware": "2.1.0-preview-e4aa1532",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-e4aa1532",
  "@metamask-previews/eip1193-permission-middleware": "1.0.3-preview-e4aa1532",
  "@metamask-previews/ens-controller": "19.0.2-preview-e4aa1532",
  "@metamask-previews/error-reporting-service": "3.0.1-preview-e4aa1532",
  "@metamask-previews/eth-block-tracker": "15.0.1-preview-e4aa1532",
  "@metamask-previews/eth-json-rpc-middleware": "23.0.0-preview-e4aa1532",
  "@metamask-previews/eth-json-rpc-provider": "6.0.0-preview-e4aa1532",
  "@metamask-previews/foundryup": "1.0.1-preview-e4aa1532",
  "@metamask-previews/gas-fee-controller": "26.0.2-preview-e4aa1532",
  "@metamask-previews/gator-permissions-controller": "1.1.2-preview-e4aa1532",
  "@metamask-previews/json-rpc-engine": "10.2.1-preview-e4aa1532",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-e4aa1532",
  "@metamask-previews/keyring-controller": "25.1.0-preview-e4aa1532",
  "@metamask-previews/logging-controller": "7.0.1-preview-e4aa1532",
  "@metamask-previews/message-manager": "14.1.0-preview-e4aa1532",
  "@metamask-previews/messenger": "0.3.0-preview-e4aa1532",
  "@metamask-previews/multichain-account-service": "5.1.0-preview-e4aa1532",
  "@metamask-previews/multichain-api-middleware": "1.2.6-preview-e4aa1532",
  "@metamask-previews/multichain-network-controller": "3.0.2-preview-e4aa1532",
  "@metamask-previews/multichain-transactions-controller": "7.0.0-preview-e4aa1532",
  "@metamask-previews/name-controller": "9.0.0-preview-e4aa1532",
  "@metamask-previews/network-controller": "29.0.0-preview-e4aa1532",
  "@metamask-previews/network-enablement-controller": "4.1.0-preview-e4aa1532",
  "@metamask-previews/notification-services-controller": "21.0.0-preview-e4aa1532",
  "@metamask-previews/permission-controller": "12.2.0-preview-e4aa1532",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-e4aa1532",
  "@metamask-previews/perps-controller": "0.0.0-preview-e4aa1532",
  "@metamask-previews/phishing-controller": "16.1.0-preview-e4aa1532",
  "@metamask-previews/polling-controller": "16.0.2-preview-e4aa1532",
  "@metamask-previews/preferences-controller": "22.0.0-preview-e4aa1532",
  "@metamask-previews/profile-metrics-controller": "3.0.0-preview-e4aa1532",
  "@metamask-previews/profile-sync-controller": "27.0.0-preview-e4aa1532",
  "@metamask-previews/ramps-controller": "5.0.0-preview-e4aa1532",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-e4aa1532",
  "@metamask-previews/remote-feature-flag-controller": "4.0.0-preview-e4aa1532",
  "@metamask-previews/sample-controllers": "4.0.2-preview-e4aa1532",
  "@metamask-previews/seedless-onboarding-controller": "7.1.0-preview-e4aa1532",
  "@metamask-previews/selected-network-controller": "26.0.2-preview-e4aa1532",
  "@metamask-previews/shield-controller": "5.0.0-preview-e4aa1532",
  "@metamask-previews/signature-controller": "39.0.1-preview-e4aa1532",
  "@metamask-previews/storage-service": "0.0.1-preview-e4aa1532",
  "@metamask-previews/subscription-controller": "5.4.1-preview-e4aa1532",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-e4aa1532",
  "@metamask-previews/transaction-controller": "62.12.0-preview-e4aa1532",
  "@metamask-previews/transaction-pay-controller": "12.0.2-preview-e4aa1532",
  "@metamask-previews/user-operation-controller": "41.0.2-preview-e4aa1532"
}

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.

2 participants