@@ -11,8 +11,8 @@ import { baseSepolia } from 'viem/chains'
1111
1212import { mintableErc20Abi } from '@/abis/mintableErc20Abi.js'
1313import { USDC } from '@/config/assets.js'
14- import { getPrivyClient , getVerbs } from '@/config/verbs .js'
15-
14+ import { env } from '@/config/env .js'
15+ import { getTurnkeyClient , getVerbs } from '@/config/verbs.js'
1616/**
1717 * Options for getting all wallets
1818 * @description Parameters for filtering and paginating wallet results
@@ -24,18 +24,50 @@ export interface GetAllWalletsOptions {
2424 cursor ?: string
2525}
2626
27+ async function turnkeyCreateWallet ( ) {
28+ const turnkeyClient = getTurnkeyClient ( )
29+ const activityResponse = await turnkeyClient . apiClient ( ) . createWallet ( {
30+ walletName : 'ETH Wallet' ,
31+ accounts : [
32+ {
33+ curve : 'CURVE_SECP256K1' ,
34+ pathFormat : 'PATH_FORMAT_BIP32' ,
35+ path : "m/44'/60'/0'/0/0" ,
36+ addressFormat : 'ADDRESS_FORMAT_ETHEREUM' ,
37+ } ,
38+ ] ,
39+ } )
40+ console . log ( activityResponse )
41+ return activityResponse
42+ }
43+
44+ async function turnkeyGetWallet ( walletId : string ) {
45+ const turnkeyClient = getTurnkeyClient ( )
46+ const activityResponse = await turnkeyClient . apiClient ( ) . getWalletAccount ( {
47+ organizationId : env . TURNKEY_ORGANIZATION_ID ! ,
48+ walletId : walletId ,
49+ } )
50+ console . log ( activityResponse )
51+ return activityResponse
52+ }
53+
54+ async function turnkeyGetAllWallets ( ) {
55+ const turnkeyClient = getTurnkeyClient ( )
56+ const activityResponse = await turnkeyClient . apiClient ( ) . getWallets ( {
57+ organizationId : env . TURNKEY_ORGANIZATION_ID ! ,
58+ } )
59+ console . log ( activityResponse )
60+ return activityResponse
61+ }
62+
2763export async function createWallet ( ) : Promise < {
2864 privyAddress : string
2965 smartWalletAddress : string
3066} > {
3167 const verbs = getVerbs ( )
32- const privyClient = getPrivyClient ( )
33- const privyWallet = await privyClient . walletApi . createWallet ( {
34- chainType : 'ethereum' ,
35- } )
68+ const turnkeyWallet = await turnkeyCreateWallet ( )
3669 const verbsPrivyWallet = await verbs . wallet . hostedWalletToVerbsWallet ( {
37- walletId : privyWallet . id ,
38- address : privyWallet . address ,
70+ signWith : turnkeyWallet . addresses [ 0 ] ,
3971 } )
4072 const wallet = await verbs . wallet . createSmartWallet ( {
4173 owners : [ verbsPrivyWallet . address ] ,
@@ -50,70 +82,65 @@ export async function createWallet(): Promise<{
5082
5183export async function getWallet ( userId : string ) : Promise < SmartWallet | null > {
5284 const verbs = getVerbs ( )
53- const privyClient = getPrivyClient ( )
54- const privyWallet = await privyClient . walletApi
55- . getWallet ( {
56- id : userId ,
57- } )
58- . catch ( ( ) => null )
59- if ( ! privyWallet ) {
60- return privyWallet
61- }
62- const verbsPrivyWallet = await verbs . wallet . hostedWalletToVerbsWallet ( {
63- walletId : privyWallet . id ,
64- address : privyWallet . address ,
65- } )
66- const wallet = await verbs . wallet . getSmartWallet ( {
67- signer : verbsPrivyWallet . signer ,
68- deploymentOwners : [ getAddress ( privyWallet . address ) ] ,
69- } )
70- return wallet
71- }
72-
73- export async function getUserWallet (
74- userId : string ,
75- ) : Promise < SmartWallet | null > {
76- const verbs = getVerbs ( )
77- const privyClient = getPrivyClient ( )
78- const privyUser = await privyClient . getUserById ( userId ) . catch ( ( ) => null )
79- if ( ! privyUser ) {
85+ const turnkeyWallet = await turnkeyGetWallet ( userId ) . catch ( ( ) => null )
86+ if ( ! turnkeyWallet ) {
8087 return null
8188 }
82- const privyWallet = privyUser . wallet
83- if ( ! privyWallet ) {
84- return null
85- }
86- const verbsPrivyWallet = await verbs . wallet . hostedWalletToVerbsWallet ( {
87- walletId : privyWallet . id ! ,
88- address : privyWallet . address ,
89+ const verbsTurnkeyWallet = await verbs . wallet . hostedWalletToVerbsWallet ( {
90+ signWith : turnkeyWallet . account . address ,
8991 } )
9092 const wallet = await verbs . wallet . getSmartWallet ( {
91- signer : verbsPrivyWallet . signer ,
92- deploymentOwners : [ getAddress ( privyWallet . address ) ] ,
93+ signer : verbsTurnkeyWallet . signer ,
94+ deploymentOwners : [ getAddress ( turnkeyWallet . account . address ) ] ,
9395 } )
9496 return wallet
9597}
9698
99+ // export async function getUserWallet(
100+ // userId: string,
101+ // ): Promise<SmartWallet | null> {
102+ // const verbs = getVerbs()
103+ // const privyClient = getPrivyClient()
104+ // const privyUser = await privyClient.getUserById(userId).catch(() => null)
105+ // if (!privyUser) {
106+ // return null
107+ // }
108+ // const privyWallet = privyUser.wallet
109+ // if (!privyWallet) {
110+ // return null
111+ // }
112+ // const verbsPrivyWallet = await verbs.wallet.hostedWalletToVerbsWallet({
113+ // walletId: privyWallet.id!,
114+ // address: privyWallet.address,
115+ // })
116+ // const wallet = await verbs.wallet.getSmartWallet({
117+ // signer: verbsPrivyWallet.signer,
118+ // deploymentOwners: [getAddress(privyWallet.address)],
119+ // })
120+ // return wallet
121+ // }
122+
97123export async function getAllWallets (
98- options ?: GetAllWalletsOptions ,
124+ _options ?: GetAllWalletsOptions ,
99125) : Promise < Array < { wallet : SmartWallet ; id : string } > > {
100126 try {
101127 const verbs = getVerbs ( )
102- const privyClient = getPrivyClient ( )
103- const response = await privyClient . walletApi . getWallets ( options )
128+ const turnkeyWallets = await turnkeyGetAllWallets ( )
104129 return Promise . all (
105- response . data . map ( async ( privyWallet ) => {
106- const verbsPrivyWallet = await verbs . wallet . hostedWalletToVerbsWallet ( {
107- walletId : privyWallet . id ,
108- address : privyWallet . address ,
109- } )
130+ turnkeyWallets . wallets . map ( async ( { walletId } ) => {
131+ const turnkeyWallet = await turnkeyGetWallet ( walletId )
132+ const verbsTurnkeyWallet = await verbs . wallet . hostedWalletToVerbsWallet (
133+ {
134+ signWith : turnkeyWallet . account . address ,
135+ } ,
136+ )
110137 const wallet = await verbs . wallet . getSmartWallet ( {
111- signer : verbsPrivyWallet . signer ,
112- deploymentOwners : [ getAddress ( privyWallet . address ) ] ,
138+ signer : verbsTurnkeyWallet . signer ,
139+ deploymentOwners : [ getAddress ( turnkeyWallet . account . address ) ] ,
113140 } )
114141 return {
115142 wallet,
116- id : privyWallet . id ,
143+ id : walletId ,
117144 }
118145 } ) ,
119146 )
0 commit comments