@pimlico/mock-paymaster 0.0.4 → 0.0.6

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 (51) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/_cjs/helpers/erc20-utils.js +26 -15
  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/helpers/utils.js +1 -13
  7. package/_cjs/helpers/utils.js.map +1 -1
  8. package/_cjs/index.js +16 -20
  9. package/_cjs/index.js.map +1 -1
  10. package/_cjs/relay.js +24 -11
  11. package/_cjs/relay.js.map +1 -1
  12. package/_cjs/setup.js +118 -0
  13. package/_cjs/setup.js.map +1 -0
  14. package/_cjs/singletonPaymasters.js +1 -61
  15. package/_cjs/singletonPaymasters.js.map +1 -1
  16. package/_esm/helpers/erc20-utils.js +28 -13
  17. package/_esm/helpers/erc20-utils.js.map +1 -1
  18. package/_esm/helpers/schema.js +7 -7
  19. package/_esm/helpers/schema.js.map +1 -1
  20. package/_esm/helpers/utils.js +1 -12
  21. package/_esm/helpers/utils.js.map +1 -1
  22. package/_esm/index.js +15 -21
  23. package/_esm/index.js.map +1 -1
  24. package/_esm/relay.js +33 -16
  25. package/_esm/relay.js.map +1 -1
  26. package/_esm/setup.js +120 -0
  27. package/_esm/setup.js.map +1 -0
  28. package/_esm/singletonPaymasters.js +3 -67
  29. package/_esm/singletonPaymasters.js.map +1 -1
  30. package/_types/helpers/erc20-utils.d.ts +4 -2
  31. package/_types/helpers/erc20-utils.d.ts.map +1 -1
  32. package/_types/helpers/schema.d.ts +569 -569
  33. package/_types/helpers/schema.d.ts.map +1 -1
  34. package/_types/helpers/utils.d.ts +1 -5
  35. package/_types/helpers/utils.d.ts.map +1 -1
  36. package/_types/index.d.ts +1 -0
  37. package/_types/index.d.ts.map +1 -1
  38. package/_types/relay.d.ts +4 -5
  39. package/_types/relay.d.ts.map +1 -1
  40. package/_types/setup.d.ts +11 -0
  41. package/_types/setup.d.ts.map +1 -0
  42. package/_types/singletonPaymasters.d.ts +0 -4
  43. package/_types/singletonPaymasters.d.ts.map +1 -1
  44. package/helpers/erc20-utils.ts +40 -16
  45. package/helpers/schema.ts +7 -7
  46. package/helpers/utils.ts +0 -24
  47. package/index.ts +19 -22
  48. package/package.json +2 -2
  49. package/relay.ts +44 -22
  50. package/setup.ts +163 -0
  51. package/singletonPaymasters.ts +2 -91
@@ -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"}
@@ -1,11 +1,7 @@
1
- import { type Account, type Address, type Chain, type PublicClient, type Transport, type WalletClient } from "viem";
1
+ import { type Address, type Chain, type PublicClient, type Transport } from "viem";
2
2
  export declare const maxBigInt: (a: bigint, b: bigint) => bigint;
3
3
  export declare const getChain: (rpcUrl: string) => Promise<Chain>;
4
4
  export declare const getPublicClient: (anvilRpc: string) => Promise<PublicClient<Transport, Chain>>;
5
- export declare const getAnvilWalletClient: ({ addressIndex, anvilRpc }: {
6
- addressIndex: number;
7
- anvilRpc: string;
8
- }) => Promise<WalletClient<Transport, Chain, Account>>;
9
5
  export declare const isTokenSupported: (token: Address) => Promise<void>;
10
6
  export type PaymasterMode = {
11
7
  mode: "verifying";
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../helpers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,YAAY,EAIpB,MAAM,MAAM,CAAA;AAMb,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,WAE7C,CAAA;AAED,eAAO,MAAM,QAAQ,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,KAAK,CAqB5D,CAAA;AAED,eAAO,MAAM,eAAe,GACxB,UAAU,MAAM,KACjB,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAiBxC,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAU,4BAGxC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAG,OAAO,CACnD,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAc1C,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,OAAO,OAAO,kBAOpD,CAAA;AAED,MAAM,MAAM,aAAa,GACnB;IACI,IAAI,EAAE,WAAW,CAAA;CACpB,GACD;IACI,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;CACjB,CAAA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../helpers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,SAAS,EAGjB,MAAM,MAAM,CAAA;AAKb,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,WAE7C,CAAA;AAED,eAAO,MAAM,QAAQ,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,KAAK,CAqB5D,CAAA;AAED,eAAO,MAAM,eAAe,GACxB,UAAU,MAAM,KACjB,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAiBxC,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,OAAO,OAAO,kBAOpD,CAAA;AAED,MAAM,MAAM,aAAa,GACnB;IACI,IAAI,EAAE,WAAW,CAAA;CACpB,GACD;IACI,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;CACjB,CAAA"}
package/_types/index.d.ts CHANGED
@@ -4,4 +4,5 @@ export declare const paymaster: import("prool").DefineInstanceReturnType<{}, {
4
4
  altoRpc: string;
5
5
  host?: string;
6
6
  }>;
7
+ export { erc20Address, sudoMintTokens } from "./helpers/erc20-utils.js";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,SAAS;cAMH,MAAM;UAAQ,MAAM;aAAW,MAAM;WAAS,MAAM;EAiDtE,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"}
package/_types/relay.d.ts CHANGED
@@ -1,9 +1,8 @@
1
1
  import type { FastifyReply, FastifyRequest } from "fastify";
2
- import { type Account, type Address, type Chain, type PublicClient, type Transport, type WalletClient } from "viem";
3
- import { type BundlerClient } from "viem/account-abstraction";
4
- export declare const createRpcHandler: ({ bundler, publicClient, paymasterSigner }: {
5
- bundler: BundlerClient;
6
- publicClient: PublicClient;
2
+ import { type Account, type Address, type Chain, type Transport, type WalletClient } from "viem";
3
+ export declare const createRpcHandler: ({ altoRpc, anvilRpc, paymasterSigner }: {
4
+ altoRpc: string;
5
+ anvilRpc: string;
7
6
  paymasterSigner: WalletClient<Transport, Chain, Account>;
8
7
  }) => (request: FastifyRequest, _reply: FastifyReply) => Promise<{
9
8
  jsonrpc: string;
@@ -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,EACH,KAAK,OAAO,EACZ,KAAK,OAAO,EAEZ,KAAK,KAAK,EACV,KAAK,YAAY,EAEjB,KAAK,SAAS,EACd,KAAK,YAAY,EAGpB,MAAM,MAAM,CAAA;AACb,OAAO,EACH,KAAK,aAAa,EAKrB,MAAM,0BAA0B,CAAA;AAiUjC,eAAO,MAAM,gBAAgB,GAAI,4CAI9B;IACC,OAAO,EAAE,aAAa,CAAA;IACtB,YAAY,EAAE,YAAY,CAAA;IAC1B,eAAe,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;CAC3D,MACiB,SAAS,cAAc,EAAE,QAAQ,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0C9D,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"}
@@ -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: ({ walletClient, publicClient }: {
30
- walletClient: WalletClient<Transport, Chain, Account>;
31
- publicClient: PublicClient<Transport, Chain>;
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;AAejC,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;AAED,eAAO,MAAM,gBAAgB,GAAU,gCAGpC;IACC,YAAY,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IACrD,YAAY,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;CAC/C,kBAuEA,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"}
@@ -1,38 +1,65 @@
1
1
  import {
2
+ http,
2
3
  type Account,
3
4
  type Address,
4
5
  type Chain,
5
- type PublicClient,
6
6
  type Transport,
7
7
  type WalletClient,
8
8
  concat,
9
+ createTestClient,
10
+ createWalletClient,
9
11
  encodeFunctionData,
10
12
  getCreate2Address,
11
13
  hexToBigInt,
12
14
  pad,
13
15
  parseAbi,
16
+ parseEther,
14
17
  toHex
15
18
  } from "viem"
16
- import { getAnvilWalletClient, getPublicClient } from "./utils.js"
19
+ import { privateKeyToAccount } from "viem/accounts"
20
+ import { getChain, getPublicClient } from "./utils.js"
17
21
 
18
- const erc20Bytecode = concat([
22
+ export const erc20Bytecode = concat([
19
23
  "0x60a060405234801561001057600080fd5b50604051610ff0380380610ff083398101604081905261002f9161022c565b6040518060400160405280600981526020016805465737445524332360bc1b8152506040518060400160405280600381526020016205432360ec1b815250816003908161007c919061034d565b506004610089828261034d565b5050506100a63369d3c21bcecceda10000006100b160201b60201c565b60ff166080526104a3565b6001600160a01b0382166100e457600060405163ec442f0560e01b81526004016100db9190610430565b60405180910390fd5b6100f0600083836100f4565b5050565b6001600160a01b03831661011f5780600260008282546101149190610454565b9091555061017e9050565b6001600160a01b0383166000908152602081905260409020548181101561015f5783818360405163391434e360e21b81526004016100db9392919061046d565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661019a576002805482900390556101b9565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101fc9190610495565b60405180910390a3505050565b60ff8116811461021857600080fd5b50565b805161022681610209565b92915050565b60006020828403121561024157610241600080fd5b600061024d848461021b565b949350505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b60028104600182168061029557607f821691505b6020821081036102a7576102a761026b565b50919050565b60006102266102b98381565b90565b6102c5836102ad565b815460001960089490940293841b1916921b91909117905550565b60006102ed8184846102bc565b505050565b818110156100f0576103056000826102e0565b6001016102f2565b601f8211156102ed576000818152602090206020601f850104810160208510156103345750805b6103466020601f8601048301826102f2565b5050505050565b81516001600160401b0381111561036657610366610255565b6103708254610281565b61037b82828561030d565b6020601f8311600181146103af57600084156103975750858201515b600019600886021c1981166002860217865550610408565b600085815260208120601f198616915b828110156103df57888501518255602094850194600190920191016103bf565b868310156103fb5784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b60006001600160a01b038216610226565b61042a81610410565b82525050565b602081016102268284610421565b634e487b7160e01b600052601160045260246000fd5b808201808211156102265761022661043e565b8061042a565b6060810161047b8286610421565b6104886020830185610467565b61024d6040830184610467565b602081016102268284610467565b608051610b326104be60003960006101650152610b326000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063313ce56711610081578063a9059cbb1161005b578063a9059cbb146101cf578063dd62ed3e146101e2578063fb4dcefa1461022857600080fd5b8063313ce5671461016357806370a082311461019157806395d89b41146101c757600080fd5b806318160ddd116100b257806318160ddd1461012c57806323b872dd1461013d5780632d688ca81461015057600080fd5b806305ea5c22146100d957806306fdde03146100ee578063095ea7b31461010c575b600080fd5b6100ec6100e7366004610868565b61023b565b005b6100f661024b565b604051610103919061092c565b60405180910390f35b61011f61011a366004610944565b6102dd565b604051610103919061098b565b6002545b604051610103919061099f565b61011f61014b366004610868565b6102f7565b6100ec61015e366004610944565b61031b565b7f000000000000000000000000000000000000000000000000000000000000000060405161010391906109b6565b61013061019f3660046109c4565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100f6610329565b61011f6101dd366004610944565b610338565b6101306101f03660046109ed565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6100ec6102363660046109ed565b610346565b61024683838361037c565b505050565b60606003805461025a90610a4f565b80601f016020809104026020016040519081016040528092919081815260200182805461028690610a4f565b80156102d35780601f106102a8576101008083540402835291602001916102d3565b820191906000526020600020905b8154815290600101906020018083116102b657829003601f168201915b5050505050905090565b6000336102eb81858561037c565b60019150505b92915050565b600033610305858285610389565b610310858585610441565b506001949350505050565b61032582826104ec565b5050565b60606004805461025a90610a4f565b6000336102eb818585610441565b61032582826103778573ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610441565b6102468383836001610548565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043b578181101561042c578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161042393929190610a84565b60405180910390fd5b61043b84848484036000610548565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166104915760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff82166104e15760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b61024683838361068e565b73ffffffffffffffffffffffffffffffffffffffff821661053c5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b6103256000838361068e565b73ffffffffffffffffffffffffffffffffffffffff84166105985760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff83166105e85760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561043b578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610680919061099f565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff83166106c65780600260008282546106bb9190610ae9565b909155506107589050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561072c578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161042393929190610a84565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610781576002805482900390556107ad565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161080a919061099f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102f1565b61083e81610817565b811461084957600080fd5b50565b80356102f181610835565b8061083e565b80356102f181610857565b60008060006060848603121561088057610880600080fd5b600061088c868661084c565b935050602061089d8682870161084c565b92505060406108ae8682870161085d565b9150509250925092565b60005b838110156108d35781810151838201526020016108bb565b50506000910152565b60006108e6825190565b8084526020840193506108fd8185602086016108b8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920192915050565b6020808252810161093d81846108dc565b9392505050565b6000806040838503121561095a5761095a600080fd5b6000610966858561084c565b92505060206109778582860161085d565b9150509250929050565b8015155b82525050565b602081016102f18284610981565b80610985565b602081016102f18284610999565b60ff8116610985565b602081016102f182846109ad565b6000602082840312156109d9576109d9600080fd5b60006109e5848461084c565b949350505050565b60008060408385031215610a0357610a03600080fd5b6000610a0f858561084c565b92505060206109778582860161084c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600281046001821680610a6357607f821691505b602082108103610a7557610a75610a20565b50919050565b61098581610817565b60608101610a928286610a7b565b610a9f6020830185610999565b6109e56040830184610999565b602081016102f18284610a7b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156102f1576102f1610aba56fea2646970667358221220d40f68e247510ec8b7876d327ac47b949de248d0626aaf2670151c5e84ee6b4a64736f6c634300081a0033",
20
24
  pad(toHex(18n)) // constructor args (token_decimals)
21
25
  ])
22
26
 
23
- const create2Salt =
27
+ export const create2Salt =
24
28
  "0x0000000000000000000000000000000000000000000000000000000000000000"
25
29
 
26
- export const deployErc20Token = async (
27
- walletClient: WalletClient<Transport, Chain, Account>,
28
- publicClient: PublicClient
29
- ) => {
30
- if ((await publicClient.getCode({ address: erc20Address })) === undefined) {
31
- await walletClient.sendTransaction({
32
- to: "0x4e59b44847b379578588920ca78fbf26c0b4956c",
33
- data: concat([create2Salt, erc20Bytecode])
30
+ export const getPaymasterUtilityWallet = async (
31
+ anvilRpc: string
32
+ ): Promise<WalletClient<Transport, Chain, Account>> => {
33
+ const account = privateKeyToAccount(
34
+ "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
35
+ )
36
+
37
+ // Check if account has balance
38
+ const publicClient = await getPublicClient(anvilRpc)
39
+ const balance = await publicClient.getBalance({ address: account.address })
40
+
41
+ // If no balance, set it to 1000 ETH
42
+ if (balance === 0n) {
43
+ // Create test client for setting balance
44
+ const testClient = createTestClient({
45
+ mode: "anvil",
46
+ transport: http(anvilRpc)
47
+ })
48
+
49
+ await testClient.setBalance({
50
+ address: account.address,
51
+ value: parseEther("1000")
34
52
  })
35
53
  }
54
+
55
+ // Create and return wallet client
56
+ const walletClient = createWalletClient({
57
+ chain: await getChain(anvilRpc),
58
+ account,
59
+ transport: http(anvilRpc)
60
+ })
61
+
62
+ return walletClient
36
63
  }
37
64
 
38
65
  export const tokenBalanceOf = async (holder: Address, anvilRpc: string) => {
@@ -59,10 +86,7 @@ export const sudoMintTokens = async ({
59
86
  to: Address
60
87
  anvilRpc: string
61
88
  }) => {
62
- const walletClient = await getAnvilWalletClient({
63
- addressIndex: 0,
64
- anvilRpc
65
- })
89
+ const walletClient = await getPaymasterUtilityWallet(anvilRpc)
66
90
 
67
91
  await walletClient.sendTransaction({
68
92
  to: erc20Address,
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/helpers/utils.ts CHANGED
@@ -1,16 +1,12 @@
1
1
  import {
2
2
  http,
3
- type Account,
4
3
  type Address,
5
4
  type Chain,
6
5
  type PublicClient,
7
6
  type Transport,
8
- type WalletClient,
9
7
  createPublicClient,
10
- createWalletClient,
11
8
  defineChain
12
9
  } from "viem"
13
- import { mnemonicToAccount } from "viem/accounts"
14
10
  import { erc20Address } from "./erc20-utils.js"
15
11
  import { RpcError, ValidationErrors } from "./schema.js"
16
12
 
@@ -63,26 +59,6 @@ export const getPublicClient = async (
63
59
  })
64
60
  }
65
61
 
66
- export const getAnvilWalletClient = async ({
67
- addressIndex,
68
- anvilRpc
69
- }: { addressIndex: number; anvilRpc: string }): Promise<
70
- WalletClient<Transport, Chain, Account>
71
- > => {
72
- const chain = await getChain(anvilRpc)
73
-
74
- return createWalletClient({
75
- account: mnemonicToAccount(
76
- "test test test test test test test test test test test junk",
77
- {
78
- addressIndex
79
- }
80
- ),
81
- chain,
82
- transport: http(anvilRpc)
83
- })
84
- }
85
-
86
62
  export const isTokenSupported = async (token: Address) => {
87
63
  if (token !== erc20Address) {
88
64
  throw new RpcError(
package/index.ts CHANGED
@@ -1,12 +1,11 @@
1
1
  import cors from "@fastify/cors"
2
2
  import Fastify from "fastify"
3
3
  import { defineInstance } from "prool"
4
- import { http, createPublicClient } from "viem"
5
- import { createBundlerClient } from "viem/account-abstraction"
6
- import { deployErc20Token } from "./helpers/erc20-utils.js"
7
- import { getAnvilWalletClient, getChain } from "./helpers/utils.js"
4
+ import { http, createWalletClient } from "viem"
5
+ import { privateKeyToAccount } from "viem/accounts"
6
+ import { getChain } from "./helpers/utils.js"
8
7
  import { createRpcHandler } from "./relay.js"
9
- import { deployPaymasters } from "./singletonPaymasters.js"
8
+ import { setup } from "./setup.js"
10
9
 
11
10
  export const paymaster = defineInstance(
12
11
  ({
@@ -23,22 +22,18 @@ export const paymaster = defineInstance(
23
22
  port: _port,
24
23
  name: "mock-paymaster",
25
24
  start: async ({ port = _port }) => {
26
- const chain = await getChain(anvilRpc)
27
- const walletClient = await getAnvilWalletClient({
28
- anvilRpc,
29
- addressIndex: 1
30
- })
31
- const publicClient = createPublicClient({
32
- transport: http(anvilRpc),
33
- chain
34
- })
35
- const bundler = createBundlerClient({
36
- chain,
37
- transport: http(altoRpc)
25
+ const paymasterSigner = createWalletClient({
26
+ chain: await getChain(anvilRpc),
27
+ account: privateKeyToAccount(
28
+ "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
29
+ ),
30
+ transport: http(anvilRpc)
38
31
  })
39
32
 
40
- await deployPaymasters({ walletClient, publicClient })
41
- await deployErc20Token(walletClient, publicClient)
33
+ await setup({
34
+ anvilRpc,
35
+ paymasterSigner: paymasterSigner.account.address
36
+ })
42
37
 
43
38
  app.register(cors, {
44
39
  origin: "*",
@@ -46,9 +41,9 @@ export const paymaster = defineInstance(
46
41
  })
47
42
 
48
43
  const rpcHandler = createRpcHandler({
49
- bundler,
50
- publicClient,
51
- paymasterSigner: walletClient
44
+ altoRpc,
45
+ anvilRpc,
46
+ paymasterSigner
52
47
  })
53
48
  app.post("/", {}, rpcHandler)
54
49
 
@@ -64,3 +59,5 @@ export const paymaster = defineInstance(
64
59
  }
65
60
  }
66
61
  )
62
+
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.4",
3
+ "version": "0.0.6",
4
4
  "author": "Pimlico",
5
5
  "homepage": "https://docs.pimlico.io/permissionless",
6
6
  "repository": "github:pimlicolabs/permissionless.js",
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "peerDependencies": {
30
30
  "viem": "^2.28.1",
31
- "prool": "^0.0.23"
31
+ "prool": "^0.0.25"
32
32
  },
33
33
  "dependencies": {
34
34
  "@fastify/cors": "^8.5.0",
package/relay.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import * as util from "node:util"
2
2
  import type { FastifyReply, FastifyRequest } from "fastify"
3
3
  import {
4
+ http,
4
5
  type Account,
5
6
  type Address,
6
7
  BaseError,
@@ -15,6 +16,7 @@ import {
15
16
  import {
16
17
  type BundlerClient,
17
18
  type UserOperation,
19
+ createBundlerClient,
18
20
  entryPoint06Address,
19
21
  entryPoint07Address,
20
22
  entryPoint08Address
@@ -40,6 +42,8 @@ import {
40
42
  } from "./helpers/schema.js"
41
43
  import {
42
44
  type PaymasterMode,
45
+ getChain,
46
+ getPublicClient,
43
47
  isTokenSupported,
44
48
  maxBigInt
45
49
  } from "./helpers/utils.js"
@@ -158,9 +162,9 @@ const handleMethod = async ({
158
162
  parsedBody,
159
163
  paymasterSigner,
160
164
  publicClient,
161
- bundler
165
+ bundlerClient
162
166
  }: {
163
- bundler: BundlerClient
167
+ bundlerClient: BundlerClient
164
168
  paymasterSigner: WalletClient<Transport, Chain, Account>
165
169
  publicClient: PublicClient
166
170
  parsedBody: JsonRpcSchema
@@ -171,7 +175,7 @@ const handleMethod = async ({
171
175
  getSingletonPaymaster08Address(paymasterSigner.account.address)
172
176
  ]
173
177
 
174
- const epToPaymaster: Record<`0x${string}`, `0x${string}`> = {
178
+ const epToPaymaster: Record<Address, Address> = {
175
179
  [entryPoint06Address]: paymaster06,
176
180
  [entryPoint07Address]: paymaster07,
177
181
  [entryPoint08Address]: paymaster08
@@ -196,7 +200,7 @@ const handleMethod = async ({
196
200
  entryPoint,
197
201
  userOperation,
198
202
  paymasterMode: { mode: "verifying" },
199
- bundler,
203
+ bundler: bundlerClient,
200
204
  paymaster: epToPaymaster[entryPoint],
201
205
  publicClient,
202
206
  paymasterSigner,
@@ -283,15 +287,6 @@ const handleMethod = async ({
283
287
  ]
284
288
  }
285
289
 
286
- if (parsedBody.method === "pimlico_getUserOperationGasPrice") {
287
- return await bundler.request({
288
- // @ts-ignore
289
- method: "pimlico_getUserOperationGasPrice",
290
- // @ts-ignore
291
- params: []
292
- })
293
- }
294
-
295
290
  if (parsedBody.method === "pimlico_getTokenQuotes") {
296
291
  const params = pimlicoGetTokenQuotesSchema.safeParse(parsedBody.params)
297
292
 
@@ -333,22 +328,49 @@ const handleMethod = async ({
333
328
  }
334
329
  }
335
330
 
336
- throw new RpcError(
337
- `Attempted to call an unknown method ${parsedBody.method}`,
338
- ValidationErrors.InvalidFields
339
- )
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
+ })
340
356
  }
341
357
 
342
358
  export const createRpcHandler = ({
343
- bundler,
344
- publicClient,
359
+ altoRpc,
360
+ anvilRpc,
345
361
  paymasterSigner
346
362
  }: {
347
- bundler: BundlerClient
348
- publicClient: PublicClient
363
+ altoRpc: string
364
+ anvilRpc: string
349
365
  paymasterSigner: WalletClient<Transport, Chain, Account>
350
366
  }) => {
351
367
  return async (request: FastifyRequest, _reply: FastifyReply) => {
368
+ const publicClient = await getPublicClient(anvilRpc)
369
+ const bundlerClient = createBundlerClient({
370
+ chain: await getChain(anvilRpc),
371
+ transport: http(altoRpc)
372
+ })
373
+
352
374
  const body = request.body
353
375
  const parsedBody = jsonRpcSchema.safeParse(body)
354
376
  if (!parsedBody.success) {
@@ -360,7 +382,7 @@ export const createRpcHandler = ({
360
382
 
361
383
  try {
362
384
  const result = await handleMethod({
363
- bundler,
385
+ bundlerClient,
364
386
  paymasterSigner,
365
387
  parsedBody: parsedBody.data,
366
388
  publicClient