@rize-labs/banana-wallet-sdk-astar-test
Version:
Smart contract wallet sdk package by Banana Wallet
134 lines (133 loc) • 4.88 kB
TypeScript
import { ethers } from "ethers";
import { MyWalletApi } from "./MyWalletApi";
import { HttpRpcClient } from "@account-abstraction/sdk/dist/src/HttpRpcClient";
import { Chains } from "./Constants";
import { BananaSigner } from "./BananaSigner";
import { BananaCookie } from "./BananaCookie";
import { PublicKey, ClientConfig, UserCredentialObject, ChainConfig } from "./interfaces/Banana.interface";
import { Wallet } from "./BananaWallet";
import { Banana4337Provider } from "./Banana4337Provider";
export declare class Banana {
#private;
readonly chain: Chains;
Provider: ClientConfig;
SCWContract: ethers.Contract;
TouchIdSafeWalletContract: ethers.Contract;
accountApi: MyWalletApi;
httpRpcClient: HttpRpcClient;
publicKey: PublicKey;
bananaSigner: BananaSigner;
jsonRpcProvider: ethers.providers.JsonRpcProvider;
walletAddress: string;
bananaProvider: Banana4337Provider;
cookieObject: UserCredentialObject;
cookie: BananaCookie;
walletIdentifier: string;
jsonRpcProviderUrl: string;
addresses: ChainConfig;
network: Chains;
constructor(chain: Chains);
/**
* @method getTouchIdSafeWalletContractProxyFactory
* @params { Signer | JsonRpcProvider } signerOrProvider
* @returns { BananaAccountProxyFactory } TouchIdSafeWalletContractProxyFactory
* create factory contract instance for factory contract factory types.
*/
private getTouchIdSafeWalletContractProxyFactory;
/**
* @method setCookieAfterAddressCreation
* @params { string } walletIdentifier
* @returns none
* Set cookie to local and global storage after wallet creation.
*/
private setCookieAfterAddressCreation;
/**
* @method createSignerAndCookieObject
* @params { string } walletIdentifier
* @returns none
* Create cookie object and create secure enclave based transaction signer for user's wallet.
*/
private createSignerAndCookieObject;
getAddress(): string;
getUsernameRequestStatus(): boolean;
/**
* @method getBananaProvider
* @params none
* @returns { ERC4337EthersProvider } bananaProvider
* create ERC4337Provider instance of user's smart contract wallet. Used as BananaProvider.
*/
getBananaProvider: () => Promise<Banana4337Provider>;
/**
* @method getTouchIdSafeWalletContractInitializer
* @params none
* @returns { string } TouchIdSafeWalletContractInitializer
* create initializer which is callData for setupWithEntrypoint function
*/
private getTouchIdSafeWalletContractInitializer;
/**
* @method createWallet
* @param { string } walletIdentifier
* @returns
* sucess: returns { status: success, address: walletAddress }
* error: returns { status: error, address: "" }
* setup signers and provider along with it create walletmetadata corresponding to the new wallet request.
*/
createWallet: () => Promise<Wallet>;
/**
* @method connectWallet
* @param { string } walletIdentifier
* @returns
* sucess: returns { status: success, address: walletAddress }
* error: returns { status: error, address: "" }
* setup providers and signers at the sdk end in case user's already has a wallet created before.
*/
connectWallet: (walletIdentifier: string) => Promise<Wallet>;
/**
* @method resetWallet
* @param none
* @returns { string } walletName
* method to remove current wallet metadata from browser
*/
resetWallet: () => {
success: boolean;
error?: undefined;
} | {
success: boolean;
error: unknown;
};
/**
* @method getWalletName
* @param none
* @returns { string } walletName
* method to getWalletName stored in user's cookie storage against bananaUser key
*/
getWalletName: () => any;
/**
* @method getOwnerAddress
* @param { string } walletName
* @returns { string } eoaAddress
* method to return the hardware address for a specific walletName.
*/
getEOAAddress: () => Promise<any[]>;
/**
* @method verify
* @param { string } signaure, { string } messageSigned, { string } eoaAddress
* @returns { boolean } isVerified
* method to verify message against signature
*/
verifySignature: (signature: string, messageSigned: string, eoaAddress: any) => Promise<boolean>;
/**
* @method postCookieChecks
* @param { string } walletIdentifier
* @returns none
* handles cookie update
*/
private postCookieChecks;
/**
* @method isWalletNameUnique
* @param { string } walletName
* @returns { boolean } isWalletNameTaken
* check isWalletName user is giving is already taken or not
*/
isWalletNameUnique: (walletName: string) => Promise<boolean>;
}