init static method
Future<EtherspotWallet>
init(
- EthPrivateKey credentials,
- String rpcUrl, {
- IPresetBuilderOpts? opts,
Initializes a EtherspotWallet object and returns it.
Implementation
static Future<EtherspotWallet> init(
EthPrivateKey credentials,
String rpcUrl, {
IPresetBuilderOpts? opts,
}) async {
final instance = EtherspotWallet(credentials, rpcUrl, opts: opts);
final List<String> inputArr = [
instance.etherspotWalletFactory.self.address.toString(),
bytesToHex(
instance.etherspotWalletFactory.self
.function('createAccount')
.encodeCall(
[
credentials.address,
opts?.salt ?? BigInt.zero,
],
),
include0x: true,
),
];
instance.initCode =
'0x${inputArr.map((hexStr) => hexStr.toString().substring(2)).join('')}';
final smartContractAddress =
await instance.etherspotWalletFactory.getAddress(
(
index: opts?.salt ?? BigInt.zero,
owner: credentials.address,
),
);
instance.proxy = etherspot_wallet_impl.EtherspotWallet(
address: smartContractAddress,
client: instance.etherspotWalletFactory.client,
);
final baseInstance = instance
.useDefaults({
'sender': instance.proxy.self.address.toString(),
'signature': bytesToHex(
credentials.signPersonalMessageToUint8List(
Uint8List.fromList('0xdead'.codeUnits),
),
include0x: true,
),
})
.useMiddleware(instance.resolveAccount)
.useMiddleware(getGasPrice(
instance.etherspotWalletFactory.client,
));
final withPM = opts?.paymasterMiddleware != null
? baseInstance.useMiddleware(
opts?.paymasterMiddleware as UserOperationMiddlewareFn)
: baseInstance.useMiddleware(
estimateUserOperationGas(
instance.etherspotWalletFactory.client,
),
);
return withPM.useMiddleware(signUserOpHash(instance.credentials))
as EtherspotWallet;
}