@bananahq/banana-sdk
Version:
Smart contract wallet sdk package by Banana Wallet
68 lines (67 loc) • 2.83 kB
TypeScript
import { BigNumber, BigNumberish } from "ethers";
import { Signer } from "@ethersproject/abstract-signer";
import { BaseApiParams } from "@account-abstraction/sdk/dist/src/BaseAccountAPI";
import { SimpleAccountAPI } from "@account-abstraction/sdk";
import { BananaAccount } from "./types";
import { TransactionDetailsForUserOp } from './interfaces/Banana.interface';
/**
* constructor params, added no top of base params:
* @param owner the signer object for the wallet owner
* @param factoryAddress address of contract "factory" to deploy new contracts (not needed if wallet already deployed)
* @param index nonce value used when creating multiple wallets for the same owner
*/
export interface MyWalletApiParams extends BaseApiParams {
owner: Signer;
factoryAddress?: string;
index?: number;
_singletonTouchIdSafeAddress: string;
_ownerAddress: string;
_fallBackHandler: string;
_saltNonce: string;
}
/**
* An implementation of the BaseWalletAPI using the MyWallet contract.
* - contract deployer gets "entrypoint", "owner" addresses and "index" nonce
* - owner signs requests using normal "Ethereum Signed Message" (ether's signer.signMessage())
* - nonce method is "nonce()"
* - execute method is "execFromEntryPoint()"
*/
export declare class MyWalletApi extends SimpleAccountAPI {
EllipticCurveAddress: string;
singletonTouchIdSafeAddress: string;
ownerAddress: string;
fallBackHandleraddress: string;
saltNonce: string;
constructor(params: MyWalletApiParams);
/**
*
* @param requestId - the has that your wallet must sign
* @returns the string that will used in userOp.signature & will be send to validateUserOp in your wallet's function
*/
signRequestId(requestId: string): Promise<string>;
_getAccountContract(): Promise<BananaAccount>;
getTouchIdSafeWalletContractInitializer: () => string;
/**
* @method getTouchIdSafeWalletContractInitCode
* @params none
* @returns { string } TouchIdSafeWalletContractInitCode
* create initCode for TouchIdSafeWalletContract
*
* return the value to put into the "initCode" field, if the account is not yet deployed.
* this value holds the "factory" address, followed by this account's information
*/
getAccountInitCode(): Promise<string>;
getNonce(): Promise<BigNumber>;
/**
* encode a method call from entryPoint to our contract
* @param target
* @param value
* @param data
*/
encodeExecute(target: string, value: BigNumberish, data: string): Promise<string>;
encodeBatchExecute(info: any): Promise<string>;
encodeUserOpCallDataAndGasLimitForBatchedTransaction(detailsForUserOp: TransactionDetailsForUserOp): Promise<{
callData: string;
callGasLimit: BigNumber;
}>;
}