UNPKG

@zbyteio/zbyte-wallet-sdk-core

Version:

Core functionality of zbyte wallet, currently is getting consumed by zbyte-wallet-ui-sdk

124 lines (107 loc) 4.26 kB
## zbyte Wallet core SDK SDK contains all the core functionality related to zbyte wallet, and can be supported on browser(client side code). ### Installation - Authenticate to npm github registry ```shell npm login --registry=https://npm.pkg.github.com --scope=@zbyteio ``` - It will prompt for the below details - Username - Use the github username - Password - Use github PAT (Personal Access token) - EmailId - Use github email Id - Then install the lib use npm below npm command ```shell npm install @zbyteio/zbyte-wallet-sdk-core ``` ### Documentation - zbyte core wallet manages the user account creation and worked with **DPLAT** token. - User can see the current **DPLAT balance and transfer** it to another account. - Supported blockchain's are **polygon**, **avalanche c-chain** **hedera** and **base-chain**. - All the key-pairs are managed by the other third-party libraries which we termed as **external key provider(EKP)**. - Currently supported **external key provider(EKP) are Web3auth and Metamask**. - Since **DPLAT** Token is **not a L1 token**, zbyte wallet defined some mandatory interfaces which are mentioned below: ```typescript interface IWalletProvider { /** * @description Use to connect the wallet provider. */ connect(): Promise<any>; /** * @description Use to checked whether wallet provider connected or not. */ isConnected(): boolean; /** * @description fetch the wallet provider which internally set the provider * @param networkConfig Blockchain Network parameters */ getKeyProvider(networkConfig: NetworkConfig): Promise<IKeyProvider>; } interface IKeyProvider { /** * @description Name of the key provider */ readonly serviceProviderName: string; /** * @description Add Network to the given key provider * @param networkConfig Network Information of the blockchain */ addChain(networkConfig: NetworkConfig): Promise<void>; /** * @description Switch default network to the given key provider, * switchChain only supported on the added chain. * @param chainId chainId in hex string format e.g 0x89(137) */ switchChain(chainId: string): Promise<void>; getProvider(): any; } ``` - Then below are some important apis to interact with wallet: - **IsConnected()** - Check whether wallet is connected to underneath key provider like web3auth or metamask. - **Connect()** - Connect to underneath key provider. - **SignTypedData(txnMessage: string, chainId: number)** - Sign the [EIP-712](https://eips.ethereum.org/EIPS/eip-712) transaction. - Inputs: - _txnMessage_: Serialized EIP-712 message - _chainId_: blockchain id which need the signature - **BatchSignTypedData(txnBatch: UnsignedBatchTx): Promise<OperationSign[]>;** - Its used when we need multiple transaction to be signed. - **GetAddress()** - Return the blockchain address for the given user. - **GetTokenBalance(address: string)** - Provide the zbyte token present in the given user's address. - Input: - _address_: User's blockchain address ### Usage - Please refer the below code for consuming the wallet sdk: ```typescript const web3Auth = new Web3AuthProvider(); const metamask = new MetaMaskProvider(); const walletProvider: IWalletProvider = web3Auth || metamask; const wallet = new WalletCore(walletProvider, getBlockchainNetwork(CHAIN_ID_MATIC_TESTNET)); // For using web3auth which is the default and preferred provider // requires extra authentication function wallet.injectAuthVerifier({ clientId: string; domain: string; typeOfLogin?: LOGIN_TYPE; verifier: string; accessToken: string; tokenExpiry?: number; typeOfToken?: string; }); if (!wallet.isConnected()) { console.log(await wallet.connect() .then((result) => { console.log("initialized") return result; }) .catch(e => console.error(e))); } const userAddress = await wallet.getAddress(); const dplatBalance = await wallet.getTokenBalance(userAddress); ```