// Basic capabilities check
do {
let capabilities = try await portal.getWalletCapabilities()
<strong>
</strong> // Check capabilities for Ethereum mainnet
if let ethCapabilities = capabilities["eip155:1"] {
if ethCapabilities.paymasterService.supported {
// Handle supported paymaster
print("Paymaster service available")
proceedWithGaslessTransaction()
} else {
// Handle unsupported paymaster
print("Regular transaction required")
proceedWithRegularTransaction()
}
}
// Check capabilities for multiple chains
let chainIds = [
"eip155:1", // Ethereum
"eip155:137", // Polygon
"eip155:56" // BSC
]
for chainId in chainIds {
if let chainCapabilities = capabilities[chainId] {
print("\(chainId) Capabilities:")
print("Paymaster supported: \(chainCapabilities.paymasterService.supported)")
}
}
} catch {
print("Failed to fetch capabilities: \(error)")
}
// Feature-gated transaction handling
do {
let capabilities = try await portal.getWalletCapabilities()
guard let chainCapabilities = capabilities["eip155:1"],
chainCapabilities.paymasterService.supported else {
throw WalletError.paymasterNotSupported
}
// Proceed with paymaster-dependent transaction
await processGaslessTransaction()
} catch {
// Handle unsupported feature
switch error {
case WalletError.paymasterNotSupported:
print("Paymaster service not available")
await requestGasFromUser()
default:
print("Unexpected error: \(error)")
}
}