@pimlico/mock-paymaster 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/_cjs/helpers/erc20-utils.js +6 -17
  3. package/_cjs/helpers/erc20-utils.js.map +1 -1
  4. package/_cjs/helpers/schema.js +7 -7
  5. package/_cjs/helpers/schema.js.map +1 -1
  6. package/_cjs/index.js +5 -6
  7. package/_cjs/index.js.map +1 -1
  8. package/_cjs/relay.js +15 -7
  9. package/_cjs/relay.js.map +1 -1
  10. package/_cjs/setup.js +118 -0
  11. package/_cjs/setup.js.map +1 -0
  12. package/_cjs/singletonPaymasters.js +1 -64
  13. package/_cjs/singletonPaymasters.js.map +1 -1
  14. package/_esm/helpers/erc20-utils.js +4 -14
  15. package/_esm/helpers/erc20-utils.js.map +1 -1
  16. package/_esm/helpers/schema.js +7 -7
  17. package/_esm/helpers/schema.js.map +1 -1
  18. package/_esm/index.js +3 -5
  19. package/_esm/index.js.map +1 -1
  20. package/_esm/relay.js +21 -9
  21. package/_esm/relay.js.map +1 -1
  22. package/_esm/setup.js +120 -0
  23. package/_esm/setup.js.map +1 -0
  24. package/_esm/singletonPaymasters.js +3 -70
  25. package/_esm/singletonPaymasters.js.map +1 -1
  26. package/_types/helpers/erc20-utils.d.ts +2 -1
  27. package/_types/helpers/erc20-utils.d.ts.map +1 -1
  28. package/_types/helpers/schema.d.ts +569 -569
  29. package/_types/helpers/schema.d.ts.map +1 -1
  30. package/_types/index.d.ts +1 -2
  31. package/_types/index.d.ts.map +1 -1
  32. package/_types/relay.d.ts.map +1 -1
  33. package/_types/setup.d.ts +11 -0
  34. package/_types/setup.d.ts.map +1 -0
  35. package/_types/singletonPaymasters.d.ts +1 -5
  36. package/_types/singletonPaymasters.d.ts.map +1 -1
  37. package/helpers/erc20-utils.ts +4 -17
  38. package/helpers/schema.ts +7 -7
  39. package/index.ts +3 -9
  40. package/package.json +5 -10
  41. package/relay.ts +26 -14
  42. package/setup.ts +163 -0
  43. package/singletonPaymasters.ts +3 -94
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../helpers/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,KAAK,KAAK,IAAI,QAAQ,EAAE,MAAM,KAAK,CAAA;AAE/C,oBAAY,gBAAgB;IACxB,aAAa,SAAS;IACtB,mBAAmB,SAAS;IAC5B,qBAAqB,SAAS;CACjC;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBAC/B,GAAG,CAAC,EAAE,MAAM;CAO3B;AAED,qBAAa,QAAS,SAAQ,KAAK;IAI3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO;gBAFtB,GAAG,EAAE,MAAM,EACF,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,IAAI,GAAE,OAAmB;CAIzC;AAKD,eAAO,MAAM,aAAa,kDAGc,CAAA;AAExC,eAAO,MAAM,eAAe,qLAiBQ,CAAA;AAEpC,eAAO,MAAM,aAAa,kDAGuB,CAAA;AAuBjD,QAAA,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0B9B,CAAA;AAEN,QAAA,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyC9B,CAAA;AAEN,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAMnB,CAAA;AAEb,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;EAOb,CAAA;AAEb,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8DAG7C,CAAA;AA8FF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAYzB,CAAA;AAEN,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAYzC,CAAA;AAEN,eAAO,MAAM,2BAA2B;;;;;;iPAMtC,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAC7E,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAC7E,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,aAAa,CAAC,CAAA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../helpers/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,KAAK,KAAK,IAAI,QAAQ,EAAE,MAAM,KAAK,CAAA;AAE/C,oBAAY,gBAAgB;IACxB,aAAa,SAAS;IACtB,mBAAmB,SAAS;IAC5B,qBAAqB,SAAS;CACjC;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBAC/B,GAAG,CAAC,EAAE,MAAM;CAO3B;AAED,qBAAa,QAAS,SAAQ,KAAK;IAI3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO;gBAFtB,GAAG,EAAE,MAAM,EACF,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,IAAI,GAAE,OAAmB;CAIzC;AAKD,eAAO,MAAM,aAAa,kDAGc,CAAA;AAExC,eAAO,MAAM,eAAe,qLAiBN,CAAA;AAEtB,eAAO,MAAM,aAAa,kDAGuB,CAAA;AAuBjD,QAAA,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0B9B,CAAA;AAEN,QAAA,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyC9B,CAAA;AAEN,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAMnB,CAAA;AAEb,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;EAOb,CAAA;AAEb,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8DAG7C,CAAA;AA8FF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAYzB,CAAA;AAEN,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAYzC,CAAA;AAEN,eAAO,MAAM,2BAA2B;;;;;;iPAMtC,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAC7E,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAC7E,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,aAAa,CAAC,CAAA"}
package/_types/index.d.ts CHANGED
@@ -1,9 +1,8 @@
1
- import { erc20Address, sudoMintTokens } from "./helpers/erc20-utils.js";
2
1
  export declare const paymaster: import("prool").DefineInstanceReturnType<{}, {
3
2
  anvilRpc: string;
4
3
  port: number;
5
4
  altoRpc: string;
6
5
  host?: string;
7
6
  }>;
8
- export { erc20Address, sudoMintTokens };
7
+ export { erc20Address, sudoMintTokens } from "./helpers/erc20-utils.js";
9
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,YAAY,EACZ,cAAc,EACjB,MAAM,0BAA0B,CAAA;AAKjC,eAAO,MAAM,SAAS;cAMH,MAAM;UAAQ,MAAM;aAAW,MAAM;WAAS,MAAM;EA8CtE,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,SAAS;cAMH,MAAM;UAAQ,MAAM;aAAW,MAAM;WAAS,MAAM;EA6CtE,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../relay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,EAEH,KAAK,OAAO,EACZ,KAAK,OAAO,EAEZ,KAAK,KAAK,EAGV,KAAK,SAAS,EACd,KAAK,YAAY,EAGpB,MAAM,MAAM,CAAA;AA2Ub,eAAO,MAAM,gBAAgB,GAAI,wCAI9B;IACC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;CAC3D,MACiB,SAAS,cAAc,EAAE,QAAQ,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgD9D,CAAA"}
1
+ {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../relay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,EAEH,KAAK,OAAO,EACZ,KAAK,OAAO,EAEZ,KAAK,KAAK,EAGV,KAAK,SAAS,EACd,KAAK,YAAY,EAGpB,MAAM,MAAM,CAAA;AAuVb,eAAO,MAAM,gBAAgB,GAAI,wCAI9B;IACC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;CAC3D,MACiB,SAAS,cAAc,EAAE,QAAQ,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgD9D,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { type Address } from "viem";
2
+ export declare const deployPaymasters: ({ anvilRpc, paymasterSigner }: {
3
+ anvilRpc: string;
4
+ paymasterSigner: Address;
5
+ }) => Promise<void>;
6
+ export declare const deployErc20Token: (anvilRpc: string) => Promise<void>;
7
+ export declare const setup: ({ anvilRpc, paymasterSigner }: {
8
+ anvilRpc: string;
9
+ paymasterSigner: Address;
10
+ }) => Promise<void>;
11
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAmC,MAAM,MAAM,CAAA;AAuBpE,eAAO,MAAM,gBAAgB,GAAU,+BAGpC;IACC,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,OAAO,CAAA;CAC3B,kBA0GA,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,UAAU,MAAM,kBAWtD,CAAA;AAED,eAAO,MAAM,KAAK,GAAU,+BAGzB;IACC,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,OAAO,CAAA;CAC3B,kBAMA,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { type Account, type Address, type Chain, type Hex, type PublicClient, type Transport, type WalletClient } from "viem";
2
2
  import { type UserOperation } from "viem/account-abstraction";
3
- import { type PaymasterMode } from "./helpers/utils.js";
3
+ import type { PaymasterMode } from "./helpers/utils.js";
4
4
  export declare const getDummyPaymasterData: ({ is06, paymaster, paymasterMode }: {
5
5
  is06: boolean;
6
6
  paymaster: Address;
@@ -26,8 +26,4 @@ export declare const getSignedPaymasterData: ({ publicClient, signer, userOp, pa
26
26
  paymasterData: `0x${string}`;
27
27
  paymasterAndData?: undefined;
28
28
  }>;
29
- export declare const deployPaymasters: ({ anvilRpc, paymasterSigner }: {
30
- anvilRpc: string;
31
- paymasterSigner: Address;
32
- }) => Promise<void>;
33
29
  //# sourceMappingURL=singletonPaymasters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"singletonPaymasters.d.ts","sourceRoot":"","sources":["../singletonPaymasters.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,YAAY,EAMpB,MAAM,MAAM,CAAA;AACb,OAAO,EACH,KAAK,aAAa,EAErB,MAAM,0BAA0B,CAAA;AAgBjC,OAAO,EAAE,KAAK,aAAa,EAAmB,MAAM,oBAAoB,CAAA;AAExE,eAAO,MAAM,qBAAqB,GAAI,oCAInC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,aAAa,CAAA;CAAE,KAChE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,GAAG,CAAA;CAAE,GAC1C;IAAE,gBAAgB,EAAE,GAAG,CAAA;CAoE5B,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAU,4DAM1C;IACC,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IAC/C,MAAM,EAAE,aAAa,CAAA;IACrB,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,aAAa,CAAA;CAC/B;;;;;;;;EAqHA,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,+BAGpC;IACC,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,OAAO,CAAA;CAC3B,kBAwEA,CAAA"}
1
+ {"version":3,"file":"singletonPaymasters.d.ts","sourceRoot":"","sources":["../singletonPaymasters.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,YAAY,EAKpB,MAAM,MAAM,CAAA;AACb,OAAO,EACH,KAAK,aAAa,EAErB,MAAM,0BAA0B,CAAA;AAMjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,eAAO,MAAM,qBAAqB,GAAI,oCAInC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,aAAa,CAAA;CAAE,KAChE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,GAAG,CAAA;CAAE,GAC1C;IAAE,gBAAgB,EAAE,GAAG,CAAA;CAoE5B,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAU,4DAM1C;IACC,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IAC/C,MAAM,EAAE,aAAa,CAAA;IACrB,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,aAAa,CAAA;CAC/B;;;;;;;;EAqHA,CAAA"}
@@ -19,12 +19,12 @@ import {
19
19
  import { privateKeyToAccount } from "viem/accounts"
20
20
  import { getChain, getPublicClient } from "./utils.js"
21
21
 
22
- const erc20Bytecode = concat([
22
+ export const erc20Bytecode = concat([
23
23
  "0x60a060405234801561001057600080fd5b50604051610ff0380380610ff083398101604081905261002f9161022c565b6040518060400160405280600981526020016805465737445524332360bc1b8152506040518060400160405280600381526020016205432360ec1b815250816003908161007c919061034d565b506004610089828261034d565b5050506100a63369d3c21bcecceda10000006100b160201b60201c565b60ff166080526104a3565b6001600160a01b0382166100e457600060405163ec442f0560e01b81526004016100db9190610430565b60405180910390fd5b6100f0600083836100f4565b5050565b6001600160a01b03831661011f5780600260008282546101149190610454565b9091555061017e9050565b6001600160a01b0383166000908152602081905260409020548181101561015f5783818360405163391434e360e21b81526004016100db9392919061046d565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661019a576002805482900390556101b9565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101fc9190610495565b60405180910390a3505050565b60ff8116811461021857600080fd5b50565b805161022681610209565b92915050565b60006020828403121561024157610241600080fd5b600061024d848461021b565b949350505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b60028104600182168061029557607f821691505b6020821081036102a7576102a761026b565b50919050565b60006102266102b98381565b90565b6102c5836102ad565b815460001960089490940293841b1916921b91909117905550565b60006102ed8184846102bc565b505050565b818110156100f0576103056000826102e0565b6001016102f2565b601f8211156102ed576000818152602090206020601f850104810160208510156103345750805b6103466020601f8601048301826102f2565b5050505050565b81516001600160401b0381111561036657610366610255565b6103708254610281565b61037b82828561030d565b6020601f8311600181146103af57600084156103975750858201515b600019600886021c1981166002860217865550610408565b600085815260208120601f198616915b828110156103df57888501518255602094850194600190920191016103bf565b868310156103fb5784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b60006001600160a01b038216610226565b61042a81610410565b82525050565b602081016102268284610421565b634e487b7160e01b600052601160045260246000fd5b808201808211156102265761022661043e565b8061042a565b6060810161047b8286610421565b6104886020830185610467565b61024d6040830184610467565b602081016102268284610467565b608051610b326104be60003960006101650152610b326000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063313ce56711610081578063a9059cbb1161005b578063a9059cbb146101cf578063dd62ed3e146101e2578063fb4dcefa1461022857600080fd5b8063313ce5671461016357806370a082311461019157806395d89b41146101c757600080fd5b806318160ddd116100b257806318160ddd1461012c57806323b872dd1461013d5780632d688ca81461015057600080fd5b806305ea5c22146100d957806306fdde03146100ee578063095ea7b31461010c575b600080fd5b6100ec6100e7366004610868565b61023b565b005b6100f661024b565b604051610103919061092c565b60405180910390f35b61011f61011a366004610944565b6102dd565b604051610103919061098b565b6002545b604051610103919061099f565b61011f61014b366004610868565b6102f7565b6100ec61015e366004610944565b61031b565b7f000000000000000000000000000000000000000000000000000000000000000060405161010391906109b6565b61013061019f3660046109c4565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100f6610329565b61011f6101dd366004610944565b610338565b6101306101f03660046109ed565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6100ec6102363660046109ed565b610346565b61024683838361037c565b505050565b60606003805461025a90610a4f565b80601f016020809104026020016040519081016040528092919081815260200182805461028690610a4f565b80156102d35780601f106102a8576101008083540402835291602001916102d3565b820191906000526020600020905b8154815290600101906020018083116102b657829003601f168201915b5050505050905090565b6000336102eb81858561037c565b60019150505b92915050565b600033610305858285610389565b610310858585610441565b506001949350505050565b61032582826104ec565b5050565b60606004805461025a90610a4f565b6000336102eb818585610441565b61032582826103778573ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610441565b6102468383836001610548565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043b578181101561042c578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161042393929190610a84565b60405180910390fd5b61043b84848484036000610548565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166104915760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff82166104e15760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b61024683838361068e565b73ffffffffffffffffffffffffffffffffffffffff821661053c5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b6103256000838361068e565b73ffffffffffffffffffffffffffffffffffffffff84166105985760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff83166105e85760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561043b578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610680919061099f565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff83166106c65780600260008282546106bb9190610ae9565b909155506107589050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561072c578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161042393929190610a84565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610781576002805482900390556107ad565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161080a919061099f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102f1565b61083e81610817565b811461084957600080fd5b50565b80356102f181610835565b8061083e565b80356102f181610857565b60008060006060848603121561088057610880600080fd5b600061088c868661084c565b935050602061089d8682870161084c565b92505060406108ae8682870161085d565b9150509250925092565b60005b838110156108d35781810151838201526020016108bb565b50506000910152565b60006108e6825190565b8084526020840193506108fd8185602086016108b8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920192915050565b6020808252810161093d81846108dc565b9392505050565b6000806040838503121561095a5761095a600080fd5b6000610966858561084c565b92505060206109778582860161085d565b9150509250929050565b8015155b82525050565b602081016102f18284610981565b80610985565b602081016102f18284610999565b60ff8116610985565b602081016102f182846109ad565b6000602082840312156109d9576109d9600080fd5b60006109e5848461084c565b949350505050565b60008060408385031215610a0357610a03600080fd5b6000610a0f858561084c565b92505060206109778582860161084c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600281046001821680610a6357607f821691505b602082108103610a7557610a75610a20565b50919050565b61098581610817565b60608101610a928286610a7b565b610a9f6020830185610999565b6109e56040830184610999565b602081016102f18284610a7b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156102f1576102f1610aba56fea2646970667358221220d40f68e247510ec8b7876d327ac47b949de248d0626aaf2670151c5e84ee6b4a64736f6c634300081a0033",
24
24
  pad(toHex(18n)) // constructor args (token_decimals)
25
25
  ])
26
26
 
27
- const create2Salt =
27
+ export const create2Salt =
28
28
  "0x0000000000000000000000000000000000000000000000000000000000000000"
29
29
 
30
30
  export const getPaymasterUtilityWallet = async (
@@ -38,8 +38,8 @@ export const getPaymasterUtilityWallet = async (
38
38
  const publicClient = await getPublicClient(anvilRpc)
39
39
  const balance = await publicClient.getBalance({ address: account.address })
40
40
 
41
- // If no balance, set it to 1000 ETH
42
- if (balance === 0n) {
41
+ // Ensure paymaster deployer has enough balance
42
+ if (balance < parseEther("1000")) {
43
43
  // Create test client for setting balance
44
44
  const testClient = createTestClient({
45
45
  mode: "anvil",
@@ -62,19 +62,6 @@ export const getPaymasterUtilityWallet = async (
62
62
  return walletClient
63
63
  }
64
64
 
65
- export const deployErc20Token = async (anvilRpc: string) => {
66
- const publicClient = await getPublicClient(anvilRpc)
67
-
68
- if ((await publicClient.getCode({ address: erc20Address })) === undefined) {
69
- const walletClient = await getPaymasterUtilityWallet(anvilRpc)
70
-
71
- await walletClient.sendTransaction({
72
- to: "0x4e59b44847b379578588920ca78fbf26c0b4956c",
73
- data: concat([create2Salt, erc20Bytecode])
74
- })
75
- }
76
- }
77
-
78
65
  export const tokenBalanceOf = async (holder: Address, anvilRpc: string) => {
79
66
  const publicClient = await getPublicClient(anvilRpc)
80
67
 
package/helpers/schema.ts CHANGED
@@ -53,7 +53,7 @@ export const hexNumberSchema = z
53
53
  })
54
54
  }
55
55
  })
56
- .transform((val) => BigInt(val))
56
+ .transform(BigInt)
57
57
 
58
58
  export const hexDataSchema = z
59
59
  .string()
@@ -63,21 +63,21 @@ export const hexDataSchema = z
63
63
  const signedAuthorizationSchema = z.union([
64
64
  z.object({
65
65
  contractAddress: addressSchema,
66
- chainId: hexNumberSchema.transform((val) => Number(val)),
67
- nonce: hexNumberSchema.transform((val) => Number(val)),
66
+ chainId: hexNumberSchema.transform(Number),
67
+ nonce: hexNumberSchema.transform(Number),
68
68
  r: hexDataSchema.transform((val) => val as Hex),
69
69
  s: hexDataSchema.transform((val) => val as Hex),
70
70
  v: hexNumberSchema.optional(),
71
- yParity: hexNumberSchema.transform((val) => Number(val))
71
+ yParity: hexNumberSchema.transform(Number)
72
72
  }),
73
73
  z.object({
74
74
  address: addressSchema,
75
- chainId: hexNumberSchema.transform((val) => Number(val)),
76
- nonce: hexNumberSchema.transform((val) => Number(val)),
75
+ chainId: hexNumberSchema.transform(Number),
76
+ nonce: hexNumberSchema.transform(Number),
77
77
  r: hexDataSchema.transform((val) => val as Hex),
78
78
  s: hexDataSchema.transform((val) => val as Hex),
79
79
  v: hexNumberSchema.optional(),
80
- yParity: hexNumberSchema.transform((val) => Number(val))
80
+ yParity: hexNumberSchema.transform(Number)
81
81
  })
82
82
  ])
83
83
 
package/index.ts CHANGED
@@ -3,14 +3,9 @@ import Fastify from "fastify"
3
3
  import { defineInstance } from "prool"
4
4
  import { http, createWalletClient } from "viem"
5
5
  import { privateKeyToAccount } from "viem/accounts"
6
- import {
7
- deployErc20Token,
8
- erc20Address,
9
- sudoMintTokens
10
- } from "./helpers/erc20-utils.js"
11
6
  import { getChain } from "./helpers/utils.js"
12
7
  import { createRpcHandler } from "./relay.js"
13
- import { deployPaymasters } from "./singletonPaymasters.js"
8
+ import { setup } from "./setup.js"
14
9
 
15
10
  export const paymaster = defineInstance(
16
11
  ({
@@ -35,11 +30,10 @@ export const paymaster = defineInstance(
35
30
  transport: http(anvilRpc)
36
31
  })
37
32
 
38
- await deployPaymasters({
33
+ await setup({
39
34
  anvilRpc,
40
35
  paymasterSigner: paymasterSigner.account.address
41
36
  })
42
- await deployErc20Token(anvilRpc)
43
37
 
44
38
  app.register(cors, {
45
39
  origin: "*",
@@ -66,4 +60,4 @@ export const paymaster = defineInstance(
66
60
  }
67
61
  )
68
62
 
69
- export { erc20Address, sudoMintTokens }
63
+ export { erc20Address, sudoMintTokens } from "./helpers/erc20-utils.js"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pimlico/mock-paymaster",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "author": "Pimlico",
5
5
  "homepage": "https://docs.pimlico.io/permissionless",
6
6
  "repository": "github:pimlicolabs/permissionless.js",
@@ -11,13 +11,7 @@
11
11
  "type": "module",
12
12
  "sideEffects": false,
13
13
  "description": "A utility library that allows you to create a mock-paymaster instance with Prool",
14
- "keywords": [
15
- "ethereum",
16
- "erc-4337",
17
- "eip-4337",
18
- "paymaster",
19
- "prool"
20
- ],
14
+ "keywords": ["ethereum", "erc-4337", "eip-4337", "paymaster", "prool"],
21
15
  "license": "MIT",
22
16
  "exports": {
23
17
  ".": {
@@ -28,11 +22,12 @@
28
22
  },
29
23
  "peerDependencies": {
30
24
  "viem": "^2.28.1",
31
- "prool": "^0.0.23"
25
+ "prool": "^0.0.25"
32
26
  },
33
27
  "dependencies": {
34
28
  "@fastify/cors": "^8.5.0",
35
29
  "fastify": "^4.28.1",
36
- "zod": "^3.24.2"
30
+ "zod": "^3.24.2",
31
+ "zod-validation-error": "^1.3.0"
37
32
  }
38
33
  }
package/relay.ts CHANGED
@@ -175,7 +175,7 @@ const handleMethod = async ({
175
175
  getSingletonPaymaster08Address(paymasterSigner.account.address)
176
176
  ]
177
177
 
178
- const epToPaymaster: Record<`0x${string}`, `0x${string}`> = {
178
+ const epToPaymaster: Record<Address, Address> = {
179
179
  [entryPoint06Address]: paymaster06,
180
180
  [entryPoint07Address]: paymaster07,
181
181
  [entryPoint08Address]: paymaster08
@@ -287,15 +287,6 @@ const handleMethod = async ({
287
287
  ]
288
288
  }
289
289
 
290
- if (parsedBody.method === "pimlico_getUserOperationGasPrice") {
291
- return await bundlerClient.request({
292
- // @ts-ignore
293
- method: "pimlico_getUserOperationGasPrice",
294
- // @ts-ignore
295
- params: []
296
- })
297
- }
298
-
299
290
  if (parsedBody.method === "pimlico_getTokenQuotes") {
300
291
  const params = pimlicoGetTokenQuotesSchema.safeParse(parsedBody.params)
301
292
 
@@ -337,10 +328,31 @@ const handleMethod = async ({
337
328
  }
338
329
  }
339
330
 
340
- throw new RpcError(
341
- `Attempted to call an unknown method ${parsedBody.method}`,
342
- ValidationErrors.InvalidFields
343
- )
331
+ // If boosted userOp, forward to bundler's boost_sendUserOperation method.
332
+ if (parsedBody.method === "eth_sendUserOperation") {
333
+ const userOp = parsedBody.params[0] as any
334
+
335
+ const isBoosted =
336
+ userOp.maxFeePerGas === "0x0" &&
337
+ userOp.maxPriorityFeePerGas === "0x0"
338
+
339
+ if (isBoosted) {
340
+ return await bundlerClient.request({
341
+ // @ts-ignore
342
+ method: "boost_sendUserOperation",
343
+ // @ts-ignore
344
+ params: parsedBody.params
345
+ })
346
+ }
347
+ }
348
+
349
+ // Forward all other requests to the bundler
350
+ return await bundlerClient.request({
351
+ // @ts-ignore
352
+ method: parsedBody.method,
353
+ // @ts-ignore
354
+ params: parsedBody.params ?? []
355
+ })
344
356
  }
345
357
 
346
358
  export const createRpcHandler = ({
package/setup.ts ADDED
@@ -0,0 +1,163 @@
1
+ import { type Address, concat, getContract, parseEther } from "viem"
2
+ import {
3
+ constants,
4
+ getSingletonPaymaster06Address,
5
+ getSingletonPaymaster06InitCode,
6
+ getSingletonPaymaster07Address,
7
+ getSingletonPaymaster07InitCode,
8
+ getSingletonPaymaster08Address,
9
+ getSingletonPaymaster08InitCode
10
+ } from "./constants.js"
11
+ import {
12
+ singletonPaymaster06Abi,
13
+ singletonPaymaster07Abi,
14
+ singletonPaymaster08Abi
15
+ } from "./helpers/abi.js"
16
+ import {
17
+ create2Salt,
18
+ erc20Address,
19
+ erc20Bytecode,
20
+ getPaymasterUtilityWallet
21
+ } from "./helpers/erc20-utils.js"
22
+ import { getPublicClient } from "./helpers/utils.js"
23
+
24
+ export const deployPaymasters = async ({
25
+ anvilRpc,
26
+ paymasterSigner
27
+ }: {
28
+ anvilRpc: string
29
+ paymasterSigner: Address
30
+ }) => {
31
+ const walletClient = await getPaymasterUtilityWallet(anvilRpc)
32
+ const publicClient = await getPublicClient(anvilRpc)
33
+
34
+ let nonce = await publicClient.getTransactionCount({
35
+ address: walletClient.account.address
36
+ })
37
+
38
+ const paymaster06Address = getSingletonPaymaster06Address(paymasterSigner)
39
+ const paymaster07Address = getSingletonPaymaster07Address(paymasterSigner)
40
+ const paymaster08Address = getSingletonPaymaster08Address(paymasterSigner)
41
+
42
+ // Deploy singleton paymaster 06 if not already deployed.
43
+ const paymaster06Code = await publicClient.getCode({
44
+ address: paymaster06Address
45
+ })
46
+ if (!paymaster06Code) {
47
+ const hash = await walletClient.sendTransaction({
48
+ to: constants.deterministicDeployer,
49
+ data: concat([
50
+ constants.create2Salt,
51
+ getSingletonPaymaster06InitCode(paymasterSigner)
52
+ ]),
53
+ nonce: nonce++
54
+ })
55
+ await publicClient.waitForTransactionReceipt({ hash })
56
+ }
57
+
58
+ // Deploy singleton paymaster 07 if not already deployed.
59
+ const paymaster07Code = await publicClient.getCode({
60
+ address: paymaster07Address
61
+ })
62
+ if (!paymaster07Code) {
63
+ const hash = await walletClient.sendTransaction({
64
+ to: constants.deterministicDeployer,
65
+ data: concat([
66
+ constants.create2Salt,
67
+ getSingletonPaymaster07InitCode(paymasterSigner)
68
+ ]),
69
+ nonce: nonce++
70
+ })
71
+ await publicClient.waitForTransactionReceipt({ hash })
72
+ }
73
+
74
+ // Deploy singleton paymaster 08 if not already deployed.
75
+ const paymaster08Code = await publicClient.getCode({
76
+ address: paymaster08Address
77
+ })
78
+ if (!paymaster08Code) {
79
+ const hash = await walletClient.sendTransaction({
80
+ to: constants.deterministicDeployer,
81
+ data: concat([
82
+ constants.create2Salt,
83
+ getSingletonPaymaster08InitCode(paymasterSigner)
84
+ ]),
85
+ nonce: nonce++
86
+ })
87
+ await publicClient.waitForTransactionReceipt({ hash })
88
+ }
89
+
90
+ const depositAmount = parseEther("50")
91
+
92
+ // Initialize contract instances and fund if needed.
93
+ // Only check deposit balance if the contract was already deployed.
94
+
95
+ // Fund paymaster 06 if balance is less than deposit amount.
96
+ const singletonPaymaster06 = getContract({
97
+ address: paymaster06Address,
98
+ abi: singletonPaymaster06Abi,
99
+ client: walletClient
100
+ })
101
+ const deposit06 = await singletonPaymaster06.read.getDeposit()
102
+ if (deposit06 < depositAmount) {
103
+ await singletonPaymaster06.write.deposit({
104
+ value: depositAmount,
105
+ nonce: nonce++
106
+ })
107
+ }
108
+
109
+ // Fund paymaster 07 if balance is less than deposit amount.
110
+ const singletonPaymaster07 = getContract({
111
+ address: paymaster07Address,
112
+ abi: singletonPaymaster07Abi,
113
+ client: walletClient
114
+ })
115
+ const deposit07 = await singletonPaymaster07.read.getDeposit()
116
+ if (deposit07 < depositAmount) {
117
+ await singletonPaymaster07.write.deposit({
118
+ value: depositAmount,
119
+ nonce: nonce++
120
+ })
121
+ }
122
+
123
+ // Fund paymaster 08 if balance is less than deposit amount.
124
+ const singletonPaymaster08 = getContract({
125
+ address: paymaster08Address,
126
+ abi: singletonPaymaster08Abi,
127
+ client: walletClient
128
+ })
129
+ const deposit08 = await singletonPaymaster08.read.getDeposit()
130
+ if (deposit08 < depositAmount) {
131
+ await singletonPaymaster08.write.deposit({
132
+ value: depositAmount,
133
+ nonce: nonce++
134
+ })
135
+ }
136
+ }
137
+
138
+ export const deployErc20Token = async (anvilRpc: string) => {
139
+ const publicClient = await getPublicClient(anvilRpc)
140
+
141
+ if ((await publicClient.getCode({ address: erc20Address })) === undefined) {
142
+ const walletClient = await getPaymasterUtilityWallet(anvilRpc)
143
+
144
+ await walletClient.sendTransaction({
145
+ to: "0x4e59b44847b379578588920ca78fbf26c0b4956c",
146
+ data: concat([create2Salt, erc20Bytecode])
147
+ })
148
+ }
149
+ }
150
+
151
+ export const setup = async ({
152
+ anvilRpc,
153
+ paymasterSigner
154
+ }: {
155
+ anvilRpc: string
156
+ paymasterSigner: Address
157
+ }) => {
158
+ await deployPaymasters({
159
+ anvilRpc,
160
+ paymasterSigner
161
+ })
162
+ await deployErc20Token(anvilRpc)
163
+ }
@@ -9,29 +9,18 @@ import {
9
9
  concat,
10
10
  encodePacked,
11
11
  getContract,
12
- parseEther,
13
12
  toBytes
14
13
  } from "viem"
15
14
  import {
16
15
  type UserOperation,
17
16
  toPackedUserOperation
18
17
  } from "viem/account-abstraction"
19
- import {
20
- constants,
21
- getSingletonPaymaster06Address,
22
- getSingletonPaymaster06InitCode,
23
- getSingletonPaymaster07Address,
24
- getSingletonPaymaster07InitCode,
25
- getSingletonPaymaster08Address,
26
- getSingletonPaymaster08InitCode
27
- } from "./constants.js"
18
+ import { constants } from "./constants.js"
28
19
  import {
29
20
  singletonPaymaster06Abi,
30
- singletonPaymaster07Abi,
31
- singletonPaymaster08Abi
21
+ singletonPaymaster07Abi
32
22
  } from "./helpers/abi.js"
33
- import { getPaymasterUtilityWallet } from "./helpers/erc20-utils.js"
34
- import { type PaymasterMode, getPublicClient } from "./helpers/utils.js"
23
+ import type { PaymasterMode } from "./helpers/utils.js"
35
24
 
36
25
  export const getDummyPaymasterData = ({
37
26
  is06,
@@ -239,83 +228,3 @@ export const getSignedPaymasterData = async ({
239
228
  paymasterData
240
229
  }
241
230
  }
242
-
243
- export const deployPaymasters = async ({
244
- anvilRpc,
245
- paymasterSigner
246
- }: {
247
- anvilRpc: string
248
- paymasterSigner: Address
249
- }) => {
250
- const walletClient = await getPaymasterUtilityWallet(anvilRpc)
251
- const publicClient = await getPublicClient(anvilRpc)
252
-
253
- let nonce = await publicClient.getTransactionCount({
254
- address: walletClient.account.address
255
- })
256
-
257
- // Deploy singleton paymaster 06.
258
- await walletClient.sendTransaction({
259
- to: constants.deterministicDeployer,
260
- data: concat([
261
- constants.create2Salt,
262
- getSingletonPaymaster06InitCode(paymasterSigner)
263
- ]),
264
- nonce: nonce++
265
- })
266
-
267
- // Deploy singleton paymaster 07.
268
- await walletClient.sendTransaction({
269
- to: constants.deterministicDeployer,
270
- data: concat([
271
- constants.create2Salt,
272
- getSingletonPaymaster07InitCode(paymasterSigner)
273
- ]),
274
- nonce: nonce++
275
- })
276
-
277
- // Deploy singleton paymaster 08.
278
- await walletClient.sendTransaction({
279
- to: constants.deterministicDeployer,
280
- data: concat([
281
- constants.create2Salt,
282
- getSingletonPaymaster08InitCode(paymasterSigner)
283
- ]),
284
- nonce: nonce++
285
- })
286
-
287
- // Initialize contract instances.
288
- const [singletonPaymaster06, singletonPaymaster07, singletonPaymaster08] = [
289
- getContract({
290
- address: getSingletonPaymaster06Address(paymasterSigner),
291
- abi: singletonPaymaster06Abi,
292
- client: walletClient
293
- }),
294
- getContract({
295
- address: getSingletonPaymaster07Address(paymasterSigner),
296
- abi: singletonPaymaster07Abi,
297
- client: walletClient
298
- }),
299
- getContract({
300
- address: getSingletonPaymaster08Address(paymasterSigner),
301
- abi: singletonPaymaster08Abi,
302
- client: walletClient
303
- })
304
- ]
305
-
306
- // Fund the paymasters.
307
- await singletonPaymaster06.write.deposit({
308
- value: parseEther("50"),
309
- nonce: nonce++
310
- })
311
-
312
- await singletonPaymaster07.write.deposit({
313
- value: parseEther("50"),
314
- nonce: nonce++
315
- })
316
-
317
- await singletonPaymaster08.write.deposit({
318
- value: parseEther("50"),
319
- nonce: nonce++
320
- })
321
- }