Getting Started
Learn how to detect, connect, and interact with Sui using OneKey’s provider.
OneKey implements the Sui Wallet Standard, ensuring compatibility with all Sui dApps.
Provider Detection
// Detect OneKey Sui provider
const provider = window.$onekey?.sui
if (!provider) {
throw new Error('OneKey Sui provider not detected')
}Check Permissions
// Check if already connected
const hasPermission = await provider.hasPermissions()
if (hasPermission) {
const accounts = await provider.getAccounts()
console.log('Connected accounts:', accounts)
}Request Connection
// Request permissions to connect
const result = await provider.requestPermissions()
if (result) {
const accounts = await provider.getAccounts()
console.log('Connected:', accounts[0].address)
}Get Accounts
const accounts = await provider.getAccounts()
accounts.forEach(account => {
console.log({
address: account.address, // Sui address
publicKey: account.publicKey, // Public key bytes
chains: account.chains, // Supported chains
features: account.features, // Supported features
})
})Get Active Chain
const chain = await provider.getActiveChain()
console.log('Active chain:', chain) // e.g., 'sui:mainnet'Check Connection Status
const isConnected = provider.isConnected()
console.log('Connected:', isConnected)Disconnect
await provider.disconnect()Event Listeners
Listen for Account Changes
provider.onAccountChange((account) => {
if (account) {
console.log('Account changed:', account.address)
} else {
console.log('Disconnected')
}
})Listen for Network Changes
provider.onNetworkChange((network) => {
console.log('Network changed:', network)
})Using with Sui Wallet Kit
For React applications, use the official Sui Wallet Kit:
npm install @mysten/dapp-kit @mysten/sui.js @tanstack/react-queryimport { SuiClientProvider, WalletProvider } from '@mysten/dapp-kit'
import { getFullnodeUrl } from '@mysten/sui.js/client'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
const queryClient = new QueryClient()
const networks = {
mainnet: { url: getFullnodeUrl('mainnet') },
testnet: { url: getFullnodeUrl('testnet') },
}
function App() {
return (
<QueryClientProvider client={queryClient}>
<SuiClientProvider networks={networks} defaultNetwork="mainnet">
<WalletProvider>
<YourApp />
</WalletProvider>
</SuiClientProvider>
</QueryClientProvider>
)
}OneKey is automatically detected through the Sui Wallet Standard.
Last updated on