From b53eefd386cc8e3a366348e539a9ba272ae3dd57 Mon Sep 17 00:00:00 2001 From: Henry Wilson Date: Wed, 3 Jun 2026 15:39:27 -0400 Subject: [PATCH 1/2] update sdk example links for categorization change --- api-reference/overview/errors.mdx | 6 +- changelogs/ethers/readme.mdx | 2 +- changelogs/http/readme.mdx | 4 +- changelogs/viem/readme.mdx | 2 +- features/authentication/auth-proxy.mdx | 2 +- .../authentication/bring-your-own-auth.mdx | 2 +- features/authentication/email.mdx | 6 +- .../authentication/passkeys/integration.mdx | 2 +- .../proxying-signed-requests.mdx | 2 +- features/authentication/sessions.mdx | 4 +- features/authentication/social-logins.mdx | 6 +- features/networks/aptos.mdx | 2 +- features/networks/bitcoin.mdx | 4 +- features/networks/cosmos.mdx | 2 +- features/networks/doge.mdx | 2 +- features/networks/ethereum.mdx | 32 ++--- features/networks/iota.mdx | 2 +- features/networks/movement.mdx | 2 +- features/networks/solana.mdx | 4 +- features/networks/spark.mdx | 4 +- features/networks/stacks.mdx | 2 +- features/networks/sui.mdx | 2 +- features/networks/tempo.mdx | 4 +- .../delegated-access/agentic-wallets.mdx | 2 +- .../policies/delegated-access/backend.mdx | 4 +- .../policies/delegated-access/frontend.mdx | 2 +- .../examples/co-signing-transactions.mdx | 4 +- features/policies/examples/solana.mdx | 2 +- .../sending-sponsored-transactions.mdx | 4 +- get-started/examples.mdx | 110 +++++++++--------- sdks/advanced/client-side-signing.mdx | 4 +- sdks/advanced/iframe-stamper.mdx | 2 +- sdks/foundry.mdx | 2 +- sdks/web3/eip-1193.mdx | 2 +- sdks/web3/gas-station.mdx | 2 +- sdks/web3/solana.mdx | 2 +- sdks/web3/viem.mdx | 2 +- snippets/shared/balance-concepts.mdx | 4 +- snippets/shared/export-wallets.mdx | 4 +- snippets/shared/import-wallets.mdx | 4 +- snippets/shared/send-tx-core.mdx | 2 +- solutions/cookbooks/0x.mdx | 2 +- solutions/cookbooks/aave.mdx | 4 +- solutions/cookbooks/breeze.mdx | 2 +- solutions/cookbooks/jupiter.mdx | 2 +- solutions/cookbooks/lifi.mdx | 2 +- solutions/cookbooks/morpho.mdx | 4 +- .../wallet-connect-pay-integration.mdx | 4 +- solutions/cookbooks/yieldxyz.mdx | 4 +- .../react-native/overview.mdx | 2 +- .../react/advanced-backend-authentication.mdx | 2 +- .../integration-guide/react/index.mdx | 2 +- .../react/using-embedded-wallets.mdx | 2 +- solutions/embedded-wallets/quickstart.mdx | 2 +- .../key-management/encryption-key-storage.mdx | 2 +- .../enterprise-disaster-recovery.mdx | 6 +- 56 files changed, 150 insertions(+), 150 deletions(-) diff --git a/api-reference/overview/errors.mdx b/api-reference/overview/errors.mdx index cc1a5b55..6751ca2c 100644 --- a/api-reference/overview/errors.mdx +++ b/api-reference/overview/errors.mdx @@ -642,7 +642,7 @@ Common causes: Troubleshooting tips: - The attestation generated by the authenticator includes a new key pair, the challenge, and device metadata that is signed, read more about attestations [here](https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API/Attestation_and_Assertion). -- An example of getting the correct parameters needed to use the Create Authenticators endpoint can be found within our [react-components](https://github.com/tkhq/sdk/blob/main/examples/react-components/src/app/dashboard/page.tsx#L246-L276) SDK example +- An example of getting the correct parameters needed to use the Create Authenticators endpoint can be found within our [react-components](https://github.com/tkhq/sdk/blob/main/examples/demos/react-components/src/app/dashboard/page.tsx#L246-L276) SDK example ### invalid authenticator attestation @@ -653,7 +653,7 @@ Common causes: Troubleshooting tips: - The attestation generated by the authenticator includes a new key pair, the challenge, and device metadata that is signed, read more about attestations [here](https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API/Attestation_and_Assertion). -- An example of getting the correct parameters needed to use the Create Authenticators endpoint can be found within our [react-components](https://github.com/tkhq/sdk/blob/main/examples/react-components/src/app/dashboard/page.tsx#L246-L276) SDK example +- An example of getting the correct parameters needed to use the Create Authenticators endpoint can be found within our [react-components](https://github.com/tkhq/sdk/blob/main/examples/demos/react-components/src/app/dashboard/page.tsx#L246-L276) SDK example ### missing parameter: user authenticator attestation auth data @@ -663,7 +663,7 @@ Common causes: Troubleshooting tips: -- An example of getting the correct parameters needed to use the Create Authenticators endpoint can be found within our [react-components](https://github.com/tkhq/sdk/blob/main/examples/react-components/src/app/dashboard/page.tsx#L246-L276) SDK example +- An example of getting the correct parameters needed to use the Create Authenticators endpoint can be found within our [react-components](https://github.com/tkhq/sdk/blob/main/examples/demos/react-components/src/app/dashboard/page.tsx#L246-L276) SDK example ### user has exceeded maximum authenticators diff --git a/changelogs/ethers/readme.mdx b/changelogs/ethers/readme.mdx index 3c373876..9a7a6955 100644 --- a/changelogs/ethers/readme.mdx +++ b/changelogs/ethers/readme.mdx @@ -1140,7 +1140,7 @@ const turnkeySigner = new TurnkeySigner({ - Update documentation as follows: - ebf87a9: This breaking change adds support for stampers (@turnkey/api-key-stamper / @turnkey/webauthn-stamper) to integrate with API keys or passkeys, bringing it to parity with our [Viem](https://github.com/tkhq/sdk/tree/main/packages/viem) package. See the following examples for sample usage: - - [with-ethers](https://github.com/tkhq/sdk/tree/main/examples/with-ethers): updated to use `@turnkey/api-key-stamper` + - [with-ethers](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-ethers): updated to use `@turnkey/api-key-stamper` - [with-ethers-and-passkeys](https://github.com/tkhq/sdk/tree/main/examples/with-ethers-and-passkeys): demonstrates usage of `@turnkey/webauthn-stamper` ## 0.17.0 diff --git a/changelogs/http/readme.mdx b/changelogs/http/readme.mdx index c6f6c337..12564e0b 100644 --- a/changelogs/http/readme.mdx +++ b/changelogs/http/readme.mdx @@ -290,7 +290,7 @@ mode: wide ### Minor Changes - 3e4a482: Release per mono v2025.4.4 - - Adds parsing and policy engine support for Ethereum Type 3 (EIP-4844) and Type 4 (EIP-7702) transactions. There is no change to any signing interface or API; you simply can now use Turnkey's signing endpoints to sign those transaction types. See [with-viem](https://github.com/tkhq/sdk/blob/main/examples/with-viem/) for examples. + - Adds parsing and policy engine support for Ethereum Type 3 (EIP-4844) and Type 4 (EIP-7702) transactions. There is no change to any signing interface or API; you simply can now use Turnkey's signing endpoints to sign those transaction types. See [with-viem](https://github.com/tkhq/sdk/blob/main/examples/chain-integrations/with-viem/) for examples. - New wallet account creations will now automatically derive the underlying derived account's public key. For example: previously, if derived an Ethereum wallet account, you would get the resulting Ethereum address (`0x...`). If you also wanted the public key associated with that underlying key, you would've had to derive an additional wallet account with `ADDRESS_FORMAT_COMPRESSED`. Now, this will automatically be derived for you. It is now a property that has been added to the wallet account primitive (i.e. accessible via `walletAccount.publicKey`). ## 3.0.0 @@ -756,7 +756,7 @@ Signing is now performed through Turnkey stampers. New dependencies: ### Minor Changes -- Add support for federated requests (an example is included under `sdk/examples/with-federated-passkeys`) +- Add support for federated requests (an example is included under `sdk/examples/authentication/with-federated-passkeys`) - Routine re-sync protos from mono ## 0.17.1 diff --git a/changelogs/viem/readme.mdx b/changelogs/viem/readme.mdx index 85511a06..6f4aa9cf 100644 --- a/changelogs/viem/readme.mdx +++ b/changelogs/viem/readme.mdx @@ -555,7 +555,7 @@ mode: wide - 2f75cf1: Add support for signing Type 3 (EIP-4844) transactions - Note the inline comments on the `signTransaction` [implementation](https://github.com/tkhq/sdk/blob/5e5666aba978f756e2021c261830effc5559811f/packages/viem/src/index.ts#L392): when signing Type 3 transactions, our Viem implementation will extract the transaction payload (not including blobs, commitments, or proofs), sign it, extract the signature, and then reassemble the entire transaction payload. - - See [with-viem](https://github.com/tkhq/sdk/tree/main/examples/with-viem/) for examples. + - See [with-viem](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-viem/) for examples. ### Patch Changes diff --git a/features/authentication/auth-proxy.mdx b/features/authentication/auth-proxy.mdx index c2ae34d0..7d1f9392 100644 --- a/features/authentication/auth-proxy.mdx +++ b/features/authentication/auth-proxy.mdx @@ -45,7 +45,7 @@ Used to authenticate users with a one-time code sent to their email or phone num 1. **[Init OTP](/api-reference/auth-proxy/otp-init)** `POST /v1/otp_init_v2` — Send an OTP code to the user's email or phone. Returns an `otpId` and an `otpEncryptionTargetBundle`. - > `otpEncryptionTargetBundle` is a TEE-signed bundle containing a target P-256 encryption key. The client uses it to encrypt the OTP code before submission, so the code is only decryptable inside the enclave. If you're using `react-wallet-kit` this is handled automatically — see the [otp-auth/without-backend](https://github.com/tkhq/sdk/tree/main/examples/otp-auth/without-backend) example. + > `otpEncryptionTargetBundle` is a TEE-signed bundle containing a target P-256 encryption key. The client uses it to encrypt the OTP code before submission, so the code is only decryptable inside the enclave. If you're using `react-wallet-kit` this is handled automatically — see the [otp-auth/without-backend](https://github.com/tkhq/sdk/tree/main/examples/authentication/otp-auth/without-backend) example. 2. **[Verify OTP](/api-reference/auth-proxy/otp-verify)** `POST /v1/otp_verify_v2` — Submit the OTP code along with the `otpId`. Returns a `verificationToken` — a short-lived, enclave-signed token proving the user owns the contact. diff --git a/features/authentication/bring-your-own-auth.mdx b/features/authentication/bring-your-own-auth.mdx index 79c5b972..d64ea222 100644 --- a/features/authentication/bring-your-own-auth.mdx +++ b/features/authentication/bring-your-own-auth.mdx @@ -131,7 +131,7 @@ export async function login({ idToken, publicKey, suborgId }) { Turnkey's enclave verifies the token signature against your JWKS and checks the nonce matches `sha256(publicKey)`. The resulting session JWT is scoped to that public key — only the device holding the private key can use it to sign. -If you are using `@turnkey/react-wallet-kit`, see [Advanced backend authentication](/solutions/embedded-wallets/integration-guide/react/advanced-backend-authentication) for how to wire this up on the frontend. For a working implementation of this flow, see the [oauth example](https://github.com/tkhq/sdk/tree/main/examples/oauth) in the SDK — it uses Google as the provider, but the client/backend split and nonce binding pattern are identical for any OIDC issuer. +If you are using `@turnkey/react-wallet-kit`, see [Advanced backend authentication](/solutions/embedded-wallets/integration-guide/react/advanced-backend-authentication) for how to wire this up on the frontend. For a working implementation of this flow, see the [oauth example](https://github.com/tkhq/sdk/tree/main/examples/authentication/oauth) in the SDK — it uses Google as the provider, but the client/backend split and nonce binding pattern are identical for any OIDC issuer. ## Adding an OIDC provider to an existing user diff --git a/features/authentication/email.mdx b/features/authentication/email.mdx index 4b80ec29..73db5465 100644 --- a/features/authentication/email.mdx +++ b/features/authentication/email.mdx @@ -49,7 +49,7 @@ The authentication process happens in two steps: The API key credential is encrypted and delivered directly through email to the user. Once the credential is live on the client side (within the context of an iframe), it is readily available to stamp (authenticate) requests. See the [enclave to end-user secure channel](/security/enclave-secure-channels) for more info on how we achieve secure delivery. This flow remains available for existing legacy integrations but is not recommended for new implementations. -As an alternative, we recommend using the email OTP flow, which is fully supported by the current SDKs. An example that sends a magic link using [magicLinkTemplate](https://docs.turnkey.com/authentication/email#email-auth-and-recovery:~:text=height%20of%20124px-,magicLinkTemplate,-%3A%20a%20template%20for) can be found [here](https://github.com/tkhq/sdk/tree/main/examples/magic-link-auth). +As an alternative, we recommend using the email OTP flow, which is fully supported by the current SDKs. An example that sends a magic link using [magicLinkTemplate](https://docs.turnkey.com/authentication/email#email-auth-and-recovery:~:text=height%20of%20124px-,magicLinkTemplate,-%3A%20a%20template%20for) can be found [here](https://github.com/tkhq/sdk/tree/main/examples/authentication/magic-link-auth). ### Email recovery @@ -335,8 +335,8 @@ Specifically: ### Example implementations -- [OTP Auth Example](https://github.com/tkhq/sdk/tree/main/examples/otp-auth) -- [Email Auth Example](https://github.com/tkhq/sdk/tree/main/examples/email-auth) +- [OTP Auth Example](https://github.com/tkhq/sdk/tree/main/examples/authentication/otp-auth) +- [Email Auth Example](https://github.com/tkhq/sdk/tree/main/examples/authentication/email-auth) - [Demo Embedded Wallet](https://wallet.tx.xyz) ([code](https://github.com/tkhq/demo-embedded-wallet)) ## Implementation in organizations diff --git a/features/authentication/passkeys/integration.mdx b/features/authentication/passkeys/integration.mdx index 39978ad2..eeef1194 100644 --- a/features/authentication/passkeys/integration.mdx +++ b/features/authentication/passkeys/integration.mdx @@ -25,7 +25,7 @@ This flow happens once for **registration** and for each subsequent **authentica Our SDK has integrated passkey functionality, and we've built examples to help you get started. -* [`@turnkey/http`](https://www.npmjs.com/package/@turnkey/http) has a helper to trigger passkey registration (`getWebAuthnAttestation`). You can see it in action in our [`with-federated-passkeys`](https://github.com/tkhq/sdk/tree/main/examples/with-federated-passkeys) example: [direct code link](https://github.com/tkhq/sdk/blob/a2bfbf3cbd6040902bbe4c247900ac560be42925/examples/with-federated-passkeys/src/pages/index.tsx#L88) +* [`@turnkey/http`](https://www.npmjs.com/package/@turnkey/http) has a helper to trigger passkey registration (`getWebAuthnAttestation`). You can see it in action in our [`with-federated-passkeys`](https://github.com/tkhq/sdk/tree/main/examples/authentication/with-federated-passkeys) example: [direct code link](https://github.com/tkhq/sdk/blob/a2bfbf3cbd6040902bbe4c247900ac560be42925/examples/authentication/with-federated-passkeys/src/pages/index.tsx#L88) * [`@turnkey/webauthn-stamper`](https://www.npmjs.com/package/@turnkey/webauthn-stamper) is a passkey-compatible stamper which integrates seamlessly with `TurnkeyClient`: diff --git a/features/authentication/proxying-signed-requests.mdx b/features/authentication/proxying-signed-requests.mdx index 5dc4f12f..182a88b0 100644 --- a/features/authentication/proxying-signed-requests.mdx +++ b/features/authentication/proxying-signed-requests.mdx @@ -10,5 +10,5 @@ How should you decide what to do? Here are some considerations: * POSTing signed requests directly from your app frontend to Turnkey saves you the burden of running a proxy server, and takes you out of the loop so that your end-users interact directly with Turnkey. This is a "hands-off" approach that can work well if you want to give your end-users maximum flexibility and ownership over their sub-organization. - For a working end-to-end implementation, see the [with-proxy-signed-requests example](https://github.com/tkhq/sdk/tree/main/examples/with-proxy-signed-requests). + For a working end-to-end implementation, see the [with-proxy-signed-requests example](https://github.com/tkhq/sdk/tree/main/examples/advanced/with-proxy-signed-requests). diff --git a/features/authentication/sessions.mdx b/features/authentication/sessions.mdx index 2f99afa5..cf97ae86 100644 --- a/features/authentication/sessions.mdx +++ b/features/authentication/sessions.mdx @@ -64,8 +64,8 @@ Turnkey’s SDK provides helpers to: This is currently the **most persistent** session model for modern browsers that support WebCrypto. It is especially valuable in Progressive Web App (PWA) contexts or when iframe and Local Storage approaches are insufficient. -To see the IndexedDB-backed session mechanism in action, check out our Turnkey react-wallet-kit [playground](https://github.com/tkhq/sdk/tree/main/examples/with-sdk-js) or dedicated authentication examples like [oauth](https://github.com/tkhq/sdk/tree/main/examples/oauth), [email OTP](https://github.com/tkhq/sdk/tree/main/examples/otp-auth), and [external wallet authentication](https://github.com/tkhq/sdk/tree/main/examples/wallet-auth). -Our [Web demo application](https://github.com/tkhq/sdk/tree/main/examples/react-wallet-kit) hosted at [wallets.turnkey.com](https://wallets.turnkey.com) showcases complete end-to-end authentication flows and client-side session persistence backed by IndexedDB. +To see the IndexedDB-backed session mechanism in action, check out our Turnkey react-wallet-kit [playground](https://github.com/tkhq/sdk/tree/main/examples/demos/with-sdk-js) or dedicated authentication examples like [oauth](https://github.com/tkhq/sdk/tree/main/examples/authentication/oauth), [email OTP](https://github.com/tkhq/sdk/tree/main/examples/authentication/otp-auth), and [external wallet authentication](https://github.com/tkhq/sdk/tree/main/examples/authentication/wallet-auth). +Our [Web demo application](https://github.com/tkhq/sdk/tree/main/examples/demos/react-wallet-kit) hosted at [wallets.turnkey.com](https://wallets.turnkey.com) showcases complete end-to-end authentication flows and client-side session persistence backed by IndexedDB. #### SecureStorage (mobile only) diff --git a/features/authentication/social-logins.mdx b/features/authentication/social-logins.mdx index 7b1cd4a6..c82b1dbe 100644 --- a/features/authentication/social-logins.mdx +++ b/features/authentication/social-logins.mdx @@ -3,7 +3,7 @@ title: "Social logins" description: "Social logins provide a familiar and convenient way for users to access applications using their existing accounts from popular platforms like Google, Apple, Facebook, X/Twitter, etc. Under the hood, this functionality is powered by OAuth - a robust auth protocol which enables secure user verification through OpenID Connect ([OIDC](https://openid.net/specs/openid-connect-core-1_0.html)) tokens. This feature is available exclusively for sub-organization users." --- -Similar to [email auth](/features/authentication/email), social login authentication is ideal for users who prefer not to manage API keys or [passkeys](/features/authentication/passkeys/introduction) directly. This makes it particularly well-suited for onboarding users who are comfortable with traditional web2-style accounts but may be unfamiliar with cryptographic keys and credentials. An example implementing social login authentication for an organization can be found in our SDK repo [here](https://github.com/tkhq/sdk/tree/main/examples/oauth). +Similar to [email auth](/features/authentication/email), social login authentication is ideal for users who prefer not to manage API keys or [passkeys](/features/authentication/passkeys/introduction) directly. This makes it particularly well-suited for onboarding users who are comfortable with traditional web2-style accounts but may be unfamiliar with cryptographic keys and credentials. An example implementing social login authentication for an organization can be found in our SDK repo [here](https://github.com/tkhq/sdk/tree/main/examples/authentication/oauth). ## Types of social login providers @@ -376,7 +376,7 @@ Once uploaded, you can then use the **Credential Id** from the table shown to m ![Facebook OAuth flow](/images/authentication/img/social-logins-table.png) -You can also see the example [here](https://github.com/tkhq/sdk/blob/main/examples/with-x/credential-upload.tsx) demonstrating how to encrypt and upload your client secrets using our SDK instead. +You can also see the example [here](https://github.com/tkhq/sdk/blob/main/examples/authentication/with-x/credential-upload.tsx) demonstrating how to encrypt and upload your client secrets using our SDK instead. ### Returning the encrypted bearer token @@ -384,4 +384,4 @@ When using OAuth 2.0-Only Social Providers, it is also possible to have the bear In order to guarantee the secure transfer of the bearer token, it must be encrypted to a P256 Encryption Key inside our secure enclave, returned to the caller, and then finally decrypted. Therefore, the return of the encrypted bearer token is dependent on the caller providing an optional `bearerTokenTargetPublicKey` parameter in the request to `OAuth2Authenticate`. -An example demonstrating this flow can be seen [here](https://github.com/tkhq/sdk/blob/main/examples/with-x/src/app/auth/turnkey/x/route.ts). \ No newline at end of file +An example demonstrating this flow can be seen [here](https://github.com/tkhq/sdk/blob/main/examples/authentication/with-x/src/app/auth/turnkey/x/route.ts). \ No newline at end of file diff --git a/features/networks/aptos.mdx b/features/networks/aptos.mdx index bd649d13..a15f3f3c 100644 --- a/features/networks/aptos.mdx +++ b/features/networks/aptos.mdx @@ -11,7 +11,7 @@ Turnkey supports Aptos address derivation with `ADDRESS_TYPE_APTOS`. Aptos addre Turnkey supports Aptos transaction signing through our core signing capabilities. We have an example repository that demonstrates how to construct and sign Aptos transactions: -- [`examples/with-aptos`](https://github.com/tkhq/sdk/tree/main/examples/with-aptos): demonstrates transaction construction and broadcast on Aptos. +- [`examples/chain-integrations/with-aptos`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-aptos): demonstrates transaction construction and broadcast on Aptos. ## Example diff --git a/features/networks/bitcoin.mdx b/features/networks/bitcoin.mdx index 4a926d91..895a5197 100644 --- a/features/networks/bitcoin.mdx +++ b/features/networks/bitcoin.mdx @@ -103,6 +103,6 @@ Context on signing, and sighash conventions for Taproot can be found on Learn Me ## SDK example -If you want to get started with Bitcoin we encourage you to look at the following SDK example: [`examples/with-bitcoin`](https://github.com/tkhq/sdk/tree/main/examples/with-bitcoin). It showcases transaction construction and signing with [`bitcoinjs-lib`](https://github.com/bitcoinjs/bitcoinjs-lib), a widely used JS library. +If you want to get started with Bitcoin we encourage you to look at the following SDK example: [`examples/chain-integrations/with-bitcoin`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-bitcoin). It showcases transaction construction and signing with [`bitcoinjs-lib`](https://github.com/bitcoinjs/bitcoinjs-lib), a widely used JS library. -This demo contains a client-side [signer](https://github.com/tkhq/sdk/blob/main/examples/with-bitcoin/src/signer.ts) which seamlessly integrates Turnkey signing with this library for both taproot and non-taproot output signatures. Let us know if you're interested in using it. We have not yet published it as a standalone NPM package, but could do it if we hear enough interest! +This demo contains a client-side [signer](https://github.com/tkhq/sdk/blob/main/examples/chain-integrations/with-bitcoin/src/signer.ts) which seamlessly integrates Turnkey signing with this library for both taproot and non-taproot output signatures. Let us know if you're interested in using it. We have not yet published it as a standalone NPM package, but could do it if we hear enough interest! diff --git a/features/networks/cosmos.mdx b/features/networks/cosmos.mdx index 7d2ce76f..e4d5ff3d 100644 --- a/features/networks/cosmos.mdx +++ b/features/networks/cosmos.mdx @@ -15,7 +15,7 @@ To construct and sign Cosmos transactions with Turnkey, we offer: See it in action in our example: -- [`examples/with-cosmjs`](https://github.com/tkhq/sdk/tree/main/examples/with-cosmjs): demonstrates transaction construction and broadcast on Cosmos. +- [`examples/chain-integrations/with-cosmjs`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-cosmjs): demonstrates transaction construction and broadcast on Cosmos. ## Example diff --git a/features/networks/doge.mdx b/features/networks/doge.mdx index 3b5734c4..9b32d628 100644 --- a/features/networks/doge.mdx +++ b/features/networks/doge.mdx @@ -9,7 +9,7 @@ Turnkey supports Doge address derivation with `ADDRESS_FORMAT_DOGE_MAINNET` and ## Transaction construction and signing Turnkey supports Doge transaction signing through the core signing capabilities. -Check out the [examples/with-doge](https://github.com/tkhq/sdk/tree/main/examples/with-doge) respository that demonstrates how to construct, sign and broadcast a Doge P2PKH transaction on Testnet. +Check out the [examples/chain-integrations/with-doge](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-doge) respository that demonstrates how to construct, sign and broadcast a Doge P2PKH transaction on Testnet. ### Key features diff --git a/features/networks/ethereum.mdx b/features/networks/ethereum.mdx index cba803ef..0432806d 100644 --- a/features/networks/ethereum.mdx +++ b/features/networks/ethereum.mdx @@ -71,7 +71,7 @@ Turnkey supports the following transaction types: `legacy, EIP-2930 (Type 1), EI You can use Turnkey’s `SignTransaction` endpoint to parse and sign Type 3 transactions, which conform to the [EIP-4844 standard](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-4844.md). -We’ve also added Type 3 support to our policy engine by including the parameter `max_fee_per_blob_gas`. More details about our policy engine language can be found [here](https://docs.turnkey.com/concepts/policies/language#struct), and an example demonstrating how to use `@turnkey/viem` to sign Type 3 transactions can be found [here](https://github.com/tkhq/sdk/blob/main/examples/with-viem/src/eip4844/signTransaction.ts). +We’ve also added Type 3 support to our policy engine by including the parameter `max_fee_per_blob_gas`. More details about our policy engine language can be found [here](https://docs.turnkey.com/concepts/policies/language#struct), and an example demonstrating how to use `@turnkey/viem` to sign Type 3 transactions can be found [here](https://github.com/tkhq/sdk/blob/main/examples/chain-integrations/with-viem/src/eip4844/signTransaction.ts). Note: for Type 3 transactions, we are specifically handling parsing for payloads containing only the transaction payload body, without any wrappers around blobs, commitments, or proofs. @@ -104,7 +104,7 @@ You can take advantage of Type 4 transaction support on Turnkey to: For a turnkey solution to gasless transactions using EIP-7702, check out the [Gas Station SDK](/sdks/web3/gas-station), which provides clean abstractions for authorization, intent signing, and paymaster execution. -Type 4 transaction support is also live for our policy engine. Details about our engine language can be found [here](https://docs.turnkey.com/concepts/policies/language#struct), and an example demonstrating how to use @turnkey/viem to sign Type 4 transactions can be found [here](https://github.com/tkhq/sdk/blob/main/examples/with-viem/src/eip7702/signTransaction.ts). +Type 4 transaction support is also live for our policy engine. Details about our engine language can be found [here](https://docs.turnkey.com/concepts/policies/language#struct), and an example demonstrating how to use @turnkey/viem to sign Type 4 transactions can be found [here](https://github.com/tkhq/sdk/blob/main/examples/chain-integrations/with-viem/src/eip7702/signTransaction.ts). ### EIP-712 @@ -219,13 +219,13 @@ This is ultimately how our Viem and Ethers implementations pass Typed Data over SDK examples demonstrating the signing side of the above-mentioned integrations can be found below: - Using `ethers`: - - [hyperliquid](https://github.com/tkhq/sdk/tree/main/examples/with-ethers/src/eip712/hyperliquid.ts) - - [erc-2612](https://github.com/tkhq/sdk/tree/main/examples/with-ethers/src/eip712/erc2612_permit.ts) - - [erc-3009](https://github.com/tkhq/sdk/tree/main/examples/with-ethers/src/eip712/erc3009_transfer.ts) + - [hyperliquid](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-ethers/src/eip712/hyperliquid.ts) + - [erc-2612](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-ethers/src/eip712/erc2612_permit.ts) + - [erc-3009](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-ethers/src/eip712/erc3009_transfer.ts) - Using `viem`: - - [hyperliquid](https://github.com/tkhq/sdk/tree/main/examples/with-viem/src/eip712/hyperliquid.ts) - - [erc-2612](https://github.com/tkhq/sdk/tree/main/examples/with-viem/src/eip712/erc2612_permit.ts) - - [erc-3009](https://github.com/tkhq/sdk/tree/main/examples/with-viem/src/eip712/erc3009_transfer.ts) + - [hyperliquid](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-viem/src/eip712/hyperliquid.ts) + - [erc-2612](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-viem/src/eip712/erc2612_permit.ts) + - [erc-3009](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-viem/src/eip712/erc3009_transfer.ts) You can also find examples of EIP-712-aware Policies associated with these integrations on [our policy examples page](https://docs.turnkey.com/concepts/policies/examples/ethereum##allow-signing-of-eip-712-payloads-for-hyperliquid-approveagent-operations). @@ -253,14 +253,14 @@ The code behind this demo is open-source, available at https://github.com/tkhq/d If you're looking for shorter, more focused examples, here are a few worth checking out: -- [with-ethers](https://github.com/tkhq/sdk/tree/main/examples/with-ethers): demonstrates how to use Turnkey with Ethers -- [with-viem](https://github.com/tkhq/sdk/tree/main/examples/with-viem): demonstrates how to use Turnkey with Viem -- [with-zerodev-aa](https://github.com/tkhq/sdk/tree/main/examples/with-zerodev-aa): demonstrates how to use Turnkey with Zerodev \+ Viem to create sponsored transactions, and also EIP-7702 (Type 4) transactions -- [with-biconomy-aa](https://github.com/tkhq/sdk/tree/main/examples/with-biconomy-aa): demonstrates how to use Turnkey with Biconomy \+ Ethers / Viem to create sponsored transactions, including an example using Biconomy's Nexus Client -- [with-eth-passkeys-signer](https://github.com/tkhq/sdk/tree/main/examples/with-eth-passkeys-galore): demonstrates both Ethers and Viem integrations, with an optional Biconomy account abstraction integration. -- [with-gnosis](https://github.com/tkhq/sdk/tree/main/examples/with-gnosis): shows how to use Turnkey with [Gnosis (Safe)](https://safe.global/). -- [with-uniswap](https://github.com/tkhq/sdk/tree/main/examples/with-uniswap): shows how to use Turnkey with Uniswap, using Ethers. -- [with-eip-1193-provider](https://github.com/tkhq/sdk/tree/main/examples/with-eip-1193-provider): short example focused on EIP-1193 provider usage. +- [with-ethers](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-ethers): demonstrates how to use Turnkey with Ethers +- [with-viem](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-viem): demonstrates how to use Turnkey with Viem +- [with-zerodev-aa](https://github.com/tkhq/sdk/tree/main/examples/account-abstraction/with-zerodev-aa): demonstrates how to use Turnkey with Zerodev \+ Viem to create sponsored transactions, and also EIP-7702 (Type 4) transactions +- [with-biconomy-aa](https://github.com/tkhq/sdk/tree/main/examples/account-abstraction/with-biconomy-aa): demonstrates how to use Turnkey with Biconomy \+ Ethers / Viem to create sponsored transactions, including an example using Biconomy's Nexus Client +- [with-eth-passkeys-signer](https://github.com/tkhq/sdk/tree/main/examples/demos/with-eth-passkeys-galore): demonstrates both Ethers and Viem integrations, with an optional Biconomy account abstraction integration. +- [with-gnosis](https://github.com/tkhq/sdk/tree/main/examples/account-abstraction/with-gnosis): shows how to use Turnkey with [Gnosis (Safe)](https://safe.global/). +- [with-uniswap](https://github.com/tkhq/sdk/tree/main/examples/defi/with-uniswap): shows how to use Turnkey with Uniswap, using Ethers. +- [with-eip-1193-provider](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-eip-1193-provider): short example focused on EIP-1193 provider usage. ## Which EVM chains does Turnkey support? diff --git a/features/networks/iota.mdx b/features/networks/iota.mdx index 84797618..4c8cc4b9 100644 --- a/features/networks/iota.mdx +++ b/features/networks/iota.mdx @@ -11,7 +11,7 @@ Turnkey fully supports IOTA addresss derived from the Ed25519 curve. Turnkey supports IOTA transaction signing through the core signing capabilities. We provide an example repository that demonstrates how to construct and sign IOTA transactions: -- [`examples/with-iota`](https://github.com/tkhq/sdk/tree/main/examples/with-iota): demonstrates transaction construction and broadcast on IOTA. +- [`examples/chain-integrations/with-iota`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-iota): demonstrates transaction construction and broadcast on IOTA. ## Example diff --git a/features/networks/movement.mdx b/features/networks/movement.mdx index 08fb6ba5..c57d1fb2 100644 --- a/features/networks/movement.mdx +++ b/features/networks/movement.mdx @@ -11,7 +11,7 @@ Turnkey supports Movement address derivation. Movement is built on the Move VM a Turnkey supports Movement transaction signing through our core signing capabilities. We provide an example repository that demonstrates how to construct and sign Movement transactions: -- [`examples/with-movement`](https://github.com/tkhq/sdk/tree/main/examples/with-movement): demonstrates transaction construction and broadcast on Movement. +- [`examples/chain-integrations/with-movement`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-movement): demonstrates transaction construction and broadcast on Movement. ## Example diff --git a/features/networks/solana.mdx b/features/networks/solana.mdx index d4efd0e2..256dd39d 100644 --- a/features/networks/solana.mdx +++ b/features/networks/solana.mdx @@ -79,6 +79,6 @@ Did you know? Turnkey activities can be signed with an API key, a passkey...or a ## Examples and demos -You can find an example of Solana transaction construction and broadcasting using `@turnkey/with-solana` in [`examples/with-solana`](https://github.com/tkhq/sdk/tree/main/examples/with-solana). +You can find an example of Solana transaction construction and broadcasting using `@turnkey/with-solana` in [`examples/chain-integrations/with-solana`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-solana). -If you want to see [`@turnkey/wallet-stamper`](https://www.npmjs.com/package/@turnkey/wallet-stamper) in action, head to [`examples/with-wallet-stamper`](https://github.com/tkhq/sdk/tree/main/examples/with-wallet-stamper). +If you want to see [`@turnkey/wallet-stamper`](https://www.npmjs.com/package/@turnkey/wallet-stamper) in action, head to [`examples/authentication/with-wallet-stamper`](https://github.com/tkhq/sdk/tree/main/examples/authentication/with-wallet-stamper). diff --git a/features/networks/spark.mdx b/features/networks/spark.mdx index 8eb5cfd2..ea8e468b 100644 --- a/features/networks/spark.mdx +++ b/features/networks/spark.mdx @@ -65,7 +65,7 @@ When creating a wallet account via the Turnkey dashboard or API, select `ADDRESS ### Signing configurations -When you call [`SIGN_RAW_PAYLOAD`](/api-reference/activities/sign-raw-payload) with a Spark identity address as `signWith`, as in the case of signing Spark token transactions (example [here](https://github.com/tkhq/sdk/tree/main/examples/with-spark)), Turnkey produces a **plain BIP-340 Schnorr** signature — without the Taproot key tweak that Bitcoin P2TR addresses require (see [Bitcoin Schnorr signatures and tweaks](/features/networks/bitcoin#schnorr-signatures-and-tweaks) for the contrast). Generally, Turnkey will pick the scheme from the address format passed as `signWith`: +When you call [`SIGN_RAW_PAYLOAD`](/api-reference/activities/sign-raw-payload) with a Spark identity address as `signWith`, as in the case of signing Spark token transactions (example [here](https://github.com/tkhq/sdk/tree/main/examples/defi/with-spark)), Turnkey produces a **plain BIP-340 Schnorr** signature — without the Taproot key tweak that Bitcoin P2TR addresses require (see [Bitcoin Schnorr signatures and tweaks](/features/networks/bitcoin#schnorr-signatures-and-tweaks) for the contrast). Generally, Turnkey will pick the scheme from the address format passed as `signWith`: | `signWith` address | Signing scheme | | --------------------- | ------------------------- | @@ -158,7 +158,7 @@ Every Spark flow involves direct calls from the client to the Spark Operators (f ## SDK example -The canonical reference for integrating Turnkey with Spark is [`examples/with-spark`](https://github.com/tkhq/sdk/tree/main/examples/with-spark) in the Turnkey SDK monorepo. It contains: +The canonical reference for integrating Turnkey with Spark is [`examples/defi/with-spark`](https://github.com/tkhq/sdk/tree/main/examples/defi/with-spark) in the Turnkey SDK monorepo. It contains: - A Turnkey-backed Spark signer (`TurnkeySparkSigner`) that plugs into the Spark SDK. - Token-operation scripts (create, mint, transfer) using the issuer SDK. diff --git a/features/networks/stacks.mdx b/features/networks/stacks.mdx index af65159e..cea6bec4 100644 --- a/features/networks/stacks.mdx +++ b/features/networks/stacks.mdx @@ -10,7 +10,7 @@ Turnkey supports Stacks address derivation with `ADDRESS_FORMAT_COMPRESSED` and Turnkey supports Stacks transaction signing through the core signing capabilities. We have an example respository that demonstrates how to construct and sign Stacks transactions: -> [examples/with-stacks:](https://github.com/tkhq/sdk/tree/main/examples/with-stacks) A sample script that demonstrates how to sign a [Stacks](https://docs.hiro.so/stacks/stacks.js) transaction with Turnkey. Stacks uses the secp256k1 cryptographic curve for transaction signing, but there some specific data formatting that takes place for the [signing process](https://github.com/stacksgov/sips/blob/main/sips/sip-005/sip-005-blocks-and-transactions.md#transaction-signing-and-verifying). +> [examples/chain-integrations/with-stacks:](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-stacks) A sample script that demonstrates how to sign a [Stacks](https://docs.hiro.so/stacks/stacks.js) transaction with Turnkey. Stacks uses the secp256k1 cryptographic curve for transaction signing, but there some specific data formatting that takes place for the [signing process](https://github.com/stacksgov/sips/blob/main/sips/sip-005/sip-005-blocks-and-transactions.md#transaction-signing-and-verifying). ## Key features for Stacks diff --git a/features/networks/sui.mdx b/features/networks/sui.mdx index 6e5651f0..bd1e79fa 100644 --- a/features/networks/sui.mdx +++ b/features/networks/sui.mdx @@ -11,7 +11,7 @@ Turnkey supports Sui address derivation with `ADDRESS_TYPE_SUI`. Sui addresses a Turnkey supports Sui transaction signing through the core signing capabilities. We provide an example repository that demonstrates how to construct and sign Sui transactions: -- [`examples/with-sui`](https://github.com/tkhq/sdk/tree/main/examples/with-sui): demonstrates transaction construction and broadcast on Sui. +- [`examples/chain-integrations/with-sui`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-sui): demonstrates transaction construction and broadcast on Sui. ## Example diff --git a/features/networks/tempo.mdx b/features/networks/tempo.mdx index ee4115cc..47a2555a 100644 --- a/features/networks/tempo.mdx +++ b/features/networks/tempo.mdx @@ -20,9 +20,9 @@ Tempo transactions natively support batched calls — multiple calls can be sent ## Examples We have an example repository that demonstrates how to construct and sign Tempo transactions: -- [`examples/with-tempo`](https://github.com/tkhq/sdk/tree/main/examples/with-tempo): demonstrates single and batched (multicall) transaction construction and broadcast on Tempo, including fee sponsorship. +- [`examples/chain-integrations/with-tempo`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-tempo): demonstrates single and batched (multicall) transaction construction and broadcast on Tempo, including fee sponsorship. -Legacy Ethereum transactions on Tempo can be utilized on Turnkey with [viem](https://github.com/tkhq/sdk/tree/main/examples/with-viem) and [ethers](https://github.com/tkhq/sdk/tree/main/examples/with-ethers). +Legacy Ethereum transactions on Tempo can be utilized on Turnkey with [viem](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-viem) and [ethers](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-ethers). ## Tempo network support diff --git a/features/policies/delegated-access/agentic-wallets.mdx b/features/policies/delegated-access/agentic-wallets.mdx index 31616157..ac4f1cfa 100644 --- a/features/policies/delegated-access/agentic-wallets.mdx +++ b/features/policies/delegated-access/agentic-wallets.mdx @@ -51,7 +51,7 @@ The diagram below shows how an AI agent gets scoped access through [Delegated Ac ## Quick start - For a working end-to-end implementation, see the [with-agent-wallet example](https://github.com/tkhq/sdk/tree/main/examples/with-agent-wallet) — it covers wallet creation, agent user setup, policy creation, and a human approval flow. + For a working end-to-end implementation, see the [with-agent-wallet example](https://github.com/tkhq/sdk/tree/main/examples/access-control/with-agent-wallet) — it covers wallet creation, agent user setup, policy creation, and a human approval flow. ### 1. create the wallet diff --git a/features/policies/delegated-access/backend.mdx b/features/policies/delegated-access/backend.mdx index 719c9be4..044b1669 100644 --- a/features/policies/delegated-access/backend.mdx +++ b/features/policies/delegated-access/backend.mdx @@ -9,7 +9,7 @@ You’ll create a **sub-organization** where the **end-user** has full control ( This ensures your backend can perform limited, policy-controlled actions on behalf of the user without ever holding their root privileges. The entire setup is initiated by your backend — no end-user interaction is required. -A simple example demonstrating the server-side delegated access setup can be found [here](https://github.com/tkhq/sdk/tree/main/examples/with-delegated/server-side). +A simple example demonstrating the server-side delegated access setup can be found [here](https://github.com/tkhq/sdk/tree/main/examples/access-control/with-delegated/server-side). ## Step-by-step implementation @@ -138,7 +138,7 @@ dotenv.config(); }).apiClient(); - // To create an API key programmatically check https://github.com/tkhq/sdk/blob/main/examples/kitchen-sink/src/sdk-server/createApiKey.ts + // To create an API key programmatically check https://github.com/tkhq/sdk/blob/main/examples/demos/kitchen-sink/src/sdk-server/createApiKey.ts const publicKey = ""; const curveType = "API_KEY_CURVE_P256"; // this is the default const apiKeys = [ diff --git a/features/policies/delegated-access/frontend.mdx b/features/policies/delegated-access/frontend.mdx index ccd6d1a0..adb555d5 100644 --- a/features/policies/delegated-access/frontend.mdx +++ b/features/policies/delegated-access/frontend.mdx @@ -9,7 +9,7 @@ You’ll create a **sub-organization** where the **end-user** has full control ( This ensures your backend can perform limited, policy-controlled actions on behalf of the user without ever holding their root privileges. The entire setup is initiated and approved by the end-user through their authenticated session, ensuring all actions occur under their explicit control within their sub-organization. -A working example of client-side delegated access and policy validation can be found [here](https://github.com/tkhq/sdk/tree/main/examples/with-delegated/client-side). +A working example of client-side delegated access and policy validation can be found [here](https://github.com/tkhq/sdk/tree/main/examples/access-control/with-delegated/client-side). ## Step-by-step implementation diff --git a/features/policies/examples/co-signing-transactions.mdx b/features/policies/examples/co-signing-transactions.mdx index 484433ec..ceca8ed0 100644 --- a/features/policies/examples/co-signing-transactions.mdx +++ b/features/policies/examples/co-signing-transactions.mdx @@ -9,7 +9,7 @@ sidebarTitle: "Multi-sig approvals" Co-signing, often referred to as multi-signature (multi-sig), provides an enhanced layer of security for blockchain transactions. It requires approvals from multiple parties before a transaction can be executed. This guide details how to implement a 2/2 co-signing setup using Turnkey, where both the end-user and your application backend (via API key) must approve transactions. - See the [with-cosigning example](https://github.com/tkhq/sdk/tree/main/examples/with-cosigning) for a full working implementation using Next.js, OTP login, SSE webhooks, and a 2-of-2 root quorum. + See the [with-cosigning example](https://github.com/tkhq/sdk/tree/main/examples/access-control/with-cosigning) for a full working implementation using Next.js, OTP login, SSE webhooks, and a 2-of-2 root quorum. ## Co-signing architecture @@ -249,7 +249,7 @@ sequenceDiagram - The quorum is symmetric — the backend can also initiate signing (vote 1) and the user approves (vote 2). See the [with-cosigning example](https://github.com/tkhq/sdk/tree/main/examples/with-cosigning) for a full walkthrough of both flows. + The quorum is symmetric — the backend can also initiate signing (vote 1) and the user approves (vote 2). See the [with-cosigning example](https://github.com/tkhq/sdk/tree/main/examples/access-control/with-cosigning) for a full walkthrough of both flows. #### Security considerations and best practices diff --git a/features/policies/examples/solana.mdx b/features/policies/examples/solana.mdx index a6086eec..bc58b281 100644 --- a/features/policies/examples/solana.mdx +++ b/features/policies/examples/solana.mdx @@ -121,7 +121,7 @@ For further context on associated token addresses check out Solana’s documenta An example implementation of using a policy to allow transfers to the associated token address of the intended recipient wallet address can be found in our SDK examples - [here](https://github.com/tkhq/sdk/tree/main/examples/with-solana#6-running-the-create-spl-token-transfer-with-policy-example). + [here](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-solana#6-running-the-create-spl-token-transfer-with-policy-example). **Mint Address Accessibility** The mint account address of the token will only be accessible when the transaction is constructed using instructions that specify the mint address – `TransferChecked` and `TransferCheckedWithFee`. For transactions constructed using the simple `Transfer` method, the mint account will be considered empty. diff --git a/features/transaction-management/sending-sponsored-transactions.mdx b/features/transaction-management/sending-sponsored-transactions.mdx index f1901f95..1a44485c 100644 --- a/features/transaction-management/sending-sponsored-transactions.mdx +++ b/features/transaction-management/sending-sponsored-transactions.mdx @@ -16,10 +16,10 @@ This page walks you through the React flow with full code examples. For using `@ -For additional references leveraging these endpoints, check out our [Swapping Example](https://github.com/tkhq/sdk/tree/main/examples/eth-usdc-swap) and [Sweeping Example](https://github.com/tkhq/sdk/tree/main/examples/sweeper) +For additional references leveraging these endpoints, check out our [Swapping Example](https://github.com/tkhq/sdk/tree/main/examples/defi/eth-usdc-swap) and [Sweeping Example](https://github.com/tkhq/sdk/tree/main/examples/transaction-management/sweeper) ## EVM paymaster example You may also leverage our own example for setting up EVM paymaster leveraging the above endpoints. This example shows how to send an erc-20 token on EVM networks using Turnkey's paymaster (gas sponsorship). -Please refer to [with-paymaster](https://github.com/tkhq/sdk/tree/main/examples/with-paymaster) to see how to setup and manage paymaster for your transaction operations. +Please refer to [with-paymaster](https://github.com/tkhq/sdk/tree/main/examples/transaction-management/with-paymaster) to see how to setup and manage paymaster for your transaction operations. diff --git a/get-started/examples.mdx b/get-started/examples.mdx index 37c5aef6..b6595130 100644 --- a/get-started/examples.mdx +++ b/get-started/examples.mdx @@ -15,10 +15,10 @@ Full end-to-end applications to see everything working together. | Example | Description | | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [`react-wallet-kit`](https://github.com/tkhq/sdk/tree/main/examples/react-wallet-kit) | Comprehensive demo of embedded wallet kit with auth, wallet management, signing, import/export | +| [`react-wallet-kit`](https://github.com/tkhq/sdk/tree/main/examples/demos/react-wallet-kit) | Comprehensive demo of embedded wallet kit with auth, wallet management, signing, import/export | | [`demo-embedded-wallet`](https://github.com/tkhq/demo-embedded-wallet) | A minimal consumer wallet app powered by Turnkey and passkeys, with transaction sending | | [`demo-consumer-wallet`](https://github.com/tkhq/demo-consumer-wallet) | A minimal consumer wallet app powered by Turnkey and WalletConnect | -| [`with-react-native-wallet-kit`](https://github.com/tkhq/sdk/tree/main/examples/with-react-native-wallet-kit) | A React Native app demonstrating how to use `@turnkey/react-native-wallet-kit` to authenticate users, create wallets, export wallets, sign messages, and more | +| [`with-react-native-wallet-kit`](https://github.com/tkhq/sdk/tree/main/examples/demos/with-react-native-wallet-kit) | A React Native app demonstrating how to use `@turnkey/react-native-wallet-kit` to authenticate users, create wallets, export wallets, sign messages, and more | | [`flutter-demo-app`](https://github.com/tkhq/dart-sdk/tree/main/examples/flutter-demo-app) | A Flutter app that demonstrates how to use the Turnkey's Flutter packages to authenticate users, create wallets, export wallets, sign messages, and more | | [`swift-sdk/Examples`](https://github.com/tkhq/swift-sdk/tree/main/Examples) | Native iOS wallet app with OTP, OAuth, and passkey auth, wallet creation, message signing, and transaction sending | @@ -26,23 +26,23 @@ Full end-to-end applications to see everything working together. | Example | Description | | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| [`oauth`](https://github.com/tkhq/sdk/tree/main/examples/oauth) | OAuth login (Google) integration with Turnkey via backend server actions | -| [`otp-auth`](https://github.com/tkhq/sdk/tree/main/examples/otp-auth) | Email OTP authentication with Auth Proxy and a custom backend | -| [`magic-link-auth`](https://github.com/tkhq/sdk/tree/main/examples/magic-link-auth) | Magic link login/signup flow using Turnkey's email OTP system | -| [`wallet-auth`](https://github.com/tkhq/sdk/tree/main/examples/wallet-auth) | External wallet authentication (MetaMask, Phantom, etc.) with Auth Proxy and custom backend | -| [`with-wallet-stamper`](https://github.com/tkhq/sdk/tree/main/examples/with-wallet-stamper) | Demonstrates `@turnkey/wallet-stamper` for signing Turnkey requests with an external wallet | +| [`oauth`](https://github.com/tkhq/sdk/tree/main/examples/authentication/oauth) | OAuth login (Google) integration with Turnkey via backend server actions | +| [`otp-auth`](https://github.com/tkhq/sdk/tree/main/examples/authentication/otp-auth) | Email OTP authentication with Auth Proxy and a custom backend | +| [`magic-link-auth`](https://github.com/tkhq/sdk/tree/main/examples/authentication/magic-link-auth) | Magic link login/signup flow using Turnkey's email OTP system | +| [`wallet-auth`](https://github.com/tkhq/sdk/tree/main/examples/authentication/wallet-auth) | External wallet authentication (MetaMask, Phantom, etc.) with Auth Proxy and custom backend | +| [`with-wallet-stamper`](https://github.com/tkhq/sdk/tree/main/examples/authentication/with-wallet-stamper) | Demonstrates `@turnkey/wallet-stamper` for signing Turnkey requests with an external wallet | ## Key & Wallet Management | Example | Description | | ----------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | -| [`import-export-with-rwk`](https://github.com/tkhq/sdk/tree/main/examples/import-export-with-rwk) | Wallet import and export using React Wallet Kit and Auth Proxy | -| [`import-export-with-iframe-stamper`](https://github.com/tkhq/sdk/tree/main/examples/import-export-with-iframe-stamper) | Wallet import/export via `@turnkey/iframe-stamper` | -| [`wallet-export-sign`](https://github.com/tkhq/sdk/tree/main/examples/wallet-export-sign) | Wallet export and signing operations via Turnkey iframe | -| [`export-in-node`](https://github.com/tkhq/sdk/tree/main/examples/export-in-node) | Wallet export performed on the backend | -| [`import-in-node`](https://github.com/tkhq/sdk/tree/main/examples/import-in-node) | Wallet import performed on the backend | -| [`disaster-recovery`](https://github.com/tkhq/sdk/tree/main/examples/disaster-recovery) | Wallet disaster recovery with direct import or encryption key escrow | -| [`encryption-key-escrow`](https://github.com/tkhq/sdk/tree/main/examples/encryption-key-escrow) | Use Turnkey to store encryption keys for external recovery bundles | +| [`import-export-with-rwk`](https://github.com/tkhq/sdk/tree/main/examples/key-management/import-export-with-rwk) | Wallet import and export using React Wallet Kit and Auth Proxy | +| [`import-export-with-iframe-stamper`](https://github.com/tkhq/sdk/tree/main/examples/key-management/import-export-with-iframe-stamper) | Wallet import/export via `@turnkey/iframe-stamper` | +| [`wallet-export-sign`](https://github.com/tkhq/sdk/tree/main/examples/key-management/wallet-export-sign) | Wallet export and signing operations via Turnkey iframe | +| [`export-in-node`](https://github.com/tkhq/sdk/tree/main/examples/key-management/export-in-node) | Wallet export performed on the backend | +| [`import-in-node`](https://github.com/tkhq/sdk/tree/main/examples/key-management/import-in-node) | Wallet import performed on the backend | +| [`disaster-recovery`](https://github.com/tkhq/sdk/tree/main/examples/key-management/disaster-recovery) | Wallet disaster recovery with direct import or encryption key escrow | +| [`encryption-key-escrow`](https://github.com/tkhq/sdk/tree/main/examples/key-management/encryption-key-escrow) | Use Turnkey to store encryption keys for external recovery bundles | ## Signing @@ -50,63 +50,63 @@ Signers and chain-specific transaction examples. | Example | Description | | -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [`with-ethers`](https://github.com/tkhq/sdk/tree/main/examples/with-ethers/) | Sign messages, send EIP-1559 and legacy transactions, interact with contracts (WETH), and sign EIP-712 typed data (ERC-2612 permit, ERC-3009, Hyperliquid) using `@turnkey/ethers` | -| [`with-viem`](https://github.com/tkhq/sdk/tree/main/examples/with-viem/) | Sign messages, send transactions, sign EIP-712 typed data, and sign EIP-4844 and EIP-7702 transactions using `@turnkey/viem` | -| [`with-eip-1193-provider`](https://github.com/tkhq/sdk/tree/main/examples/with-eip-1193-provider/) | Turnkey-compatible Ethereum provider adhering to the EIP-1193 standard | -| [`with-nonce-manager`](https://github.com/tkhq/sdk/tree/main/examples/with-nonce-manager/) | Sign and broadcast multiple Ethereum transactions sequentially or optimistically | -| [`with-cosmjs`](https://github.com/tkhq/sdk/tree/main/examples/with-cosmjs/) | Sign and broadcast a Cosmos transaction on Celestia testnet using `@turnkey/cosmjs` | -| [`with-solana`](https://github.com/tkhq/sdk/tree/main/examples/with-solana/) | Sign and broadcast Solana transactions using `@turnkey/solana`, including SPL token creation \+ transfer | -| [`with-bitcoin`](https://github.com/tkhq/sdk/tree/main/examples/with-bitcoin) | Construct, sign, and broadcast a Bitcoin transaction using bitcoinjs-lib | -| [`with-doge`](https://github.com/tkhq/sdk/tree/main/examples/with-doge) | Dogecoin testnet transaction signing using bitcoinjs-lib | -| [`with-aptos`](https://github.com/tkhq/sdk/tree/main/examples/with-aptos) | Aptos transaction construction and mainnet fund transfer | -| [`with-ton`](https://github.com/tkhq/sdk/tree/main/examples/with-ton) | TON transaction construction and mainnet fund transfer | -| [`with-tron`](https://github.com/tkhq/sdk/tree/main/examples/with-tron) | Tron wallet creation, signing, testnet funding, and policy guards | +| [`with-ethers`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-ethers/) | Sign messages, send EIP-1559 and legacy transactions, interact with contracts (WETH), and sign EIP-712 typed data (ERC-2612 permit, ERC-3009, Hyperliquid) using `@turnkey/ethers` | +| [`with-viem`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-viem/) | Sign messages, send transactions, sign EIP-712 typed data, and sign EIP-4844 and EIP-7702 transactions using `@turnkey/viem` | +| [`with-eip-1193-provider`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-eip-1193-provider/) | Turnkey-compatible Ethereum provider adhering to the EIP-1193 standard | +| [`with-nonce-manager`](https://github.com/tkhq/sdk/tree/main/examples/transaction-management/with-nonce-manager/) | Sign and broadcast multiple Ethereum transactions sequentially or optimistically | +| [`with-cosmjs`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-cosmjs/) | Sign and broadcast a Cosmos transaction on Celestia testnet using `@turnkey/cosmjs` | +| [`with-solana`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-solana/) | Sign and broadcast Solana transactions using `@turnkey/solana`, including SPL token creation \+ transfer | +| [`with-bitcoin`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-bitcoin) | Construct, sign, and broadcast a Bitcoin transaction using bitcoinjs-lib | +| [`with-doge`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-doge) | Dogecoin testnet transaction signing using bitcoinjs-lib | +| [`with-aptos`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-aptos) | Aptos transaction construction and mainnet fund transfer | +| [`with-ton`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-ton) | TON transaction construction and mainnet fund transfer | +| [`with-tron`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-tron) | Tron wallet creation, signing, testnet funding, and policy guards | | [`tron-gasless-transactions`](/solutions/cookbooks/tron-gasless-transactions) | Gasless Tron transactions using delegated bandwidth via the DelegateResource contract function | -| [`with-stacks`](https://github.com/tkhq/sdk/tree/main/examples/with-stacks) | Stacks transaction signing with secp256k1 | -| [`with-movement`](https://github.com/tkhq/sdk/tree/main/examples/with-movement) | Movement transaction construction and mainnet fund transfer | -| [`with-arc`](https://github.com/tkhq/sdk/tree/main/examples/with-arc) | Arc testnet transaction construction and broadcast | -| [`with-tempo`](https://github.com/tkhq/sdk/tree/main/examples/with-tempo) | Tempo testnet transaction construction and broadcast | -| [`with-sui`](https://github.com/tkhq/sdk/tree/main/examples/with-sui) | Construct, sign, and broadcast a Sui transaction using Turnkey | -| [`with-iota`](https://github.com/tkhq/sdk/tree/main/examples/with-iota) | Build, sign, and broadcast IOTA transactions using Turnkey | +| [`with-stacks`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-stacks) | Stacks transaction signing with secp256k1 | +| [`with-movement`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-movement) | Movement transaction construction and mainnet fund transfer | +| [`with-arc`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-arc) | Arc testnet transaction construction and broadcast | +| [`with-tempo`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-tempo) | Tempo testnet transaction construction and broadcast | +| [`with-sui`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-sui) | Construct, sign, and broadcast a Sui transaction using Turnkey | +| [`with-iota`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-iota) | Build, sign, and broadcast IOTA transactions using Turnkey | ## Turnkey Transaction Management | Example | Description | | ----------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| [`tk-gas-station`](https://github.com/tkhq/sdk/tree/main/examples/tk-gas-station) | Gasless transactions using Gas Station SDK with EIP-7702 authorization | -| [`with-paymaster`](https://github.com/tkhq/sdk/tree/main/examples/with-paymaster) | ERC-20 token transfer on EVM with Turnkey paymaster gas sponsorship | -| [`with-solana-paymaster`](https://github.com/tkhq/sdk/tree/main/examples/with-solana-paymaster) | SPL token transfer on Solana with Turnkey fee sponsorship | -| [`with-balances`](https://github.com/tkhq/sdk/tree/main/examples/with-balances) | Fetch token balances and list supported assets using Turnkey APIs | -| [`with-tx-webhooks`](https://github.com/tkhq/sdk/tree/main/examples/with-tx-webhooks) | Receive real-time transaction status and balance change updates via webhooks | -| [`solana-sweeper`](https://github.com/tkhq/sdk/tree/main/examples/solana-sweeper) | Solana token sweeper utility | -| [`solana-usdc-swap`](https://github.com/tkhq/sdk/tree/main/examples/solana-usdc-swap) | SOL to USDC swap on Solana mainnet via Jupiter | -| [`sweeper`](https://github.com/tkhq/sdk/tree/main/examples/sweeper/) | Sweep funds from one address to a different address | -| [`rebalancer`](https://github.com/tkhq/sdk/tree/main/examples/rebalancer/) | Manage and rebalance funds across multiple wallets and key types | +| [`tk-gas-station`](https://github.com/tkhq/sdk/tree/main/examples/transaction-management/tk-gas-station) | Gasless transactions using Gas Station SDK with EIP-7702 authorization | +| [`with-paymaster`](https://github.com/tkhq/sdk/tree/main/examples/transaction-management/with-paymaster) | ERC-20 token transfer on EVM with Turnkey paymaster gas sponsorship | +| [`with-solana-paymaster`](https://github.com/tkhq/sdk/tree/main/examples/transaction-management/with-solana-paymaster) | SPL token transfer on Solana with Turnkey fee sponsorship | +| [`with-balances`](https://github.com/tkhq/sdk/tree/main/examples/transaction-management/with-balances) | Fetch token balances and list supported assets using Turnkey APIs | +| [`with-tx-webhooks`](https://github.com/tkhq/sdk/tree/main/examples/transaction-management/with-tx-webhooks) | Receive real-time transaction status and balance change updates via webhooks | +| [`solana-sweeper`](https://github.com/tkhq/sdk/tree/main/examples/transaction-management/solana-sweeper) | Solana token sweeper utility | +| [`solana-usdc-swap`](https://github.com/tkhq/sdk/tree/main/examples/defi/solana-usdc-swap) | SOL to USDC swap on Solana mainnet via Jupiter | +| [`sweeper`](https://github.com/tkhq/sdk/tree/main/examples/transaction-management/sweeper/) | Sweep funds from one address to a different address | +| [`rebalancer`](https://github.com/tkhq/sdk/tree/main/examples/transaction-management/rebalancer/) | Manage and rebalance funds across multiple wallets and key types | ## Account Abstraction | Example | Description | | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| [`with-zerodev-aa`](https://github.com/tkhq/sdk/tree/main/examples/with-zerodev-aa) | Transaction construction and broadcast with Turnkey, Viem, and ZeroDev account abstraction | -| [`with-biconomy-aa`](https://github.com/tkhq/sdk/tree/main/examples/with-biconomy-aa) | Transaction construction and broadcast with Turnkey, Viem, and Biconomy account abstraction | +| [`with-zerodev-aa`](https://github.com/tkhq/sdk/tree/main/examples/account-abstraction/with-zerodev-aa) | Transaction construction and broadcast with Turnkey, Viem, and ZeroDev account abstraction | +| [`with-biconomy-aa`](https://github.com/tkhq/sdk/tree/main/examples/account-abstraction/with-biconomy-aa) | Transaction construction and broadcast with Turnkey, Viem, and Biconomy account abstraction | ## DeFi & Protocol Integrations | Example | Description | | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | -| [`with-uniswap`](https://github.com/tkhq/sdk/tree/main/examples/with-uniswap/) | Sign and broadcast a Uniswap v3 trade using the Ethers signer | -| [`eth-usdc-swap`](https://github.com/tkhq/sdk/tree/main/examples/eth-usdc-swap) | ETH to USDC swap on Base mainnet via Uniswap Universal Router | +| [`with-uniswap`](https://github.com/tkhq/sdk/tree/main/examples/defi/with-uniswap/) | Sign and broadcast a Uniswap v3 trade using the Ethers signer | +| [`eth-usdc-swap`](https://github.com/tkhq/sdk/tree/main/examples/defi/eth-usdc-swap) | ETH to USDC swap on Base mainnet via Uniswap Universal Router | | [`with-0x`](/solutions/cookbooks/0x) | EVM swapping ETH for USDC using 0x Swap API | | [`with-lifi`](/solutions/cookbooks/lifi) | EVM and SVM bridging between ETH and SOL using Li.Fi | | [`with-aave`](/solutions/cookbooks/aave) | Aave v3 USDC deposit/withdraw with Turnkey policy engine controls | | [`with-morpho`](/solutions/cookbooks/morpho) | Morpho Vaults USDC deposit/withdraw on Base Mainnet | | [`with-yield-xyz`](/solutions/cookbooks/yieldxyz) | Yield.xyz vaults deposit/withdraw across 75+ networks | -| [`with-porto`](https://github.com/tkhq/sdk/tree/main/examples/with-porto) | Porto wallet upgrade and operations using API keys | -| [`with-x402`](https://github.com/tkhq/sdk/tree/main/examples/with-x402) | Coinbase x402 payment protocol with embedded wallets | +| [`with-porto`](https://github.com/tkhq/sdk/tree/main/examples/account-abstraction/with-porto) | Porto wallet upgrade and operations using API keys | +| [`with-x402`](https://github.com/tkhq/sdk/tree/main/examples/defi/with-x402) | Coinbase x402 payment protocol with embedded wallets | | [`with-jupiter`](/solutions/cookbooks/jupiter) | Solana token swaps using Jupiter Ultra Swap API | | [`with-breeze`](/solutions/cookbooks/breeze) | Solana USDC staking and yield management via Breeze API | -| [`trading-runner`](https://github.com/tkhq/sdk/tree/main/examples/trading-runner/) | Multi-user Uniswap v3 trading demo with private key tags, user tags, and policies | -| [`with-gnosis`](https://github.com/tkhq/sdk/tree/main/examples/with-gnosis/) | Create new Ethereum addresses, configure a 3/3 Gnosis safe, and create \+ execute a transaction from it | +| [`trading-runner`](https://github.com/tkhq/sdk/tree/main/examples/defi/trading-runner/) | Multi-user Uniswap v3 trading demo with private key tags, user tags, and policies | +| [`with-gnosis`](https://github.com/tkhq/sdk/tree/main/examples/account-abstraction/with-gnosis/) | Create new Ethereum addresses, configure a 3/3 Gnosis safe, and create \+ execute a transaction from it | | [`with-walletconnect-pay`](/solutions/cookbooks/wallet-connect-pay-integration) | React Native wallet that authenticates users via email OTP and signs EIP-712 payment authorizations for WalletConnect Pay | | [`brale`](/solutions/cookbooks/brale) | Stablecoin issuance and transfers with Turnkey wallets and the Brale API | | [`relay`](/solutions/cookbooks/relay) | Cross-chain bridging and same-chain token swaps via the Relay protocol | @@ -117,22 +117,22 @@ Signers and chain-specific transaction examples. | Example | Description | | ---------------------------------------------------------------------------------- | ------------------------------- | -| [`with-delegated`](https://github.com/tkhq/sdk/tree/main/examples/with-delegated/) | Delegated access setup examples | +| [`with-delegated`](https://github.com/tkhq/sdk/tree/main/examples/access-control/with-delegated/) | Delegated access setup examples | ## Smart Contracts & Automation | Example | Description | | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | -| [`deployer`](https://github.com/tkhq/sdk/tree/main/examples/deployer/) | Compile and deploy a smart contract | -| [`foundry`](https://github.com/tkhq/sdk/tree/main/examples/foundry) | Smart contract setup and broadcast from a Turnkey wallet using Foundry | +| [`deployer`](https://github.com/tkhq/sdk/tree/main/examples/advanced/deployer/) | Compile and deploy a smart contract | +| [`foundry`](https://github.com/tkhq/sdk/tree/main/examples/advanced/foundry) | Smart contract setup and broadcast from a Turnkey wallet using Foundry | ## Advanced & Utilities | Example | Description | | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| [`with-offline`](https://github.com/tkhq/sdk/tree/main/examples/with-offline/) | Stamp a Turnkey request and produce a signed URL to send it later | -| [`kitchen-sink`](https://github.com/tkhq/sdk/tree/main/examples/kitchen-sink) | Playground scripts for common Turnkey requests via HTTP, sdk-server, and sdk-browser | -| [`with-sdk-js`](https://github.com/tkhq/sdk/tree/main/examples/with-sdk-js) | Integration test suite for `@turnkey/core` and `@turnkey/react-wallet-kit` | +| [`with-offline`](https://github.com/tkhq/sdk/tree/main/examples/advanced/with-offline/) | Stamp a Turnkey request and produce a signed URL to send it later | +| [`kitchen-sink`](https://github.com/tkhq/sdk/tree/main/examples/demos/kitchen-sink) | Playground scripts for common Turnkey requests via HTTP, sdk-server, and sdk-browser | +| [`with-sdk-js`](https://github.com/tkhq/sdk/tree/main/examples/demos/with-sdk-js) | Integration test suite for `@turnkey/core` and `@turnkey/react-wallet-kit` | ## Demos built with Turnkey @@ -165,7 +165,7 @@ features such as: See https://github.com/tkhq/demo-embedded-wallet for the code. -### React Native Wallet Kit ([code](https://github.com/tkhq/sdk/tree/main/examples/with-react-native-wallet-kit)) +### React Native Wallet Kit ([code](https://github.com/tkhq/sdk/tree/main/examples/demos/with-react-native-wallet-kit)) A React Native app demonstrating how to use [`@turnkey/react-native-wallet-kit`](https://www.npmjs.com/package/@turnkey/react-native-wallet-kit) diff --git a/sdks/advanced/client-side-signing.mdx b/sdks/advanced/client-side-signing.mdx index 481ccedd..659a10d0 100644 --- a/sdks/advanced/client-side-signing.mdx +++ b/sdks/advanced/client-side-signing.mdx @@ -113,7 +113,7 @@ function SigningComponent() { } ``` -For an example in context, we highly recommend taking a look at the [wallet-export-sign example app](https://github.com/tkhq/sdk/blob/0af0303ca4714cf65f5177cdb05f824877713d2a/examples/wallet-export-sign/src/components/Export.tsx#L62-L107). +For an example in context, we highly recommend taking a look at the [wallet-export-sign example app](https://github.com/tkhq/sdk/blob/0af0303ca4714cf65f5177cdb05f824877713d2a/examples/key-management/wallet-export-sign/src/components/Export.tsx#L62-L107). ### Step 2: create the export caller (backend or client-side) @@ -507,6 +507,6 @@ The bundle was created for a different organization. Ensure your backend uses th ## Additional resources -- [Example: wallet-export-sign](https://github.com/tkhq/sdk/tree/main/examples/wallet-export-sign) - Sample Next.js app +- [Example: wallet-export-sign](https://github.com/tkhq/sdk/tree/main/examples/key-management/wallet-export-sign) - Sample Next.js app - [@turnkey/iframe-stamper](https://github.com/tkhq/sdk/tree/main/packages/iframe-stamper) - Package source code - [export-and-sign iframe](https://github.com/tkhq/frames/tree/main/export-and-sign) - Iframe implementation diff --git a/sdks/advanced/iframe-stamper.mdx b/sdks/advanced/iframe-stamper.mdx index 9421ca48..9fc5556c 100644 --- a/sdks/advanced/iframe-stamper.mdx +++ b/sdks/advanced/iframe-stamper.mdx @@ -84,7 +84,7 @@ type TIframeStamperConfig = { #### Example -For full example check out the [email-auth](https://github.com/tkhq/sdk/tree/main/examples/email-auth) example in our SDK repo. You should also read up [Email Auth](/features/authentication/email) for more information on the technical details of how it works. +For full example check out the [email-auth](https://github.com/tkhq/sdk/tree/main/examples/authentication/email-auth) example in our SDK repo. You should also read up [Email Auth](/features/authentication/email) for more information on the technical details of how it works. ## Methods diff --git a/sdks/foundry.mdx b/sdks/foundry.mdx index 139828b8..d12318fc 100644 --- a/sdks/foundry.mdx +++ b/sdks/foundry.mdx @@ -1,6 +1,6 @@ --- title: "Foundry" -description: "[Foundry](https://getfoundry.sh/introduction/overview) offers native support for deploying smart contracts from Turnkey wallets. See [https://github.com/tkhq/sdk/tree/main/examples/foundry](https://github.com/tkhq/sdk/tree/main/examples/foundry) for a code example, including `.env` setup." +description: "[Foundry](https://getfoundry.sh/introduction/overview) offers native support for deploying smart contracts from Turnkey wallets. See [https://github.com/tkhq/sdk/tree/main/examples/advanced/foundry](https://github.com/tkhq/sdk/tree/main/examples/advanced/foundry) for a code example, including `.env` setup." mode: wide --- diff --git a/sdks/web3/eip-1193.mdx b/sdks/web3/eip-1193.mdx index ebd74c33..222ba322 100644 --- a/sdks/web3/eip-1193.mdx +++ b/sdks/web3/eip-1193.mdx @@ -4,4 +4,4 @@ description: "[`@turnkey/eip-1193-provider`](https://www.npmjs.com/package/@turn mode: wide --- -See [`with-eip-1193-provider`](https://github.com/tkhq/sdk/tree/main/examples/with-eip-1193-provider) for an example. +See [`with-eip-1193-provider`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-eip-1193-provider) for an example. diff --git a/sdks/web3/gas-station.mdx b/sdks/web3/gas-station.mdx index c53abccd..c5b95eb5 100644 --- a/sdks/web3/gas-station.mdx +++ b/sdks/web3/gas-station.mdx @@ -14,4 +14,4 @@ While your paymaster wallet should be managed by Turnkey, the user wallets signi The SDK also includes robust policy building utilities that simplify the process of creating Turnkey policies. These utilities help you restrict EIP-712 intent signing for user wallets and implement paymaster guard policies to control what transactions your paymaster will sponsor. -See the [main SDK documentation](https://github.com/tkhq/sdk/tree/main/packages/gas-station) for detailed API reference and implementation guides. For working examples, check out the [gas station examples](https://github.com/tkhq/sdk/tree/main/examples/tk-gas-station). +See the [main SDK documentation](https://github.com/tkhq/sdk/tree/main/packages/gas-station) for detailed API reference and implementation guides. For working examples, check out the [gas station examples](https://github.com/tkhq/sdk/tree/main/examples/transaction-management/tk-gas-station). diff --git a/sdks/web3/solana.mdx b/sdks/web3/solana.mdx index a0125854..8000a3d5 100644 --- a/sdks/web3/solana.mdx +++ b/sdks/web3/solana.mdx @@ -1,5 +1,5 @@ --- title: "Solana" -description: "We have released a package that you can use to sign transactions and messages: [`@turnkey/solana`](https://www.npmjs.com/package/@turnkey/solana). See [here](https://github.com/tkhq/sdk/tree/main/examples/with-solana) for an example." +description: "We have released a package that you can use to sign transactions and messages: [`@turnkey/solana`](https://www.npmjs.com/package/@turnkey/solana). See [here](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-solana) for an example." mode: wide --- diff --git a/sdks/web3/viem.mdx b/sdks/web3/viem.mdx index 733cb7ad..d474021d 100644 --- a/sdks/web3/viem.mdx +++ b/sdks/web3/viem.mdx @@ -4,4 +4,4 @@ description: "[`@turnkey/viem`](https://www.npmjs.com/package/@turnkey/viem) pro mode: wide --- -See the [`with-viem`](https://github.com/tkhq/sdk/tree/main/examples/with-viem) example. \ No newline at end of file +See the [`with-viem`](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-viem) example. \ No newline at end of file diff --git a/snippets/shared/balance-concepts.mdx b/snippets/shared/balance-concepts.mdx index db07c838..7ec787b5 100644 --- a/snippets/shared/balance-concepts.mdx +++ b/snippets/shared/balance-concepts.mdx @@ -21,7 +21,7 @@ Each balance entry includes the asset metadata (symbol, name, decimals, and CAIP the current amount held at the address. - See the [with-balances](https://github.com/tkhq/sdk/tree/main/examples/with-balances) SDK example + See the [with-balances](https://github.com/tkhq/sdk/tree/main/examples/transaction-management/with-balances) SDK example for a working integration. @@ -207,7 +207,7 @@ may produce multiple webhook deliveries — each with its own `idempotencyKey`. | `msg.block` | Block number, hash, and timestamp of the block in which the transaction was first seen. | - See the [with-tx-webhooks](https://github.com/tkhq/sdk/tree/main/examples/with-tx-webhooks) SDK + See the [with-tx-webhooks](https://github.com/tkhq/sdk/tree/main/examples/transaction-management/with-tx-webhooks) SDK example for a working integration. diff --git a/snippets/shared/export-wallets.mdx b/snippets/shared/export-wallets.mdx index dedc06b7..d4db0192 100644 --- a/snippets/shared/export-wallets.mdx +++ b/snippets/shared/export-wallets.mdx @@ -65,7 +65,7 @@ Node.js backend. The server generates a P-256 TEK, submits the export activity w key, and `@turnkey/crypto` decrypts the returned bundle. A full reference implementation is available at -[export-in-node](https://github.com/tkhq/sdk/tree/main/examples/export-in-node). +[export-in-node](https://github.com/tkhq/sdk/tree/main/examples/key-management/export-in-node). ### Embedded iframe @@ -78,5 +78,5 @@ iframe and inject the export bundle. Source code for the hosted page is availabl [tkhq/frames](https://github.com/tkhq/frames). For a full reference implementation, see the -[import-export-with-iframe-stamper](https://github.com/tkhq/sdk/tree/main/examples/import-export-with-iframe-stamper) +[import-export-with-iframe-stamper](https://github.com/tkhq/sdk/tree/main/examples/key-management/import-export-with-iframe-stamper) example. diff --git a/snippets/shared/import-wallets.mdx b/snippets/shared/import-wallets.mdx index 3b98408e..60f3116e 100644 --- a/snippets/shared/import-wallets.mdx +++ b/snippets/shared/import-wallets.mdx @@ -68,7 +68,7 @@ Node.js backend. The server initializes the import activity to receive the TEK, encrypts the key material to the TEK, and the server completes the import. A full reference implementation is available at -[import-in-node](https://github.com/tkhq/sdk/tree/main/examples/import-in-node). +[import-in-node](https://github.com/tkhq/sdk/tree/main/examples/key-management/import-in-node). ### Embedded iframe @@ -80,5 +80,5 @@ iframe, inject the import bundle, and extract the encrypted result. Source code is available at [tkhq/frames](https://github.com/tkhq/frames). For a full reference implementation, see the -[import-export-with-iframe-stamper](https://github.com/tkhq/sdk/tree/main/examples/import-export-with-iframe-stamper) +[import-export-with-iframe-stamper](https://github.com/tkhq/sdk/tree/main/examples/key-management/import-export-with-iframe-stamper) example. diff --git a/snippets/shared/send-tx-core.mdx b/snippets/shared/send-tx-core.mdx index 34105c51..c1805161 100644 --- a/snippets/shared/send-tx-core.mdx +++ b/snippets/shared/send-tx-core.mdx @@ -260,6 +260,6 @@ present in `msg` depend on the status: ``` - See the [with-tx-webhooks](https://github.com/tkhq/sdk/tree/main/examples/with-tx-webhooks) SDK + See the [with-tx-webhooks](https://github.com/tkhq/sdk/tree/main/examples/transaction-management/with-tx-webhooks) SDK example for a working integration. diff --git a/solutions/cookbooks/0x.mdx b/solutions/cookbooks/0x.mdx index 3f312034..73b06696 100644 --- a/solutions/cookbooks/0x.mdx +++ b/solutions/cookbooks/0x.mdx @@ -7,7 +7,7 @@ sidebarTitle: "0x integration" [0x](https://0x.org) is a swap platform that allows users to swap various tokens on different chains. In this guide, we’ll walk through how to use **Turnkey** wallets to sign transactions that interact with 0x, adding an allowance with the [Allowance Holder Contract](https://0x.org/docs/introduction/0x-cheat-sheet#allowanceholder-recommended) and swapping ETH and USDC. -We'll demonstrate this using the [`with-0x`](https://github.com/tkhq/sdk/tree/main/examples/with-0x) example, which integrates **Turnkey**, **Ethereum**, and **0x** for EVM swaps. +We'll demonstrate this using the [`with-0x`](https://github.com/tkhq/sdk/tree/main/examples/defi/with-0x) example, which integrates **Turnkey**, **Ethereum**, and **0x** for EVM swaps. --- diff --git a/solutions/cookbooks/aave.mdx b/solutions/cookbooks/aave.mdx index fd51d9ae..5d2a8c4a 100644 --- a/solutions/cookbooks/aave.mdx +++ b/solutions/cookbooks/aave.mdx @@ -9,7 +9,7 @@ Aave V3 is a decentralized liquidity protocol where users can supply assets to e In this guide, we’ll walk through using Turnkey to sign common Aave transactions on Base Mainnet with USDC: approving the Aave Pool to spend USDC, supplying USDC, reading the resulting aUSDC balance, and withdrawing USDC back to the wallet. We’ll also demonstrate Turnkey’s policy engine by restricting signing operations to the specific Aave Pool and USDC contracts on Base. -A working example can be found [here](https://github.com/tkhq/sdk/tree/main/examples/with-aave). +A working example can be found [here](https://github.com/tkhq/sdk/tree/main/examples/defi/with-aave). ## Getting started @@ -19,7 +19,7 @@ The first step is to set up your Turnkey organization and account. By following - An organization ID The next step is to create another non-root user within the organization with a different API key and exclude it from the root quorum. If you would like to remove a root user from root quorum, you can do this from the Turnkey [dashboard](https://app.turnkey.com/dashboard/security/updateRootQuorum) or [API](https://docs.turnkey.com/api-reference/activities/update-root-quorum). -Here's a simple [script](https://github.com/tkhq/sdk/blob/main/examples/kitchen-sink/src/sdk-server/updateRootQuorum.ts) that shows how to update the root quorum using @turnkey/sdk-server. +Here's a simple [script](https://github.com/tkhq/sdk/blob/main/examples/demos/kitchen-sink/src/sdk-server/updateRootQuorum.ts) that shows how to update the root quorum using @turnkey/sdk-server. Finally, make sure you have a wallet with an Ethereum account created within this organization and have it funded with some ETH and USDC on Base Mainnet. diff --git a/solutions/cookbooks/breeze.mdx b/solutions/cookbooks/breeze.mdx index e50e18c2..09ba04ff 100644 --- a/solutions/cookbooks/breeze.mdx +++ b/solutions/cookbooks/breeze.mdx @@ -7,7 +7,7 @@ sidebarTitle: "Breeze integration" [Breeze](https://breeze.baby) is a Solana-based yield platform that allows users to deposit and withdraw assets from managed yield funds via smart contracts and APIs. In this guide, we’ll walk through how to use **Turnkey** wallets to sign transactions that interact with Breeze funds, including deposits, withdrawals, and balance queries. -We'll demonstrate this using the [`with-breeze`](https://github.com/tkhq/sdk/tree/main/examples/with-breeze) example, which integrates **Turnkey**, **Solana**, and **Breeze** for staking deposits/withdrawals. +We'll demonstrate this using the [`with-breeze`](https://github.com/tkhq/sdk/tree/main/examples/defi/with-breeze) example, which integrates **Turnkey**, **Solana**, and **Breeze** for staking deposits/withdrawals. --- diff --git a/solutions/cookbooks/jupiter.mdx b/solutions/cookbooks/jupiter.mdx index 04b219e1..6ad6203a 100644 --- a/solutions/cookbooks/jupiter.mdx +++ b/solutions/cookbooks/jupiter.mdx @@ -7,7 +7,7 @@ sidebarTitle: "Jupiter integration" [Jupiter](https://station.jup.ag/) is Solana’s leading liquidity aggregator, enabling users to execute optimal token swaps across multiple DEXs through its [Ultra API](https://station.jup.ag/docs/apis/ultra-api). -This cookbook shows how to integrate **Turnkey** wallets with **Jupiter Ultra Swap** using the [`with-jupiter`](https://github.com/tkhq/sdk/tree/main/examples/with-jupiter) example. +This cookbook shows how to integrate **Turnkey** wallets with **Jupiter Ultra Swap** using the [`with-jupiter`](https://github.com/tkhq/sdk/tree/main/examples/defi/with-jupiter) example. You’ll learn how to authenticate with Turnkey, load a wallet, and use it to create, sign, and send Solana swap transactions directly through the Jupiter API. --- diff --git a/solutions/cookbooks/lifi.mdx b/solutions/cookbooks/lifi.mdx index 417ef26e..7f56bb0a 100644 --- a/solutions/cookbooks/lifi.mdx +++ b/solutions/cookbooks/lifi.mdx @@ -7,7 +7,7 @@ sidebarTitle: "Li.Fi integration" [Li.Fi](https://li.fi) is a bridging platform that allows users to swap various tokens on different chains. In this guide, we'll walk through how to use **Turnkey** wallets to sign transactions that interact with Li.Fi and bridging between ETH and SOL. -We'll demonstrate this using the [`with-lifi`](https://github.com/tkhq/sdk/tree/main/examples/with-lifi) example, which integrates **Turnkey**, **Ethereum**, **Solana**, and **LiFi**. +We'll demonstrate this using the [`with-lifi`](https://github.com/tkhq/sdk/tree/main/examples/defi/with-lifi) example, which integrates **Turnkey**, **Ethereum**, **Solana**, and **LiFi**. --- diff --git a/solutions/cookbooks/morpho.mdx b/solutions/cookbooks/morpho.mdx index 46f79449..09216b7a 100644 --- a/solutions/cookbooks/morpho.mdx +++ b/solutions/cookbooks/morpho.mdx @@ -9,7 +9,7 @@ sidebarTitle: "Morpho integration" We'll walk through the steps of using Turnkey to sign some common transactions to Morpho's Steakhouse USDC Vault on Base Mainnet. The flow is also going to show Turnkey's policy engine in action by restricting the signing operations only to the specific Morpho contracts. -The working example can be found [here](https://github.com/tkhq/sdk/tree/main/examples/with-morpho). +The working example can be found [here](https://github.com/tkhq/sdk/tree/main/examples/defi/with-morpho). ## Getting started @@ -19,7 +19,7 @@ The first step is to set up your Turnkey organization and account. By following - An organization ID The next step is to create another user within the organization with a different API key and remove it from the root quorum. You can do this from the Turnkey [dashboard](https://app.turnkey.com/dashboard/security/updateRootQuorum) or [API](https://docs.turnkey.com/api-reference/activities/update-root-quorum). -Here's a simple [script](https://github.com/tkhq/sdk/blob/main/examples/kitchen-sink/src/sdk-server/updateRootQuorum.ts) that shows how to update the root quorum using @turnkey/sdk-server. +Here's a simple [script](https://github.com/tkhq/sdk/blob/main/examples/demos/kitchen-sink/src/sdk-server/updateRootQuorum.ts) that shows how to update the root quorum using @turnkey/sdk-server. Finally, make sure you have a wallet with an Ethereum account created within this organization and have it funded with some ETH and USDC on Base Mainnet. diff --git a/solutions/cookbooks/wallet-connect-pay-integration.mdx b/solutions/cookbooks/wallet-connect-pay-integration.mdx index f4c08292..f4c2697f 100644 --- a/solutions/cookbooks/wallet-connect-pay-integration.mdx +++ b/solutions/cookbooks/wallet-connect-pay-integration.mdx @@ -7,7 +7,7 @@ sidebarTitle: "WalletConnect Pay integration" [WalletConnect Pay](https://docs.walletconnect.com/payments/wallets/standalone/react-native) is a payment protocol that enables wallet users to pay merchants with crypto by scanning a QR code. The protocol handles payment discovery, transaction construction, gas sponsorship (via [7702 paymaster](https://eips.ethereum.org/EIPS/eip-7702)), and on-chain broadcast. -This cookbook shows how to integrate **Turnkey** embedded wallets with **WalletConnect Pay** using the [`with-walletconnect-pay`](https://github.com/tkhq/sdk/tree/main/examples/with-walletconnect-pay) example — a React Native mobile wallet that authenticates users via email OTP, signs EIP-712 payment authorizations with Turnkey, and lets WalletConnect Pay handle the rest. +This cookbook shows how to integrate **Turnkey** embedded wallets with **WalletConnect Pay** using the [`with-walletconnect-pay`](https://github.com/tkhq/sdk/tree/main/examples/defi/with-walletconnect-pay) example — a React Native mobile wallet that authenticates users via email OTP, signs EIP-712 payment authorizations with Turnkey, and lets WalletConnect Pay handle the rest. Each end-user's wallet is fully self-custodial: Turnkey creates a dedicated sub-organization per user with a 1-of-1 root quorum, meaning only the authenticated user can authorize signing. @@ -362,4 +362,4 @@ You've now learned how to: - Handle Travel Rule identity verification via WebView - Confirm payments through WalletConnect Pay, which handles gas sponsorship and on-chain broadcast -For the full working example, see the [`with-walletconnect-pay`](https://github.com/tkhq/sdk/tree/main/examples/with-walletconnect-pay) repository. \ No newline at end of file +For the full working example, see the [`with-walletconnect-pay`](https://github.com/tkhq/sdk/tree/main/examples/defi/with-walletconnect-pay) repository. \ No newline at end of file diff --git a/solutions/cookbooks/yieldxyz.mdx b/solutions/cookbooks/yieldxyz.mdx index 29eb793b..78835aff 100644 --- a/solutions/cookbooks/yieldxyz.mdx +++ b/solutions/cookbooks/yieldxyz.mdx @@ -23,7 +23,7 @@ Yield.xyz’s API is self-custodial by design: it constructs ready-to-sign tran By combining Yield.xyz and Turnkey, you deliver a production-ready yield experience in your app with minimal effort: your users can discover, deposit, track, manage, and withdraw – all signed securely with Turnkey. -The working example can be found [here](https://github.com/tkhq/sdk/tree/main/examples/with-yield-xyz). +The working example can be found [here](https://github.com/tkhq/sdk/tree/main/examples/defi/with-yield-xyz). --- @@ -37,7 +37,7 @@ Follow the [Turnkey Quickstart](https://docs.turnkey.com/getting-started/quicks - **Wallet** – hierarchical deterministic (HD) wallet having at least an Ethereum wallet account. - **Turnkey Client & Signer** – initialize a Turnkey client (`TurnkeyClient`) with your API key pair and connect a signer (`TurnkeySigner`) from `@turnkey/ethers` to your RPC provider. -After creating a non-root user with a different API key, the next step is to remove it from the root quorum. You can do this from the Turnkey [dashboard](https://app.turnkey.com/dashboard/security/updateRootQuorum) or [API](https://docs.turnkey.com/api-reference/activities/update-root-quorum). Here’s a simple [script](https://github.com/tkhq/sdk/blob/main/examples/kitchen-sink/src/sdk-server/updateRootQuorum.ts) that shows how to update the root quorum using `@turnkey/sdk-server`. +After creating a non-root user with a different API key, the next step is to remove it from the root quorum. You can do this from the Turnkey [dashboard](https://app.turnkey.com/dashboard/security/updateRootQuorum) or [API](https://docs.turnkey.com/api-reference/activities/update-root-quorum). Here’s a simple [script](https://github.com/tkhq/sdk/blob/main/examples/demos/kitchen-sink/src/sdk-server/updateRootQuorum.ts) that shows how to update the root quorum using `@turnkey/sdk-server`. Also, make sure you have a wallet with an Ethereum account created within this organization and have it funded with some ETH and USDC on Base Mainnet. diff --git a/solutions/embedded-wallets/integration-guide/react-native/overview.mdx b/solutions/embedded-wallets/integration-guide/react-native/overview.mdx index a55ebf52..50b50ad9 100644 --- a/solutions/embedded-wallets/integration-guide/react-native/overview.mdx +++ b/solutions/embedded-wallets/integration-guide/react-native/overview.mdx @@ -6,7 +6,7 @@ sidebarTitle: "Overview" import { FeatureCard } from '/snippets/feature-card.mdx' -Find `@turnkey/react-native-wallet-kit` on [npm](https://www.npmjs.com/package/@turnkey/react-native-wallet-kit) or view the source code on [GitHub](https://github.com/tkhq/sdk/tree/main/packages/react-native-wallet-kit)! For a working reference implementation covering auth, wallet creation, export, and signing, see the [with-react-native-wallet-kit](https://github.com/tkhq/sdk/tree/main/examples/with-react-native-wallet-kit) example app. +Find `@turnkey/react-native-wallet-kit` on [npm](https://www.npmjs.com/package/@turnkey/react-native-wallet-kit) or view the source code on [GitHub](https://github.com/tkhq/sdk/tree/main/packages/react-native-wallet-kit)! For a working reference implementation covering auth, wallet creation, export, and signing, see the [with-react-native-wallet-kit](https://github.com/tkhq/sdk/tree/main/examples/demos/with-react-native-wallet-kit) example app.
diff --git a/solutions/embedded-wallets/integration-guide/react/advanced-backend-authentication.mdx b/solutions/embedded-wallets/integration-guide/react/advanced-backend-authentication.mdx index 16380f0d..aa4ce401 100644 --- a/solutions/embedded-wallets/integration-guide/react/advanced-backend-authentication.mdx +++ b/solutions/embedded-wallets/integration-guide/react/advanced-backend-authentication.mdx @@ -222,4 +222,4 @@ function AuthStatus() { Once the user is authenticated, you can continue to use the Embedded Wallet Kit as usual. -Check out the following examples that showcase [Oauth](https://github.com/tkhq/sdk/tree/main/examples/oauth), [Email OTP](https://github.com/tkhq/sdk/tree/main/examples/otp-auth/with-backend) and [External wallet](https://github.com/tkhq/sdk/tree/main/examples/wallet-auth/with-backend) authentication through a custom backend. \ No newline at end of file +Check out the following examples that showcase [Oauth](https://github.com/tkhq/sdk/tree/main/examples/authentication/oauth), [Email OTP](https://github.com/tkhq/sdk/tree/main/examples/authentication/otp-auth/with-backend) and [External wallet](https://github.com/tkhq/sdk/tree/main/examples/authentication/wallet-auth/with-backend) authentication through a custom backend. \ No newline at end of file diff --git a/solutions/embedded-wallets/integration-guide/react/index.mdx b/solutions/embedded-wallets/integration-guide/react/index.mdx index 1894e9ca..2c76ba03 100644 --- a/solutions/embedded-wallets/integration-guide/react/index.mdx +++ b/solutions/embedded-wallets/integration-guide/react/index.mdx @@ -6,7 +6,7 @@ sidebarTitle: "Overview" import { FeatureCard } from '/snippets/feature-card.mdx' -Find `@turnkey/react-wallet-kit` on [npm](https://www.npmjs.com/package/@turnkey/react-wallet-kit) or view the source code on [GitHub](https://github.com/tkhq/sdk/tree/main/packages/react-wallet-kit)! For a working reference implementation covering auth, wallet management, signing, import/export, see the [react-wallet-kit](https://github.com/tkhq/sdk/tree/main/examples/react-wallet-kit) example app, or try the [live demo](https://wallets.turnkey.com). +Find `@turnkey/react-wallet-kit` on [npm](https://www.npmjs.com/package/@turnkey/react-wallet-kit) or view the source code on [GitHub](https://github.com/tkhq/sdk/tree/main/packages/react-wallet-kit)! For a working reference implementation covering auth, wallet management, signing, import/export, see the [react-wallet-kit](https://github.com/tkhq/sdk/tree/main/examples/demos/react-wallet-kit) example app, or try the [live demo](https://wallets.turnkey.com).
diff --git a/solutions/embedded-wallets/integration-guide/react/using-embedded-wallets.mdx b/solutions/embedded-wallets/integration-guide/react/using-embedded-wallets.mdx index 39f7bacb..d91bca31 100644 --- a/solutions/embedded-wallets/integration-guide/react/using-embedded-wallets.mdx +++ b/solutions/embedded-wallets/integration-guide/react/using-embedded-wallets.mdx @@ -199,7 +199,7 @@ and this export modal when you click the "Export Wallet" button: alt="Export Wallet Modal" /> -Check out this [example](https://github.com/tkhq/sdk/tree/main/examples/import-export-with-rwk) showing how to import / export wallets, wallet accounts and private keys using `@turnkey/react-wallet-kit`. +Check out this [example](https://github.com/tkhq/sdk/tree/main/examples/key-management/import-export-with-rwk) showing how to import / export wallets, wallet accounts and private keys using `@turnkey/react-wallet-kit`. ## Next steps diff --git a/solutions/embedded-wallets/quickstart.mdx b/solutions/embedded-wallets/quickstart.mdx index 27b7f36f..52a0b229 100644 --- a/solutions/embedded-wallets/quickstart.mdx +++ b/solutions/embedded-wallets/quickstart.mdx @@ -40,7 +40,7 @@ a complete, runnable application you can use as a starting point for your own in ### Web -#### Demo embedded wallet ([code](https://github.com/tkhq/sdk/tree/main/examples/react-wallet-kit)) +#### Demo embedded wallet ([code](https://github.com/tkhq/sdk/tree/main/examples/demos/react-wallet-kit)) The flagship embedded wallet demo. Built with `@turnkey/react-wallet-kit`. Covers the full embedded wallet lifecycle: diff --git a/solutions/key-management/encryption-key-storage.mdx b/solutions/key-management/encryption-key-storage.mdx index dd291190..b92ebb56 100644 --- a/solutions/key-management/encryption-key-storage.mdx +++ b/solutions/key-management/encryption-key-storage.mdx @@ -38,7 +38,7 @@ A common pattern for applications: encrypt recovery bundles, store them in your ### Implementation steps - Explore the complete implementation in the [GitHub encryption-key-escrow example](https://github.com/tkhq/sdk/tree/main/examples/encryption-key-escrow). + Explore the complete implementation in the [GitHub encryption-key-escrow example](https://github.com/tkhq/sdk/tree/main/examples/key-management/encryption-key-escrow). diff --git a/solutions/key-management/enterprise-disaster-recovery.mdx b/solutions/key-management/enterprise-disaster-recovery.mdx index 62162f2b..e9c8f60a 100644 --- a/solutions/key-management/enterprise-disaster-recovery.mdx +++ b/solutions/key-management/enterprise-disaster-recovery.mdx @@ -15,7 +15,7 @@ Back up wallets on Turnkey and recover them when you need to for incident respon | **Organization setup** | Create dedicated recovery users with limited permissions. Distribute authenticators (passkeys, YubiKeys) across geographic locations where possible. | [Organizations](/features/organizations) | | **Root quorum** | Require multiple approvers for sensitive operations to prevent any single credential compromise from triggering unauthorized recovery. | [Root Quorum](/features/users/root-quorum) | | **Recovery policies** | Restrict what can be done with recovered wallets: limit fund movement to allowed addresses, require multi-party approval, scope signing by chain or value. | [Policy Engine](/features/policies/overview), [Signing Control](/features/policies/examples/signing-control) | -| **Import method** | Use the NodeJS server SDK for the full import flow including encryption and secure transport, or the React Wallet Kit for client-side import. | [Import Wallets](/features/wallets/import-wallets), [SDK Server](https://github.com/tkhq/sdk/tree/main/examples/import-in-node) | +| **Import method** | Use the NodeJS server SDK for the full import flow including encryption and secure transport, or the React Wallet Kit for client-side import. | [Import Wallets](/features/wallets/import-wallets), [SDK Server](https://github.com/tkhq/sdk/tree/main/examples/key-management/import-in-node) | ## Example: treasury recovery @@ -39,7 +39,7 @@ Import wallet keys into Turnkey's secure enclave ahead of time. If a key holder ### Implementation steps - Explore the complete implementation in the [GitHub disaster-recovery example](https://github.com/tkhq/sdk/tree/main/examples/disaster-recovery). + Explore the complete implementation in the [GitHub disaster-recovery example](https://github.com/tkhq/sdk/tree/main/examples/key-management/disaster-recovery). @@ -53,7 +53,7 @@ Import wallet keys into Turnkey's secure enclave ahead of time. If a key holder - Use the [NodeJS server SDK](https://github.com/tkhq/sdk/tree/main/examples/import-in-node) to initialize the import and encrypt the wallet material to Turnkey's enclave: + Use the [NodeJS server SDK](https://github.com/tkhq/sdk/tree/main/examples/key-management/import-in-node) to initialize the import and encrypt the wallet material to Turnkey's enclave: ```ts import { Turnkey } from "@turnkey/sdk-server"; From ad7f2bd46df0c8bb2bb8f565b0d5a32aaa936027 Mon Sep 17 00:00:00 2001 From: Henry <43460021+MasterHW@users.noreply.github.com> Date: Wed, 3 Jun 2026 15:54:57 -0400 Subject: [PATCH 2/2] minor copilot suggestions Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- changelogs/http/readme.mdx | 2 +- features/networks/doge.mdx | 2 +- .../integration-guide/react/advanced-backend-authentication.mdx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/changelogs/http/readme.mdx b/changelogs/http/readme.mdx index 12564e0b..2d55da85 100644 --- a/changelogs/http/readme.mdx +++ b/changelogs/http/readme.mdx @@ -290,7 +290,7 @@ mode: wide ### Minor Changes - 3e4a482: Release per mono v2025.4.4 - - Adds parsing and policy engine support for Ethereum Type 3 (EIP-4844) and Type 4 (EIP-7702) transactions. There is no change to any signing interface or API; you simply can now use Turnkey's signing endpoints to sign those transaction types. See [with-viem](https://github.com/tkhq/sdk/blob/main/examples/chain-integrations/with-viem/) for examples. + - Adds parsing and policy engine support for Ethereum Type 3 (EIP-4844) and Type 4 (EIP-7702) transactions. There is no change to any signing interface or API; you simply can now use Turnkey's signing endpoints to sign those transaction types. See [with-viem](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-viem/) for examples. - New wallet account creations will now automatically derive the underlying derived account's public key. For example: previously, if derived an Ethereum wallet account, you would get the resulting Ethereum address (`0x...`). If you also wanted the public key associated with that underlying key, you would've had to derive an additional wallet account with `ADDRESS_FORMAT_COMPRESSED`. Now, this will automatically be derived for you. It is now a property that has been added to the wallet account primitive (i.e. accessible via `walletAccount.publicKey`). ## 3.0.0 diff --git a/features/networks/doge.mdx b/features/networks/doge.mdx index 9b32d628..cf270db7 100644 --- a/features/networks/doge.mdx +++ b/features/networks/doge.mdx @@ -9,7 +9,7 @@ Turnkey supports Doge address derivation with `ADDRESS_FORMAT_DOGE_MAINNET` and ## Transaction construction and signing Turnkey supports Doge transaction signing through the core signing capabilities. -Check out the [examples/chain-integrations/with-doge](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-doge) respository that demonstrates how to construct, sign and broadcast a Doge P2PKH transaction on Testnet. +Check out the [examples/chain-integrations/with-doge](https://github.com/tkhq/sdk/tree/main/examples/chain-integrations/with-doge) repository that demonstrates how to construct, sign and broadcast a Doge P2PKH transaction on Testnet. ### Key features diff --git a/solutions/embedded-wallets/integration-guide/react/advanced-backend-authentication.mdx b/solutions/embedded-wallets/integration-guide/react/advanced-backend-authentication.mdx index aa4ce401..ddd8faa2 100644 --- a/solutions/embedded-wallets/integration-guide/react/advanced-backend-authentication.mdx +++ b/solutions/embedded-wallets/integration-guide/react/advanced-backend-authentication.mdx @@ -222,4 +222,4 @@ function AuthStatus() { Once the user is authenticated, you can continue to use the Embedded Wallet Kit as usual. -Check out the following examples that showcase [Oauth](https://github.com/tkhq/sdk/tree/main/examples/authentication/oauth), [Email OTP](https://github.com/tkhq/sdk/tree/main/examples/authentication/otp-auth/with-backend) and [External wallet](https://github.com/tkhq/sdk/tree/main/examples/authentication/wallet-auth/with-backend) authentication through a custom backend. \ No newline at end of file +Check out the following examples that showcase [OAuth](https://github.com/tkhq/sdk/tree/main/examples/authentication/oauth), [Email OTP](https://github.com/tkhq/sdk/tree/main/examples/authentication/otp-auth/with-backend) and [External wallet](https://github.com/tkhq/sdk/tree/main/examples/authentication/wallet-auth/with-backend) authentication through a custom backend. \ No newline at end of file