@reown/appkit-wallet
Version:
#### 🔗 [Website](https://reown.com/appkit)
554 lines • 21 kB
JavaScript
import { z } from 'zod';
import { W3mFrameConstants, W3mFrameRpcConstants } from './W3mFrameConstants.js';
const zError = z.object({ message: z.string() });
function zType(key) {
return z.literal(W3mFrameConstants[key]);
}
export const GetTransactionByHashResponse = z.object({
accessList: z.array(z.string()),
blockHash: z.string().nullable(),
blockNumber: z.string().nullable(),
chainId: z.string().or(z.number()),
from: z.string(),
gas: z.string(),
hash: z.string(),
input: z.string().nullable(),
maxFeePerGas: z.string(),
maxPriorityFeePerGas: z.string(),
nonce: z.string(),
r: z.string(),
s: z.string(),
to: z.string(),
transactionIndex: z.string().nullable(),
type: z.string(),
v: z.string(),
value: z.string()
});
export const AppSwitchNetworkRequest = z.object({ chainId: z.string().or(z.number()) });
export const AppConnectEmailRequest = z.object({ email: z.string().email() });
export const AppConnectOtpRequest = z.object({ otp: z.string() });
export const AppConnectSocialRequest = z.object({ uri: z.string() });
export const AppGetUserRequest = z.object({
chainId: z.optional(z.string().or(z.number())),
preferredAccountType: z.optional(z.string())
});
export const AppGetSocialRedirectUriRequest = z.object({
provider: z.enum(['google', 'github', 'apple', 'facebook', 'x', 'discord'])
});
export const AppUpdateEmailRequest = z.object({ email: z.string().email() });
export const AppUpdateEmailPrimaryOtpRequest = z.object({ otp: z.string() });
export const AppUpdateEmailSecondaryOtpRequest = z.object({ otp: z.string() });
export const AppSyncThemeRequest = z.object({
themeMode: z.optional(z.enum(['light', 'dark'])),
themeVariables: z.optional(z.record(z.string(), z.string().or(z.number()))),
w3mThemeVariables: z.optional(z.record(z.string(), z.string()))
});
export const AppSyncDappDataRequest = z.object({
metadata: z
.object({
name: z.string(),
description: z.string(),
url: z.string(),
icons: z.array(z.string())
})
.optional(),
sdkVersion: z.string().optional(),
sdkType: z.string().optional(),
projectId: z.string()
});
export const AppSetPreferredAccountRequest = z.object({ type: z.string() });
export const FrameConnectEmailResponse = z.object({
action: z.enum(['VERIFY_DEVICE', 'VERIFY_OTP', 'CONNECT'])
});
export const FrameGetFarcasterUriResponse = z.object({
url: z.string()
});
export const FrameConnectFarcasterResponse = z.object({
userName: z.string()
});
export const FrameConnectSocialResponse = z.object({
email: z.string().optional().nullable(),
address: z.string(),
chainId: z.string().or(z.number()),
accounts: z
.array(z.object({
address: z.string(),
type: z.enum([
W3mFrameRpcConstants.ACCOUNT_TYPES.EOA,
W3mFrameRpcConstants.ACCOUNT_TYPES.SMART_ACCOUNT
])
}))
.optional(),
userName: z.string().optional().nullable()
});
export const FrameUpdateEmailResponse = z.object({
action: z.enum(['VERIFY_PRIMARY_OTP', 'VERIFY_SECONDARY_OTP'])
});
export const FrameGetUserResponse = z.object({
email: z.string().email().optional().nullable(),
address: z.string(),
chainId: z.string().or(z.number()),
smartAccountDeployed: z.optional(z.boolean()),
accounts: z
.array(z.object({
address: z.string(),
type: z.enum([
W3mFrameRpcConstants.ACCOUNT_TYPES.EOA,
W3mFrameRpcConstants.ACCOUNT_TYPES.SMART_ACCOUNT
])
}))
.optional(),
preferredAccountType: z.optional(z.string())
});
export const FrameGetSocialRedirectUriResponse = z.object({ uri: z.string() });
export const FrameIsConnectedResponse = z.object({ isConnected: z.boolean() });
export const FrameGetChainIdResponse = z.object({ chainId: z.string().or(z.number()) });
export const FrameSwitchNetworkResponse = z.object({ chainId: z.string().or(z.number()) });
export const FrameUpdateEmailSecondaryOtpResponse = z.object({ newEmail: z.string().email() });
export const FrameGetSmartAccountEnabledNetworksResponse = z.object({
smartAccountEnabledNetworks: z.array(z.number())
});
export const FrameInitSmartAccountResponse = z.object({
address: z.string(),
isDeployed: z.boolean()
});
export const FrameReadyResponse = z.object({
version: z.string().optional()
});
export const FrameSetPreferredAccountResponse = z.object({ type: z.string(), address: z.string() });
export const RpcResponse = z.any();
export const RpcEthAccountsRequest = z.object({
method: z.literal('eth_accounts')
});
export const RpcEthBlockNumber = z.object({
method: z.literal('eth_blockNumber')
});
export const RpcEthCall = z.object({
method: z.literal('eth_call'),
params: z.array(z.any())
});
export const RpcEthChainId = z.object({
method: z.literal('eth_chainId')
});
export const RpcEthEstimateGas = z.object({
method: z.literal('eth_estimateGas'),
params: z.array(z.any())
});
export const RpcEthFeeHistory = z.object({
method: z.literal('eth_feeHistory'),
params: z.array(z.any())
});
export const RpcEthGasPrice = z.object({
method: z.literal('eth_gasPrice')
});
export const RpcEthGetAccount = z.object({
method: z.literal('eth_getAccount'),
params: z.array(z.any())
});
export const RpcEthGetBalance = z.object({
method: z.literal('eth_getBalance'),
params: z.array(z.any())
});
export const RpcEthGetBlockyByHash = z.object({
method: z.literal('eth_getBlockByHash'),
params: z.array(z.any())
});
export const RpcEthGetBlockByNumber = z.object({
method: z.literal('eth_getBlockByNumber'),
params: z.array(z.any())
});
export const RpcEthGetBlockReceipts = z.object({
method: z.literal('eth_getBlockReceipts'),
params: z.array(z.any())
});
export const RcpEthGetBlockTransactionCountByHash = z.object({
method: z.literal('eth_getBlockTransactionCountByHash'),
params: z.array(z.any())
});
export const RcpEthGetBlockTransactionCountByNumber = z.object({
method: z.literal('eth_getBlockTransactionCountByNumber'),
params: z.array(z.any())
});
export const RpcEthGetCode = z.object({
method: z.literal('eth_getCode'),
params: z.array(z.any())
});
export const RpcEthGetFilter = z.object({
method: z.literal('eth_getFilterChanges'),
params: z.array(z.any())
});
export const RpcEthGetFilterLogs = z.object({
method: z.literal('eth_getFilterLogs'),
params: z.array(z.any())
});
export const RpcEthGetLogs = z.object({
method: z.literal('eth_getLogs'),
params: z.array(z.any())
});
export const RpcEthGetProof = z.object({
method: z.literal('eth_getProof'),
params: z.array(z.any())
});
export const RpcEthGetStorageAt = z.object({
method: z.literal('eth_getStorageAt'),
params: z.array(z.any())
});
export const RpcEthGetTransactionByBlockHashAndIndex = z.object({
method: z.literal('eth_getTransactionByBlockHashAndIndex'),
params: z.array(z.any())
});
export const RpcEthGetTransactionByBlockNumberAndIndex = z.object({
method: z.literal('eth_getTransactionByBlockNumberAndIndex'),
params: z.array(z.any())
});
export const RpcEthGetTransactionByHash = z.object({
method: z.literal('eth_getTransactionByHash'),
params: z.array(z.any())
});
export const RpcEthGetTransactionCount = z.object({
method: z.literal('eth_getTransactionCount'),
params: z.array(z.any())
});
export const RpcEthGetTransactionReceipt = z.object({
method: z.literal('eth_getTransactionReceipt'),
params: z.array(z.any())
});
export const RpcEthGetUncleCountByBlockHash = z.object({
method: z.literal('eth_getUncleCountByBlockHash'),
params: z.array(z.any())
});
export const RpcEthGetUncleCountByBlockNumber = z.object({
method: z.literal('eth_getUncleCountByBlockNumber'),
params: z.array(z.any())
});
export const RpcEthMaxPriorityFeePerGas = z.object({
method: z.literal('eth_maxPriorityFeePerGas')
});
export const RpcEthNewBlockFilter = z.object({
method: z.literal('eth_newBlockFilter')
});
export const RpcEthNewFilter = z.object({
method: z.literal('eth_newFilter'),
params: z.array(z.any())
});
export const RpcEthNewPendingTransactionFilter = z.object({
method: z.literal('eth_newPendingTransactionFilter')
});
export const RpcEthSendRawTransaction = z.object({
method: z.literal('eth_sendRawTransaction'),
params: z.array(z.any())
});
export const RpcEthSyncing = z.object({
method: z.literal('eth_syncing'),
params: z.array(z.any())
});
export const RpcUnistallFilter = z.object({
method: z.literal('eth_uninstallFilter'),
params: z.array(z.any())
});
export const RpcPersonalSignRequest = z.object({
method: z.literal('personal_sign'),
params: z.array(z.any())
});
export const RpcEthSignTypedDataV4 = z.object({
method: z.literal('eth_signTypedData_v4'),
params: z.array(z.any())
});
export const RpcEthSendTransactionRequest = z.object({
method: z.literal('eth_sendTransaction'),
params: z.array(z.any())
});
export const RpcSolanaSignMessageRequest = z.object({
method: z.literal('solana_signMessage'),
params: z.object({
message: z.string(),
pubkey: z.string()
})
});
export const RpcSolanaSignTransactionRequest = z.object({
method: z.literal('solana_signTransaction'),
params: z.object({
transaction: z.string()
})
});
export const RpcSolanaSignAllTransactionsRequest = z.object({
method: z.literal('solana_signAllTransactions'),
params: z.object({
transactions: z.array(z.string())
})
});
export const RpcSolanaSignAndSendTransactionRequest = z.object({
method: z.literal('solana_signAndSendTransaction'),
params: z.object({
transaction: z.string(),
options: z
.object({
skipPreflight: z.boolean().optional(),
preflightCommitment: z
.enum([
'processed',
'confirmed',
'finalized',
'recent',
'single',
'singleGossip',
'root',
'max'
])
.optional(),
maxRetries: z.number().optional(),
minContextSlot: z.number().optional()
})
.optional()
})
});
export const WalletSendCallsRequest = z.object({
method: z.literal('wallet_sendCalls'),
params: z.array(z.object({
chainId: z.string().or(z.number()).optional(),
from: z.string().optional(),
version: z.string().optional(),
capabilities: z.any().optional(),
calls: z.array(z.object({
to: z.string().startsWith('0x'),
data: z.string().startsWith('0x').optional(),
value: z.string().optional()
}))
}))
});
export const WalletGetCallsReceiptRequest = z.object({
method: z.literal('wallet_getCallsStatus'),
params: z.array(z.string())
});
export const WalletGetCapabilitiesRequest = z.object({
method: z.literal('wallet_getCapabilities')
});
export const WalletGrantPermissionsRequest = z.object({
method: z.literal('wallet_grantPermissions'),
params: z.array(z.any())
});
export const WalletRevokePermissionsRequest = z.object({
method: z.literal('wallet_revokePermissions'),
params: z.any()
});
export const WalletGetAssetsRequest = z.object({
method: z.literal('wallet_getAssets'),
params: z.any()
});
export const FrameSession = z.object({
token: z.string()
});
export const EventSchema = z.object({
id: z.string().optional()
});
export const W3mFrameSchema = {
appEvent: EventSchema.extend({
type: zType('APP_SWITCH_NETWORK'),
payload: AppSwitchNetworkRequest
})
.or(EventSchema.extend({
type: zType('APP_CONNECT_EMAIL'),
payload: AppConnectEmailRequest
}))
.or(EventSchema.extend({ type: zType('APP_CONNECT_DEVICE') }))
.or(EventSchema.extend({ type: zType('APP_CONNECT_OTP'), payload: AppConnectOtpRequest }))
.or(EventSchema.extend({
type: zType('APP_CONNECT_SOCIAL'),
payload: AppConnectSocialRequest
}))
.or(EventSchema.extend({ type: zType('APP_GET_FARCASTER_URI') }))
.or(EventSchema.extend({ type: zType('APP_CONNECT_FARCASTER') }))
.or(EventSchema.extend({
type: zType('APP_GET_USER'),
payload: z.optional(AppGetUserRequest)
}))
.or(EventSchema.extend({
type: zType('APP_GET_SOCIAL_REDIRECT_URI'),
payload: AppGetSocialRedirectUriRequest
}))
.or(EventSchema.extend({ type: zType('APP_SIGN_OUT') }))
.or(EventSchema.extend({
type: zType('APP_IS_CONNECTED'),
payload: z.optional(FrameSession)
}))
.or(EventSchema.extend({ type: zType('APP_GET_CHAIN_ID') }))
.or(EventSchema.extend({ type: zType('APP_GET_SMART_ACCOUNT_ENABLED_NETWORKS') }))
.or(EventSchema.extend({ type: zType('APP_INIT_SMART_ACCOUNT') }))
.or(EventSchema.extend({
type: zType('APP_SET_PREFERRED_ACCOUNT'),
payload: AppSetPreferredAccountRequest
}))
.or(EventSchema.extend({
type: zType('APP_RPC_REQUEST'),
payload: RpcPersonalSignRequest.or(WalletGetAssetsRequest)
.or(RpcEthAccountsRequest)
.or(RpcEthBlockNumber)
.or(RpcEthCall)
.or(RpcEthChainId)
.or(RpcEthEstimateGas)
.or(RpcEthFeeHistory)
.or(RpcEthGasPrice)
.or(RpcEthGetAccount)
.or(RpcEthGetBalance)
.or(RpcEthGetBlockyByHash)
.or(RpcEthGetBlockByNumber)
.or(RpcEthGetBlockReceipts)
.or(RcpEthGetBlockTransactionCountByHash)
.or(RcpEthGetBlockTransactionCountByNumber)
.or(RpcEthGetCode)
.or(RpcEthGetFilter)
.or(RpcEthGetFilterLogs)
.or(RpcEthGetLogs)
.or(RpcEthGetProof)
.or(RpcEthGetStorageAt)
.or(RpcEthGetTransactionByBlockHashAndIndex)
.or(RpcEthGetTransactionByBlockNumberAndIndex)
.or(RpcEthGetTransactionByHash)
.or(RpcEthGetTransactionCount)
.or(RpcEthGetTransactionReceipt)
.or(RpcEthGetUncleCountByBlockHash)
.or(RpcEthGetUncleCountByBlockNumber)
.or(RpcEthMaxPriorityFeePerGas)
.or(RpcEthNewBlockFilter)
.or(RpcEthNewFilter)
.or(RpcEthNewPendingTransactionFilter)
.or(RpcEthSendRawTransaction)
.or(RpcEthSyncing)
.or(RpcUnistallFilter)
.or(RpcPersonalSignRequest)
.or(RpcEthSignTypedDataV4)
.or(RpcEthSendTransactionRequest)
.or(RpcSolanaSignMessageRequest)
.or(RpcSolanaSignTransactionRequest)
.or(RpcSolanaSignAllTransactionsRequest)
.or(RpcSolanaSignAndSendTransactionRequest)
.or(WalletGetCallsReceiptRequest)
.or(WalletSendCallsRequest)
.or(WalletGetCapabilitiesRequest)
.or(WalletGrantPermissionsRequest)
.or(WalletRevokePermissionsRequest)
}))
.or(EventSchema.extend({ type: zType('APP_UPDATE_EMAIL'), payload: AppUpdateEmailRequest }))
.or(EventSchema.extend({
type: zType('APP_UPDATE_EMAIL_PRIMARY_OTP'),
payload: AppUpdateEmailPrimaryOtpRequest
}))
.or(EventSchema.extend({
type: zType('APP_UPDATE_EMAIL_SECONDARY_OTP'),
payload: AppUpdateEmailSecondaryOtpRequest
}))
.or(EventSchema.extend({ type: zType('APP_SYNC_THEME'), payload: AppSyncThemeRequest }))
.or(EventSchema.extend({
type: zType('APP_SYNC_DAPP_DATA'),
payload: AppSyncDappDataRequest
}))
.or(EventSchema.extend({
type: zType('APP_RELOAD')
})),
frameEvent: EventSchema.extend({ type: zType('FRAME_SWITCH_NETWORK_ERROR'), payload: zError })
.or(EventSchema.extend({
type: zType('FRAME_SWITCH_NETWORK_SUCCESS'),
payload: FrameSwitchNetworkResponse
}))
.or(EventSchema.extend({
type: zType('FRAME_CONNECT_EMAIL_SUCCESS'),
payload: FrameConnectEmailResponse
}))
.or(EventSchema.extend({ type: zType('FRAME_CONNECT_EMAIL_ERROR'), payload: zError }))
.or(EventSchema.extend({
type: zType('FRAME_GET_FARCASTER_URI_SUCCESS'),
payload: FrameGetFarcasterUriResponse
}))
.or(EventSchema.extend({ type: zType('FRAME_GET_FARCASTER_URI_ERROR'), payload: zError }))
.or(EventSchema.extend({
type: zType('FRAME_CONNECT_FARCASTER_SUCCESS'),
payload: FrameConnectFarcasterResponse
}))
.or(EventSchema.extend({ type: zType('FRAME_CONNECT_FARCASTER_ERROR'), payload: zError }))
.or(EventSchema.extend({ type: zType('FRAME_CONNECT_OTP_ERROR'), payload: zError }))
.or(EventSchema.extend({ type: zType('FRAME_CONNECT_OTP_SUCCESS') }))
.or(EventSchema.extend({ type: zType('FRAME_CONNECT_DEVICE_ERROR'), payload: zError }))
.or(EventSchema.extend({ type: zType('FRAME_CONNECT_DEVICE_SUCCESS') }))
.or(EventSchema.extend({
type: zType('FRAME_CONNECT_SOCIAL_SUCCESS'),
payload: FrameConnectSocialResponse
}))
.or(EventSchema.extend({
type: zType('FRAME_CONNECT_SOCIAL_ERROR'),
payload: zError
}))
.or(EventSchema.extend({ type: zType('FRAME_GET_USER_ERROR'), payload: zError }))
.or(EventSchema.extend({
type: zType('FRAME_GET_USER_SUCCESS'),
payload: FrameGetUserResponse
}))
.or(EventSchema.extend({
type: zType('FRAME_GET_SOCIAL_REDIRECT_URI_ERROR'),
payload: zError
}))
.or(EventSchema.extend({
type: zType('FRAME_GET_SOCIAL_REDIRECT_URI_SUCCESS'),
payload: FrameGetSocialRedirectUriResponse
}))
.or(EventSchema.extend({ type: zType('FRAME_SIGN_OUT_ERROR'), payload: zError }))
.or(EventSchema.extend({ type: zType('FRAME_SIGN_OUT_SUCCESS') }))
.or(EventSchema.extend({ type: zType('FRAME_IS_CONNECTED_ERROR'), payload: zError }))
.or(EventSchema.extend({
type: zType('FRAME_IS_CONNECTED_SUCCESS'),
payload: FrameIsConnectedResponse
}))
.or(EventSchema.extend({ type: zType('FRAME_GET_CHAIN_ID_ERROR'), payload: zError }))
.or(EventSchema.extend({
type: zType('FRAME_GET_CHAIN_ID_SUCCESS'),
payload: FrameGetChainIdResponse
}))
.or(EventSchema.extend({ type: zType('FRAME_RPC_REQUEST_ERROR'), payload: zError }))
.or(EventSchema.extend({ type: zType('FRAME_RPC_REQUEST_SUCCESS'), payload: RpcResponse }))
.or(EventSchema.extend({ type: zType('FRAME_SESSION_UPDATE'), payload: FrameSession }))
.or(EventSchema.extend({ type: zType('FRAME_UPDATE_EMAIL_ERROR'), payload: zError }))
.or(EventSchema.extend({
type: zType('FRAME_UPDATE_EMAIL_SUCCESS'),
payload: FrameUpdateEmailResponse
}))
.or(EventSchema.extend({
type: zType('FRAME_UPDATE_EMAIL_PRIMARY_OTP_ERROR'),
payload: zError
}))
.or(EventSchema.extend({ type: zType('FRAME_UPDATE_EMAIL_PRIMARY_OTP_SUCCESS') }))
.or(EventSchema.extend({
type: zType('FRAME_UPDATE_EMAIL_SECONDARY_OTP_ERROR'),
payload: zError
}))
.or(EventSchema.extend({
type: zType('FRAME_UPDATE_EMAIL_SECONDARY_OTP_SUCCESS'),
payload: FrameUpdateEmailSecondaryOtpResponse
}))
.or(EventSchema.extend({ type: zType('FRAME_SYNC_THEME_ERROR'), payload: zError }))
.or(EventSchema.extend({ type: zType('FRAME_SYNC_THEME_SUCCESS') }))
.or(EventSchema.extend({ type: zType('FRAME_SYNC_DAPP_DATA_ERROR'), payload: zError }))
.or(EventSchema.extend({ type: zType('FRAME_SYNC_DAPP_DATA_SUCCESS') }))
.or(EventSchema.extend({
type: zType('FRAME_GET_SMART_ACCOUNT_ENABLED_NETWORKS_SUCCESS'),
payload: FrameGetSmartAccountEnabledNetworksResponse
}))
.or(EventSchema.extend({
type: zType('FRAME_GET_SMART_ACCOUNT_ENABLED_NETWORKS_ERROR'),
payload: zError
}))
.or(EventSchema.extend({ type: zType('FRAME_INIT_SMART_ACCOUNT_ERROR'), payload: zError }))
.or(EventSchema.extend({
type: zType('FRAME_SET_PREFERRED_ACCOUNT_SUCCESS'),
payload: FrameSetPreferredAccountResponse
}))
.or(EventSchema.extend({
type: zType('FRAME_SET_PREFERRED_ACCOUNT_ERROR'),
payload: zError
}))
.or(EventSchema.extend({ type: zType('FRAME_READY'), payload: FrameReadyResponse }))
.or(EventSchema.extend({
type: zType('FRAME_RELOAD_ERROR'),
payload: zError
}))
.or(EventSchema.extend({ type: zType('FRAME_RELOAD_SUCCESS') }))
};
//# sourceMappingURL=W3mFrameSchema.js.map