SDK Types & Enums

This page documents all types, interfaces, and enums exported by the DogeOS SDK. For hooks and components, see Hooks & Components.

Table of Contents


Configuration Types

WalletConnectKitConfig

Main configuration interface for initializing the SDK.

interface WalletConnectKitConfig {
clientId?: string
connectors?: WalletConfig[]
chains?: Partial<Record<ChainType, EvmChain[] | any[]>>
walletConnectConfig?: WalletConnectConfig
}

Fields:

FieldTypeRequiredDescription
clientIdstringYesSDK identifier from sdk.dogeos.com/register
connectorsWalletConfig[]NoCustom wallet configurations
chainsRecord<ChainType, Chain[]>NoSupported chains by type
walletConnectConfigWalletConnectConfigNoWalletConnect v2 settings

Used in: WalletConnectProvider

Example:

import { type WalletConnectKitConfig } from "@dogeos/dogeos-sdk"
import { mainnet, base } from "viem/chains"
const config: WalletConnectKitConfig = {
clientId: "YOUR_CLIENT_ID",
chains: {
evm: [mainnet, base],
},
}

WalletConnectConfig

WalletConnect v2 protocol configuration.

type WalletConnectConfig = {
projectId: string
metadata: {
name: string
description: string
url: string
icons: string[]
}
relayUrl?: string
}

Used in: WalletConnectKitConfig.walletConnectConfig

See also: WalletConnect v2 docs


Hook Return Types

These interfaces describe the return values from SDK hooks. Use them for TypeScript type annotations when needed.

UseWalletConnectReturn

Return type for useWalletConnect() hook.

interface UseWalletConnectReturn {
isOpenModal: boolean
isConnected: boolean
isConnecting: boolean
error: string
connect: (variables: ConnectVariables) => Promise<ConnectData>
disconnect: () => Promise<void>
openModal: () => void
closeModal: () => void
}

Fields:

FieldTypeDescription
isOpenModalbooleanWhether the connection modal is visible
isConnectedbooleanWhether a wallet is currently connected
isConnectingbooleanWhether a connection attempt is in progress
errorstringError message from last failed connection
connectfunctionProgrammatically connect to a wallet
disconnectfunctionDisconnect the current wallet
openModalfunctionOpen the connection modal
closeModalfunctionClose the connection modal

Used in: useWalletConnect()

UseAccountReturn

Return type for useAccount() hook.

interface UseAccountReturn {
address: string
balance?: string
chainType?: ChainType
chainId?: string
currentWallet?: Connector | null
currentProvider?: any
switchChain: (options: SwitchChainOptions) => Promise<boolean>
signMessage?: (params: SignMessageParams) => Promise<string | Uint8Array>
signInWithWallet: (params?: SignInParams) => Promise<string | Uint8Array>
}

Fields:

FieldTypeDescription
addressstringConnected wallet address
balancestring | undefinedCurrent balance (if available)
chainTypeChainType | undefinedActive chain type (e.g., "evm")
chainIdstring | undefinedActive chain ID (hex string for EVM)
currentWalletConnector | nullConnected wallet metadata
currentProvideranyEIP-1193 compatible provider for EVM RPC calls
switchChainfunctionSwitch to a different chain. Returns true on success
signMessagefunction | undefinedSign a message. Returns signature as string or Uint8Array
signInWithWalletfunctionSign-in with wallet (SIWE). Returns token/signature

Used in: useAccount()

Note: Functions like signMessage may be undefined when no wallet is connected. Always check availability before calling.

UseEmbeddedWalletReturn

Return type for useEmbeddedWallet() hook.

interface UseEmbeddedWalletReturn {
wallet: any | undefined
isAvailable: boolean
message: string | null
connectedInfo: ConnectData | undefined
isLoading: boolean
}

Fields:

FieldTypeDescription
walletany | undefinedEmbedded wallet instance
isAvailablebooleanWhether embedded wallet is available
messagestring | nullStatus or error message
connectedInfoConnectData | undefinedConnection data when connected
isLoadingbooleanWhether wallet is loading

Used in: useEmbeddedWallet()


Connection Types

ConnectVariables

Parameters for the connect() function from useWalletConnect.

interface ConnectVariables {
wallet: Connector
chainType: ChainType
chainId?: string
}

Fields:

FieldTypeRequiredDescription
walletConnectorYesWallet connector instance
chainTypeChainTypeYesChain type (e.g., "evm")
chainIdstringNoTarget chain ID (hex string for EVM)

Used in: useWalletConnect().connect()

See also: Connector, ChainType

ConnectData

Return value from connect() and available in useEmbeddedWallet().connectedInfo.

interface ConnectData {
address: string
chainId: string
chainType: ChainType
}

Fields:

FieldTypeDescription
addressstringConnected wallet address
chainIdstringChain ID the wallet connected to
chainTypeChainTypeType of chain connected

Used in:

ConnectErrorType

Type alias for connection errors.

type ConnectErrorType = Error

Used in: Error handling for connection failures.

SwitchChainOptions

Parameters for the switchChain() function from useAccount.

type SwitchChainOptions = {
chainType: ChainType
chainInfo: Chain
}

Fields:

FieldTypeDescription
chainTypeChainTypeTarget chain type (e.g., "evm")
chainInfoChainChain configuration object

Used in: useAccount().switchChain()

Note: switchChain() returns Promise<boolean> - true on success, false on failure.

Example:

import { useAccount } from "@dogeos/dogeos-sdk"
import { base } from "viem/chains"
const { switchChain } = useAccount()
const success = await switchChain({
chainType: "evm",
chainInfo: base,
})

Chain Types

Chain

Chain configuration object, compatible with viem’s Chain type.

type Chain = {
id: number
name: string
nativeCurrency: {
name: string
symbol: string
decimals: number
}
rpcUrls: {
default: {
http: string[]
}
}
blockExplorers?: {
default: {
name: string
url: string
}
}
testnet?: boolean
chainInfo?: ChainInfo
}

Used in:

Note: For EVM chains, import pre-configured chains from viem/chains:

import { mainnet, base, sepolia } from "viem/chains"

See also: viem chains documentation

ChainInfo

Additional metadata for chain display in the SDK UI.

type ChainInfo = {
icon: any
name: string
}

Used in: Chain.chainInfo

ChainType

String literal type for supported chain families.

type ChainType = "evm" | "solana" | "aptos" | "dogecoin"

Use string literals directly in your code:

// Correct
connect({ wallet, chainType: "evm" })
// Also works but unnecessary
connect({ wallet, chainType: ChainTypeEnum.EVM })

Wallet Types

Connector

Wallet connector instance containing provider information. From @tomo-inc/wallet-adaptor-base.

interface Connector {
info: WalletInfo
isInstalled?: boolean
recommoned?: boolean
providers: {
evm?: ConnectorProvider
solana?: ConnectorProvider
aptos?: ConnectorProvider
dogecoin?: ConnectorProvider
}
}
interface ConnectorProvider {
provider: any
protocol: ProviderProtocol
}

Fields:

FieldTypeDescription
infoWalletInfoWallet metadata (name, icon, links)
isInstalledboolean | undefinedWhether wallet is installed
recommonedboolean | undefinedWhether wallet is recommended
providersobjectChain-specific provider instances

Used in:

WalletInfo

Wallet metadata interface. Part of the Connector.

interface WalletInfo {
uuid: string
name: string
sameNames?: string[]
namespace?: string
icon: string
iconBackground?: string
rdns?: string
isWalletConnect?: boolean
deeplink?: string
mobile?: {
getUri?: (uri: string) => string
getDeeplink?: (dappUrl?: string, chainId?: number) => string | Promise<string>
}
links: {
homepage?: string
ios_install?: string
android_install?: string
chrome_install?: string
mobile?: string
qrCode?: string
edge?: string
firefox?: string
opera?: string
safari?: string
macos?: string
windows?: string
linux?: string
desktop?: string
}
}

Used in: Connector.info

WalletConfig

Configuration type for custom wallet connectors. From @tomo-inc/wallet-adaptor-base.

type WalletConfig = {
id: string
name: string
rdns?: string
namespace?: string
flag?: string
solana?: { namespace?: string; flag?: string }
aptos?: { namespace?: string; flag?: string }
dogecoin?: { namespace?: string; flag?: string }
icon: string
iconAccent?: string
iconBackground: string
installed?: boolean
mobileUserAgent?: string
deeplink?: string
downloadUrls?: {
android?: string
ios?: string
mobile?: string
qrCode?: string
chrome?: string
edge?: string
firefox?: string
opera?: string
safari?: string
browserExtension?: string
macos?: string
windows?: string
linux?: string
desktop?: string
}
mobile?: {
getUri?: (uri: string) => string
getDeeplink?: (dappUrl?: string, chainId?: number) => string | Promise<string>
}
}

Used in: WalletConnectKitConfig.connectors

Note: WalletConfig is for SDK configuration, while WalletProvider (below) is runtime wallet info from useAccount().currentWallet.

WalletProvider

Runtime wallet information returned by the SDK.

interface WalletProvider {
uuid: string
name: string
namespace?: string
icon: string
iconBackground?: string
rdns?: string
links: {
homepage?: string
ios_install?: string
android_install?: string
chrome_install?: string
mobile?: string
qrCode?: string
edge?: string
firefox?: string
opera?: string
safari?: string
macos?: string
windows?: string
linux?: string
desktop?: string
}
}

Used in: Runtime wallet metadata


Function Parameter Types

SignMessageParams

Parameters for the signMessage() function from useAccount.

type SignMessageParams = {
message: string
nonce?: string
}

Fields:

FieldTypeRequiredDescription
messagestringYesMessage to sign
noncestringNoOptional nonce for replay protection

Used in: useAccount().signMessage()

Example:

const { signMessage } = useAccount()
const signature = await signMessage?.({
message: "Welcome to DogeOS!",
nonce: Math.random().toString(36).slice(2),
})

SignInParams

Parameters for the signInWithWallet() function. Follows the Sign-In with Ethereum (SIWE) format. From @tomo-inc/wallet-adaptor-base.

interface SignInParams {
scheme?: "https" | "http"
domain: string
uri?: string
chainId?: string
address?: string
statement: string
version?: string
nonce: string
issuedAt?: string
resources?: `https://${string}`[]
}

Fields:

FieldTypeRequiredDescription
domainstringYesApp domain (e.g., window.location.host)
statementstringYesHuman-readable statement
noncestringYesUnique nonce for this request
scheme"https" | "http"NoURI scheme
uristringNoURI for the sign-in request
chainIdstringNoChain ID for the request
addressstringNoAddress to sign with
versionstringNoSIWE version
issuedAtstringNoISO timestamp
resourcesstring[]NoResources the user is signing into

Used in: useAccount().signInWithWallet()

See also: EIP-4361: Sign-In with Ethereum

Example:

const { signInWithWallet } = useAccount()
const token = await signInWithWallet({
domain: window.location.host,
statement: "Sign in to DogeOS",
nonce: Math.random().toString(36).slice(2),
issuedAt: new Date().toISOString(),
})

Enums

ChainTypeEnum

Enum of supported chain types.

enum ChainTypeEnum {
All = "all",
EVM = "evm",
Solana = "solana",
Aptos = "aptos",
}

Note: Use string literals ("evm") instead of the enum in most cases. The ChainType alias excludes "all".

ModalView

Enum of modal/embedded wallet view states.

enum ModalView {
Loading = "LOADING",
Logged = "LOGGED",
WalletList = "WALLET_LIST",
WalletSearch = "WALLET_SEARCH",
WalletSelectProviders = "WALLET_SELECT_PROVIDERS",
WalletInstallGuide = "WALLET_INSTALL_GUIDE",
Connecting = "CONNECTING",
Error = "ERROR",
Account = "ACCOUNT",
SelectChains = "SELECT_CHAINS",
ChangeNetwork = "CHANGE_NETWORK",
SignInWallet = "SIGN_IN_WALLET",
WalletConnect = "WALLET_CONNECT",
UnsupportChain = "UNSUPPORT_CHAIN",
SocialLogin = "SOCIAL_LOGIN",
MyDogeSocialLogin = "MYDOGE_SOCIAL_LOGIN",
}

Used in: WalletConnectEmbed view prop

ViewPurpose
LoadingInitial loading state
LoggedPost-login landing
WalletListWallet selection list
WalletSearchWallet search UI
WalletSelectProvidersProvider selection for a wallet
WalletInstallGuideInstall instructions
ConnectingConnection in progress
ErrorError state
AccountConnected account view
SelectChainsChain selection list
ChangeNetworkNetwork switch prompt
SignInWalletSign-in with wallet flow
WalletConnectWalletConnect QR/session view
UnsupportChainUnsupported network state
SocialLoginGeneric social login
MyDogeSocialLoginMyDoge social login

ProdTypeEnum

Internal product variant identifier for the DogeOS ecosystem.

enum ProdTypeEnum {
Tomo = "tomo",
MyDoge = "mydoge",
WLFI = "wlfi",
}

Note: This is an internal type. Most applications will not need to use this directly.


Type Relationships

Understanding how types connect helps you use the SDK effectively.

Hook Return Flow

useWalletConnect()
└─ UseWalletConnectReturn
├─ connect(ConnectVariables) → Promise<ConnectData>
│ └─ ConnectVariables { wallet: Connector, chainType, chainId? }
├─ disconnect() → Promise<void>
├─ openModal() / closeModal()
└─ isOpenModal, isConnected, isConnecting, error
useAccount()
└─ UseAccountReturn
├─ address, balance, chainType, chainId
├─ currentWallet: Connector
├─ currentProvider: EIP-1193 Provider
├─ switchChain(SwitchChainOptions) → Promise<boolean>
│ └─ SwitchChainOptions { chainType, chainInfo: Chain }
├─ signMessage(SignMessageParams) → Promise<string | Uint8Array>
└─ signInWithWallet(SignInParams) → Promise<string | Uint8Array>
useEmbeddedWallet()
└─ UseEmbeddedWalletReturn
├─ wallet, isAvailable, isLoading
├─ message: string | null
└─ connectedInfo: ConnectData

Configuration to Runtime

WalletConnectKitConfig (configuration)
├─ clientId → SDK authentication
├─ connectors: WalletConfig[] → Available wallets
├─ chains: Record<ChainType, Chain[]> → Supported networks
└─ walletConnectConfig → WalletConnect protocol
↓ (at runtime)
useAccount() returns:
├─ currentWallet: Connector (from connectors)
└─ chainId, chainType (from chains)

Quick Reference

Import Cheat Sheet

What you needImport statement
Configuration typeimport type { WalletConnectKitConfig } from "@dogeos/dogeos-sdk"
Chain typeimport type { Chain } from "@dogeos/dogeos-sdk"
Pre-defined chainsimport { mainnet, base } from "viem/chains"
Modal view enumimport { ModalView } from "@dogeos/dogeos-sdk"
Connection typesimport type { ConnectVariables, ConnectData } from "@dogeos/dogeos-sdk"

Common Patterns

Basic configuration:

import type { WalletConnectKitConfig } from "@dogeos/dogeos-sdk"
import { mainnet, base } from "viem/chains"
const config: WalletConnectKitConfig = {
clientId: "YOUR_CLIENT_ID",
chains: { evm: [mainnet, base] },
}

Programmatic connection:

const { connect } = useWalletConnect()
const data = await connect({
wallet: myConnector,
chainType: "evm",
chainId: "0x1",
})
console.log("Connected:", data.address)

Sign a message:

const { signMessage } = useAccount()
const signature = await signMessage?.({
message: "Hello, DogeOS!",
nonce: crypto.randomUUID(),
})

Switch chains:

import { base } from "viem/chains"
const { switchChain } = useAccount()
const success = await switchChain({
chainType: "evm",
chainInfo: base,
})

EVM provider calls:

const { currentProvider, address } = useAccount()
if (currentProvider) {
const balance = await currentProvider.request({
method: "eth_getBalance",
params: [address, "latest"],
})
}