-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtypes.ts
45 lines (37 loc) · 1.55 KB
/
types.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import { GetAccountParameter, SmartContractAccount, UserOperationOverrides } from '@alchemy/aa-core';
import { Hash, Hex, type Abi, type Address, type Client, type GetContractReturnType, type PublicClient } from 'viem';
export type Plugin<TAbi extends Abi = Abi> = {
meta: {
name: string;
version: string;
addresses: Record<number, Address>;
};
getContract: <C extends Client>(client: C, address?: Address) => GetContractReturnType<TAbi, PublicClient, Address>;
};
export type FunctionId = Hex;
// Treats the first 20 bytes as an address, and the last byte as a identifier.
export type FunctionReference = Hex;
export type ExecutionFunctionConfig = {
plugin: Address;
userOpValidationFunction: FunctionReference;
runtimeValidationFunction: FunctionReference;
};
export type ExecutionHooks = {
preExecHook: FunctionReference;
postExecHook: FunctionReference;
};
export type PreValidationHooks = [readonly FunctionReference[], readonly FunctionReference[]];
export type InstallPluginParams<TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined> =
{
pluginAddress: Address;
manifestHash?: Hash;
pluginInitData?: Hash;
dependencies?: FunctionReference[];
} & { overrides?: UserOperationOverrides } & GetAccountParameter<TAccount>;
export type UninstallPluginParams<
TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined
> = {
pluginAddress: Address;
config?: Hash;
pluginUninstallData?: Hash;
} & { overrides?: UserOperationOverrides } & GetAccountParameter<TAccount>;