Skip to content

feat(smart-wallet): add executeUserOp - #606

Open
Dargon789 wants to merge 120 commits into
Uniswap:mainfrom
Dargon789:vercel/install-vercel-web-analytics-i-cyj37k
Open

feat(smart-wallet): add executeUserOp#606
Dargon789 wants to merge 120 commits into
Uniswap:mainfrom
Dargon789:vercel/install-vercel-web-analytics-i-cyj37k

Conversation

@Dargon789

Copy link
Copy Markdown

Vercel Web Analytics Installation

Summary

Successfully installed and configured Vercel Web Analytics for this repository following the latest official documentation from https://vercel.com/docs/analytics/quickstart.

Changes Made

1. Package Installation

  • Added: @vercel/analytics@^2.0.1 to root package.json
  • Updated: bun.lock file with the new dependency

2. Documentation Created

  • Created: docs/VERCEL_ANALYTICS.md - Comprehensive integration guide with framework-specific instructions
    • Next.js App Router integration
    • Next.js Pages Router integration
    • React integration
    • Static HTML integration (for Jekyll site)
    • Verification steps
    • Local development notes

3. README Updated

  • Modified: README.md - Added "Web Analytics" section linking to the integration guide

Implementation Notes

This repository is a TypeScript SDK monorepo without a web application frontend. Therefore, I have:

  1. Installed the @vercel/analytics package at the root level to make it available workspace-wide
  2. Created comprehensive documentation for when a web interface is added to the monorepo
  3. Included instructions for multiple frameworks (Next.js, React, static HTML) to cover various use cases

The documentation includes:

  • Framework-specific integration patterns from the official Vercel docs
  • Verification steps to confirm analytics are working
  • Development mode configuration options

Next Steps for Integration

When adding a web application to this monorepo:

  1. Follow the framework-specific instructions in docs/VERCEL_ANALYTICS.md
  2. Enable Analytics in the Vercel dashboard for your project
  3. Deploy the changes to Vercel
  4. Verify analytics are working by checking for network requests to /_vercel/insights/view

Files Modified

  • package.json - Added @vercel/analytics dependency
  • bun.lock - Updated with new dependency
  • README.md - Added Web Analytics section
  • docs/VERCEL_ANALYTICS.md - Created comprehensive integration guide (new file)

Build & Lint Status

Note: Pre-existing build and lint failures in some SDK packages (permit2-sdk) are unrelated to these changes. The failures are due to missing TypeScript and Prettier executables in those packages, which existed before this PR.

The @vercel/analytics package installation does not affect the build process of the existing SDKs, as it's a development/documentation dependency that will be used when web applications are added to the monorepo.

Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>

jsy1218 and others added 30 commits July 3, 2024 05:51
Signed-off-by: Legion's  <64915515+Dargon789@users.noreply.github.com>
Bumps the npm_and_yarn group with 1 update in the / directory: [@openzeppelin/contracts](https://github.com/OpenZeppelin/openzeppelin-contracts).


Updates `@openzeppelin/contracts` from 4.7.0 to 4.9.6
- [Release notes](https://github.com/OpenZeppelin/openzeppelin-contracts/releases)
- [Changelog](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/CHANGELOG.md)
- [Commits](OpenZeppelin/openzeppelin-contracts@v4.7.0...v4.9.6)

---
updated-dependencies:
- dependency-name: "@openzeppelin/contracts"
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…dates (#2)

Bumps the npm_and_yarn group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@openzeppelin/contracts](https://github.com/OpenZeppelin/openzeppelin-contracts) | `4.9.6` | `5.0.2` |
| [follow-redirects](https://github.com/follow-redirects/follow-redirects) | `1.15.3` | `1.15.9` |
| [secp256k1](https://github.com/cryptocoinjs/secp256k1-node) | `4.0.3` | `4.0.4` |
| [tar](https://github.com/isaacs/node-tar) | `6.2.0` | `6.2.1` |
| [undici](https://github.com/nodejs/undici) | `5.28.2` | `5.28.4` |



Updates `@openzeppelin/contracts` from 4.9.6 to 5.0.2
- [Release notes](https://github.com/OpenZeppelin/openzeppelin-contracts/releases)
- [Changelog](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/CHANGELOG.md)
- [Commits](OpenZeppelin/openzeppelin-contracts@v4.9.6...v5.0.2)

Updates `follow-redirects` from 1.15.3 to 1.15.9
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](follow-redirects/follow-redirects@v1.15.3...v1.15.9)

Updates `secp256k1` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/cryptocoinjs/secp256k1-node/releases)
- [Commits](cryptocoinjs/secp256k1-node@v4.0.3...v4.0.4)

Updates `tar` from 6.2.0 to 6.2.1
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](isaacs/node-tar@v6.2.0...v6.2.1)

Updates `undici` from 5.28.2 to 5.28.4
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](nodejs/undici@v5.28.2...v5.28.4)

---
updated-dependencies:
- dependency-name: "@openzeppelin/contracts"
  dependency-type: direct:production
  dependency-group: npm_and_yarn
- dependency-name: follow-redirects
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: secp256k1
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: tar
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: undici
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the npm_and_yarn group with 1 update in the / directory: [@openzeppelin/contracts](https://github.com/OpenZeppelin/openzeppelin-contracts).


Updates `@openzeppelin/contracts` from 5.0.2 to 5.1.0
- [Release notes](https://github.com/OpenZeppelin/openzeppelin-contracts/releases)
- [Changelog](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/CHANGELOG.md)
- [Commits](OpenZeppelin/openzeppelin-contracts@v5.0.2...v5.1.0)

---
updated-dependencies:
- dependency-name: "@openzeppelin/contracts"
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Legion's  <64915515+Dargon789@users.noreply.github.com>
Signed-off-by: Legion's  <64915515+Dargon789@users.noreply.github.com>
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-WS-7266574

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
Fix witness typestring generation to omit final closing parenthesis
per The Compact spec, and add comprehensive tests validating complex
nested mandate structures like those used in Tribunal.

Changes:
- Fix buildWitnessTypestring to remove final closing paren
- Add 8 new tests for complex nested mandate types
- Test simple nested structures
- Test arrays in nested structures
- Test alphabetical sorting of multiple nested types
- Test Tribunal-like deeply nested structures with recursive refs
- Test full Tribunal-style mandate with 5 nested types
- Test bytes vs bytes32 in nested structures

Added comprehensive tests to validate SDK mandate encoding against Tribunal's
reference implementation:

- Nested custom types (Mandate_*)
- Arrays of nested types (Mandate_Fill[])
- Recursive type references (Mandate_Compact contains Mandate)
- Complex multi-level nesting (up to 5 nested types)
- Mandate typehash matches Tribunal's MANDATE_TYPEHASH constant
- Mandate_Fill typehash matches MANDATE_FILL_TYPEHASH
- Mandate_FillComponent typehash matches MANDATE_FILL_COMPONENT_TYPEHASH
- Mandate_Lock typehash matches MANDATE_LOCK_TYPEHASH
- All typehashes computed from typestrings match Tribunal contract constants
- Full Tribunal mandate encoding test case from TribunalBasicTest.sol
- Validates encoding structure (address + fillsHash = 64 bytes)
- Verifies hash computation is deterministic

These tests ensure the SDK's EIP-712 encoding is compatible with Tribunal's
on-chain mandate derivation functions (deriveMandateHash, deriveFillHash).
1) Add collectCoverageFrom and coverage reporting configuration to enable test coverage measurement. Includes text, text-summary, and HTML reporters.

2) Add complete parameter and return type documentation to all functions:

Price Curve Library:
- Document all parameters with types and descriptions
- Add return type documentation with value ranges
- Clarify scaling factor semantics (1e18 = neutral)
- Document error conditions and edge cases

Tribunal Builders:
- Full @param documentation for all builder methods
- Document chaining behavior with @returns
- Add class-level documentation with usage examples
- Document build() method preconditions

Convenience Functions:
- Complete parameter documentation for createSameChainFill()
- Full parameter docs for createCrossChainFill()
- Clarify cross-chain callback semantics

3) Add many new test cases for claim and batch claim functionality
…lders

Add extensive class-level and method documentation to all builder classes
in compact.ts and claim.ts, improving API discoverability and usage examples.
Replace basic README with comprehensive documentation covering all aspects
of the SDK usage, from installation to advanced patterns.
Add functional e2e tests using Supersim for testing against forked chains
…eriods

Add E2E test demonstrating batch compacts covering multiple resource locks
with different reset periods, processed in a single batch claim transaction.
Add a simpler `fromCompact()` method to BaseBatchClaimBuilder that pre-fills
sponsor, nonce, expires, and signature from a BatchCompact struct without
requiring ids/amounts upfront. This provides a cleaner API for building batch
claims:

Before:
  ClaimBuilder.batch(domain)
    .sponsor(compact.sponsor)
    .nonce(compact.nonce)
    .expires(compact.expires)
    .addClaim()...

After:
  ClaimBuilder.batch(domain)
    .fromCompact({ compact, signature })
    .addClaim()...

The method is inherited by BatchClaimBuilder, BatchMultichainClaimBuilder,
and ExogenousBatchMultichainClaimBuilder, providing consistent API across
all batch claim builder types.
Dargon789 and others added 23 commits February 16, 2026 23:20
* feat(smart-wallet): add executeUserOp

* Update check-pr-title.yaml

* feat(smart-wallet): add executeUserOp

* Revert "feat(uniswapx-sdk): graduate to stable v3.0.0 (Uniswap#545)"

This reverts commit dc9c963.

* feat(v2-sdk): bump sdk-core in v2 to support x-layer (Uniswap#463)

* feat(v3-sdk): Bump sdk-core for v3 to support x-layer (Uniswap#464)

* feat(v4-sdk): Bump sdk-core version to support x-layer (Uniswap#465)

* feat(router-sdk): bump sdks for xlayer (Uniswap#466)

* feat(ur-sdk): bump sdks for xlayer (Uniswap#467)

## Description

bump sdks in ur-sdk for xlayer

## How Has This Been Tested?

_[e.g. Manually, E2E tests, unit tests, Storybook]_

## Are there any breaking changes?

_[e.g. Type definitions, API definitions]_

If there are breaking changes, please ensure you bump the major version Bump the major version (by using the title `feat(breaking): ...`), post a notice in #eng-sdks, and explicitly notify all Uniswap Labs consumers of the SDK.

## (Optional) Feedback Focus

_[Specific parts of this PR you'd like feedback on, or that reviewers should pay closer attention to]_

## (Optional) Follow Ups

_[Things that weren't addressed in this PR, ways you plan to build on this work, or other ways this work could be extended]_

<!-- claude-pr-description-start -->
---
## ✨ Claude-Generated Content

## Description
Bumps SDK dependencies in universal-router-sdk and adds X-Layer chain configuration to enable X-Layer support. This follows the recent SDK version bumps (Uniswap#463, Uniswap#464, Uniswap#465, Uniswap#466) that added X-Layer support to the individual SDKs.
## Changes
- Updated `@uniswap/router-sdk` version in `sdks/universal-router-sdk/package.json` from `^2.1.0` to `^2.3.0`
- Updated `@uniswap/sdk-core` version from `^7.8.0` to `^7.10.0`
- Updated `@uniswap/v2-sdk` version from `^4.16.0` to `^4.17.0`
- Updated `@uniswap/v3-sdk` version from `^3.26.0` to `^3.27.0`
- Updated `@uniswap/v4-sdk` version from `^1.23.0` to `^1.24.0`
- Added X-Layer chain configuration (chain ID 196) in `constants.ts` with WETH address and Universal Router addresses for V1_2, V2_0, and V2_1
- Updated `yarn.lock` to reflect the new dependency versions
## How Has This Been Tested?
Will test in routing
## Are there any breaking changes?
No
<!-- claude-pr-description-end -->

* feat(uniswapx-sdk): add V4 hybrid order support (Uniswap#432)

* feat(smart-wallet-sdk): add X-Layer support (Uniswap#468)

* feat(v4-sdk): Revert Add max hop slippage (Uniswap#470)

* feat(universal-router-sdk): Revert Universal Router 2.1 support (Uniswap#471)

## Description

Revert Universal Router 2.1 support

## How Has This Been Tested?

_[e.g. Manually, E2E tests, unit tests, Storybook]_

## Are there any breaking changes?

_[e.g. Type definitions, API definitions]_

If there are breaking changes, please ensure you bump the major version Bump the major version (by using the title `feat(breaking): ...`), post a notice in #eng-sdks, and explicitly notify all Uniswap Labs consumers of the SDK.

## (Optional) Feedback Focus

_[Specific parts of this PR you'd like feedback on, or that reviewers should pay closer attention to]_

## (Optional) Follow Ups

_[Things that weren't addressed in this PR, ways you plan to build on this work, or other ways this work could be extended]_

<!-- claude-pr-description-start -->
---
## ✨ Claude-Generated Content

## Description
Reverts Universal Router 2.1 support that was added in PR Uniswap#442. This PR removes all v2.1-specific features to roll back to a v2.0-only state.
## Changes
- Removed `UniversalRouterVersion.V2_1` enum value and all v2.1 router addresses from chain configurations
- Deleted `src/utils/eip712.ts` (EIP712 signing utilities for signed route execution)
- Deleted `src/entities/actions/across.ts` (Across V4 bridge types)
- Removed `SignedRouteOptions`, `EIP712Payload` types and `getExecuteSignedPayload()`, `encodeExecuteSigned()` methods from `swapRouter.ts`
- Removed `maxHopSlippage` option from `SwapOptions` interface
- Removed `addAcrossBridge()` method and `ACROSS_V4_DEPOSIT_V3` command from `routerCommands.ts`
- Removed exports: `NONCE_SKIP_CHECK`, `generateNonce`, `EXECUTE_SIGNED_TYPES`, `getUniversalRouterDomain`
- Deleted unit tests for signed routes (`signedRoutes.test.ts`) and Across bridge (`across.test.ts`)
- Removed v2.1 documentation from README.md (per-hop slippage, signed routes, cross-chain bridging)
## How Has This Been Tested?
Unit tests updated to remove v2.1-specific test cases.
## Are there any breaking changes?
Yes - removes the following exports and functionality:
- `UniversalRouterVersion.V2_1`
- `SignedRouteOptions`, `EIP712Payload` types
- `NONCE_SKIP_CHECK`, `generateNonce`, `EXECUTE_SIGNED_TYPES`, `getUniversalRouterDomain` exports
- `SwapRouter.getExecuteSignedPayload()` and `SwapRouter.encodeExecuteSigned()` methods
- `AcrossV4DepositV3Params` type and `CONTRACT_BALANCE` from across module
- `maxHopSlippage` option in `SwapOptions`
- Bridge parameters in `SwapRouter.swapCallParameters()`
<!-- claude-pr-description-end -->

* feat(universal-router-sdk): downgrade universal-router to v2.0.0-beta.2 (Uniswap#473)

* feat(ur-sdk): xlayer UR 2.0 (Uniswap#472)

## PR Scope

Please title your PR according to the following types and scopes following [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/):

- `fix(SDK name):` will trigger a patch version
- `chore(<type>):` will not trigger any release and should be used for internal repo changes
- `<type>(public):` will trigger a patch version for non-code changes (e.g. README changes)
- `feat(SDK name):` will trigger a minor version
- `feat(breaking):` will trigger a major version for a breaking change

## Description

_[Summary of the change, motivation, and context]_

## How Has This Been Tested?

_[e.g. Manually, E2E tests, unit tests, Storybook]_

## Are there any breaking changes?

_[e.g. Type definitions, API definitions]_

If there are breaking changes, please ensure you bump the major version Bump the major version (by using the title `feat(breaking): ...`), post a notice in #eng-sdks, and explicitly notify all Uniswap Labs consumers of the SDK.

## (Optional) Feedback Focus

_[Specific parts of this PR you'd like feedback on, or that reviewers should pay closer attention to]_

## (Optional) Follow Ups

_[Things that weren't addressed in this PR, ways you plan to build on this work, or other ways this work could be extended]_

<!-- claude-pr-description-start -->
---
## ✨ Claude-Generated Content

## Description
Adds the Universal Router V2.0 deployment configuration for X-Layer (chain ID 196) by updating from placeholder values to the actual deployed contract address.
## Changes
- Updated X-Layer Universal Router V2.0 address from placeholder (`0x0000000000000000000000000000000000000000`) to deployed contract (`0x6bdbd02e751bca2c029cfc21098da04acce8d582`) in `sdks/universal-router-sdk/src/utils/constants.ts`
- Updated X-Layer Universal Router V2.0 creation block from `1` to `47680350`
## How Has This Been Tested?
Will be tested in routing pipeline.
## Are there any breaking changes?
No
<!-- claude-pr-description-end -->

* fix(router-sdk): bump v4-sdk for ur2.1 revert (Uniswap#474)

* feat(universal-router-sdk): Bump router-sdk version (Uniswap#475)

* feat(uniswapx-sdk): expand chain 1301 config with Hybrid and Permit2 support (Uniswap#469)

Co-authored-by: Alan Wu <alanwu100@gmail.com>
Co-authored-by: Alan Wu <60207036+alanhwu@users.noreply.github.com>

* fix(v4-sdk): update to use pathInput (Uniswap#476)

Co-authored-by: Vasilis Xouris <vasileios.xouris@uniswap.org>
Co-authored-by: dianakocsis <diana.kocsis@uniswap.org>

* fix(universal-router-sdk): fix xlayer ur 2.0 address (Uniswap#479)

* fix(router-sdk): bump v4-sdk to 1.25.1 (priceImpact calc fix) (Uniswap#477)

* fix(sdk-core): update xlayer v4 position manager address (Uniswap#480)

* fix(universal-router-sdk): bump v4-sdk and router-sdk (priceImpact calc fix) (Uniswap#478)

* feat(uniswapx-sdk): add V4 order quoter, validator and integration tests (Uniswap#481)

* feat(uniswapx-sdk): bubble v4 quoter revert data (Uniswap#485)

* fix(v4-sdk): eth-weth exact output (Uniswap#486)

* fix(router-sdk): bump v4-sdk to 1.25.2 in router-sdk (Uniswap#487)

* fix(universal-router-sdk): handle ETH/WETH output in V4 split routes (Uniswap#462)

Co-authored-by: marktoda <toda.mark@gmail.com>

* feat: update ai toolkit ref (Uniswap#488)

Co-authored-by: Developer <dev@example.com>
Co-authored-by: Nick Koutrelakos <nick.koutrelakos@uniswap.org>

* fix(v4-sdk): eth-weth as starting pool (Uniswap#490)

* fix(v4-sdk): add comment to trigger release (Uniswap#492)

* fix(v4-sdk): more edge cases for eth-weth pools (Uniswap#494)

* fix(router-sdk): bump v4-sdk to 1.25.5 (Uniswap#493)

* fix(universal-router-sdk): handle ETH-WETH starting pool in split routes (Uniswap#491)

* fix(v4-sdk): bump sdk-core to 7.10.1 and v3-sdk to 3.27.0 (Uniswap#496)

* fix(router-sdk): bump sdk-core to 7.10.1 and v4-sdk to 1.25.6 (Uniswap#497)

* fix(universal-router-sdk): bump router-sdk to 2.3.5 and v4-sdk to 1.25.6 (Uniswap#498)

* chore(uniswapx-sdk): update hybrid order (Uniswap#495)

* feat(v4-sdk): add max hop slippage support for multi-hop swaps (Uniswap#500)

* chore(uniswapx-sdk): new reactor and hook addr (Uniswap#501)

* feat(v4-sdk): add URVersion parameter to addAction for V2.1 encoding (Uniswap#502)

* feat(router-sdk): bump v4-sdk to 1.27.0 (Uniswap#503)

* feat(ur-sdk): Universal Router 2.1 support (Uniswap#504)

Co-authored-by: Daniel Gretzke <daniel@gretzke.de>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* feat(sdk-core): Add Linea support (Uniswap#519)

* chore(CODEOWNERS): update CO for swap-be SDKs (Uniswap#521)

* feat(v3-sdk): bump sdk-core to 7.11.0 (Uniswap#523)

* feat(v2-sdk): update V2 SDK @uniswap/sdk-core to version 7.11.0 (Uniswap#522)

* feat(v4-sdk): bump sdk-core to 7.11.0 and v3-sdk to 3.28.0 (Uniswap#524)

* feat(router-sdk): update SDK versions to 4.18.0, 3.28.0, and 1.28.0 (Uniswap#525)

* feat(router-sdk): update SDK core versions to 7.11.0 (Uniswap#526)

* feat(universal-router-sdk): bump SDK dependencies to latest versions (Uniswap#527)

* feat(sdk-core): add Tempo chain (4217) support (Uniswap#533)

* feat(v2-sdk, v3-sdk): bump sdk-core to ^7.12.0 for Tempo chain support (Uniswap#536)

* feat(v4-sdk): bump sdk-core to ^7.12.0 and v3-sdk to 3.29.0 for Tempo (Uniswap#537)

* feat(router-sdk): bump SDK deps for Tempo chain support (Uniswap#538)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix(sdk-core): remove WETH9 entry for Tempo chain (4217) (Uniswap#540)

* fix(v2-sdk, v3-sdk): bump sdk-core to ^7.12.1 for Tempo WETH9 fix (Uniswap#541)

* fix(v4-sdk): bump sdk-core to ^7.12.1 and v3-sdk to 3.29.1 (Uniswap#542)

* fix(router-sdk): bump all SDK deps for Tempo WETH9 fix (Uniswap#543)

* feat(universal-router-sdk): add Tempo chain config and bump SDK deps (Uniswap#534)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix: resolve zizmor GitHub Actions security findings (Uniswap#516)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* feat(universal-router-sdk): add SwapProxy support for no-Permit2 approve+swap flow (Uniswap#518)

* feat(uniswapx-sdk): graduate to stable v3.0.0 (Uniswap#545)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* feat: migrate from semantic-release to Changesets with workspace: protocol (Uniswap#539)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix: correct changesets/action SHA in release workflow (Uniswap#548)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix: add registry-url for npm OIDC auth and mark uniswapx-integration private (Uniswap#549)

* test: dummy sdk-core patch to validate changeset workflow (Uniswap#547)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix: use exact workspace versions for cascading changesets (Uniswap#551)

* fix: remove registry-url to fix npm Trusted Publishing OIDC auth (Uniswap#552)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* chore: Version Packages (Uniswap#550)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: David Gilman <david.gilman@uniswap.org>

* chore: remove push-branches-from-main workflow (Uniswap#555)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* ci: skip unnecessary workflows on changeset-release branches (Uniswap#554)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix(v4-sdk): increase liquidity fix (Uniswap#558)

* feat(router-sdk): add maxHopSlippage to Trade.swaps (Uniswap#529)

## Description

For maxHopSlippage, **a partial implementation exists for multi-hop V4-only routes in UR-sdk, but it is incorrect:**

1. Flat array on **`SwapOptions`** -- A single `maxHopSlippage?: BigNumber[]` on `SwapOptions` cannot correctly map values to specific routes in a split-route trade (e.g. 40% Route A with 3 hops, 60% Route B with 2 hops).
2. Mixed routes pass the full array -- In `addMixedSwap`, the entire `options.maxHopSlippage` array is passed to V4 sections without slicing; V2/V3 sections get nothing.



**We need to ensure that per-hop slippage is saved per** **_route_** **data model, not per** **_trade_** **(i.e. for split route trades)**

**This PR adds** `maxHopSlippage` **support to the** `Trade.swaps` **object in router-sdk, enabling per-hop slippage protection for multi-hop swaps across all route types (V2, V3, V4, and mixed routes)**

## How Has This Been Tested?

_[e.g. Manually, E2E tests, unit tests, Storybook]_

## Are there any breaking changes?


Purely additive, no breaking changes, no existing code uses the new field yet. Can merge independently.

## Follow Ups

- in order to be used in UR-sdk, need to publish minor version bump to router-sdk



<!-- claude-pr-description-start -->

---

## ✨ Claude-Generated Content

## Summary

Adds `maxHopSlippage` support to the `Trade` class in router-sdk, enabling per-hop slippage protection for multi-hop swaps across all route types (V2, V3, V4, and mixed routes).

## Changes

- Added optional `maxHopSlippage?: bigint[]` field to the `swaps` array type in `Trade` class
- Extended route input types for V2, V3, V4, and mixed routes to accept `maxHopSlippage` parameter
- Propagated `maxHopSlippage` through the constructor for all route types
- Extended `fromRoutes()` static method to pass `maxHopSlippage` through populated routes

## How Has This Been Tested?

This is a type extension.

## Are there any breaking changes?

No - `maxHopSlippage` is an optional parameter with no changes to existing behavior.

<!-- claude-pr-description-end -->

* feat(breaking): switch v4-sdk from UR v2.1 to UR v2.1.1 & add single-hop ABI struct (Uniswap#530)

## Description

- Rename URVersion.V2_1 to `V2_1_1 `in v4-sdk
- Rename V4_SWAP_ACTIONS_V2_1 to `V4_SWAP_ACTIONS_V2_1_1` and update all references in v4Planner.ts

## How Has This Been Tested?

_[e.g. Manually, E2E tests, unit tests, Storybook]_

## Are there any breaking changes?

The version rename is breaking. (And it is intentionally breaking, as opposed to keeping v2.1 around, because v2.1.1 fixes a precision bug. Plus we don't actually use v2.1 in prod yet)

1. publish v4-sdk as major version
2. update UR-sdk and router-SDK

## (Optional) Feedback Focus

_[Specific parts of this PR you'd like feedback on, or that reviewers should pay closer attention to]_

## (Optional) Follow Ups

Need to explicitly update UR-sdk and router-SDK versions

<!-- claude-pr-description-start -->

---

## ✨ Claude-Generated Content

## Summary

Updates v4-sdk to use Universal Router version 2.1.1 instead of 2.1 by renaming version enums, ABI definitions, and struct types throughout the codebase. Adds V2.1.1-specific struct definitions for single-hop swap actions.

## Changes

- Renamed `URVersion.V2_1` to `URVersion.V2_1_1` in the `URVersion` enum
- Renamed `V4_SWAP_ACTIONS_V2_1` to `V4_SWAP_ACTIONS_V2_1_1` and expanded to include single-hop swap actions (`SWAP_EXACT_IN_SINGLE`, `SWAP_EXACT_OUT_SINGLE`)
- Added new V2.1.1 struct definitions with `maxHopSlippage` field:
    - `SWAP_EXACT_IN_SINGLE_STRUCT_V2_1_1`
    - `SWAP_EXACT_IN_STRUCT_V2_1_1`
    - `SWAP_EXACT_OUT_SINGLE_STRUCT_V2_1_1`
    - `SWAP_EXACT_OUT_STRUCT_V2_1_1`
- Renamed V2.0 single-hop structs to be explicit: `SWAP_EXACT_IN_SINGLE_STRUCT_V2_0`, `SWAP_EXACT_OUT_SINGLE_STRUCT_V2_0`
- Refactored `addTrade` method to use conditional spread operator for cleaner version-specific struct building
- Added validation that `maxHopSlippage` length matches `route.pools.length`
- Updated `v4BaseActionsParser.ts` to use the new version enum and ABI definitions
- Updated all comments referencing "V2.1" to "V2.1.1"
- Updated all test files to use `URVersion.V2_1_1`

## How Has This Been Tested?

Existing unit tests updated to use the new version constant.

## Are there any breaking changes?

Yes - this is a breaking change for consumers using `URVersion.V2_1` or `V4_SWAP_ACTIONS_V2_1`. They will need to update to `URVersion.V2_1_1` and `V4_SWAP_ACTIONS_V2_1_1` respectively.

<!-- claude-pr-description-end -->

* feat(universal-router-sdk): v2.1.1 version rename & ABI structs (Uniswap#531)

## Description



TODO : Need to explicitly update UR-sdk and router-SDK versions based on v4-sdk breaking changes

- Rename UniversalRouterVersion.V2_1 to V2_1_1 in constants.ts + update contract addresses
- Add V2.1.1 ABI definitions for V2/V3 swap commands in routerCommands.ts (the new V2V3_SWAP_COMMANDS_V2_1_1 map)
- Make addCommand/createCommand accept optional urVersion parameter for ABI selection

This is all infrastructure/plumbing. The new V2.1.1 ABI defs exist but nothing calls them yet. The version rename is technically breaking but no consumers use UR V2.1 from the SDK.

## How Has This Been Tested?

_[e.g. Manually, E2E tests, unit tests, Storybook]_

## Are there any breaking changes?

_[e.g. Type definitions, API definitions]_

If there are breaking changes, please ensure you bump the major version Bump the major version (by using the title `feat(breaking): ...`), post a notice in #eng-sdks, and explicitly notify all Uniswap Labs consumers of the SDK.

## (Optional) Feedback Focus

_[Specific parts of this PR you'd like feedback on, or that reviewers should pay closer attention to]_

## (Optional) Follow Ups

_[Things that weren't addressed in this PR, ways you plan to build on this work, or other ways this work could be extended]_

<!-- claude-pr-description-start -->

---

## ✨ Claude-Generated Content

## Summary

Renames `UniversalRouterVersion.V2_1` to `V2_1_1` and adds ABI infrastructure for V2.1.1 swap commands with `maxHopSlippage` support.

## Changes

- Renamed `UniversalRouterVersion.V2_1` to `V2_1_1` in `constants.ts` enum (version string `'2.1'` → `'2.1.1'`)
- Updated all chain configs (20+ chains) to use `[UniversalRouterVersion.V2_1_1]` key
- Added `V2V3_SWAP_COMMANDS_V2_1_1` ABI definitions for V2/V3 swap commands with extended `maxHopSlippage` parameter:
    - `V3_SWAP_EXACT_IN`
    - `V3_SWAP_EXACT_OUT`
    - `V2_SWAP_EXACT_IN`
    - `V2_SWAP_EXACT_OUT`
- Updated `addCommand()` and `createCommand()` to accept optional `urVersion` parameter for ABI selection
- Fixed comment typo in `Parser.V3Actions` case ("v4 swap data" → "v3 position data")

## How Has This Been Tested?

Infrastructure/plumbing changes only - the new V2.1.1 ABI definitions exist but are not yet called by any code paths.

## Are there any breaking changes?

The version enum rename from `V2_1` to `V2_1_1` is technically breaking, but per the design doc, no consumers currently use V2.1.

<!-- claude-pr-description-end -->

* feat(universal-router-sdk): wire up per-hop slippage encoding (Uniswap#532)

## Description

- Remove maxHopSlippage from SwapOptions
- Update Swap interface to carry maxHopSlippage (from trade.swaps)
- addV2Swap / addV3Swap: branch on urVersion to encode with or without maxHopSlippage
- addV4Swap: read maxHopSlippage from swap instead of options
- addMixedSwap: slice maxHopSlippage per section with hop offset tracking
- Tests for all protocol paths (V2, V3, V4, mixed) with and without per-hop slippage

## How Has This Been Tested?

_[e.g. Manually, E2E tests, unit tests, Storybook]_

## Are there any breaking changes?

If consumers want to use UR v2.1.1, they must update to this version of the UR-sdk.

<!-- claude-pr-description-start -->
---
## ✨ Claude-Generated Content

## Summary
Wire up per-hop slippage encoding for Universal Router v2.1.1 across all protocol versions (V2, V3, V4, and mixed routes). The `maxHopSlippage` parameter has been moved from `SwapOptions` to individual swaps, enabling granular slippage protection per route.
## Changes
### `sdks/universal-router-sdk/src/entities/actions/uniswap.ts`
- Removed `maxHopSlippage` from `SwapOptions` interface
- Added `maxHopSlippage?: bigint[]` to the `Swap` interface to carry per-hop slippage from trade.swaps
- `addV2Swap`: branches on `urVersion` to encode with/without `maxHopSlippage` for V2_SWAP_EXACT_IN and V2_SWAP_EXACT_OUT commands
- `addV3Swap`: branches on `urVersion` to encode with/without `maxHopSlippage` for V3_SWAP_EXACT_IN and V3_SWAP_EXACT_OUT commands
- `addV4Swap`: reads `maxHopSlippage` from the swap object instead of options
- `addMixedSwap`: tracks `hopOffset` to slice the flat `maxHopSlippage` array per protocol section
- Added validation to ensure `maxHopSlippage` length matches `route.pools.length`
### `sdks/universal-router-sdk/README.md`
- Updated per-hop slippage documentation to reflect new API where `maxHopSlippage` is specified on each route within `RouterTrade`
- Added mixed routes example showing how the SDK slices hop slippage by section
- Updated references from v2.1 to v2.1.1
### `sdks/universal-router-sdk/test/unit/perHopSlippage.test.ts` (new)
- Tests for V2_SWAP_EXACT_IN/OUT with maxHopSlippage (V2.1.1 ABI)
- Tests for V3_SWAP_EXACT_IN/OUT with maxHopSlippage (V2.1.1 ABI)
- Tests for empty maxHopSlippage arrays
- Backward compatibility tests (V2.0 ABI without maxHopSlippage)
- Mixed route slippage slicing tests
## How Has This Been Tested?
Unit tests covering all protocol paths (V2, V3, V4, mixed) with and without per-hop slippage encoding.
## Are there any breaking changes?
**Minor breaking change**: `maxHopSlippage` has been removed from `SwapOptions`. Consumers must now specify `maxHopSlippage` on individual routes within the `RouterTrade` constructor.
Migration:
```typescript
// Before (v2.1)
SwapRouter.swapCallParameters(trade, { maxHopSlippage: [...], urVersion: URVersion.V2_1 })
// After (v2.1.1)
const trade = new RouterTrade({
  v3Routes: [{ routev3, inputAmount, outputAmount, maxHopSlippage: [...] }],
  tradeType,
})
SwapRouter.swapCallParameters(trade, { urVersion: URVersion.V2_1_1 })
```
<!-- claude-pr-description-end -->

* chore: migrate monorepo from Yarn to Bun (Uniswap#556)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* feat(ur-sdk): PAY_PORTION_FULL_PRECISION support (Uniswap#528)

* fix: use bun/yarn npm publish to resolve workspace:* protocol (Uniswap#562)

* Version Packages (Uniswap#563)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Thomas Thachil <github@thomasthachil.com>

* feat(release): changesets for UR v2.1.1 releases (Uniswap#560)

a changeset changelog update. will auto-bump + release SDKs once merged

* chore(ur-sdk): swap out URVersions from v4-sdk for UniversalRouterVersion (Uniswap#565)

## Description

previously we were exporting URVersion from v4-sdk for the `urVersion` field in universal-router-sdk's `SwapOptions`. it's a strange import pattern, and also forces ur-sdk consumers to import v4-sdk just for the typing

we should use UniversalRouterVersion from universal-router-sdk.

## How Has This Been Tested?

ran tests

## Are there any breaking changes?

_[e.g. Type definitions, API definitions]_

If there are breaking changes, please ensure you bump the major version Bump the major version (by using the title `feat(breaking): ...`), post a notice in #eng-sdks, and explicitly notify all Uniswap Labs consumers of the SDK.

* feat(ur-sdk): release bump UR-sdk to 5.1.0 (Uniswap#566)

## PR Scope

Please title your PR according to the following types and scopes following [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/):

- `fix(SDK name):` will trigger a patch version
- `chore(<type>):` will not trigger any release and should be used for internal repo changes
- `<type>(public):` will trigger a patch version for non-code changes (e.g. README changes)
- `feat(SDK name):` will trigger a minor version
- `feat(breaking):` will trigger a major version for a breaking change

## Description

_[Summary of the change, motivation, and context]_

## How Has This Been Tested?

_[e.g. Manually, E2E tests, unit tests, Storybook]_

## Are there any breaking changes?

_[e.g. Type definitions, API definitions]_

If there are breaking changes, please ensure you bump the major version Bump the major version (by using the title `feat(breaking): ...`), post a notice in #eng-sdks, and explicitly notify all Uniswap Labs consumers of the SDK.

## (Optional) Feedback Focus

_[Specific parts of this PR you'd like feedback on, or that reviewers should pay closer attention to]_

## (Optional) Follow Ups

_[Things that weren't addressed in this PR, ways you plan to build on this work, or other ways this work could be extended]_

* feat(config): add supply chain security controls (Uniswap#570)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: replace npx tsx with bun run in flashtestations-sdk examples (Uniswap#573)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Update sdks/flashtestations-sdk/package.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update sdks/smart-wallet-sdk/package.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update sdks/uniswapx-sdk/integration/package.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update sdks/uniswapx-sdk/integration/package.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update sdks/smart-wallet-sdk/src/smartWallet.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

---------

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>
Co-authored-by: Kristie Huang <kristiehuang01@gmail.com>
Co-authored-by: marktoda <toda.mark@gmail.com>
Co-authored-by: googleworkspace-bot <googleworkspace-bot@google.com>
Co-authored-by: cam-uni <cameron.shahmirzadi@uniswap.org>
Co-authored-by: Siyu Jiang (See-You John) <91580504+jsy1218@users.noreply.github.com>
Co-authored-by: Zach Yang <zhiyuan.zach.yang@gmail.com>
Co-authored-by: ens_408 <eric.sanchirico@uniswap.org>
Co-authored-by: Alan Wu <alanwu100@gmail.com>
Co-authored-by: Alan Wu <60207036+alanhwu@users.noreply.github.com>
Co-authored-by: Vasilis Xouris <vasileios.xouris@uniswap.org>
Co-authored-by: dianakocsis <diana.kocsis@uniswap.org>
Co-authored-by: Daniel Gretzke <daniel@gretzke.de>
Co-authored-by: Developer <dev@example.com>
Co-authored-by: Nick Koutrelakos <nick.koutrelakos@uniswap.org>
Co-authored-by: Ayo Akala <13251173+Ayoakala@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Thomas Thachil <thomasthachil@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: David Gilman <david.gilman@uniswap.org>
Co-authored-by: zi-yang-uni <ziyi.yang@uniswap.org>
Co-authored-by: Thomas Thachil <github@thomasthachil.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>
Co-authored-by: googleworkspace-bot <googleworkspace-bot@google.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-PARSEGITCONFIG-9403763

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
Co-authored-by: googleworkspace-bot <googleworkspace-bot@google.com>
Remove Arc (5042) and Robinhood (4663) chain entries and related addresses, WETH mapping, router configs and tests across sdk-core and universal-router-sdk. Inline and consolidate v4 URVersion mapping helpers (move/replace the old toV4URVersion util with local mappings in encodeV4Action and uniswap action code), update encode/encodeSwap imports accordingly, and delete the removed utility tests. Also revert several package versions/changelog entries across multiple sdks, remove the top-level package.json resolutions entry, and apply small README formatting change.

Co-Authored-By: Copilot <198982749+Copilot@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>
Co-authored-by: googleworkspace-bot <googleworkspace-bot@google.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-AJV-15274295

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
Co-authored-by: googleworkspace-bot <googleworkspace-bot@google.com>
…#22)

The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-TMP-11501554
- https://snyk.io/vuln/SNYK-JS-ELLIPTIC-8187303
- https://snyk.io/vuln/SNYK-JS-INFLIGHT-6095116
- https://snyk.io/vuln/SNYK-JS-COOKIE-8163060

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
Co-authored-by: googleworkspace-bot <googleworkspace-bot@google.com>
…ties (#21)

The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-COOKIE-8163060
- https://snyk.io/vuln/SNYK-JS-ELLIPTIC-8187303
- https://snyk.io/vuln/SNYK-JS-TMP-11501554
- https://snyk.io/vuln/SNYK-JS-INFLIGHT-6095116

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
Co-authored-by: googleworkspace-bot <googleworkspace-bot@google.com>
* fix: sdks/uniswapx-sdk/package.json to reduce vulnerabilities

The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-BRACES-6838727
- https://snyk.io/vuln/SNYK-JS-CROSSSPAWN-8303230
- https://snyk.io/vuln/SNYK-JS-FORMDATA-10841150
- https://snyk.io/vuln/SNYK-JS-MICROMATCH-6838728
- https://snyk.io/vuln/SNYK-JS-REQUEST-3361831
- https://snyk.io/vuln/SNYK-JS-TOUGHCOOKIE-5672873
- https://snyk.io/vuln/SNYK-JS-UNSETVALUE-2400660

* Update sdks/uniswapx-sdk/package.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update sdks/uniswapx-sdk/package.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

---------

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>
Co-authored-by: snyk-bot <snyk-bot@snyk.io>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: googleworkspace-bot <googleworkspace-bot@google.com>
* chore: update dependencies and ci permissions

- Upgrade `eslint` to `v9.26.0` across multiple SDKs.
- Update `hardhat`, `ethers`, and related testing dependencies in `uniswapx-sdk`.
- Deprecate `FACTORY_ADDRESS` in `v3-sdk` constants.
- Update `claude-pr-metadata-update.yml` workflow permissions to `contents: read`.
- Add `main` to ignored PR branches in VS Code settings.
- Add `.idea/` to `.gitignore` in `v3-sdk`.
- Minor formatting updates to `.eslintrc.js` and `.github/workflows/check-pr-title.yaml`.

* Consolidate PR prompts, add Vercel & SDK updates

Combine scattered PR-review fragments into a single .claude/prompts/claude-pr-review.md and remove the old pr-review files. Add Vercel project metadata (.vercel/project.json) and README, plus a new .env.local (contains environment variables — review for sensitive data and rotate if committed). Add Yarn runtime under .yarn/releases and apply broad updates across multiple SDK packages (sdks/*): package.json, contracts, utils, tests and refactors in uniswapx-sdk/universal-router/v2-v4 SDKs. Minor CI/workflow and editor tweaks (check-pr-title whitespace, .vscode settings). Note: monorepo-integrity.yml currently contains unresolved merge conflict markers (bun install vs yarn --immutable) and needs resolution.

Co-Authored-By: Copilot <198982749+Copilot@users.noreply.github.com>

* Update package.json and resolve merge conflicts

Removed devDependencies and resolved merge conflicts.

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update dependency installation method in workflow

Replaced yarn with bun for dependency installation.

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update Uniswap SDK dependencies in package.json

Updated dependencies for Uniswap SDKs and removed stashed changes.

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Resolve merge conflict in index.ts

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Fix merge conflicts in constants.test.ts

Resolved merge conflicts in constants test data.

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update dependencies in package.json

Updated dependencies for UniswapX SDK.

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Refactor Uniswap action parameters and logic

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update .env.local

Co-authored-by: semgrep-code-uniswap[bot] <212759065+semgrep-code-uniswap[bot]@users.noreply.github.com>

* Update .env.local

Co-authored-by: semgrep-code-uniswap[bot] <212759065+semgrep-code-uniswap[bot]@users.noreply.github.com>

* Update .env.local

Co-authored-by: semgrep-code-uniswap[bot] <212759065+semgrep-code-uniswap[bot]@users.noreply.github.com>

* Update .env.local

Co-authored-by: semgrep-code-uniswap[bot] <212759065+semgrep-code-uniswap[bot]@users.noreply.github.com>

* Update @uniswap/sdk-core version in package.json

Updated the version of @uniswap/sdk-core dependency.

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update Uniswap SDK dependencies in package.json

Updated Uniswap SDK dependencies to newer versions.

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Resolve merge conflicts in package.json

Removed conflicting dependencies and updated overrides.

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Fix merge conflicts in routerCommands.ts

Removed merge conflict markers and cleaned up the code.

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Remove merge conflict markers from signedRoutes.test.ts

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update UniversalRouterVersion and remove V2_1

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update @uniswap/sdk-core dependency to workspace

Reverted the version of @uniswap/sdk-core to use workspace instead of a specific version.

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

---------

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>
Co-authored-by: googleworkspace-bot <googleworkspace-bot@google.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: semgrep-code-uniswap[bot] <212759065+semgrep-code-uniswap[bot]@users.noreply.github.com>
* feat(smart-wallet): add executeUserOp

* Update check-pr-title.yaml

* feat(smart-wallet): add executeUserOp

* Revert "feat(uniswapx-sdk): graduate to stable v3.0.0 (Uniswap#545)"

This reverts commit dc9c963.

* feat(v2-sdk): bump sdk-core in v2 to support x-layer (Uniswap#463)

* feat(v3-sdk): Bump sdk-core for v3 to support x-layer (Uniswap#464)

* feat(v4-sdk): Bump sdk-core version to support x-layer (Uniswap#465)

* feat(router-sdk): bump sdks for xlayer (Uniswap#466)

* feat(ur-sdk): bump sdks for xlayer (Uniswap#467)

## Description

bump sdks in ur-sdk for xlayer

## How Has This Been Tested?

_[e.g. Manually, E2E tests, unit tests, Storybook]_

## Are there any breaking changes?

_[e.g. Type definitions, API definitions]_

If there are breaking changes, please ensure you bump the major version Bump the major version (by using the title `feat(breaking): ...`), post a notice in #eng-sdks, and explicitly notify all Uniswap Labs consumers of the SDK.

## (Optional) Feedback Focus

_[Specific parts of this PR you'd like feedback on, or that reviewers should pay closer attention to]_

## (Optional) Follow Ups

_[Things that weren't addressed in this PR, ways you plan to build on this work, or other ways this work could be extended]_

<!-- claude-pr-description-start -->
---
## ✨ Claude-Generated Content

## Description
Bumps SDK dependencies in universal-router-sdk and adds X-Layer chain configuration to enable X-Layer support. This follows the recent SDK version bumps (Uniswap#463, Uniswap#464, Uniswap#465, Uniswap#466) that added X-Layer support to the individual SDKs.
## Changes
- Updated `@uniswap/router-sdk` version in `sdks/universal-router-sdk/package.json` from `^2.1.0` to `^2.3.0`
- Updated `@uniswap/sdk-core` version from `^7.8.0` to `^7.10.0`
- Updated `@uniswap/v2-sdk` version from `^4.16.0` to `^4.17.0`
- Updated `@uniswap/v3-sdk` version from `^3.26.0` to `^3.27.0`
- Updated `@uniswap/v4-sdk` version from `^1.23.0` to `^1.24.0`
- Added X-Layer chain configuration (chain ID 196) in `constants.ts` with WETH address and Universal Router addresses for V1_2, V2_0, and V2_1
- Updated `yarn.lock` to reflect the new dependency versions
## How Has This Been Tested?
Will test in routing
## Are there any breaking changes?
No
<!-- claude-pr-description-end -->

* feat(uniswapx-sdk): add V4 hybrid order support (Uniswap#432)

* feat(smart-wallet-sdk): add X-Layer support (Uniswap#468)

* feat(v4-sdk): Revert Add max hop slippage (Uniswap#470)

* feat(universal-router-sdk): Revert Universal Router 2.1 support (Uniswap#471)

## Description

Revert Universal Router 2.1 support

## How Has This Been Tested?

_[e.g. Manually, E2E tests, unit tests, Storybook]_

## Are there any breaking changes?

_[e.g. Type definitions, API definitions]_

If there are breaking changes, please ensure you bump the major version Bump the major version (by using the title `feat(breaking): ...`), post a notice in #eng-sdks, and explicitly notify all Uniswap Labs consumers of the SDK.

## (Optional) Feedback Focus

_[Specific parts of this PR you'd like feedback on, or that reviewers should pay closer attention to]_

## (Optional) Follow Ups

_[Things that weren't addressed in this PR, ways you plan to build on this work, or other ways this work could be extended]_

<!-- claude-pr-description-start -->
---
## ✨ Claude-Generated Content

## Description
Reverts Universal Router 2.1 support that was added in PR Uniswap#442. This PR removes all v2.1-specific features to roll back to a v2.0-only state.
## Changes
- Removed `UniversalRouterVersion.V2_1` enum value and all v2.1 router addresses from chain configurations
- Deleted `src/utils/eip712.ts` (EIP712 signing utilities for signed route execution)
- Deleted `src/entities/actions/across.ts` (Across V4 bridge types)
- Removed `SignedRouteOptions`, `EIP712Payload` types and `getExecuteSignedPayload()`, `encodeExecuteSigned()` methods from `swapRouter.ts`
- Removed `maxHopSlippage` option from `SwapOptions` interface
- Removed `addAcrossBridge()` method and `ACROSS_V4_DEPOSIT_V3` command from `routerCommands.ts`
- Removed exports: `NONCE_SKIP_CHECK`, `generateNonce`, `EXECUTE_SIGNED_TYPES`, `getUniversalRouterDomain`
- Deleted unit tests for signed routes (`signedRoutes.test.ts`) and Across bridge (`across.test.ts`)
- Removed v2.1 documentation from README.md (per-hop slippage, signed routes, cross-chain bridging)
## How Has This Been Tested?
Unit tests updated to remove v2.1-specific test cases.
## Are there any breaking changes?
Yes - removes the following exports and functionality:
- `UniversalRouterVersion.V2_1`
- `SignedRouteOptions`, `EIP712Payload` types
- `NONCE_SKIP_CHECK`, `generateNonce`, `EXECUTE_SIGNED_TYPES`, `getUniversalRouterDomain` exports
- `SwapRouter.getExecuteSignedPayload()` and `SwapRouter.encodeExecuteSigned()` methods
- `AcrossV4DepositV3Params` type and `CONTRACT_BALANCE` from across module
- `maxHopSlippage` option in `SwapOptions`
- Bridge parameters in `SwapRouter.swapCallParameters()`
<!-- claude-pr-description-end -->

* feat(universal-router-sdk): downgrade universal-router to v2.0.0-beta.2 (Uniswap#473)

* feat(ur-sdk): xlayer UR 2.0 (Uniswap#472)

## PR Scope

Please title your PR according to the following types and scopes following [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/):

- `fix(SDK name):` will trigger a patch version
- `chore(<type>):` will not trigger any release and should be used for internal repo changes
- `<type>(public):` will trigger a patch version for non-code changes (e.g. README changes)
- `feat(SDK name):` will trigger a minor version
- `feat(breaking):` will trigger a major version for a breaking change

## Description

_[Summary of the change, motivation, and context]_

## How Has This Been Tested?

_[e.g. Manually, E2E tests, unit tests, Storybook]_

## Are there any breaking changes?

_[e.g. Type definitions, API definitions]_

If there are breaking changes, please ensure you bump the major version Bump the major version (by using the title `feat(breaking): ...`), post a notice in #eng-sdks, and explicitly notify all Uniswap Labs consumers of the SDK.

## (Optional) Feedback Focus

_[Specific parts of this PR you'd like feedback on, or that reviewers should pay closer attention to]_

## (Optional) Follow Ups

_[Things that weren't addressed in this PR, ways you plan to build on this work, or other ways this work could be extended]_

<!-- claude-pr-description-start -->
---
## ✨ Claude-Generated Content

## Description
Adds the Universal Router V2.0 deployment configuration for X-Layer (chain ID 196) by updating from placeholder values to the actual deployed contract address.
## Changes
- Updated X-Layer Universal Router V2.0 address from placeholder (`0x0000000000000000000000000000000000000000`) to deployed contract (`0x6bdbd02e751bca2c029cfc21098da04acce8d582`) in `sdks/universal-router-sdk/src/utils/constants.ts`
- Updated X-Layer Universal Router V2.0 creation block from `1` to `47680350`
## How Has This Been Tested?
Will be tested in routing pipeline.
## Are there any breaking changes?
No
<!-- claude-pr-description-end -->

* fix(router-sdk): bump v4-sdk for ur2.1 revert (Uniswap#474)

* feat(universal-router-sdk): Bump router-sdk version (Uniswap#475)

* feat(uniswapx-sdk): expand chain 1301 config with Hybrid and Permit2 support (Uniswap#469)

Co-authored-by: Alan Wu <alanwu100@gmail.com>
Co-authored-by: Alan Wu <60207036+alanhwu@users.noreply.github.com>

* fix(v4-sdk): update to use pathInput (Uniswap#476)

Co-authored-by: Vasilis Xouris <vasileios.xouris@uniswap.org>
Co-authored-by: dianakocsis <diana.kocsis@uniswap.org>

* fix(universal-router-sdk): fix xlayer ur 2.0 address (Uniswap#479)

* fix(router-sdk): bump v4-sdk to 1.25.1 (priceImpact calc fix) (Uniswap#477)

* fix(sdk-core): update xlayer v4 position manager address (Uniswap#480)

* fix(universal-router-sdk): bump v4-sdk and router-sdk (priceImpact calc fix) (Uniswap#478)

* feat(uniswapx-sdk): add V4 order quoter, validator and integration tests (Uniswap#481)

* feat(uniswapx-sdk): bubble v4 quoter revert data (Uniswap#485)

* fix(v4-sdk): eth-weth exact output (Uniswap#486)

* fix(router-sdk): bump v4-sdk to 1.25.2 in router-sdk (Uniswap#487)

* fix(universal-router-sdk): handle ETH/WETH output in V4 split routes (Uniswap#462)

Co-authored-by: marktoda <toda.mark@gmail.com>

* feat: update ai toolkit ref (Uniswap#488)

Co-authored-by: Developer <dev@example.com>
Co-authored-by: Nick Koutrelakos <nick.koutrelakos@uniswap.org>

* fix(v4-sdk): eth-weth as starting pool (Uniswap#490)

* fix(v4-sdk): add comment to trigger release (Uniswap#492)

* fix(v4-sdk): more edge cases for eth-weth pools (Uniswap#494)

* fix(router-sdk): bump v4-sdk to 1.25.5 (Uniswap#493)

* fix(universal-router-sdk): handle ETH-WETH starting pool in split routes (Uniswap#491)

* fix(v4-sdk): bump sdk-core to 7.10.1 and v3-sdk to 3.27.0 (Uniswap#496)

* fix(router-sdk): bump sdk-core to 7.10.1 and v4-sdk to 1.25.6 (Uniswap#497)

* fix(universal-router-sdk): bump router-sdk to 2.3.5 and v4-sdk to 1.25.6 (Uniswap#498)

* chore(uniswapx-sdk): update hybrid order (Uniswap#495)

* feat(v4-sdk): add max hop slippage support for multi-hop swaps (Uniswap#500)

* chore(uniswapx-sdk): new reactor and hook addr (Uniswap#501)

* feat(v4-sdk): add URVersion parameter to addAction for V2.1 encoding (Uniswap#502)

* feat(router-sdk): bump v4-sdk to 1.27.0 (Uniswap#503)

* feat(ur-sdk): Universal Router 2.1 support (Uniswap#504)

Co-authored-by: Daniel Gretzke <daniel@gretzke.de>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* feat(sdk-core): Add Linea support (Uniswap#519)

* chore(CODEOWNERS): update CO for swap-be SDKs (Uniswap#521)

* feat(v3-sdk): bump sdk-core to 7.11.0 (Uniswap#523)

* feat(v2-sdk): update V2 SDK @uniswap/sdk-core to version 7.11.0 (Uniswap#522)

* feat(v4-sdk): bump sdk-core to 7.11.0 and v3-sdk to 3.28.0 (Uniswap#524)

* feat(router-sdk): update SDK versions to 4.18.0, 3.28.0, and 1.28.0 (Uniswap#525)

* feat(router-sdk): update SDK core versions to 7.11.0 (Uniswap#526)

* feat(universal-router-sdk): bump SDK dependencies to latest versions (Uniswap#527)

* feat(sdk-core): add Tempo chain (4217) support (Uniswap#533)

* feat(v2-sdk, v3-sdk): bump sdk-core to ^7.12.0 for Tempo chain support (Uniswap#536)

* feat(v4-sdk): bump sdk-core to ^7.12.0 and v3-sdk to 3.29.0 for Tempo (Uniswap#537)

* feat(router-sdk): bump SDK deps for Tempo chain support (Uniswap#538)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix(sdk-core): remove WETH9 entry for Tempo chain (4217) (Uniswap#540)

* fix(v2-sdk, v3-sdk): bump sdk-core to ^7.12.1 for Tempo WETH9 fix (Uniswap#541)

* fix(v4-sdk): bump sdk-core to ^7.12.1 and v3-sdk to 3.29.1 (Uniswap#542)

* fix(router-sdk): bump all SDK deps for Tempo WETH9 fix (Uniswap#543)

* feat(universal-router-sdk): add Tempo chain config and bump SDK deps (Uniswap#534)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix: resolve zizmor GitHub Actions security findings (Uniswap#516)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* feat(universal-router-sdk): add SwapProxy support for no-Permit2 approve+swap flow (Uniswap#518)

* feat(uniswapx-sdk): graduate to stable v3.0.0 (Uniswap#545)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* feat: migrate from semantic-release to Changesets with workspace: protocol (Uniswap#539)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix: correct changesets/action SHA in release workflow (Uniswap#548)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix: add registry-url for npm OIDC auth and mark uniswapx-integration private (Uniswap#549)

* test: dummy sdk-core patch to validate changeset workflow (Uniswap#547)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix: use exact workspace versions for cascading changesets (Uniswap#551)

* fix: remove registry-url to fix npm Trusted Publishing OIDC auth (Uniswap#552)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* chore: Version Packages (Uniswap#550)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: David Gilman <david.gilman@uniswap.org>

* chore: remove push-branches-from-main workflow (Uniswap#555)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* ci: skip unnecessary workflows on changeset-release branches (Uniswap#554)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix(v4-sdk): increase liquidity fix (Uniswap#558)

* feat(router-sdk): add maxHopSlippage to Trade.swaps (Uniswap#529)

## Description

For maxHopSlippage, **a partial implementation exists for multi-hop V4-only routes in UR-sdk, but it is incorrect:**

1. Flat array on **`SwapOptions`** -- A single `maxHopSlippage?: BigNumber[]` on `SwapOptions` cannot correctly map values to specific routes in a split-route trade (e.g. 40% Route A with 3 hops, 60% Route B with 2 hops).
2. Mixed routes pass the full array -- In `addMixedSwap`, the entire `options.maxHopSlippage` array is passed to V4 sections without slicing; V2/V3 sections get nothing.



**We need to ensure that per-hop slippage is saved per** **_route_** **data model, not per** **_trade_** **(i.e. for split route trades)**

**This PR adds** `maxHopSlippage` **support to the** `Trade.swaps` **object in router-sdk, enabling per-hop slippage protection for multi-hop swaps across all route types (V2, V3, V4, and mixed routes)**

## How Has This Been Tested?

_[e.g. Manually, E2E tests, unit tests, Storybook]_

## Are there any breaking changes?


Purely additive, no breaking changes, no existing code uses the new field yet. Can merge independently.

## Follow Ups

- in order to be used in UR-sdk, need to publish minor version bump to router-sdk



<!-- claude-pr-description-start -->

---

## ✨ Claude-Generated Content

## Summary

Adds `maxHopSlippage` support to the `Trade` class in router-sdk, enabling per-hop slippage protection for multi-hop swaps across all route types (V2, V3, V4, and mixed routes).

## Changes

- Added optional `maxHopSlippage?: bigint[]` field to the `swaps` array type in `Trade` class
- Extended route input types for V2, V3, V4, and mixed routes to accept `maxHopSlippage` parameter
- Propagated `maxHopSlippage` through the constructor for all route types
- Extended `fromRoutes()` static method to pass `maxHopSlippage` through populated routes

## How Has This Been Tested?

This is a type extension.

## Are there any breaking changes?

No - `maxHopSlippage` is an optional parameter with no changes to existing behavior.

<!-- claude-pr-description-end -->

* feat(breaking): switch v4-sdk from UR v2.1 to UR v2.1.1 & add single-hop ABI struct (Uniswap#530)

## Description

- Rename URVersion.V2_1 to `V2_1_1 `in v4-sdk
- Rename V4_SWAP_ACTIONS_V2_1 to `V4_SWAP_ACTIONS_V2_1_1` and update all references in v4Planner.ts

## How Has This Been Tested?

_[e.g. Manually, E2E tests, unit tests, Storybook]_

## Are there any breaking changes?

The version rename is breaking. (And it is intentionally breaking, as opposed to keeping v2.1 around, because v2.1.1 fixes a precision bug. Plus we don't actually use v2.1 in prod yet)

1. publish v4-sdk as major version
2. update UR-sdk and router-SDK

## (Optional) Feedback Focus

_[Specific parts of this PR you'd like feedback on, or that reviewers should pay closer attention to]_

## (Optional) Follow Ups

Need to explicitly update UR-sdk and router-SDK versions

<!-- claude-pr-description-start -->

---

## ✨ Claude-Generated Content

## Summary

Updates v4-sdk to use Universal Router version 2.1.1 instead of 2.1 by renaming version enums, ABI definitions, and struct types throughout the codebase. Adds V2.1.1-specific struct definitions for single-hop swap actions.

## Changes

- Renamed `URVersion.V2_1` to `URVersion.V2_1_1` in the `URVersion` enum
- Renamed `V4_SWAP_ACTIONS_V2_1` to `V4_SWAP_ACTIONS_V2_1_1` and expanded to include single-hop swap actions (`SWAP_EXACT_IN_SINGLE`, `SWAP_EXACT_OUT_SINGLE`)
- Added new V2.1.1 struct definitions with `maxHopSlippage` field:
    - `SWAP_EXACT_IN_SINGLE_STRUCT_V2_1_1`
    - `SWAP_EXACT_IN_STRUCT_V2_1_1`
    - `SWAP_EXACT_OUT_SINGLE_STRUCT_V2_1_1`
    - `SWAP_EXACT_OUT_STRUCT_V2_1_1`
- Renamed V2.0 single-hop structs to be explicit: `SWAP_EXACT_IN_SINGLE_STRUCT_V2_0`, `SWAP_EXACT_OUT_SINGLE_STRUCT_V2_0`
- Refactored `addTrade` method to use conditional spread operator for cleaner version-specific struct building
- Added validation that `maxHopSlippage` length matches `route.pools.length`
- Updated `v4BaseActionsParser.ts` to use the new version enum and ABI definitions
- Updated all comments referencing "V2.1" to "V2.1.1"
- Updated all test files to use `URVersion.V2_1_1`

## How Has This Been Tested?

Existing unit tests updated to use the new version constant.

## Are there any breaking changes?

Yes - this is a breaking change for consumers using `URVersion.V2_1` or `V4_SWAP_ACTIONS_V2_1`. They will need to update to `URVersion.V2_1_1` and `V4_SWAP_ACTIONS_V2_1_1` respectively.

<!-- claude-pr-description-end -->

* feat(universal-router-sdk): v2.1.1 version rename & ABI structs (Uniswap#531)

## Description



TODO : Need to explicitly update UR-sdk and router-SDK versions based on v4-sdk breaking changes

- Rename UniversalRouterVersion.V2_1 to V2_1_1 in constants.ts + update contract addresses
- Add V2.1.1 ABI definitions for V2/V3 swap commands in routerCommands.ts (the new V2V3_SWAP_COMMANDS_V2_1_1 map)
- Make addCommand/createCommand accept optional urVersion parameter for ABI selection

This is all infrastructure/plumbing. The new V2.1.1 ABI defs exist but nothing calls them yet. The version rename is technically breaking but no consumers use UR V2.1 from the SDK.

## How Has This Been Tested?

_[e.g. Manually, E2E tests, unit tests, Storybook]_

## Are there any breaking changes?

_[e.g. Type definitions, API definitions]_

If there are breaking changes, please ensure you bump the major version Bump the major version (by using the title `feat(breaking): ...`), post a notice in #eng-sdks, and explicitly notify all Uniswap Labs consumers of the SDK.

## (Optional) Feedback Focus

_[Specific parts of this PR you'd like feedback on, or that reviewers should pay closer attention to]_

## (Optional) Follow Ups

_[Things that weren't addressed in this PR, ways you plan to build on this work, or other ways this work could be extended]_

<!-- claude-pr-description-start -->

---

## ✨ Claude-Generated Content

## Summary

Renames `UniversalRouterVersion.V2_1` to `V2_1_1` and adds ABI infrastructure for V2.1.1 swap commands with `maxHopSlippage` support.

## Changes

- Renamed `UniversalRouterVersion.V2_1` to `V2_1_1` in `constants.ts` enum (version string `'2.1'` → `'2.1.1'`)
- Updated all chain configs (20+ chains) to use `[UniversalRouterVersion.V2_1_1]` key
- Added `V2V3_SWAP_COMMANDS_V2_1_1` ABI definitions for V2/V3 swap commands with extended `maxHopSlippage` parameter:
    - `V3_SWAP_EXACT_IN`
    - `V3_SWAP_EXACT_OUT`
    - `V2_SWAP_EXACT_IN`
    - `V2_SWAP_EXACT_OUT`
- Updated `addCommand()` and `createCommand()` to accept optional `urVersion` parameter for ABI selection
- Fixed comment typo in `Parser.V3Actions` case ("v4 swap data" → "v3 position data")

## How Has This Been Tested?

Infrastructure/plumbing changes only - the new V2.1.1 ABI definitions exist but are not yet called by any code paths.

## Are there any breaking changes?

The version enum rename from `V2_1` to `V2_1_1` is technically breaking, but per the design doc, no consumers currently use V2.1.

<!-- claude-pr-description-end -->

* feat(universal-router-sdk): wire up per-hop slippage encoding (Uniswap#532)

## Description

- Remove maxHopSlippage from SwapOptions
- Update Swap interface to carry maxHopSlippage (from trade.swaps)
- addV2Swap / addV3Swap: branch on urVersion to encode with or without maxHopSlippage
- addV4Swap: read maxHopSlippage from swap instead of options
- addMixedSwap: slice maxHopSlippage per section with hop offset tracking
- Tests for all protocol paths (V2, V3, V4, mixed) with and without per-hop slippage

## How Has This Been Tested?

_[e.g. Manually, E2E tests, unit tests, Storybook]_

## Are there any breaking changes?

If consumers want to use UR v2.1.1, they must update to this version of the UR-sdk.

<!-- claude-pr-description-start -->
---
## ✨ Claude-Generated Content

## Summary
Wire up per-hop slippage encoding for Universal Router v2.1.1 across all protocol versions (V2, V3, V4, and mixed routes). The `maxHopSlippage` parameter has been moved from `SwapOptions` to individual swaps, enabling granular slippage protection per route.
## Changes
### `sdks/universal-router-sdk/src/entities/actions/uniswap.ts`
- Removed `maxHopSlippage` from `SwapOptions` interface
- Added `maxHopSlippage?: bigint[]` to the `Swap` interface to carry per-hop slippage from trade.swaps
- `addV2Swap`: branches on `urVersion` to encode with/without `maxHopSlippage` for V2_SWAP_EXACT_IN and V2_SWAP_EXACT_OUT commands
- `addV3Swap`: branches on `urVersion` to encode with/without `maxHopSlippage` for V3_SWAP_EXACT_IN and V3_SWAP_EXACT_OUT commands
- `addV4Swap`: reads `maxHopSlippage` from the swap object instead of options
- `addMixedSwap`: tracks `hopOffset` to slice the flat `maxHopSlippage` array per protocol section
- Added validation to ensure `maxHopSlippage` length matches `route.pools.length`
### `sdks/universal-router-sdk/README.md`
- Updated per-hop slippage documentation to reflect new API where `maxHopSlippage` is specified on each route within `RouterTrade`
- Added mixed routes example showing how the SDK slices hop slippage by section
- Updated references from v2.1 to v2.1.1
### `sdks/universal-router-sdk/test/unit/perHopSlippage.test.ts` (new)
- Tests for V2_SWAP_EXACT_IN/OUT with maxHopSlippage (V2.1.1 ABI)
- Tests for V3_SWAP_EXACT_IN/OUT with maxHopSlippage (V2.1.1 ABI)
- Tests for empty maxHopSlippage arrays
- Backward compatibility tests (V2.0 ABI without maxHopSlippage)
- Mixed route slippage slicing tests
## How Has This Been Tested?
Unit tests covering all protocol paths (V2, V3, V4, mixed) with and without per-hop slippage encoding.
## Are there any breaking changes?
**Minor breaking change**: `maxHopSlippage` has been removed from `SwapOptions`. Consumers must now specify `maxHopSlippage` on individual routes within the `RouterTrade` constructor.
Migration:
```typescript
// Before (v2.1)
SwapRouter.swapCallParameters(trade, { maxHopSlippage: [...], urVersion: URVersion.V2_1 })
// After (v2.1.1)
const trade = new RouterTrade({
  v3Routes: [{ routev3, inputAmount, outputAmount, maxHopSlippage: [...] }],
  tradeType,
})
SwapRouter.swapCallParameters(trade, { urVersion: URVersion.V2_1_1 })
```
<!-- claude-pr-description-end -->

* chore: migrate monorepo from Yarn to Bun (Uniswap#556)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* feat(ur-sdk): PAY_PORTION_FULL_PRECISION support (Uniswap#528)

* fix: use bun/yarn npm publish to resolve workspace:* protocol (Uniswap#562)

* Version Packages (Uniswap#563)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Thomas Thachil <github@thomasthachil.com>

* feat(release): changesets for UR v2.1.1 releases (Uniswap#560)

a changeset changelog update. will auto-bump + release SDKs once merged

* chore(ur-sdk): swap out URVersions from v4-sdk for UniversalRouterVersion (Uniswap#565)

## Description

previously we were exporting URVersion from v4-sdk for the `urVersion` field in universal-router-sdk's `SwapOptions`. it's a strange import pattern, and also forces ur-sdk consumers to import v4-sdk just for the typing

we should use UniversalRouterVersion from universal-router-sdk.

## How Has This Been Tested?

ran tests

## Are there any breaking changes?

_[e.g. Type definitions, API definitions]_

If there are breaking changes, please ensure you bump the major version Bump the major version (by using the title `feat(breaking): ...`), post a notice in #eng-sdks, and explicitly notify all Uniswap Labs consumers of the SDK.

* feat(ur-sdk): release bump UR-sdk to 5.1.0 (Uniswap#566)

## PR Scope

Please title your PR according to the following types and scopes following [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/):

- `fix(SDK name):` will trigger a patch version
- `chore(<type>):` will not trigger any release and should be used for internal repo changes
- `<type>(public):` will trigger a patch version for non-code changes (e.g. README changes)
- `feat(SDK name):` will trigger a minor version
- `feat(breaking):` will trigger a major version for a breaking change

## Description

_[Summary of the change, motivation, and context]_

## How Has This Been Tested?

_[e.g. Manually, E2E tests, unit tests, Storybook]_

## Are there any breaking changes?

_[e.g. Type definitions, API definitions]_

If there are breaking changes, please ensure you bump the major version Bump the major version (by using the title `feat(breaking): ...`), post a notice in #eng-sdks, and explicitly notify all Uniswap Labs consumers of the SDK.

## (Optional) Feedback Focus

_[Specific parts of this PR you'd like feedback on, or that reviewers should pay closer attention to]_

## (Optional) Follow Ups

_[Things that weren't addressed in this PR, ways you plan to build on this work, or other ways this work could be extended]_

* feat(config): add supply chain security controls (Uniswap#570)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: replace npx tsx with bun run in flashtestations-sdk examples (Uniswap#573)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Update sdks/flashtestations-sdk/package.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update sdks/smart-wallet-sdk/package.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update sdks/uniswapx-sdk/integration/package.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update sdks/uniswapx-sdk/integration/package.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update sdks/smart-wallet-sdk/src/smartWallet.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update sdks/uniswapx-sdk/src/order/v4/HybridOrder.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update sdks/uniswapx-sdk/src/order/v4/HybridOrder.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update sdks/uniswapx-sdk/src/builder/HybridOrderBuilder.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update sdks/uniswapx-sdk/src/builder/HybridOrderBuilder.test.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update sdks/uniswapx-sdk/src/order/v4/hashing.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update sdks/uniswapx-sdk/src/utils/OrderQuoter.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update sdks/universal-router-sdk/src/entities/actions/uniswap.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

* Update sdks/uniswapx-sdk/src/order/v4/HybridOrder.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>

---------

Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>
Co-authored-by: Kristie Huang <kristiehuang01@gmail.com>
Co-authored-by: marktoda <toda.mark@gmail.com>
Co-authored-by: googleworkspace-bot <googleworkspace-bot@google.com>
Co-authored-by: cam-uni <cameron.shahmirzadi@uniswap.org>
Co-authored-by: Siyu Jiang (See-You John) <91580504+jsy1218@users.noreply.github.com>
Co-authored-by: Zach Yang <zhiyuan.zach.yang@gmail.com>
Co-authored-by: ens_408 <eric.sanchirico@uniswap.org>
Co-authored-by: Alan Wu <alanwu100@gmail.com>
Co-authored-by: Alan Wu <60207036+alanhwu@users.noreply.github.com>
Co-authored-by: Vasilis Xouris <vasileios.xouris@uniswap.org>
Co-authored-by: dianakocsis <diana.kocsis@uniswap.org>
Co-authored-by: Daniel Gretzke <daniel@gretzke.de>
Co-authored-by: Developer <dev@example.com>
Co-authored-by: Nick Koutrelakos <nick.koutrelakos@uniswap.org>
Co-authored-by: Ayo Akala <13251173+Ayoakala@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Thomas Thachil <thomasthachil@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: David Gilman <david.gilman@uniswap.org>
Co-authored-by: zi-yang-uni <ziyi.yang@uniswap.org>
Co-authored-by: Thomas Thachil <github@thomasthachil.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
# Vercel Web Analytics Installation

## Summary

Successfully installed and configured Vercel Web Analytics for this repository following the latest official documentation from https://vercel.com/docs/analytics/quickstart.

## Changes Made

### 1. Package Installation
- **Added**: `@vercel/analytics@^2.0.1` to root package.json
- **Updated**: bun.lock file with the new dependency

### 2. Documentation Created
- **Created**: `docs/VERCEL_ANALYTICS.md` - Comprehensive integration guide with framework-specific instructions
  - Next.js App Router integration
  - Next.js Pages Router integration
  - React integration
  - Static HTML integration (for Jekyll site)
  - Verification steps
  - Local development notes

### 3. README Updated
- **Modified**: `README.md` - Added "Web Analytics" section linking to the integration guide

## Implementation Notes

This repository is a TypeScript SDK monorepo without a web application frontend. Therefore, I have:

1. Installed the `@vercel/analytics` package at the root level to make it available workspace-wide
2. Created comprehensive documentation for when a web interface is added to the monorepo
3. Included instructions for multiple frameworks (Next.js, React, static HTML) to cover various use cases

The documentation includes:
- Framework-specific integration patterns from the official Vercel docs
- Verification steps to confirm analytics are working
- Development mode configuration options

## Next Steps for Integration

When adding a web application to this monorepo:

1. Follow the framework-specific instructions in `docs/VERCEL_ANALYTICS.md`
2. Enable Analytics in the Vercel dashboard for your project
3. Deploy the changes to Vercel
4. Verify analytics are working by checking for network requests to `/_vercel/insights/view`

## Files Modified

- `package.json` - Added @vercel/analytics dependency
- `bun.lock` - Updated with new dependency
- `README.md` - Added Web Analytics section
- `docs/VERCEL_ANALYTICS.md` - Created comprehensive integration guide (new file)

## Build & Lint Status

Note: Pre-existing build and lint failures in some SDK packages (permit2-sdk) are unrelated to these changes. The failures are due to missing TypeScript and Prettier executables in those packages, which existed before this PR.

The @vercel/analytics package installation does not affect the build process of the existing SDKs, as it's a development/documentation dependency that will be used when web applications are added to the monorepo.

Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
# Vercel Web Analytics Installation

## Summary

Successfully installed and configured Vercel Web Analytics for this repository following the latest official documentation from https://vercel.com/docs/analytics/quickstart.

## Changes Made

### 1. Package Installation
- **Added**: `@vercel/analytics@^2.0.1` to root package.json
- **Updated**: bun.lock file with the new dependency

### 2. Documentation Created
- **Created**: `docs/VERCEL_ANALYTICS.md` - Comprehensive integration guide with framework-specific instructions
  - Next.js App Router integration
  - Next.js Pages Router integration
  - React integration
  - Static HTML integration (for Jekyll site)
  - Verification steps
  - Local development notes

### 3. README Updated
- **Modified**: `README.md` - Added "Web Analytics" section linking to the integration guide

## Implementation Notes

This repository is a TypeScript SDK monorepo without a web application frontend. Therefore, I have:

1. Installed the `@vercel/analytics` package at the root level to make it available workspace-wide
2. Created comprehensive documentation for when a web interface is added to the monorepo
3. Included instructions for multiple frameworks (Next.js, React, static HTML) to cover various use cases

The documentation includes:
- Framework-specific integration patterns from the official Vercel docs
- Verification steps to confirm analytics are working
- Development mode configuration options

## Next Steps for Integration

When adding a web application to this monorepo:

1. Follow the framework-specific instructions in `docs/VERCEL_ANALYTICS.md`
2. Enable Analytics in the Vercel dashboard for your project
3. Deploy the changes to Vercel
4. Verify analytics are working by checking for network requests to `/_vercel/insights/view`

## Files Modified

- `package.json` - Added @vercel/analytics dependency
- `bun.lock` - Updated with new dependency
- `README.md` - Added Web Analytics section
- `docs/VERCEL_ANALYTICS.md` - Created comprehensive integration guide (new file)

## Build & Lint Status

Note: Pre-existing build and lint failures in some SDK packages (permit2-sdk) are unrelated to these changes. The failures are due to missing TypeScript and Prettier executables in those packages, which existed before this PR.

The @vercel/analytics package installation does not affect the build process of the existing SDKs, as it's a development/documentation dependency that will be used when web applications are added to the monorepo.

Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
Bumps the npm_and_yarn group with 1 update in the / directory: @isaacs/brace-expansion.


Updates `@isaacs/brace-expansion` from 5.0.0 to 5.0.1

---
updated-dependencies:
- dependency-name: "@isaacs/brace-expansion"
  dependency-version: 5.0.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: googleworkspace-bot <googleworkspace-bot@google.com>
…updates (#65)

* Update settings.json

* chore(deps): bump the npm_and_yarn group across 2 directories with 2 updates

Bumps the npm_and_yarn group with 2 updates in the / directory: [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) and [@openzeppelin/contracts](https://github.com/OpenZeppelin/openzeppelin-contracts).
Bumps the npm_and_yarn group with 1 update in the /sdks/universal-router-sdk directory: [@openzeppelin/contracts](https://github.com/OpenZeppelin/openzeppelin-contracts).


Updates `@babel/runtime` from 7.18.9 to 7.26.10
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-runtime)

Updates `@openzeppelin/contracts` from 4.7.0 to 4.9.6
- [Release notes](https://github.com/OpenZeppelin/openzeppelin-contracts/releases)
- [Changelog](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/CHANGELOG.md)
- [Commits](OpenZeppelin/openzeppelin-contracts@v4.7.0...v4.9.6)

Updates `@openzeppelin/contracts` from 4.7.0 to 4.9.6
- [Release notes](https://github.com/OpenZeppelin/openzeppelin-contracts/releases)
- [Changelog](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/CHANGELOG.md)
- [Commits](OpenZeppelin/openzeppelin-contracts@v4.7.0...v4.9.6)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-version: 7.26.10
  dependency-type: direct:production
  dependency-group: npm_and_yarn
- dependency-name: "@openzeppelin/contracts"
  dependency-version: 4.9.6
  dependency-type: direct:production
  dependency-group: npm_and_yarn
- dependency-name: "@openzeppelin/contracts"
  dependency-version: 4.9.6
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>
Co-authored-by: googleworkspace-bot <googleworkspace-bot@google.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Dargon789 <64915515+Dargon789@users.noreply.github.com>
@Dargon789
Dargon789 requested review from a team as code owners June 7, 2026 13:41
@socket-security

socket-security Bot commented Jun 7, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Added@​vercel/​analytics@​2.0.1991008387100
Updated@​nomicfoundation/​hardhat-chai-matchers@​1.0.6 ⏵ 2.0.199 +110087 +185 +2100

View full report

@Dargon789 Dargon789 changed the title Vercel/install vercel web analytics i cyj37k Vercel Web Analytics Installation Jun 7, 2026
@Dargon789 Dargon789 changed the title Vercel Web Analytics Installation feat(smart-wallet): add executeUserOp Jun 7, 2026
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.

6 participants