diff --git a/apps/events/src/components/export-wallet.tsx b/apps/events/src/components/export-wallet.tsx
new file mode 100644
index 00000000..3db3530c
--- /dev/null
+++ b/apps/events/src/components/export-wallet.tsx
@@ -0,0 +1,20 @@
+import { Button } from '@/components/ui/button';
+import { usePrivy } from '@privy-io/react-auth';
+
+export const ExportWallet = () => {
+ const { ready, authenticated, user, exportWallet } = usePrivy();
+ const isAuthenticated = ready && authenticated;
+ // check that your user has an embedded wallet
+ const hasEmbeddedWallet = !!user?.linkedAccounts.find(
+ (account) => account.type === 'wallet' && account.walletClientType === 'privy' && account.chainType === 'ethereum',
+ );
+
+ return (
+ <>
+
Export Wallet
+
+ >
+ );
+};
diff --git a/apps/events/src/lib/create-ethereum-account.ts b/apps/events/src/lib/create-ethereum-account.ts
new file mode 100644
index 00000000..12c01ad6
--- /dev/null
+++ b/apps/events/src/lib/create-ethereum-account.ts
@@ -0,0 +1,11 @@
+import { bytesToHex, randomBytes } from '@noble/hashes/utils';
+import { privateKeyToAccount } from 'viem/accounts';
+
+export const createEthereumAccount = () => {
+ const privateKey = `0x${bytesToHex(randomBytes(32))}` as `0x${string}`;
+ const account = privateKeyToAccount(privateKey);
+ return {
+ privateKey,
+ address: account.address,
+ };
+};
diff --git a/apps/events/src/routeTree.gen.ts b/apps/events/src/routeTree.gen.ts
index db86e05e..4894b762 100644
--- a/apps/events/src/routeTree.gen.ts
+++ b/apps/events/src/routeTree.gen.ts
@@ -15,6 +15,7 @@ import { createFileRoute } from '@tanstack/react-router'
import { Route as rootRoute } from './routes/__root'
import { Route as IndexImport } from './routes/index'
import { Route as SpaceSpaceIdImport } from './routes/space/$spaceId'
+import { Route as SettingsExportWalletImport } from './routes/settings/export-wallet'
// Create Virtual Routes
@@ -40,6 +41,12 @@ const SpaceSpaceIdRoute = SpaceSpaceIdImport.update({
getParentRoute: () => rootRoute,
} as any)
+const SettingsExportWalletRoute = SettingsExportWalletImport.update({
+ id: '/settings/export-wallet',
+ path: '/settings/export-wallet',
+ getParentRoute: () => rootRoute,
+} as any)
+
// Populate the FileRoutesByPath interface
declare module '@tanstack/react-router' {
@@ -58,6 +65,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof LoginLazyImport
parentRoute: typeof rootRoute
}
+ '/settings/export-wallet': {
+ id: '/settings/export-wallet'
+ path: '/settings/export-wallet'
+ fullPath: '/settings/export-wallet'
+ preLoaderRoute: typeof SettingsExportWalletImport
+ parentRoute: typeof rootRoute
+ }
'/space/$spaceId': {
id: '/space/$spaceId'
path: '/space/$spaceId'
@@ -73,12 +87,14 @@ declare module '@tanstack/react-router' {
export interface FileRoutesByFullPath {
'/': typeof IndexRoute
'/login': typeof LoginLazyRoute
+ '/settings/export-wallet': typeof SettingsExportWalletRoute
'/space/$spaceId': typeof SpaceSpaceIdRoute
}
export interface FileRoutesByTo {
'/': typeof IndexRoute
'/login': typeof LoginLazyRoute
+ '/settings/export-wallet': typeof SettingsExportWalletRoute
'/space/$spaceId': typeof SpaceSpaceIdRoute
}
@@ -86,27 +102,35 @@ export interface FileRoutesById {
__root__: typeof rootRoute
'/': typeof IndexRoute
'/login': typeof LoginLazyRoute
+ '/settings/export-wallet': typeof SettingsExportWalletRoute
'/space/$spaceId': typeof SpaceSpaceIdRoute
}
export interface FileRouteTypes {
fileRoutesByFullPath: FileRoutesByFullPath
- fullPaths: '/' | '/login' | '/space/$spaceId'
+ fullPaths: '/' | '/login' | '/settings/export-wallet' | '/space/$spaceId'
fileRoutesByTo: FileRoutesByTo
- to: '/' | '/login' | '/space/$spaceId'
- id: '__root__' | '/' | '/login' | '/space/$spaceId'
+ to: '/' | '/login' | '/settings/export-wallet' | '/space/$spaceId'
+ id:
+ | '__root__'
+ | '/'
+ | '/login'
+ | '/settings/export-wallet'
+ | '/space/$spaceId'
fileRoutesById: FileRoutesById
}
export interface RootRouteChildren {
IndexRoute: typeof IndexRoute
LoginLazyRoute: typeof LoginLazyRoute
+ SettingsExportWalletRoute: typeof SettingsExportWalletRoute
SpaceSpaceIdRoute: typeof SpaceSpaceIdRoute
}
const rootRouteChildren: RootRouteChildren = {
IndexRoute: IndexRoute,
LoginLazyRoute: LoginLazyRoute,
+ SettingsExportWalletRoute: SettingsExportWalletRoute,
SpaceSpaceIdRoute: SpaceSpaceIdRoute,
}
@@ -122,6 +146,7 @@ export const routeTree = rootRoute
"children": [
"/",
"/login",
+ "/settings/export-wallet",
"/space/$spaceId"
]
},
@@ -131,6 +156,9 @@ export const routeTree = rootRoute
"/login": {
"filePath": "login.lazy.tsx"
},
+ "/settings/export-wallet": {
+ "filePath": "settings/export-wallet.tsx"
+ },
"/space/$spaceId": {
"filePath": "space/$spaceId.tsx"
}
diff --git a/apps/events/src/routes/__root.tsx b/apps/events/src/routes/__root.tsx
index 287ad96d..92992d86 100644
--- a/apps/events/src/routes/__root.tsx
+++ b/apps/events/src/routes/__root.tsx
@@ -30,7 +30,10 @@ export const Route = createRootRoute({