Documentation Index
Fetch the complete documentation index at: https://docs.dynamic.xyz/docs/llms.txt
Use this file to discover all available pages before exploring further.
Wallet Access
userWallets
Get the current list of user wallets (synchronous).
val wallets: List<BaseWallet> = sdk.wallets.userWallets
Example
val wallets = sdk.wallets.userWallets
wallets.forEach { wallet ->
println("${wallet.address} (${wallet.chain})")
}
userWalletsChanges
Observe wallet list changes (reactive flow).
val userWalletsChanges: StateFlow<List<BaseWallet>>
Example
viewModelScope.launch {
sdk.wallets.userWalletsChanges.collect { wallets ->
// Handle wallet changes
_wallets.value = wallets
}
}
Balance Operations
getBalance
Get the balance for a specific wallet.
suspend fun getBalance(wallet: BaseWallet): String
Parameters
- wallet (BaseWallet) - The wallet to check balance for
Returns
- String - Balance as a string (in native token units)
Example
viewModelScope.launch {
try {
val balance = sdk.wallets.getBalance(wallet)
println("Balance: $balance")
} catch (e: Exception) {
println("Failed to get balance: ${e.message}")
}
}
Network Operations
getNetwork
Get the current network for a wallet.
suspend fun getNetwork(wallet: BaseWallet): GenericNetwork
Parameters
- wallet (BaseWallet) - The wallet to get network for
Returns
- GenericNetwork - The current network
Example
viewModelScope.launch {
try {
val network = sdk.wallets.getNetwork(wallet)
println("Network: ${network.name}, Chain ID: ${network.chainId}")
} catch (e: Exception) {
println("Failed to get network: ${e.message}")
}
}
switchNetwork
Switch a wallet to a different network.
suspend fun switchNetwork(wallet: BaseWallet, network: GenericNetwork)
Parameters
- wallet (BaseWallet) - The wallet to switch networks for
- network (GenericNetwork) - The target network
Example
viewModelScope.launch {
try {
val polygon = sdk.networks.evm.first { it.chainId == 137 }
sdk.wallets.switchNetwork(wallet, polygon)
println("Switched to ${polygon.name}")
} catch (e: Exception) {
println("Failed to switch network: ${e.message}")
}
}
Message Signing
signMessage
Sign a message with a wallet.
suspend fun signMessage(wallet: BaseWallet, message: String): String
Parameters
- wallet (BaseWallet) - The wallet to sign with
- message (String) - The message to sign
Returns
Example
viewModelScope.launch {
try {
val signature = sdk.wallets.signMessage(wallet, "Hello!")
println("Signature: $signature")
} catch (e: Exception) {
println("Failed to sign: ${e.message}")
}
}
Typed Data Signing (EIP-712)
signTypedData
Sign typed data (EIP-712) with a wallet.
suspend fun signTypedData(wallet: BaseWallet, typedDataJson: String): String
Parameters
- wallet (BaseWallet) - The wallet to sign with
- typedDataJson (String) - The typed data as a JSON string
Returns
Example
val typedData = """
{
"types": {
"EIP712Domain": [
{"name": "name", "type": "string"},
{"name": "chainId", "type": "uint256"}
],
"Person": [
{"name": "name", "type": "string"}
]
},
"primaryType": "Person",
"domain": {
"name": "My App",
"chainId": 1
},
"message": {
"name": "Alice"
}
}
""".trimIndent()
viewModelScope.launch {
try {
val signature = sdk.wallets.signTypedData(wallet, typedData)
println("Signature: $signature")
} catch (e: Exception) {
println("Failed to sign: ${e.message}")
}
}
Signature Verification
verifySignature
Verify a signature against a message and wallet.
suspend fun verifySignature(
wallet: BaseWallet,
message: String,
signature: String
): Boolean
Parameters
- wallet (BaseWallet) - The wallet that signed the message
- message (String) - The original message
- signature (String) - The signature to verify
Returns
- Boolean -
true if signature is valid, false otherwise
Example
viewModelScope.launch {
try {
val message = "Hello!"
val signature = sdk.wallets.signMessage(wallet, message)
val isValid = sdk.wallets.verifySignature(wallet, message, signature)
println("Signature is ${if (isValid) "valid" else "invalid"}")
} catch (e: Exception) {
println("Verification failed: ${e.message}")
}
}
Primary Wallet Management
setPrimary
Set a wallet as the primary wallet for the user.
suspend fun setPrimary(walletId: String)
Parameters
- walletId (String) - The ID of the wallet to set as primary
Example
viewModelScope.launch {
try {
val walletId = wallet.id ?: throw Exception("Wallet ID is null")
sdk.wallets.setPrimary(walletId)
println("Set wallet as primary")
} catch (e: Exception) {
println("Failed to set primary: ${e.message}")
}
}