Compare commits

...
Author SHA1 Message Date
Joaquim VergesGitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
881c7a96f7 Version Packages (#8372)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-07 06:04:42 +07:00
FirekeeperandGitHub ad68969559 Refactor Solana sign transaction API for flexible inputs (#8371) 2025-11-07 05:56:11 +07:00
Joaquim VergesGitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
915d955da1 Version Packages (#8370)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-06 13:58:49 -08:00
Joaquim VergesandGitHub 7da16cff2f [SDK] Make maxAmount optional in wrapFetchWithPayment (#8369) 2025-11-06 13:54:29 -08:00
Yash094 f0edc0f253 Update vault documentation text and faq (#8367)
```
[Portal] Fix: Update Vault open-source status and add FAQ

## Notes for the reviewer

This PR updates the Vault portal documentation to accurately reflect its open-source status.

*   Removed "open-source" from the main description and metadata on the Vault overview page.
*   Added a new FAQ entry under `/vault/faqs` clarifying that Vault is not yet open source.

## How to test

1.  Navigate to <https://portal.thirdweb.com/vault>
    *   Verify the main description no longer includes "open-source".
    *   (Optional) Inspect page metadata to confirm "open-source" is removed from the description.
2.  Navigate to <https://portal.thirdweb.com/vault/faqs>
    *   Verify the new FAQ "Is Vault open source?" is present with the answer "Vault is not yet open source, but we plan to release it soon."
```

---
[Slack Thread](https://thirdwebdev.slack.com/archives/C09DS2CKGP2/p1762411784588169?thread_ts=1762411784.588169&cid=C09DS2CKGP2)

<a href="https://cursor.com/background-agent?bcId=bc-ab8c2b24-6a74-4e0c-b302-d84d69ac5953"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-cursor-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-cursor-light.svg"><img alt="Open in Cursor" src="https://cursor.com/open-in-cursor.svg"></picture></a>&nbsp;<a href="https://cursor.com/agents?id=bc-ab8c2b24-6a74-4e0c-b302-d84d69ac5953"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-web-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-web-light.svg"><img alt="Open in Web" src="https://cursor.com/open-in-web.svg"></picture></a>

<!-- start pr-codex -->

---

## PR-Codex overview
This PR focuses on updating the description of the `Vault` service to remove references to it being open source and refining the language for clarity.

### Detailed summary
- Added a new `Details` section in `apps/portal/src/app/vault/faqs/page.mdx` about Vault's open-source status.
- Updated the `description` in `apps/portal/src/app/vault/layout.tsx` to remove "open-source."
- Revised the `description` in `apps/portal/src/app/vault/page.mdx` to remove "open-source."
- Modified the main description of `Vault` in `apps/portal/src/app/vault/page.mdx` for clarity.

> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`

<!-- end pr-codex -->

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

## Documentation
* Added new FAQ entry addressing open-source availability with information on future release plans
* Updated Vault service descriptions emphasizing non-custodial key management design and TEE security architecture
* Refined documentation metadata to provide clearer communication of Vault's core features, security model, and service capabilities

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-11-06 17:58:37 +00:00
Yash094 0a2d269782 Dashboard: Update faucet amount for injective testnet (#8368)
<!--

## title your PR with this format: "[SDK/Dashboard/Portal] Feature/Fix: Concise title for the changes"

If you did not copy the branch name from Linear, paste the issue tag here (format is TEAM-0000):

## Notes for the reviewer

Anything important to call out? Be sure to also clarify these in your comments.

## How to test

Unit tests, playground, etc.

-->

<!-- start pr-codex -->

---

## PR-Codex overview
This PR adds a new entry for the `Injective testnet` in the `faucet.ts` file, indicating a change in the configuration for test networks.

### Detailed summary
- Added a new entry for `Injective testnet` with a value of `1` in the configuration.
- The existing entry for `Arc testnet` remains unchanged.

> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`

<!-- end pr-codex -->

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

## New Features
* Added support for Injective testnet, enabling faucet claims on this network with customized claim amount configuration.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-11-06 16:07:33 +00:00
Joaquim VergesGitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
3d996d1d23 Version Packages (#8364)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-05 16:06:25 -08:00
Joaquim VergesandGitHub 40781b8170 [SDK] Allow custom chain for SIWE authentication (#8365) 2025-11-05 15:47:54 -08:00
MananTank d907017217 [MNY-295] Fix BuyWidget autoconnect not working when receiverAddress prop is set (#8363)
<!--

## title your PR with this format: "[SDK/Dashboard/Portal] Feature/Fix: Concise title for the changes"

If you did not copy the branch name from Linear, paste the issue tag here (format is TEAM-0000):

## Notes for the reviewer

Anything important to call out? Be sure to also clarify these in your comments.

## How to test

Unit tests, playground, etc.

-->

<!-- start pr-codex -->

---

## PR-Codex overview
This PR focuses on fixing the `BuyWidget` component's autoconnect functionality when the `receiverAddress` prop is set, and it introduces a new story variant to demonstrate this behavior.

### Detailed summary
- Updated `BuyWidget` to conditionally render the `AutoConnect` component based on `connectOptions.autoConnect`.
- Introduced a new story `NoAutoConnect` in `BuyWidget.stories.tsx` to showcase the widget with `autoConnect` set to false.
- Modified `FundWallet.tsx` to ensure proper handling of the `autoConnect` prop.

> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`

<!-- end pr-codex -->

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

## Release Notes

* **Bug Fixes**
  * Fixed auto-connect functionality that was not working correctly when the receiver address property is set on the buy widget.

* **New Features**
  * Added configurable auto-connect option to the buy widget, enabling users to control whether auto-connection is enabled or disabled based on their needs.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-11-05 21:10:50 +00:00
Joaquim VergesGitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
cf53c2d7f1 Version Packages (#8362)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-05 12:10:38 -08:00
Joaquim VergesandGitHub 207cb9dbeb [SDK] Enhance isMobile() detection with additional mobile signals (#8361) 2025-11-05 11:48:57 -08:00
Jonas DanielsandGitHub b4d365bdc0 Move x402 route from /payments/x402 to /x402 (#8360) 2025-11-04 16:30:08 -08:00
Joaquim VergesGitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
ea4e2fe376 Version Packages (#8357)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-04 14:20:21 -08:00
Joaquim VergesandGitHub 1d54cff7b4 [SDK] Add support for extra metadata in x402 payment requests (#8358) 2025-11-04 14:13:48 -08:00
YashandGitHub fd04eefea9 Update implementations, fix deployment (#8356) 2025-11-05 00:10:12 +07:00
Joaquim VergesGitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
4cc68310dc Version Packages (#8355)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-04 00:47:18 -08:00
Joaquim VergesandGitHub ccdce496e0 [SDK] Fix hiddenWallets prop not applying to all wallets screen (#8354) 2025-11-04 00:39:11 -08:00
Joaquim VergesandGitHub 2725f337f8 [Dashboard] Fix active users aggregation in project highlights card (#8346) 2025-11-02 18:23:41 -08:00
46 changed files with 526 additions and 228 deletions
+1 -1
View File
@@ -10,7 +10,7 @@ module.exports = [
"/wallets",
"/account-abstraction",
"/payments",
"/payments/x402",
"/x402",
"/nexus",
"/auth",
"/in-app-wallets",
+5
View File
@@ -479,6 +479,11 @@ async function redirects() {
destination: "/tokens",
permanent: false,
},
{
source: "/payments/x402",
destination: "/x402",
permanent: false,
},
];
}
+2
View File
@@ -7,6 +7,8 @@ const customClaimAmounts: Record<number, number> = {
531050104: 5,
// Arc testnet
5042002: 1,
// Injective testnet
1439: 1,
};
const defaultClaimAmount = 0.01;
@@ -14,6 +14,7 @@ type AggregatedMetrics = {
export function ProjectHighlightsCard(props: {
selectedChart: string | undefined;
aggregatedUserStats: InAppWalletStats[];
userStats: InAppWalletStats[];
volumeStats: UniversalBridgeStats[];
teamSlug: string;
@@ -22,6 +23,7 @@ export function ProjectHighlightsCard(props: {
}) {
const {
selectedChart,
aggregatedUserStats,
userStats,
volumeStats,
teamSlug,
@@ -70,6 +72,12 @@ export function ProjectHighlightsCard(props: {
: "activeUsers"
}
aggregateFn={(_data, key) => {
if (key === "activeUsers") {
return aggregatedUserStats.reduce(
(acc, curr) => acc + curr.uniqueWalletsConnected,
0,
);
}
return timeSeriesData.reduce((acc, curr) => acc + curr[key], 0);
}}
chartConfig={chartConfig}
@@ -378,8 +378,18 @@ async function AsyncAppHighlightsCard(props: {
params: PageParams;
authToken: string;
}) {
const [walletUserStatsTimeSeries, universalBridgeUsage] =
const [aggregatedUserStats, walletUserStatsTimeSeries, universalBridgeUsage] =
await Promise.allSettled([
getInAppWalletUsage(
{
from: props.range.from,
period: "all",
projectId: props.project.id,
teamId: props.project.teamId,
to: props.range.to,
},
props.authToken,
),
getInAppWalletUsage(
{
from: props.range.from,
@@ -408,6 +418,11 @@ async function AsyncAppHighlightsCard(props: {
) {
return (
<ProjectHighlightsCard
aggregatedUserStats={
aggregatedUserStats.status === "fulfilled"
? aggregatedUserStats.value
: []
}
selectedChart={props.selectedChart}
selectedChartQueryParam={props.selectedChartQueryParam}
teamSlug={props.params.team_slug}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"dependencies": {
"@abstract-foundation/agw-react": "^1.6.4",
"@abstract-foundation/agw-react": "^1.10.0",
"@ai-sdk/react": "^2.0.25",
"@hookform/resolvers": "^3.9.1",
"@radix-ui/react-avatar": "^1.1.10",
+4
View File
@@ -44,3 +44,7 @@ The admin key is temporarily stored in dashboard when performing actions that re
Please note, you should never share your admin key with third parties.
</Details>
<Details summary="Is Vault open source?">
Vault is not yet open source, but we plan to release it soon.
</Details>
+1 -1
View File
@@ -12,7 +12,7 @@ export default async function Layout(props: { children: React.ReactNode }) {
export const metadata = createMetadata({
description:
"Vault is an open-source non-custodial key management service, secured with TEE architecture (AWS Nitro Enclaves) and designed for blockchain applications.",
"Vault is a non-custodial key management service secured with TEE architecture (AWS Nitro Enclaves), designed for blockchain applications.",
title: "Vault",
image: {
icon: "vault",
+2 -2
View File
@@ -5,7 +5,7 @@ import { ArrowLeftRightIcon, UserLockIcon, UsersIcon, WalletIcon } from "lucide-
export const metadata = createMetadata({
title: "thirdweb Vault",
description: "An open-source, secure key management service for storing, managing, and protecting cryptographic keys and secrets.",
description: "A secure key management service for storing, managing, and protecting cryptographic keys and secrets.",
image: {
icon: "vault",
title: "thirdweb Vault",
@@ -14,7 +14,7 @@ export const metadata = createMetadata({
# Vault
Vault is an open-source non-custodial key management service, secured with TEE architecture (AWS Nitro Enclaves) and designed for blockchain applications.
Vault is a non-custodial key management service secured with TEE architecture (AWS Nitro Enclaves), designed for blockchain applications.
## Features
+48
View File
@@ -1,5 +1,53 @@
# wagmi-inapp
## 0.0.26
### Patch Changes
- Updated dependencies []:
- thirdweb@5.111.6
- @thirdweb-dev/wagmi-adapter@0.2.181
## 0.0.25
### Patch Changes
- Updated dependencies [[`7da16cf`](https://github.com/thirdweb-dev/js/commit/7da16cff2ff3aaa80c7fe5614639d950d88b5bf2)]:
- thirdweb@5.111.5
- @thirdweb-dev/wagmi-adapter@0.2.180
## 0.0.24
### Patch Changes
- Updated dependencies [[`d907017`](https://github.com/thirdweb-dev/js/commit/d907017217a0927e7f69eab0470b1fe120b4d1a1), [`40781b8`](https://github.com/thirdweb-dev/js/commit/40781b8170a1014ef76e438ba3c8244137dba7ea)]:
- thirdweb@5.111.4
- @thirdweb-dev/wagmi-adapter@0.2.179
## 0.0.23
### Patch Changes
- Updated dependencies [[`207cb9d`](https://github.com/thirdweb-dev/js/commit/207cb9dbeb82411809bafa2a8e833b1f10414b92)]:
- thirdweb@5.111.3
- @thirdweb-dev/wagmi-adapter@0.2.178
## 0.0.22
### Patch Changes
- Updated dependencies [[`1d54cff`](https://github.com/thirdweb-dev/js/commit/1d54cff7b442b8667ddd54bd783502c367ffc83e), [`fd04eef`](https://github.com/thirdweb-dev/js/commit/fd04eefea9a2a99eee3740d6746040c9f81cd43f)]:
- thirdweb@5.111.2
- @thirdweb-dev/wagmi-adapter@0.2.177
## 0.0.21
### Patch Changes
- Updated dependencies [[`ccdce49`](https://github.com/thirdweb-dev/js/commit/ccdce496e09bc9420b0e15854328651c01f36279)]:
- thirdweb@5.111.1
- @thirdweb-dev/wagmi-adapter@0.2.176
## 0.0.20
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "wagmi-inapp",
"private": true,
"version": "0.0.20",
"version": "0.0.26",
"type": "module",
"scripts": {
"dev": "vite",
+6
View File
@@ -1,5 +1,11 @@
# @thirdweb-dev/engine
## 3.4.0
### Minor Changes
- [#8371](https://github.com/thirdweb-dev/js/pull/8371) [`ad68969`](https://github.com/thirdweb-dev/js/commit/ad68969559a80a5f188a647ef0e1c04f0003a0ad) Thanks [@0xFirekeeper](https://github.com/0xFirekeeper)! - Reworked Solana Sign Transaction API that accepts more flexible inputs
## 3.3.0
### Minor Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/engine",
"version": "3.3.0",
"version": "3.4.0",
"repository": {
"type": "git",
"url": "git+https://github.com/thirdweb-dev/js.git#main"
+27 -27
View File
@@ -274,6 +274,33 @@ export const sendSolanaTransaction = <ThrowOnError extends boolean = false>(
});
};
/**
* Sign Solana Transaction
* Sign a Solana transaction without broadcasting it
*/
export const signSolanaTransaction = <ThrowOnError extends boolean = false>(
options: Options<SignSolanaTransactionData, ThrowOnError>,
) => {
return (options.client ?? _heyApiClient).post<
SignSolanaTransactionResponses,
unknown,
ThrowOnError
>({
security: [
{
name: "x-secret-key",
type: "apiKey",
},
],
url: "/v1/solana/sign/transaction",
...options,
headers: {
"Content-Type": "application/json",
...options.headers,
},
});
};
/**
* Cancel Transaction
* Attempt to cancel a queued transaction. Transactions that have been sent and are waiting for mine cannot be cancelled.
@@ -424,33 +451,6 @@ export const signSolanaMessage = <ThrowOnError extends boolean = false>(
});
};
/**
* Sign Solana Transaction
* Sign a serialized Solana transaction.
*/
export const signSolanaTransaction = <ThrowOnError extends boolean = false>(
options?: Options<SignSolanaTransactionData, ThrowOnError>,
) => {
return (options?.client ?? _heyApiClient).post<
SignSolanaTransactionResponses,
unknown,
ThrowOnError
>({
security: [
{
name: "x-secret-key",
type: "apiKey",
},
],
url: "/v1/solana/sign-transaction",
...options,
headers: {
"Content-Type": "application/json",
...options?.headers,
},
});
};
/**
* Get Transactions
* Search transactions with various filters and pagination
+90 -48
View File
@@ -556,6 +556,10 @@ export type Eip7702OwnerExecution = {
* The delegated EOA address
*/
from: AddressDef;
/**
* Optional fleet ID to route the transaction to a specific bundler fleet
*/
fleetId?: string | null;
};
/**
@@ -570,6 +574,10 @@ export type Eip7702SessionKeyExecution = {
* The account address is the address of a delegated account you want to execute the transaction on. This account has granted a session key to the `session_key_address`
*/
accountAddress: AddressDef;
/**
* Optional fleet ID to route the transaction to a specific bundler fleet
*/
fleetId?: string | null;
};
export type EmptyIdempotencySetResponse = {
@@ -1000,15 +1008,11 @@ export type RpcErrorResponse = {
/**
* Request to send a Solana transaction
*/
export type SendSolanaTransactionRequest = {
export type SendSolanaTransactionRequest = SolanaTransactionInput & {
/**
* Idempotency key for this transaction (defaults to random UUID)
*/
idempotencyKey?: string;
/**
* List of Solana instructions to execute
*/
instructions: Array<SolanaInstructionData>;
/**
* Solana execution options
*/
@@ -1188,6 +1192,30 @@ export type SignResultData = {
signedData: string;
};
/**
* Request to sign a Solana transaction
*/
export type SignSolanaTransactionRequest = SolanaTransactionInput & {
/**
* Solana execution options
*/
executionOptions: SolanaExecutionOptions;
};
/**
* Data returned from successful signing
*/
export type SignSolanaTransactionResponse = {
/**
* The signature (base58-encoded)
*/
signature: string;
/**
* The signed serialized transaction (base64-encoded)
*/
signedTransaction: string;
};
/**
* Request to sign typed data
*/
@@ -1452,6 +1480,21 @@ export type SolanaRpcResponseErrorData =
type: "NODE_UNHEALTHY";
};
/**
* Input for Solana transaction - either build from instructions or use pre-built
*/
export type SolanaTransactionInput =
| SolanaTransactionInputInstructions
| SolanaTransactionInputSerialized;
export type SolanaTransactionInputInstructions = {
instructions: Array<SolanaInstructionData>;
};
export type SolanaTransactionInputSerialized = {
transaction: string;
};
/**
* Execution Option Variants
* All supported specific execution options are contained here
@@ -1503,6 +1546,22 @@ export type SuccessResponseQueuedTransactionsResponse = {
};
};
export type SuccessResponseSignSolanaTransactionResponse = {
/**
* Data returned from successful signing
*/
result: {
/**
* The signature (base58-encoded)
*/
signature: string;
/**
* The signed serialized transaction (base64-encoded)
*/
signedTransaction: string;
};
};
export type ThirdwebError =
| {
error: ThirdwebSerializationError;
@@ -1847,6 +1906,32 @@ export type SendSolanaTransactionResponses = {
export type SendSolanaTransactionResponse =
SendSolanaTransactionResponses[keyof SendSolanaTransactionResponses];
export type SignSolanaTransactionData = {
/**
* Sign Solana transaction request
*/
body: SignSolanaTransactionRequest;
headers?: {
/**
* Vault access token
*/
"x-vault-access-token"?: string | null;
};
path?: never;
query?: never;
url: "/v1/solana/sign/transaction";
};
export type SignSolanaTransactionResponses = {
/**
* Successfully signed Solana transaction
*/
200: SuccessResponseSignSolanaTransactionResponse;
};
export type SignSolanaTransactionResponse2 =
SignSolanaTransactionResponses[keyof SignSolanaTransactionResponses];
export type CancelTransactionData = {
body?: never;
path: {
@@ -2076,49 +2161,6 @@ export type SignSolanaMessageResponses = {
export type SignSolanaMessageResponse =
SignSolanaMessageResponses[keyof SignSolanaMessageResponses];
export type SignSolanaTransactionData = {
body?: {
/**
* Base58 encoded Solana public key
*/
from: string;
/**
* Base64 encoded Solana transaction
*/
transaction: string;
};
headers?: {
/**
* Vault Access Token used to access your EOA
*/
"x-vault-access-token"?: string;
};
path?: never;
query?: never;
url: "/v1/solana/sign-transaction";
};
export type SignSolanaTransactionResponses = {
/**
* Transaction signed
*/
200: {
result: {
/**
* Base58 encoded signature
*/
signature: string;
/**
* Base58 encoded Solana public key
*/
signerPublicKey: string;
};
};
};
export type SignSolanaTransactionResponse =
SignSolanaTransactionResponses[keyof SignSolanaTransactionResponses];
export type GetTransactionsData = {
body?: never;
path?: never;
+42
View File
@@ -1,5 +1,47 @@
# @thirdweb-dev/nebula
## 0.2.84
### Patch Changes
- Updated dependencies []:
- thirdweb@5.111.6
## 0.2.83
### Patch Changes
- Updated dependencies [[`7da16cf`](https://github.com/thirdweb-dev/js/commit/7da16cff2ff3aaa80c7fe5614639d950d88b5bf2)]:
- thirdweb@5.111.5
## 0.2.82
### Patch Changes
- Updated dependencies [[`d907017`](https://github.com/thirdweb-dev/js/commit/d907017217a0927e7f69eab0470b1fe120b4d1a1), [`40781b8`](https://github.com/thirdweb-dev/js/commit/40781b8170a1014ef76e438ba3c8244137dba7ea)]:
- thirdweb@5.111.4
## 0.2.81
### Patch Changes
- Updated dependencies [[`207cb9d`](https://github.com/thirdweb-dev/js/commit/207cb9dbeb82411809bafa2a8e833b1f10414b92)]:
- thirdweb@5.111.3
## 0.2.80
### Patch Changes
- Updated dependencies [[`1d54cff`](https://github.com/thirdweb-dev/js/commit/1d54cff7b442b8667ddd54bd783502c367ffc83e), [`fd04eef`](https://github.com/thirdweb-dev/js/commit/fd04eefea9a2a99eee3740d6746040c9f81cd43f)]:
- thirdweb@5.111.2
## 0.2.79
### Patch Changes
- Updated dependencies [[`ccdce49`](https://github.com/thirdweb-dev/js/commit/ccdce496e09bc9420b0e15854328651c01f36279)]:
- thirdweb@5.111.1
## 0.2.78
### Patch Changes
+1 -1
View File
@@ -57,5 +57,5 @@
"type": "module",
"types": "./dist/types/exports/thirdweb.d.ts",
"typings": "./dist/types/exports/thirdweb.d.ts",
"version": "0.2.78"
"version": "0.2.84"
}
+41
View File
@@ -1,5 +1,46 @@
# thirdweb
## 5.111.6
### Patch Changes
- Updated dependencies [[`ad68969`](https://github.com/thirdweb-dev/js/commit/ad68969559a80a5f188a647ef0e1c04f0003a0ad)]:
- @thirdweb-dev/engine@3.4.0
## 5.111.5
### Patch Changes
- [#8369](https://github.com/thirdweb-dev/js/pull/8369) [`7da16cf`](https://github.com/thirdweb-dev/js/commit/7da16cff2ff3aaa80c7fe5614639d950d88b5bf2) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Make maxAmount optional in wrapFetchWithPayment and loosen schema validation for payment payloads
## 5.111.4
### Patch Changes
- [#8363](https://github.com/thirdweb-dev/js/pull/8363) [`d907017`](https://github.com/thirdweb-dev/js/commit/d907017217a0927e7f69eab0470b1fe120b4d1a1) Thanks [@MananTank](https://github.com/MananTank)! - Fix BuyWidget autoconnect not working when receiverAddress prop is set
- [#8365](https://github.com/thirdweb-dev/js/pull/8365) [`40781b8`](https://github.com/thirdweb-dev/js/commit/40781b8170a1014ef76e438ba3c8244137dba7ea) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Respect passed chain when doing SIWE for in-app/ecosystem wallet
## 5.111.3
### Patch Changes
- [#8361](https://github.com/thirdweb-dev/js/pull/8361) [`207cb9d`](https://github.com/thirdweb-dev/js/commit/207cb9dbeb82411809bafa2a8e833b1f10414b92) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Add extra mobile detection for isMobile() function
## 5.111.2
### Patch Changes
- [#8358](https://github.com/thirdweb-dev/js/pull/8358) [`1d54cff`](https://github.com/thirdweb-dev/js/commit/1d54cff7b442b8667ddd54bd783502c367ffc83e) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Add support for extraMetadata in x402 payment requirements
- [#8356](https://github.com/thirdweb-dev/js/pull/8356) [`fd04eef`](https://github.com/thirdweb-dev/js/commit/fd04eefea9a2a99eee3740d6746040c9f81cd43f) Thanks [@kumaryash90](https://github.com/kumaryash90)! - Update implementations, fix deployment
## 5.111.1
### Patch Changes
- [#8354](https://github.com/thirdweb-dev/js/pull/8354) [`ccdce49`](https://github.com/thirdweb-dev/js/commit/ccdce496e09bc9420b0e15854328651c01f36279) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Fix hiddenWallets prop not applying to all wallets screen
## 5.111.0
### Minor Changes
+1 -1
View File
@@ -430,5 +430,5 @@
}
},
"typings": "./dist/types/exports/thirdweb.d.ts",
"version": "5.111.0"
"version": "5.111.6"
}
@@ -9,44 +9,48 @@ import { getContract } from "../contract.js";
import { deployCloneFactory } from "./utils/bootstrap.js";
describe.runIf(process.env.TW_SECRET_KEY)("deploy dynamic", () => {
it.sequential("should deploy dynamic contract with extensions", async () => {
await deployCloneFactory({
account: TEST_ACCOUNT_A,
chain: ANVIL_CHAIN,
client: TEST_CLIENT,
});
// TODO: Fix this test
it.skip.sequential(
"should deploy dynamic contract with extensions",
async () => {
await deployCloneFactory({
account: TEST_ACCOUNT_A,
chain: ANVIL_CHAIN,
client: TEST_CLIENT,
});
const deployed = await deployPublishedContract({
account: TEST_ACCOUNT_A,
chain: ANVIL_CHAIN,
client: TEST_CLIENT,
contractId: "EvolvingNFT",
contractParams: {
contractURI: "",
defaultAdmin: TEST_ACCOUNT_A.address,
name: "Evolving nft",
royaltyBps: 0n,
royaltyRecipient: TEST_ACCOUNT_A.address,
saleRecipient: TEST_ACCOUNT_A.address,
symbol: "ENFT",
trustedForwarders: [],
},
});
const deployed = await deployPublishedContract({
account: TEST_ACCOUNT_A,
chain: ANVIL_CHAIN,
client: TEST_CLIENT,
contractId: "EvolvingNFT",
contractParams: {
contractURI: "",
defaultAdmin: TEST_ACCOUNT_A.address,
name: "Evolving nft",
royaltyBps: 0n,
royaltyRecipient: TEST_ACCOUNT_A.address,
saleRecipient: TEST_ACCOUNT_A.address,
symbol: "ENFT",
trustedForwarders: [],
},
});
expect(deployed).toBeDefined();
expect(deployed).toBeDefined();
const contract = getContract({
address: deployed,
chain: ANVIL_CHAIN,
client: TEST_CLIENT,
});
const contract = getContract({
address: deployed,
chain: ANVIL_CHAIN,
client: TEST_CLIENT,
});
const extensions = await readContract({
contract,
method: resolveMethod("getAllExtensions"),
params: [],
});
const extensions = await readContract({
contract,
method: resolveMethod("getAllExtensions"),
params: [],
});
expect(extensions.length).toEqual(3);
});
expect(extensions.length).toEqual(3);
},
);
});
@@ -1,6 +1,6 @@
export const ZKSYNC_IMPLEMENTATIONS: Record<number, Record<string, string>> = {
232: {
MarketplaceV3: "0xB7387cF425eC8Da1b04b8E34De86245cb32bCA6D",
MarketplaceV3: "0x4e0C3577335961Ff800FFDA24981EB2F38D94483",
},
300: {
MarketplaceV3: "0x58e0F289C7dD2025eBd0696d913ECC0fdc1CC8bc",
@@ -18,7 +18,7 @@ export const ZKSYNC_IMPLEMENTATIONS: Record<number, Record<string, string>> = {
MarketplaceV3: "0x2dA4Dd326A6482679547071be21f74685d730504",
},
37111: {
MarketplaceV3: "0xF8fd1016420c2B7832714241d36Efe55D41df126",
MarketplaceV3: "0x12A305cc7168fa3b7B172fE53c57b9a22716F667",
},
50104: {
MarketplaceV3: "0x292c324920d4120F928dA6f04548442fa10B8B0f",
@@ -171,7 +171,8 @@ describe.runIf(process.env.TW_SECRET_KEY)("getEvents", () => {
expect(events.length).toBe(14);
});
it("should get individual events with extension no filter using indexer", async () => {
// TODO: re-enable this test once indexer is fixed
it.skip("should get individual events with extension no filter using indexer", async () => {
const events = await getContractEvents({
contract: DOODLES_CONTRACT,
events: [transferEvent()],
@@ -182,7 +183,8 @@ describe.runIf(process.env.TW_SECRET_KEY)("getEvents", () => {
expect(events.length).toBe(38);
});
it("should get events for signature using indexer", async () => {
// TODO: re-enable this test once indexer is fixed
it.skip("should get events for signature using indexer", async () => {
const events = await getContractEvents({
contract: DOODLES_CONTRACT,
events: [
@@ -198,7 +200,8 @@ describe.runIf(process.env.TW_SECRET_KEY)("getEvents", () => {
expect(events.length).toBe(2);
});
it("should get specified events using indexer", async () => {
// TODO: re-enable this test once indexer is fixed
it.skip("should get specified events using indexer", async () => {
const events = await getContractEvents({
contract: USDT_CONTRACT,
events: [
@@ -11,50 +11,54 @@ import { sendTransaction } from "../../../transaction/actions/send-transaction.j
import { installPublishedExtension } from "./installPublishedExtension.js";
describe.runIf(process.env.TW_SECRET_KEY)("install extension", () => {
it.sequential("should install extension to a dynamic contract", async () => {
await deployCloneFactory({
account: TEST_ACCOUNT_A,
chain: ANVIL_CHAIN,
client: TEST_CLIENT,
});
// TODO: Fix this test
it.skip.sequential(
"should install extension to a dynamic contract",
async () => {
await deployCloneFactory({
account: TEST_ACCOUNT_A,
chain: ANVIL_CHAIN,
client: TEST_CLIENT,
});
const deployed = await deployPublishedContract({
account: TEST_ACCOUNT_A,
chain: ANVIL_CHAIN,
client: TEST_CLIENT,
contractId: "EvolvingNFT",
contractParams: {
contractURI: "",
defaultAdmin: TEST_ACCOUNT_A.address,
name: "Evolving nft",
royaltyBps: 0n,
royaltyRecipient: TEST_ACCOUNT_A.address,
saleRecipient: TEST_ACCOUNT_A.address,
symbol: "ENFT",
trustedForwarders: [],
},
});
const deployed = await deployPublishedContract({
account: TEST_ACCOUNT_A,
chain: ANVIL_CHAIN,
client: TEST_CLIENT,
contractId: "EvolvingNFT",
contractParams: {
contractURI: "",
defaultAdmin: TEST_ACCOUNT_A.address,
name: "Evolving nft",
royaltyBps: 0n,
royaltyRecipient: TEST_ACCOUNT_A.address,
saleRecipient: TEST_ACCOUNT_A.address,
symbol: "ENFT",
trustedForwarders: [],
},
});
const contract = getContract({
address: deployed,
chain: ANVIL_CHAIN,
client: TEST_CLIENT,
});
const contract = getContract({
address: deployed,
chain: ANVIL_CHAIN,
client: TEST_CLIENT,
});
const transaction = installPublishedExtension({
account: TEST_ACCOUNT_A,
contract,
extensionName: "DirectListingsLogic",
});
const transaction = installPublishedExtension({
account: TEST_ACCOUNT_A,
contract,
extensionName: "DirectListingsLogic",
});
await sendTransaction({ account: TEST_ACCOUNT_A, transaction });
await sendTransaction({ account: TEST_ACCOUNT_A, transaction });
const extensions = await readContract({
contract,
method: resolveMethod("getAllExtensions"),
params: [],
});
const extensions = await readContract({
contract,
method: resolveMethod("getAllExtensions"),
params: [],
});
expect(extensions.length).toEqual(4);
});
expect(extensions.length).toEqual(4);
},
);
});
@@ -11,7 +11,8 @@ import { deployPublishedContract } from "../../prebuilts/deploy-published.js";
import { uninstallExtension } from "./uninstallExtension.js";
describe.runIf(process.env.TW_SECRET_KEY)("uninstall extension", () => {
it.sequential(
// TODO: Fix this test
it.skip.sequential(
"should uninstall extension from a dynamic contract",
async () => {
await deployCloneFactory({
@@ -16,6 +16,7 @@ import {
fetchBytecodeFromCompilerMetadata,
} from "../../utils/any-evm/deploy-metadata.js";
import { encodeExtraDataWithUri } from "../../utils/any-evm/encode-extra-data-with-uri.js";
import { isZkSyncChain } from "../../utils/any-evm/zksync/isZkSyncChain.js";
import type { Hex } from "../../utils/encoding/hex.js";
import type { Account } from "../../wallets/interfaces/wallet.js";
import { getAllDefaultConstructorParamsForImplementation } from "./get-required-transactions.js";
@@ -213,7 +214,8 @@ export async function deployContractfromDeployMetadata(
if (
deployMetadata.routerType === "dynamic" &&
deployMetadata.defaultExtensions
deployMetadata.defaultExtensions &&
!isZkSyncChain(chain)
) {
for (const e of deployMetadata.defaultExtensions) {
await getOrDeployInfraForPublishedContract({
@@ -142,7 +142,9 @@ export function ConnectModal(
const inAppWallet = wallets.find((wallet) => wallet.id === "inApp") as
| Wallet<"inApp">
| undefined;
const externalWallets = wallets.filter((wallet) => wallet.id !== "inApp");
const externalWallets = wallets
.filter((wallet) => wallet.id !== "inApp")
.filter((wallet) => !props.hiddenWallets?.includes(wallet.id));
const showBranding = props.connectModal?.showThirdwebBranding !== false;
const connectionManager = useConnectionManager();
@@ -25,6 +25,7 @@ import type {
import type { CompletedStatusResult } from "../../../core/hooks/useStepExecutor.js";
import type { SupportedTokens } from "../../../core/utils/defaultTokens.js";
import { webWindowAdapter } from "../../adapters/WindowAdapter.js";
import { AutoConnect } from "../AutoConnect/AutoConnect.js";
import connectLocaleEn from "../ConnectWallet/locale/en.js";
import { EmbedContainer } from "../ConnectWallet/Modal/ConnectEmbed.js";
import { DynamicHeight } from "../components/DynamicHeight.js";
@@ -359,6 +360,21 @@ export function BuyWidget(props: BuyWidgetProps) {
className={props.className}
style={props.style}
>
{props.connectOptions?.autoConnect !== false && (
<AutoConnect
client={props.client}
wallets={props.connectOptions?.wallets}
timeout={
typeof props.connectOptions?.autoConnect === "object"
? props.connectOptions?.autoConnect?.timeout
: undefined
}
appMetadata={props.connectOptions?.appMetadata}
accountAbstraction={props.connectOptions?.accountAbstraction}
chain={props.connectOptions?.chain}
/>
)}
<BridgeWidgetContent
{...props}
theme={props.theme || "dark"}
@@ -298,6 +298,7 @@ export function FundWallet(props: FundWalletProps) {
}}
theme={theme}
{...props.connectOptions}
autoConnect={false}
/>
) : (
<Button
@@ -8,6 +8,7 @@ import walletInfos from "../../../../../wallets/__generated__/wallet-infos.js";
import { NON_SEARCHABLE_WALLETS } from "../../../../../wallets/constants.js";
import { createWallet } from "../../../../../wallets/create-wallet.js";
import type { Wallet } from "../../../../../wallets/interfaces/wallet.js";
import type { WalletId } from "../../../../../wallets/wallet-types.js";
import { useCustomTheme } from "../../../../core/design-system/CustomThemeProvider.js";
import { iconSize, spacing } from "../../../../core/design-system/index.js";
import { useSetSelectionData } from "../../../providers/wallet-ui-states-provider.js";
@@ -34,15 +35,16 @@ function AllWalletsUI(props: {
recommendedWallets: Wallet[] | undefined;
connectLocale: ConnectLocale;
disableSelectionDataReset?: boolean;
walletIdsToHide?: WalletId[];
}) {
const { itemsToShow, lastItemRef } = useShowMore<HTMLLIElement>(10, 10);
const setSelectionData = useSetSelectionData();
const walletList = useMemo(() => {
return walletInfos.filter(
(info) => !NON_SEARCHABLE_WALLETS.includes(info.id),
);
}, []);
return walletInfos
.filter((info) => !NON_SEARCHABLE_WALLETS.includes(info.id))
.filter((info) => !props.walletIdsToHide?.includes(info.id));
}, [props.walletIdsToHide]);
const fuseInstance = useMemo(() => {
return new Fuse(walletList, {
@@ -172,6 +172,7 @@ export const ConnectModalContent = (props: {
onBack={handleBack}
onSelect={setScreen}
recommendedWallets={props.recommendedWallets}
walletIdsToHide={props.walletIdsToHide}
size={props.size}
/>
</Suspense>
@@ -138,6 +138,20 @@ export function LargeAmount() {
);
}
export function NoAutoConnect() {
return (
<Variant
client={storyClient}
chain={ethereum}
tokenAddress="0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984"
amount="150000"
connectOptions={{
autoConnect: false,
}}
/>
);
}
function Variant(props: BuyWidgetProps) {
return (
<div
+41 -2
View File
@@ -30,6 +30,45 @@ function isIOS(): boolean {
/**
* @internal
*/
export function isMobile(): boolean {
return isAndroid() || isIOS();
function hasTouchScreen(): boolean {
if (typeof window === "undefined" || typeof navigator === "undefined") {
return false;
}
return (
"ontouchstart" in window ||
navigator.maxTouchPoints > 0 ||
// @ts-expect-error - msMaxTouchPoints is IE specific
navigator.msMaxTouchPoints > 0
);
}
/**
* @internal
*/
function hasMobileAPIs(): boolean {
if (typeof window === "undefined") {
return false;
}
return "orientation" in window || "onorientationchange" in window;
}
/**
* @internal
*/
export function isMobile(): boolean {
// Primary signal: OS detection via user agent
const isMobileOS = isAndroid() || isIOS();
if (isMobileOS) {
return true;
}
// Secondary signal: catch edge cases like webviews with modified user agents
// Both touch capability AND mobile-specific APIs must be present to avoid
// false positives on touch-enabled desktops
if (hasTouchScreen() && hasMobileAPIs()) {
return true;
}
return false;
}
@@ -1,5 +1,6 @@
import { signLoginPayload } from "../../../../auth/core/sign-login-payload.js";
import type { LoginPayload } from "../../../../auth/core/types.js";
import type { Chain } from "../../../../chains/types.js";
import { getCachedChain } from "../../../../chains/utils.js";
import type { ThirdwebClient } from "../../../../client/client.js";
import { getClientFetch } from "../../../../utils/fetch.js";
@@ -15,10 +16,11 @@ import type { AuthStoredTokenWithCookieReturnType } from "./types.js";
export async function siweAuthenticate(args: {
wallet: Wallet;
client: ThirdwebClient;
chain?: Chain;
ecosystem?: Ecosystem;
}): Promise<AuthStoredTokenWithCookieReturnType> {
const { wallet, client, ecosystem } = args;
const siweChain = getCachedChain(1); // always use mainnet for SIWE for wide wallet compatibility
const { wallet, client, ecosystem, chain } = args;
const siweChain = chain || getCachedChain(1); // fallback to mainnet for SIWE for wide wallet compatibility
// only connect if the wallet doesn't already have an account
const account =
wallet.getAccount() || (await wallet.connect({ chain: siweChain, client }));
@@ -69,7 +69,7 @@ export type SingleStepAuthArgsType =
| {
strategy: "wallet";
wallet: Wallet;
chain: Chain;
chain?: Chain;
}
| {
strategy: "guest";
@@ -186,6 +186,7 @@ export class InAppNativeConnector implements InAppConnector {
client: this.client,
ecosystem: params.ecosystem,
wallet: params.wallet,
chain: params.chain,
});
}
case "github":
@@ -107,6 +107,7 @@ describe("InAppWebConnector.connect", () => {
client: TEST_CLIENT,
ecosystem: undefined,
wallet: mockWallet,
chain: ethereum,
});
});
@@ -368,6 +368,7 @@ export class InAppWebConnector implements InAppConnector {
client: this.client,
ecosystem: this.ecosystem,
wallet: args.wallet,
chain: args.chain,
});
}
}
+2
View File
@@ -44,6 +44,7 @@ export async function decodePaymentRequest(
routeConfig = {},
method,
paymentData,
extraMetadata,
} = args;
const { errorMessages } = routeConfig;
@@ -54,6 +55,7 @@ export async function decodePaymentRequest(
price,
routeConfig,
payTo,
extraMetadata,
});
// Check for payment header, if none, return the payment requirements
+2 -6
View File
@@ -1,8 +1,5 @@
import type { ExactEvmPayload } from "x402/types";
import {
type RequestedPaymentPayload,
RequestedPaymentPayloadSchema,
} from "./schemas.js";
import type { RequestedPaymentPayload } from "./schemas.js";
/**
* Encodes a payment payload into a base64 string, ensuring bigint values are properly stringified
@@ -44,8 +41,7 @@ export function decodePayment(payment: string): RequestedPaymentPayload {
...parsed,
payload: parsed.payload as ExactEvmPayload,
};
const validated = RequestedPaymentPayloadSchema.parse(obj);
return validated;
return obj;
}
/**
@@ -281,6 +281,7 @@ export function facilitator(
routeConfig: args.routeConfig,
serverWalletAddress: facilitator.address,
recipientAddress: args.payTo,
extraMetadata: args.extraMetadata,
}),
});
if (res.status !== 402) {
@@ -52,7 +52,7 @@ export function wrapFetchWithPayment(
fetch: typeof globalThis.fetch,
client: ThirdwebClient,
wallet: Wallet,
maxValue: bigint = BigInt(1 * 10 ** 6), // Default to 1 USDC
maxValue?: bigint,
) {
return async (input: RequestInfo, init?: RequestInit) => {
const response = await fetch(input, init);
@@ -91,7 +91,10 @@ export function wrapFetchWithPayment(
);
}
if (BigInt(selectedPaymentRequirements.maxAmountRequired) > maxValue) {
if (
maxValue &&
BigInt(selectedPaymentRequirements.maxAmountRequired) > maxValue
) {
throw new Error(
`Payment amount exceeds maximum allowed (currently set to ${maxValue} in base units)`,
);
+1 -1
View File
@@ -15,7 +15,7 @@ const FacilitatorNetworkSchema = z.string();
export type FacilitatorNetwork = z.infer<typeof FacilitatorNetworkSchema>;
export const RequestedPaymentPayloadSchema = PaymentPayloadSchema.extend({
const RequestedPaymentPayloadSchema = PaymentPayloadSchema.extend({
network: FacilitatorNetworkSchema,
});
+2
View File
@@ -35,6 +35,8 @@ export type PaymentArgs = {
routeConfig?: PaymentMiddlewareConfig;
/** Optional recipient address to receive the payment if different from your facilitator address */
payTo?: string;
/** Optional extra data to be included in the payment request */
extraMetadata?: Record<string, unknown>;
};
export type SettlePaymentArgs = PaymentArgs & {
+12
View File
@@ -1,5 +1,17 @@
# @thirdweb-dev/wagmi-adapter
## 0.2.181
## 0.2.180
## 0.2.179
## 0.2.178
## 0.2.177
## 0.2.176
## 0.2.175
## 0.2.174
+1 -1
View File
@@ -56,5 +56,5 @@
"type": "module",
"types": "./dist/types/exports/thirdweb.d.ts",
"typings": "./dist/types/exports/thirdweb.d.ts",
"version": "0.2.175"
"version": "0.2.181"
}
+16 -41
View File
@@ -574,8 +574,8 @@ importers:
apps/playground-web:
dependencies:
'@abstract-foundation/agw-react':
specifier: ^1.6.4
version: 1.6.4(cp5zk5cv43kemeeoylvueylari)
specifier: ^1.10.0
version: 1.10.0(e4yhxgmiqbrp6q7xc7oorwzzpy)
'@ai-sdk/react':
specifier: ^2.0.25
version: 2.0.25([email protected])([email protected])
@@ -1827,42 +1827,29 @@ packages:
graphql:
optional: true
'@abstract-foundation/agw-client@1.6.2':
resolution: {integrity: sha512-NaXMfRFdujZNWeFn89p1gzxt17bWW9QTW3kIcmiaDSjPxifT9sKa+Qa1v33Rz3kpBM/PJVQkaFUgA7Jff3bidw==}
'@abstract-foundation/agw-client@1.10.0':
resolution: {integrity: sha512-OGI8V8/MWbcJSw3st+pSxBUHEWkfS1ikBAr4ylSAsuyn+VpvV+G/lto0LZR7uAZnH3uK/cTv5e6YKYGodb1KIw==}
peerDependencies:
abitype: ^1.0.0
typescript: '>=5.0.4'
viem: ^2.22.23
viem: ^2.33.3
peerDependenciesMeta:
typescript:
optional: true
'@abstract-foundation/agw-[email protected]':
resolution: {integrity: sha512-DhGsLT6xei/asqnJeql2bSVdsWv9pgegWHbETSlK22JZwOhKivC5mxdR97XEg9jK680ymBFKIrFwxEMmcjog5Q==}
'@abstract-foundation/agw-[email protected]':
resolution: {integrity: sha512-QWsCSZFCTkuOuqt+lL2Eguez7BK2tNyie6OtVzxwvwEZa7uk1mPicAQWjy1WUBQIPucVP2gJxnozGFLo9liTtA==}
peerDependencies:
abitype: ^1.0.0
typescript: '>=5.0.4'
viem: ^2.22.23
peerDependenciesMeta:
typescript:
optional: true
'@abstract-foundation/[email protected]':
resolution: {integrity: sha512-8ZOuQOACWuYf9T13AfejlJeS/Ai2zfem3etvrIzrDUurYmy3smA/3bXzRA0ydjgYsu2yvMwE8nBMggiit+OGew==}
peerDependencies:
'@privy-io/cross-app-connect': ^0.2.0
'@privy-io/react-auth': ^2.8.2
'@rainbow-me/rainbowkit': '*'
'@privy-io/cross-app-connect': ^0.2.2
'@privy-io/react-auth': ^2.21.2
'@tanstack/react-query': ^5
react: '>=18'
secp256k1: '>=5.0.1'
thirdweb: ^5.68.0
typescript: '>=5.0.4'
viem: ^2.22.23
viem: ^2.33.3
wagmi: ^2.14.11
peerDependenciesMeta:
'@rainbow-me/rainbowkit':
optional: true
thirdweb:
optional: true
typescript:
@@ -8254,7 +8241,6 @@ packages:
'@walletconnect/[email protected]':
resolution: {integrity: sha512-a/K5PRIFPCjfHq5xx3WYKHAAF8Ft2I1LtxloyibqiQOoUtNLfKgFB1r8sdMvXM7/PADNPe4iAw4uSE6PrARrfg==}
deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases'
'@walletconnect/[email protected]':
resolution: {integrity: sha512-z7h+PeLa5Au2R591d/8ZlziE0stJvdzP9jNFzFolf2RG/OiXulgFKum8PrIyXy+Rg2q95U9nRVUF9fWcn78yBA==}
@@ -8266,7 +8252,6 @@ packages:
'@walletconnect/[email protected]':
resolution: {integrity: sha512-IAs/IqmE1HVL9EsvqkNRU4NeAYe//h9NwqKi7ToKYZv4jhcC3BBemUD1r8iQJSTHMhO41EKn1G9/DiBln3ZiwQ==}
deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases'
'@walletconnect/[email protected]':
resolution: {integrity: sha512-lTcUbMjQ0YUZ5wzCLhpBeS9OkWYgLLly6BddEp2+pm4QxiwCCU2Nao0nBJXgzKbZYQOgrEGqtdm/7ze67gjzRA==}
@@ -8292,7 +8277,6 @@ packages:
'@walletconnect/[email protected]':
resolution: {integrity: sha512-LkKg+EjcSUpPUhhvRANgkjPL38wJPIWumAYD8OK/g4OFuJ4W3lS/XTCKthABQfFqmiNbNbVllmywiyE44KdpQg==}
deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases'
'@walletconnect/[email protected]':
resolution: {integrity: sha512-mtUQvewt+X0VBQay/xOJBvxsB3Xsm1lTwFjZ6WUwSOTR1X+FNb71hSApnV5kbsdDIpYPXeQUbGt2se1n5E5UBg==}
@@ -8304,7 +8288,6 @@ packages:
'@walletconnect/[email protected]':
resolution: {integrity: sha512-SMXGGXyj78c8Ru2f665ZFZU24phn0yZyCP5Ej7goxVQxABwqWKM/odj3j/IxZv+hxA8yU13yxaubgVefnereqw==}
deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases'
'@walletconnect/[email protected]':
resolution: {integrity: sha512-Nc1Z6VXnya152yucNDPnlTkrhG289tCUfcjiWqDmwNYzFSfdT5oJQHlnffQXlvoks90kn5Ru8Rnwag2CH1YOVQ==}
@@ -16664,26 +16647,18 @@ snapshots:
optionalDependencies:
graphql: 16.11.0
'@abstract-foundation/agw-client@1.6.2([email protected]([email protected])([email protected]))([email protected])([email protected]([email protected])([email protected])([email protected])([email protected]))':
'@abstract-foundation/agw-client@1.10.0([email protected]([email protected])([email protected]))([email protected])([email protected]([email protected])([email protected])([email protected])([email protected]))':
dependencies:
abitype: 1.1.1([email protected])([email protected])
viem: 2.37.9([email protected])([email protected])([email protected])([email protected])
optionalDependencies:
typescript: 5.8.3
'@abstract-foundation/agw-[email protected]([email protected]([email protected])([email protected]))([email protected])([email protected]([email protected])([email protected])([email protected])([email protected]))':
'@abstract-foundation/agw-[email protected](e4yhxgmiqbrp6q7xc7oorwzzpy)':
dependencies:
abitype: 1.1.1([email protected])([email protected])
viem: 2.37.9([email protected])([email protected])([email protected])([email protected])
optionalDependencies:
typescript: 5.8.3
optional: true
'@abstract-foundation/[email protected](cp5zk5cv43kemeeoylvueylari)':
dependencies:
'@abstract-foundation/agw-client': 1.6.2([email protected]([email protected])([email protected]))([email protected])([email protected]([email protected])([email protected])([email protected])([email protected]))
'@abstract-foundation/agw-client': 1.10.0([email protected]([email protected])([email protected]))([email protected])([email protected]([email protected])([email protected])([email protected])([email protected]))
'@privy-io/cross-app-connect': 0.2.2(@wagmi/[email protected](@tanstack/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]([email protected]))([email protected]([email protected])([email protected])([email protected])([email protected])))([email protected]([email protected])([email protected])([email protected])([email protected]))
'@privy-io/react-auth': 2.17.3(@abstract-foundation/agw-client@1.8.5([email protected]([email protected])([email protected]))([email protected])([email protected]([email protected])([email protected])([email protected])([email protected])))(@solana/[email protected](@solana/[email protected]([email protected])([email protected])([email protected])([email protected]))([email protected])([email protected])([email protected])([email protected])([email protected]))(@solana/[email protected]([email protected])([email protected])([email protected])([email protected]))(@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])
'@privy-io/react-auth': 2.17.3(@abstract-foundation/agw-client@1.10.0([email protected]([email protected])([email protected]))([email protected])([email protected]([email protected])([email protected])([email protected])([email protected])))(@solana/[email protected](@solana/[email protected]([email protected])([email protected])([email protected])([email protected]))([email protected])([email protected])([email protected])([email protected])([email protected]))(@solana/[email protected]([email protected])([email protected])([email protected])([email protected]))(@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])
'@tanstack/react-query': 5.81.5([email protected])
react: 19.1.0
secp256k1: 5.0.1
@@ -21480,7 +21455,7 @@ snapshots:
- typescript
- utf-8-validate
'@privy-io/[email protected](@abstract-foundation/agw-client@1.8.5([email protected]([email protected])([email protected]))([email protected])([email protected]([email protected])([email protected])([email protected])([email protected])))(@solana/[email protected](@solana/[email protected]([email protected])([email protected])([email protected])([email protected]))([email protected])([email protected])([email protected])([email protected])([email protected]))(@solana/[email protected]([email protected])([email protected])([email protected])([email protected]))(@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])':
'@privy-io/[email protected](@abstract-foundation/agw-client@1.10.0([email protected]([email protected])([email protected]))([email protected])([email protected]([email protected])([email protected])([email protected])([email protected])))(@solana/[email protected](@solana/[email protected]([email protected])([email protected])([email protected])([email protected]))([email protected])([email protected])([email protected])([email protected])([email protected]))(@solana/[email protected]([email protected])([email protected])([email protected])([email protected]))(@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])':
dependencies:
'@coinbase/wallet-sdk': 4.3.2
'@floating-ui/react': 0.26.28([email protected]([email protected]))([email protected])
@@ -21526,7 +21501,7 @@ snapshots:
viem: 2.37.9([email protected])([email protected])([email protected])([email protected])
zustand: 5.0.7(@types/[email protected])([email protected])([email protected]([email protected]))
optionalDependencies:
'@abstract-foundation/agw-client': 1.8.5([email protected]([email protected])([email protected]))([email protected])([email protected]([email protected])([email protected])([email protected])([email protected]))
'@abstract-foundation/agw-client': 1.10.0([email protected]([email protected])([email protected]))([email protected])([email protected]([email protected])([email protected])([email protected])([email protected]))
'@solana/spl-token': 0.4.14(@solana/[email protected]([email protected])([email protected])([email protected])([email protected]))([email protected])([email protected])([email protected])([email protected])([email protected])
'@solana/web3.js': 1.98.2([email protected])([email protected])([email protected])([email protected])
transitivePeerDependencies: