UNPKG

soul-wallet-lib

Version:
113 lines (112 loc) 4.8 kB
import { UserOperation } from "../entity/userOperation"; import { ethers } from "ethers"; import { NumberLike } from "../defines/numberLike"; /** * guardian class * @class Guardian */ export declare class Guardian { private _singletonFactory; /** * Creates an instance of Guardian. * @param {string} singletonFactory singleton factory address * @constructor * @returns {Guardian} */ constructor(singletonFactory: string); private getInitializeData; private getGuardianCode; private getPackedInitCode; /** * sign a user operation with guardian signatures * @param {Number} validAfter valid after (block time) * @param {Number} validUntil valid until (block time) * @param {guardianSignature[]} signatures guardian signatures * @param {string} guardianLogicAddress guardian logic contract address * @param {string[]} guardians guardian addresses * @param {Number} threshold threshold * @param {string} salt salt * @param {string} [guardianAddress] guardian contract address,if provided will check if equal to the calculated guardian address * @returns {string} signature */ packGuardiansSign(validAfter: number, validUntil: number, signature: guardianSignature[], guardianLogicAddress: string, guardians: string[], threshold: number, salt: string, guardianAddress?: string): string; /** * sign a user operation with guardian signatures * * @param {string} guardianAddress * @param {guardianSignature[]} signature * @param {string} [initCode='0x'] * @param {number} [validAfter=0] * @param {number} [validUntil=0] * @return {*} {string} * @memberof Guardian */ packGuardiansSignByInitCode(guardianAddress: string, signature: guardianSignature[], initCode?: string, validAfter?: number, validUntil?: number): string; /** * calculate Guardian address and deploy code (initCode) * @param {String} guardianLogicAddress guardian logic contract address * @param {String[]} guardians guardian addresses * @param {Number} threshold threshold * @param {String} salt salt * @returns {String,String} address is the guardian contract address,initCode is the deploy code */ calculateGuardianAndInitCode(guardianLogicAddress: string, guardians: string[], threshold: number, salt: string): { address: string; initCode: string; }; private walletContract; /** * get guardian info * @param {ethers.providers.BaseProvider} etherProvider * @param {String} walletAddress wallet address * @param {Number} [now=0] current timestamp ( 0: use current timestamp, >0:unix timestamp ) * @returns {Promise<{currentGuardian:String,guardianDelay:Number}>} (currentGuardian, guardianDelay) */ getGuardian(etherProvider: ethers.providers.BaseProvider, walletAddress: string, now?: number): Promise<{ currentGuardian: string; nextGuardian: string; nextGuardianActivateTime: any; guardianDelay: number; } | null>; private _guardian; /** * set guardian * @param {String} walletAddress wallet address * @param {String} guardian new guardian address * @param {Number} nonce nonce * @param {String} paymasterAddress paymaster address * @param {Number} maxFeePerGas max fee per gas * @param {Number} maxPriorityFeePerGas max priority fee per gas * @returns {Promise<UserOperation>} userOperation */ setGuardian(walletAddress: string, guardian: string, nonce: NumberLike, paymasterAddress: string, maxFeePerGas: NumberLike, maxPriorityFeePerGas: NumberLike): UserOperation; /** * transfer owner * @param {String} walletAddress wallet address * @param {Number} nonce nonce * @param {String} paymasterAddress paymaster address * @param {Number} maxFeePerGas max fee per gas * @param {Number} maxPriorityFeePerGas max priority fee per gas * @param {String} newOwner new owner address * @returns {Promise<UserOperation>} userOperation */ transferOwner(walletAddress: string, nonce: NumberLike, paymasterAddress: string, maxFeePerGas: NumberLike, maxPriorityFeePerGas: NumberLike, newOwner: string): UserOperation; /** * pack guardian signature * @param {guardianSignature[]} signature * @returns {String} packed signature */ guardianSign(signature: guardianSignature[]): string; } /** * guardian signature * @interface guardianSignature * @property {boolean} contract is contract wallet * @property {string} address guardian address * @property {string} signature guardian signature */ export interface guardianSignature { contract: boolean; address: string; signature: string; }