@kanalabs/mirai
Version:
Mirai - Account Abstraction SDK (EVM + non-EVM)
168 lines (141 loc) • 10.9 kB
Markdown
# Mirai
> **Mirai** - Account Abstraction SDK (EVM + non-EVM)
## Installation
`npm i @kanalabs/mirai`
## Supported Networks
#### Mainnets:
- AptosMainnet
- mainnet (Ethereum)
- polygon
- optimism
- linea
- gnosis
- mantle
- avalanche
- base
- bsc
- klaytn
- scroll
- flare
- bifrost
#### Testnets:
- AptosTestnet
- bscTestnet
- KlaytnTestnet
- ScrollSepolia
- FuseSparknet
- goerli
- mumbai
- sepolia
- flareTestnet
- bifrostTestnet
## Available Properties in SDKGateway
| Properties | Description |
| --------------- | ------------------------------------------------------- |
| instances | Returns all initialized instances |
| currentNetwork | Returns the current default network |
| currentInstance | Returns the current default SDK instance |
| contractAddress | Returns KanaWallet address for initialized chains |
| walletProvider | Returns the wallet provider which used to init the sdk |
| activeNetworks | Returns available networks with their respective status |
## Available Methods in SDKGateway
| Methods | Description |
| --------------------------------------------------|--------------------------------------------------------|
| initialize(network?: NetworkNames) | To initialize the SDK instance specify a network,and |
| | and return the result of initialization. |
| getNativeBalance(network?: NetworkNames) | To get the native token balance of the smart wallet. |
| | Returns native token balance. |
| setCurrentInstance(network: NetworkNames) | To set the default SDK instance and retrieve the SDK |
| | instance associated with the specified network. |
| erc20(tokenAddress: string,network?: NetworkNames)| To get the ERC20 token instance for building ERC20 |
| | transactions. Returns the ERC20 contract instance. |
| erc721(collectionAddress: string, | To get the ERC721 collection instance for building |
| network?: NetworkNames) | ERC721 transactions.Returns the ERC721 contractinstance|
| erc1155(collectionAddress: string, | To get the ERC1155 collection instance for building |
| network?: NetworkNames) | ERC1155 transactions. Returns the ERC1155 contract
| | instance transactions.Returns the ERC721
| isNetworkActive(networkName: string): boolean | To check if the given network is available and active. |
| | Returns bool |
| | Example const isActive = isNetworkActive (networkName) |
| | transactions. Returns the ERC20 contract instance. |
| getProvider(network: NetworkNames) | To get the RPC Provider for the given network. |
| providers.JsonRpcProvider | Returns providers.JsonRpcProvider |
| | Example const provider = getProvider(networkName) |
| destroy(network: NetworkNames) | To destroy the SDK instance specifying a network for |
| | destruction, or destroying all instances if no network |
| | is provided. |
| | Example const provider = getProvider(networkName) |
| getAptosInstance(network: NetworkNames) | To get the RPC Provider for the given network. |
| | Retrieve the Aptos SDK instance |
## Available Methods in SDK
| Methods | Description |
| --------------------------------------------------|--------------------------------------------------------|
| getCounterFactualAddress(): Promise<string> | To get the KanaWallet address |
| signMessage(dto: SignMessageDto): Promise<string> | To sign a message |
| getNativeBalance(): Promise<string> | To get the native token balance of the wallet |
| getTokenBalance(tokenAddress: string) | To get the ERC20 token balance of the wallet |
| : Promise<string> | |
| addUserOpsToBatch(tx: UserOpsRequest) | To add transactions to the batch |
| : Promise<BatchUserOpsRequest> | |
| clearUserOpsFromBatch(): Promise<void> | To clear the transactions in the batch |
| estimate(gasDetails?: TransactionGasInfoForUserOp)| To estimate transactions added to the batch and get the|
| : Promise<UserOperationStruct> | fee data for the UserOp |
| send(userOp: UserOperationStruct): Promise<string>| To sign the UserOp and send it to the bundler .
| | Returns userOp |
| createSession(dto?: CreateSessionDto) | To sign create a session |
| : Promise<Session> | |
| getUserOpReceipt(userOpHash: string) | To get the transaction hash |
| getGasFee(): Promise<Gas> | To get the Gas data |
| destroy(): void | To destroy the instance |
## Helpers
### Available Properties in ERC20
| Properties | Description |
| ----------------- | ----------------------------------------------------------------- |
| name | Returns the name of the token |
| symbol | Returns the symbol (ticker) of the token. |
| decimals | Returns the number of decimal places that the token uses |
| totalSupply | Returns the total supply of the token in its smallest units. |
| balanceOf | Returns the token balance of a specific address (owner) |
| allowance | Returns the amount of tokens that the spender is allowed to spend |
| approve | Allows the owner to approve a spender to spend |
| decreaseAllowance | Decreases the amount of tokens that a spender is allowed to spend |
| increaseAllowance | Increases the amount of tokens that a spender is allowed |
| transfer | Allows the sender to transfer a certain amount of tokens |
| transferFrom | Allows the spender to transfer a certain amount of tokens |
### Available Properties in ERC721
| Properties | Description |
| ----------------- | ------------------------------------------------------------------ |
| name | Returns the name of the NFT contract |
| symbol | Returns the symbol (ticker) of the NFT contract |
| balanceOf | Returns the number of NFTs owned by a specific address (owner). |
| ownerof | Returns the address of the owner of a specific NFT identified |
| getApproved | Returns the address that has been approved to take ownership |
| isApprovedForAll | Returns whether a specific operator address is approved |
| tokenURI | Returns the metadata URI associated with a specific NFT identified |
| safeTransferFrom | Safely transfers the ownership of a specific NFT from the sender |
| transferFrom | Transfers the ownership of a specific NFT |
| approve | Approves another address (to) to take ownership of a specific NFT |
| setApprovalForAll | Sets or revokes operator status for an address to manage all NFTs |
### Available Properties in ERC1155
| Properties | Description |
| --------------------- | ---------------------------------------------------------------- |
| balanceOf | Returns the amount of tokens of token type id owned by account |
| balanceOfBatch | Returns the balances of multiple token IDs for multiple accounts |
| setApprovalForAll | Grants permission to operator to transfer tokens |
| isApprovedForAll | Returns true if operator is approved to transfer tokens. |
| safeTransferFrom | Safely transfers specific token type and quantity |
| safeBatchTransferFrom | Safely transfers multiple token types and quantities |
| uri | Returns the URI of that tokenId |
### Available Properties in DATASERVICE
| Properties | Description |
| --------------------- | ---------------------------------------------------------------- |
| getAccountBalances | Returns the account balances for the particular address |
| getTransaction | Returns the transaction history for the particular transactions |
| getNftsList | Returns the nfts list for the particular address |
### Available Properties in PAYMASTER
| Properties | Description |
| --------------------- | -------------------------------------------------------------------------|
| addWhitelist | To add a whitelist using the specified accountAddress and chain ID |
| checkWhitelist | To check a whitelist using the specified accountAddress and chain ID |
| depositWhitelist | To Deposit using the specified amount and chain ID |
| getSponsorBalance | To get a sponsor balance using the specified sponsorAddress and chain ID |