React 에서 편리하게 사용할 수 있도록 <WalletProvider>useWallet() 을 제공하지만,

좀 더 낮은 단계의 class WalletController 를 사용할 수 있습니다.

모든 API는 RxJs 를 기반으로 작성되어 있습니다.

const controller = new WalletControllert({
	defaultNetwork, // NetworkInfo
	walletConnectChainIds, // Record<number, NetworkInfo>
	createReadonlyWalletSession, // () => Promise<ReadonlyWalletSession | null>
	connectorOpts, // IWalletConnectOptions | undefined
	pushServerOpts, // IPushServerOptions | undefined
})

let connectTypes, status, network, wallets;

const subscription1 = controller.availableConnectTypes().subscribe({
	next: (nextConnectTypes) => {
		connectTypes = nextConnectType
		// TODO Do something...
	}
})

const subscription2 = controller.status().subscribe({
	next: (nextStatus) => {
		status = nextStatus
		// TODO Do something...
	}
})

const subscription3 = controller.network().subscribe({
	next: (nextNetwork) => {
		network = nextNetwork
		// TODO Do something...
	}
})

const subscription4 = controller.wallets().subscribe({
	next: (nextWallets) => {
		wallets = nextWallets
		// TODO Do something...
	}
})

controller.recheckStatus()

controller.connect(ConnectType.CHROME_EXTENSION)
controller.connect(ConnectType.WALLETCONNECT)
controller.connect(ConnectType.READONLY)

controller.install(ConnectType.CHROME_EXTENSION)

controller.disconnect()

function destroyObservables() {
	subscription1.unsubscribe()
	subscription2.unsubscribe()
	subscription3.unsubscribe()
	subscription4.unsubscribe()
}

controller.post({
	...YOUR_TX // CreateTxOptions of terra.js
})