@xrpl-wallet-kit/adapter-otsu
v0.1.3
Published
Otsu Wallet adapter for XRPL Wallet Kit - MV3 browser extension wallet.
Maintainers
Readme
@xrpl-wallet-kit/adapter-otsu
Otsu Wallet adapter for XRPL Wallet Kit.
Otsu is an MV3 browser extension wallet for the XRP Ledger. It supports mainnet, testnet, and devnet, and provides granular dApp permission scopes plus transaction simulation with risk scanning before user approval.
- Extension inject:
window.xrplwithisOtsu = true - Networks: mainnet · testnet · devnet
- Capabilities: connect · disconnect · signMessage · signTransaction · signAndSubmit
Installation
npm install @xrpl-wallet-kit/adapter-otsuUsage
With createWalletKit (recommended)
import { createWalletKit } from "@xrpl-wallet-kit/client";
import { createOtsuAdapter } from "@xrpl-wallet-kit/adapter-otsu";
const kit = createWalletKit({
adapters: [createOtsuAdapter()],
modal: true,
connectButton: "#connect-btn",
});With WalletManager directly
import { WalletManager } from "@xrpl-wallet-kit/core";
import { createOtsuAdapter } from "@xrpl-wallet-kit/adapter-otsu";
const manager = new WalletManager({
adapters: [createOtsuAdapter()],
});
const result = await manager.connect("otsu");
console.log("Connected:", result.account.address);Auto-reconnect
const kit = createWalletKit({
adapters: [createOtsuAdapter()],
autoReconnect: true,
storage: "localStorage",
});restoreSession checks provider.isConnected() before attempting to restore; a disconnected or locked extension will cleanly return null.
Provider injection
The adapter reads window.xrpl.isOtsu. No npm SDK dependency is required.
// Type declaration included in the package:
declare global {
interface Window {
xrpl?: OtsuProvider;
}
}Testing
Pass a mock provider via options.provider:
import { OtsuAdapter, OtsuProvider } from "@xrpl-wallet-kit/adapter-otsu";
import { assertWalletAdapter } from "@xrpl-wallet-kit/core";
const mock: OtsuProvider = {
isOtsu: true,
isConnected: () => false,
connect: async () => ({ address: "rTest..." }),
disconnect: async () => {},
getAddress: async () => ({ address: "rTest..." }),
getNetwork: async () => ({ network: "testnet" }),
signTransaction: async (tx) => ({ tx_blob: "BLOB", hash: "HASH" }),
signAndSubmit: async (tx) => ({ tx_blob: "BLOB", hash: "HASH" }),
signMessage: async (msg) => ({ signature: "SIG" }),
on: () => {},
off: () => {},
};
const adapter = new OtsuAdapter({ provider: mock });
assertWalletAdapter(adapter); // throws if contract is violatedWire-up (coder leader)
Note: This package is a standalone adapter. Wiring it into
@xrpl-wallet-kit/clientand@xrpl-wallet-kit/browseris the responsibility of the project maintainer.
Steps:
- Add
{ "path": "./packages/adapters/otsu" }to roottsconfig.jsonreferences. - Import
createOtsuAdapterinpackages/client/src/index.tsand add it tocreateDefaultAdapters(). - Add
"otsu"to theWalletKitAdapterIdunion inclient/src/index.ts. - Run
npm run build && npm run typecheckfrom the repo root.
Wallet homepage
https://github.com/RomThpt/otsu-wallet
License
MIT
