@evergonlabs/tmi-protocol-api 0.7.0 → 0.8.0

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 (61) hide show
  1. package/dist/app.d.ts +60 -6
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/client.d.ts +60 -2
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/common/blockchain.d.ts +5 -4
  6. package/dist/common/blockchain.d.ts.map +1 -1
  7. package/dist/common/blockchain.js +5 -9
  8. package/dist/common/config.d.ts +4 -1
  9. package/dist/common/config.d.ts.map +1 -1
  10. package/dist/common/config.js +0 -9
  11. package/dist/common/context.d.ts +2 -2
  12. package/dist/common/context.d.ts.map +1 -1
  13. package/dist/common/models/transaction.js +1 -1
  14. package/dist/factory.d.ts +2 -2
  15. package/dist/factory.d.ts.map +1 -1
  16. package/dist/fractions/markets/getDeployEvent.js +1 -1
  17. package/dist/fractions/sales/getVaultAddress.js +1 -1
  18. package/dist/fractions/sales/getWithdrawEvent.js +1 -1
  19. package/dist/fractions/sales/parseFractionsCreatedEvent.js +1 -1
  20. package/dist/fractions/sales/vesting/parseClaimVestedTokensEvent.js +1 -1
  21. package/dist/fractions/sig/getNonce.route.js +1 -1
  22. package/dist/general/balanceClient.d.ts +2 -1
  23. package/dist/general/balanceClient.d.ts.map +1 -1
  24. package/dist/general/balanceClient.js +2 -2
  25. package/dist/general/common.d.ts +2 -1
  26. package/dist/general/common.d.ts.map +1 -1
  27. package/dist/general/common.js +2 -2
  28. package/dist/general/estimateGas.js +1 -1
  29. package/dist/general/getBalance.js +1 -1
  30. package/dist/general/getBalancesBatch.js +1 -1
  31. package/dist/general/searchBalances.js +1 -1
  32. package/dist/issuance/erc20/deploy.d.ts +0 -2
  33. package/dist/issuance/erc20/deploy.d.ts.map +1 -1
  34. package/dist/issuance/erc20/deploy.js +17 -21
  35. package/dist/issuance/erc20/deployGated.d.ts +40 -0
  36. package/dist/issuance/erc20/deployGated.d.ts.map +1 -0
  37. package/dist/issuance/erc20/deployGated.js +58 -0
  38. package/dist/issuance/erc20/index.d.ts +29 -2
  39. package/dist/issuance/erc20/index.d.ts.map +1 -1
  40. package/dist/issuance/erc20/index.js +2 -0
  41. package/dist/issuance/erc20/parseErc20DeployEvent.d.ts +1 -1
  42. package/dist/issuance/erc20/parseErc20DeployEvent.d.ts.map +1 -1
  43. package/dist/issuance/erc20/parseErc20DeployEvent.js +2 -2
  44. package/dist/issuance/erc721/deploy.d.ts +0 -2
  45. package/dist/issuance/erc721/deploy.d.ts.map +1 -1
  46. package/dist/issuance/erc721/deploy.js +4 -8
  47. package/dist/issuance/erc721/deployGated.d.ts +40 -0
  48. package/dist/issuance/erc721/deployGated.d.ts.map +1 -0
  49. package/dist/issuance/erc721/deployGated.js +58 -0
  50. package/dist/issuance/erc721/index.d.ts +29 -2
  51. package/dist/issuance/erc721/index.d.ts.map +1 -1
  52. package/dist/issuance/erc721/index.js +2 -0
  53. package/dist/issuance/erc721/parseErc721DeployEvent.d.ts +1 -1
  54. package/dist/issuance/erc721/parseErc721DeployEvent.d.ts.map +1 -1
  55. package/dist/issuance/erc721/parseErc721DeployEvent.js +2 -2
  56. package/dist/issuance/index.d.ts +58 -4
  57. package/dist/issuance/index.d.ts.map +1 -1
  58. package/dist/stakingTemplates/templates/common/getCreatePoolEvent.js +1 -1
  59. package/dist/stakingTemplates/templates/common/getPlatformDeployEvent.js +1 -1
  60. package/dist/stakingTemplates/templates/common/getStakeEvent.js +1 -1
  61. package/package.json +8 -8
@@ -6,7 +6,6 @@ export declare const DeployErc20RequestSchema: z.ZodObject<{
6
6
  supplyCap: z.ZodPipe<z.core.$ZodBranded<z.ZodString, "Int256", "out">, z.ZodTransform<bigint, string & z.core.$brand<"Int256">>>;
7
7
  defaultTokenAdmin: z.ZodPipe<z.ZodString & z.ZodType<`0x${string}`, string, z.core.$ZodTypeInternals<`0x${string}`, string>>, z.ZodTransform<`0x${string}`, `0x${string}`>>;
8
8
  minter: z.ZodPipe<z.ZodString & z.ZodType<`0x${string}`, string, z.core.$ZodTypeInternals<`0x${string}`, string>>, z.ZodTransform<`0x${string}`, `0x${string}`>>;
9
- gatingSigner: z.ZodOptional<z.ZodPipe<z.ZodString & z.ZodType<`0x${string}`, string, z.core.$ZodTypeInternals<`0x${string}`, string>>, z.ZodTransform<`0x${string}`, `0x${string}`>>>;
10
9
  }, z.core.$strip>;
11
10
  export declare const CreateErc20Token: import("../../common/controller.js").IController<import("hono/hono-base").HonoBase<import("../../common/context.js").AppContext, {
12
11
  "/": {
@@ -19,7 +18,6 @@ export declare const CreateErc20Token: import("../../common/controller.js").ICon
19
18
  supplyCap: string;
20
19
  defaultTokenAdmin: string;
21
20
  minter: string;
22
- gatingSigner?: string | undefined;
23
21
  };
24
22
  };
25
23
  output: {
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/issuance/erc20/deploy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,wBAAwB;;;;;;;;iBAUnC,CAAC;AAoBH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAuB3B,CAAC"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/issuance/erc20/deploy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,wBAAwB;;;;;;;iBAOnC,CAAC;AA2BH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;QAe3B,CAAC"}
@@ -5,7 +5,6 @@ import { abis } from "@evergonlabs/tmi-factories-sdk";
5
5
  import { createController } from "../../common/controller.js";
6
6
  import { AddressSchema, toTransaction, TransactionSchema } from "../../common/index.js";
7
7
  import { Int256BigInt } from "../../common/int256.js";
8
- import { DEFAULT_COMPILOT_SIGNER } from "../../common/models/compilot.js";
9
8
  import { FactoryChainId, getFactories } from "../common/factories.js";
10
9
  export const DeployErc20RequestSchema = z.object({
11
10
  chainId: FactoryChainId.Schema,
@@ -14,19 +13,23 @@ export const DeployErc20RequestSchema = z.object({
14
13
  supplyCap: Int256BigInt(z.bigint().nonnegative()),
15
14
  defaultTokenAdmin: AddressSchema.openapi({ description: "Address to receive DEFAULT_ADMIN_ROLE" }),
16
15
  minter: AddressSchema.openapi({ description: "Address to receive MINTER_ROLE" }),
17
- gatingSigner: AddressSchema.optional().openapi({
18
- description: "Address of the gating signer for whitelist verification. Defaults to the ComPilot signer.",
19
- }),
20
16
  });
21
- const deployRoute = describeRoute({
22
- summary: "Deploy Gated ERC20 via Factory",
23
- description: `Returns transaction data for deploying a new whitelist-gated ERC20 token via the factory contract.
17
+ const deployErc20Route = describeRoute({
18
+ summary: "Deploy ERC20 via Factory",
19
+ description: `Returns transaction data for deploying a new ERC20 token via the factory contract.
20
+
21
+ Calls deployAndInitializeProxy on the ERC20PausableRecoverableFactory to atomically deploy and initialize a new token proxy.
24
22
 
25
- Calls deployAndInitializeProxy on the ERC20GatedPausableRecoverableFactory to atomically deploy and initialize a new token proxy.`,
23
+ The deployed token supports:
24
+ - mint(to, amount) - Mint tokens (MINTER_ROLE gated)
25
+ - burn(amount) - Burn tokens
26
+ - burnFrom(account, amount) - Burn from account (with allowance)
27
+ - pause() / unpause() - Pause/unpause transfers (PAUSER_ROLE gated)
28
+ - recover(token, to, amount) - Recover tokens (RECOVER_ROLE gated)`,
26
29
  tags: ["Issuance"],
27
30
  responses: {
28
31
  200: {
29
- description: "Returns transaction data for deploying a gated ERC20 token via factory",
32
+ description: "Returns transaction data for deploying an ERC20 token via factory",
30
33
  content: {
31
34
  "application/json": {
32
35
  schema: resolver(TransactionSchema),
@@ -36,21 +39,14 @@ Calls deployAndInitializeProxy on the ERC20GatedPausableRecoverableFactory to at
36
39
  },
37
40
  });
38
41
  export const CreateErc20Token = createController({
39
- build: (factory) => factory.createApp().post("/", deployRoute, validator("json", DeployErc20RequestSchema), async (c) => {
40
- const { chainId, tokenName, tokenSymbol, supplyCap, defaultTokenAdmin, minter, gatingSigner } = c.req.valid("json");
42
+ build: (factory) => factory.createApp().post("/", deployErc20Route, validator("json", DeployErc20RequestSchema), async (c) => {
43
+ const { chainId, tokenName, tokenSymbol, supplyCap, defaultTokenAdmin, minter } = c.req.valid("json");
41
44
  const factory = getFactories(chainId);
42
45
  return c.json(toTransaction({
43
- address: factory.ERC20GatedPausableRecoverableFactory,
44
- abi: abis.erc20GatedPausableRecoverableFactoryAbi,
46
+ address: factory.ERC20PausableRecoverableFactory,
47
+ abi: abis.erc20PausableRecoverableFactoryAbi,
45
48
  functionName: "deployAndInitializeProxy",
46
- args: [
47
- tokenName,
48
- tokenSymbol,
49
- BigInt(supplyCap),
50
- defaultTokenAdmin,
51
- minter,
52
- gatingSigner ?? DEFAULT_COMPILOT_SIGNER,
53
- ],
49
+ args: [tokenName, tokenSymbol, BigInt(supplyCap), defaultTokenAdmin, minter],
54
50
  }));
55
51
  }),
56
52
  });
@@ -0,0 +1,40 @@
1
+ import { z } from "zod";
2
+ export declare const DeployGatedErc20RequestSchema: z.ZodObject<{
3
+ chainId: z.ZodUnion<[z.ZodLiteral<11155111 | 72080>, z.ZodLiteral<11155111 | 72080>, ...z.ZodLiteral<11155111 | 72080>[]]>;
4
+ tokenName: z.ZodString;
5
+ tokenSymbol: z.ZodString;
6
+ supplyCap: z.ZodPipe<z.core.$ZodBranded<z.ZodString, "Int256", "out">, z.ZodTransform<bigint, string & z.core.$brand<"Int256">>>;
7
+ defaultTokenAdmin: z.ZodPipe<z.ZodString & z.ZodType<`0x${string}`, string, z.core.$ZodTypeInternals<`0x${string}`, string>>, z.ZodTransform<`0x${string}`, `0x${string}`>>;
8
+ minter: z.ZodPipe<z.ZodString & z.ZodType<`0x${string}`, string, z.core.$ZodTypeInternals<`0x${string}`, string>>, z.ZodTransform<`0x${string}`, `0x${string}`>>;
9
+ gatingSigner: z.ZodOptional<z.ZodPipe<z.ZodString & z.ZodType<`0x${string}`, string, z.core.$ZodTypeInternals<`0x${string}`, string>>, z.ZodTransform<`0x${string}`, `0x${string}`>>>;
10
+ }, z.core.$strip>;
11
+ export declare const CreateGatedErc20Token: import("../../common/controller.js").IController<import("hono/hono-base").HonoBase<import("../../common/context.js").AppContext, {
12
+ "/": {
13
+ $post: {
14
+ input: {
15
+ json: {
16
+ chainId: 11155111 | 72080;
17
+ tokenName: string;
18
+ tokenSymbol: string;
19
+ supplyCap: string;
20
+ defaultTokenAdmin: string;
21
+ minter: string;
22
+ gatingSigner?: string | undefined;
23
+ };
24
+ };
25
+ output: {
26
+ data: `0x${string}`;
27
+ to: `0x${string}`;
28
+ details: {
29
+ functionName: string;
30
+ address: `0x${string}`;
31
+ abi: any[];
32
+ args: any[];
33
+ };
34
+ };
35
+ outputFormat: "json";
36
+ status: import("hono/utils/http-status").ContentfulStatusCode;
37
+ };
38
+ };
39
+ }, "/">>;
40
+ //# sourceMappingURL=deployGated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployGated.d.ts","sourceRoot":"","sources":["../../../src/issuance/erc20/deployGated.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,6BAA6B;;;;;;;;iBAUxC,CAAC;AAoBH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAyBhC,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { describeRoute } from "hono-openapi";
2
+ import { resolver, validator } from "hono-openapi";
3
+ import { z } from "zod";
4
+ import { abis } from "@evergonlabs/tmi-factories-sdk";
5
+ import { createController } from "../../common/controller.js";
6
+ import { AddressSchema, toTransaction, TransactionSchema } from "../../common/index.js";
7
+ import { Int256BigInt } from "../../common/int256.js";
8
+ import { DEFAULT_COMPILOT_SIGNER } from "../../common/models/compilot.js";
9
+ import { FactoryChainId, getFactories } from "../common/factories.js";
10
+ export const DeployGatedErc20RequestSchema = z.object({
11
+ chainId: FactoryChainId.Schema,
12
+ tokenName: z.string().nonempty().openapi({ description: "Name of the ERC20 token" }),
13
+ tokenSymbol: z.string().nonempty().openapi({ description: "Symbol of the ERC20 token" }),
14
+ supplyCap: Int256BigInt(z.bigint().nonnegative()),
15
+ defaultTokenAdmin: AddressSchema.openapi({ description: "Address to receive DEFAULT_ADMIN_ROLE" }),
16
+ minter: AddressSchema.openapi({ description: "Address to receive MINTER_ROLE" }),
17
+ gatingSigner: AddressSchema.optional().openapi({
18
+ description: "Address of the gating signer for whitelist verification. Defaults to the ComPilot signer.",
19
+ }),
20
+ });
21
+ const deployGatedErc20Route = describeRoute({
22
+ summary: "Deploy Gated ERC20 via Factory",
23
+ description: `Returns transaction data for deploying a new whitelist-gated ERC20 token via the factory contract.
24
+
25
+ Calls deployAndInitializeProxy on the ERC20GatedPausableRecoverableFactory to atomically deploy and initialize a new token proxy.`,
26
+ tags: ["Issuance"],
27
+ responses: {
28
+ 200: {
29
+ description: "Returns transaction data for deploying a gated ERC20 token via factory",
30
+ content: {
31
+ "application/json": {
32
+ schema: resolver(TransactionSchema),
33
+ },
34
+ },
35
+ },
36
+ },
37
+ });
38
+ export const CreateGatedErc20Token = createController({
39
+ build: (factory) => factory
40
+ .createApp()
41
+ .post("/", deployGatedErc20Route, validator("json", DeployGatedErc20RequestSchema), async (c) => {
42
+ const { chainId, tokenName, tokenSymbol, supplyCap, defaultTokenAdmin, minter, gatingSigner } = c.req.valid("json");
43
+ const factory = getFactories(chainId);
44
+ return c.json(toTransaction({
45
+ address: factory.ERC20GatedPausableRecoverableFactory,
46
+ abi: abis.erc20GatedPausableRecoverableFactoryAbi,
47
+ functionName: "deployAndInitializeProxy",
48
+ args: [
49
+ tokenName,
50
+ tokenSymbol,
51
+ BigInt(supplyCap),
52
+ defaultTokenAdmin,
53
+ minter,
54
+ gatingSigner ?? DEFAULT_COMPILOT_SIGNER,
55
+ ],
56
+ }));
57
+ }),
58
+ });
@@ -9,7 +9,6 @@ export declare const Erc20Controller: import("../../common/controller.js").ICont
9
9
  supplyCap: string;
10
10
  defaultTokenAdmin: string;
11
11
  minter: string;
12
- gatingSigner?: string | undefined;
13
12
  };
14
13
  };
15
14
  output: {
@@ -27,6 +26,34 @@ export declare const Erc20Controller: import("../../common/controller.js").ICont
27
26
  };
28
27
  };
29
28
  }, "/deploy"> | import("hono/types").MergeSchemaPath<{
29
+ "/": {
30
+ $post: {
31
+ input: {
32
+ json: {
33
+ chainId: 11155111 | 72080;
34
+ tokenName: string;
35
+ tokenSymbol: string;
36
+ supplyCap: string;
37
+ defaultTokenAdmin: string;
38
+ minter: string;
39
+ gatingSigner?: string | undefined;
40
+ };
41
+ };
42
+ output: {
43
+ data: `0x${string}`;
44
+ to: `0x${string}`;
45
+ details: {
46
+ functionName: string;
47
+ address: `0x${string}`;
48
+ abi: any[];
49
+ args: any[];
50
+ };
51
+ };
52
+ outputFormat: "json";
53
+ status: import("hono/utils/http-status").ContentfulStatusCode;
54
+ };
55
+ };
56
+ }, "/deployGated"> | import("hono/types").MergeSchemaPath<{
30
57
  "/": {
31
58
  $get: {
32
59
  input: {
@@ -44,7 +71,7 @@ export declare const Erc20Controller: import("../../common/controller.js").ICont
44
71
  symbol: string;
45
72
  };
46
73
  outputFormat: "json";
47
- status: 200;
74
+ status: import("hono/utils/http-status").ContentfulStatusCode;
48
75
  };
49
76
  };
50
77
  }, "/getDeployEvent"> | import("hono/types").MergeSchemaPath<{
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/issuance/erc20/index.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAgB1B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/issuance/erc20/index.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAiB1B,CAAC"}
@@ -2,6 +2,7 @@ import { createController } from "../../common/controller.js";
2
2
  import { ApproveErc20Token } from "./approve.js";
3
3
  import { BurnErc20Token } from "./burn.js";
4
4
  import { CreateErc20Token } from "./deploy.js";
5
+ import { CreateGatedErc20Token } from "./deployGated.js";
5
6
  import { GrantRoleErc20 } from "./grantRole.js";
6
7
  import { InitializeErc20 } from "./initialize.js";
7
8
  import { MintErc20Token } from "./mint.js";
@@ -15,6 +16,7 @@ export const Erc20Controller = createController({
15
16
  build: (factory) => factory
16
17
  .createApp()
17
18
  .route("/deploy", CreateErc20Token.build(factory))
19
+ .route("/deployGated", CreateGatedErc20Token.build(factory))
18
20
  .route("/getDeployEvent", ParseErc20DeployEvent.build(factory))
19
21
  .route("/approve", ApproveErc20Token.build(factory))
20
22
  .route("/burn", BurnErc20Token.build(factory))
@@ -16,7 +16,7 @@ export declare const ParseErc20DeployEvent: import("../../common/controller.js")
16
16
  symbol: string;
17
17
  };
18
18
  outputFormat: "json";
19
- status: 200;
19
+ status: import("hono/utils/http-status").ContentfulStatusCode;
20
20
  };
21
21
  };
22
22
  }, "/">>;
@@ -1 +1 @@
1
- {"version":3,"file":"parseErc20DeployEvent.d.ts","sourceRoot":"","sources":["../../../src/issuance/erc20/parseErc20DeployEvent.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;QAuDhC,CAAC"}
1
+ {"version":3,"file":"parseErc20DeployEvent.d.ts","sourceRoot":"","sources":["../../../src/issuance/erc20/parseErc20DeployEvent.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;QAoDhC,CAAC"}
@@ -48,7 +48,7 @@ export const ParseErc20DeployEvent = createController({
48
48
  },
49
49
  }), validator("query", QuerySchema), async (c) => {
50
50
  const params = c.req.valid("query");
51
- const receipt = await waitForTransactionReceipt(getPublicClient(params.chainId), {
51
+ const receipt = await waitForTransactionReceipt(getPublicClient(params.chainId, c.env.config), {
52
52
  hash: params.hash,
53
53
  });
54
54
  const [event] = parseEventLogs({
@@ -66,7 +66,7 @@ export const ParseErc20DeployEvent = createController({
66
66
  supplyCap: event.args.supplyCap.toString(),
67
67
  name: event.args.name,
68
68
  symbol: event.args.symbol,
69
- }, 200);
69
+ });
70
70
  }),
71
71
  });
72
72
  class UnableParseErc20DeployEvent extends HttpError {
@@ -6,7 +6,6 @@ export declare const DeployErc721RequestSchema: z.ZodObject<{
6
6
  baseURI: z.ZodString;
7
7
  defaultTokenAdmin: z.ZodPipe<z.ZodString & z.ZodType<`0x${string}`, string, z.core.$ZodTypeInternals<`0x${string}`, string>>, z.ZodTransform<`0x${string}`, `0x${string}`>>;
8
8
  minter: z.ZodPipe<z.ZodString & z.ZodType<`0x${string}`, string, z.core.$ZodTypeInternals<`0x${string}`, string>>, z.ZodTransform<`0x${string}`, `0x${string}`>>;
9
- gatingSigner: z.ZodOptional<z.ZodPipe<z.ZodString & z.ZodType<`0x${string}`, string, z.core.$ZodTypeInternals<`0x${string}`, string>>, z.ZodTransform<`0x${string}`, `0x${string}`>>>;
10
9
  }, z.core.$strip>;
11
10
  export declare const CreateErc721Token: import("../../common/controller.js").IController<import("hono/hono-base").HonoBase<import("../../common/context.js").AppContext, {
12
11
  "/": {
@@ -19,7 +18,6 @@ export declare const CreateErc721Token: import("../../common/controller.js").ICo
19
18
  baseURI: string;
20
19
  defaultTokenAdmin: string;
21
20
  minter: string;
22
- gatingSigner?: string | undefined;
23
21
  };
24
22
  };
25
23
  output: {
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/issuance/erc721/deploy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,yBAAyB;;;;;;;;iBAUpC,CAAC;AA2BH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAc5B,CAAC"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/issuance/erc721/deploy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,yBAAyB;;;;;;;iBAOpC,CAAC;AA2BH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;QAc5B,CAAC"}
@@ -4,7 +4,6 @@ import { z } from "zod";
4
4
  import { abis } from "@evergonlabs/tmi-factories-sdk";
5
5
  import { createController } from "../../common/controller.js";
6
6
  import { AddressSchema, toTransaction, TransactionSchema } from "../../common/index.js";
7
- import { DEFAULT_COMPILOT_SIGNER } from "../../common/models/compilot.js";
8
7
  import { FactoryChainId, getFactories } from "../common/factories.js";
9
8
  export const DeployErc721RequestSchema = z.object({
10
9
  chainId: FactoryChainId.Schema,
@@ -13,9 +12,6 @@ export const DeployErc721RequestSchema = z.object({
13
12
  baseURI: z.string().openapi({ description: "Base URI for token metadata" }),
14
13
  defaultTokenAdmin: AddressSchema.openapi({ description: "Address to receive DEFAULT_ADMIN_ROLE" }),
15
14
  minter: AddressSchema.openapi({ description: "Address to receive MINTER_ROLE" }),
16
- gatingSigner: AddressSchema.optional().openapi({
17
- description: "Address of the gating signer for whitelist verification. Defaults to the ComPilot signer.",
18
- }),
19
15
  });
20
16
  const deployErc721Route = describeRoute({
21
17
  summary: "Deploy ERC721 via Factory",
@@ -43,13 +39,13 @@ The deployed token supports:
43
39
  });
44
40
  export const CreateErc721Token = createController({
45
41
  build: (factory) => factory.createApp().post("/", deployErc721Route, validator("json", DeployErc721RequestSchema), async (c) => {
46
- const { chainId, tokenName, tokenSymbol, baseURI, defaultTokenAdmin, minter, gatingSigner } = c.req.valid("json");
42
+ const { chainId, tokenName, tokenSymbol, baseURI, defaultTokenAdmin, minter } = c.req.valid("json");
47
43
  const factory = getFactories(chainId);
48
44
  return c.json(toTransaction({
49
- address: factory.ERC721GatedPausableRecoverableFactory,
50
- abi: abis.erc721GatedPausableRecoverableFactoryAbi,
45
+ address: factory.ERC721PausableRecoverableFactory,
46
+ abi: abis.erc721PausableRecoverableFactoryAbi,
51
47
  functionName: "deployAndInitializeProxy",
52
- args: [tokenName, tokenSymbol, baseURI, defaultTokenAdmin, minter, gatingSigner ?? DEFAULT_COMPILOT_SIGNER],
48
+ args: [tokenName, tokenSymbol, baseURI, defaultTokenAdmin, minter],
53
49
  }));
54
50
  }),
55
51
  });
@@ -0,0 +1,40 @@
1
+ import { z } from "zod";
2
+ export declare const DeployGatedErc721RequestSchema: z.ZodObject<{
3
+ chainId: z.ZodUnion<[z.ZodLiteral<11155111 | 72080>, z.ZodLiteral<11155111 | 72080>, ...z.ZodLiteral<11155111 | 72080>[]]>;
4
+ tokenName: z.ZodString;
5
+ tokenSymbol: z.ZodString;
6
+ baseURI: z.ZodString;
7
+ defaultTokenAdmin: z.ZodPipe<z.ZodString & z.ZodType<`0x${string}`, string, z.core.$ZodTypeInternals<`0x${string}`, string>>, z.ZodTransform<`0x${string}`, `0x${string}`>>;
8
+ minter: z.ZodPipe<z.ZodString & z.ZodType<`0x${string}`, string, z.core.$ZodTypeInternals<`0x${string}`, string>>, z.ZodTransform<`0x${string}`, `0x${string}`>>;
9
+ gatingSigner: z.ZodOptional<z.ZodPipe<z.ZodString & z.ZodType<`0x${string}`, string, z.core.$ZodTypeInternals<`0x${string}`, string>>, z.ZodTransform<`0x${string}`, `0x${string}`>>>;
10
+ }, z.core.$strip>;
11
+ export declare const CreateGatedErc721Token: import("../../common/controller.js").IController<import("hono/hono-base").HonoBase<import("../../common/context.js").AppContext, {
12
+ "/": {
13
+ $post: {
14
+ input: {
15
+ json: {
16
+ chainId: 11155111 | 72080;
17
+ tokenName: string;
18
+ tokenSymbol: string;
19
+ baseURI: string;
20
+ defaultTokenAdmin: string;
21
+ minter: string;
22
+ gatingSigner?: string | undefined;
23
+ };
24
+ };
25
+ output: {
26
+ data: `0x${string}`;
27
+ to: `0x${string}`;
28
+ details: {
29
+ functionName: string;
30
+ address: `0x${string}`;
31
+ abi: any[];
32
+ args: any[];
33
+ };
34
+ };
35
+ outputFormat: "json";
36
+ status: import("hono/utils/http-status").ContentfulStatusCode;
37
+ };
38
+ };
39
+ }, "/">>;
40
+ //# sourceMappingURL=deployGated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployGated.d.ts","sourceRoot":"","sources":["../../../src/issuance/erc721/deployGated.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,8BAA8B;;;;;;;;iBAUzC,CAAC;AA4BH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAiBjC,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { describeRoute } from "hono-openapi";
2
+ import { resolver, validator } from "hono-openapi";
3
+ import { z } from "zod";
4
+ import { abis } from "@evergonlabs/tmi-factories-sdk";
5
+ import { createController } from "../../common/controller.js";
6
+ import { AddressSchema, toTransaction, TransactionSchema } from "../../common/index.js";
7
+ import { DEFAULT_COMPILOT_SIGNER } from "../../common/models/compilot.js";
8
+ import { FactoryChainId, getFactories } from "../common/factories.js";
9
+ export const DeployGatedErc721RequestSchema = z.object({
10
+ chainId: FactoryChainId.Schema,
11
+ tokenName: z.string().nonempty().openapi({ description: "Name of the NFT collection" }),
12
+ tokenSymbol: z.string().nonempty().openapi({ description: "Symbol of the NFT collection" }),
13
+ baseURI: z.string().openapi({ description: "Base URI for token metadata" }),
14
+ defaultTokenAdmin: AddressSchema.openapi({ description: "Address to receive DEFAULT_ADMIN_ROLE" }),
15
+ minter: AddressSchema.openapi({ description: "Address to receive MINTER_ROLE" }),
16
+ gatingSigner: AddressSchema.optional().openapi({
17
+ description: "Address of the gating signer for whitelist verification. Defaults to the ComPilot signer.",
18
+ }),
19
+ });
20
+ const deployGatedErc721Route = describeRoute({
21
+ summary: "Deploy Gated ERC721 via Factory",
22
+ description: `Returns transaction data for deploying a new gated ERC721 token via the factory contract.
23
+
24
+ Calls deployAndInitializeProxy on the ERC721GatedPausableRecoverableFactory to atomically deploy and initialize a new token proxy with whitelist gating.
25
+
26
+ The deployed token supports:
27
+ - mint(to, tokenId) - Mint token (MINTER_ROLE gated)
28
+ - burn(tokenId) - Burn token (owner, approved, or MINTER_ROLE)
29
+ - setBaseURI(uri) - Set base URI (URI_SETTER_ROLE gated)
30
+ - setTokenURI(tokenId, uri) - Set token-specific URI (URI_SETTER_ROLE gated)
31
+ - setContractURI(uri) - Set contract metadata URI (URI_SETTER_ROLE gated)
32
+ - Whitelist gating via gatingSigner for transfer verification`,
33
+ tags: ["Issuance"],
34
+ responses: {
35
+ 200: {
36
+ description: "Returns transaction data for deploying a gated ERC721 token via factory",
37
+ content: {
38
+ "application/json": {
39
+ schema: resolver(TransactionSchema),
40
+ },
41
+ },
42
+ },
43
+ },
44
+ });
45
+ export const CreateGatedErc721Token = createController({
46
+ build: (factory) => factory
47
+ .createApp()
48
+ .post("/", deployGatedErc721Route, validator("json", DeployGatedErc721RequestSchema), async (c) => {
49
+ const { chainId, tokenName, tokenSymbol, baseURI, defaultTokenAdmin, minter, gatingSigner } = c.req.valid("json");
50
+ const factory = getFactories(chainId);
51
+ return c.json(toTransaction({
52
+ address: factory.ERC721GatedPausableRecoverableFactory,
53
+ abi: abis.erc721GatedPausableRecoverableFactoryAbi,
54
+ functionName: "deployAndInitializeProxy",
55
+ args: [tokenName, tokenSymbol, baseURI, defaultTokenAdmin, minter, gatingSigner ?? DEFAULT_COMPILOT_SIGNER],
56
+ }));
57
+ }),
58
+ });
@@ -9,7 +9,6 @@ export declare const Erc721Controller: import("../../common/controller.js").ICon
9
9
  baseURI: string;
10
10
  defaultTokenAdmin: string;
11
11
  minter: string;
12
- gatingSigner?: string | undefined;
13
12
  };
14
13
  };
15
14
  output: {
@@ -27,6 +26,34 @@ export declare const Erc721Controller: import("../../common/controller.js").ICon
27
26
  };
28
27
  };
29
28
  }, "/deploy"> | import("hono/types").MergeSchemaPath<{
29
+ "/": {
30
+ $post: {
31
+ input: {
32
+ json: {
33
+ chainId: 11155111 | 72080;
34
+ tokenName: string;
35
+ tokenSymbol: string;
36
+ baseURI: string;
37
+ defaultTokenAdmin: string;
38
+ minter: string;
39
+ gatingSigner?: string | undefined;
40
+ };
41
+ };
42
+ output: {
43
+ data: `0x${string}`;
44
+ to: `0x${string}`;
45
+ details: {
46
+ functionName: string;
47
+ address: `0x${string}`;
48
+ abi: any[];
49
+ args: any[];
50
+ };
51
+ };
52
+ outputFormat: "json";
53
+ status: import("hono/utils/http-status").ContentfulStatusCode;
54
+ };
55
+ };
56
+ }, "/deployGated"> | import("hono/types").MergeSchemaPath<{
30
57
  "/": {
31
58
  $get: {
32
59
  input: {
@@ -44,7 +71,7 @@ export declare const Erc721Controller: import("../../common/controller.js").ICon
44
71
  baseURI: string;
45
72
  };
46
73
  outputFormat: "json";
47
- status: 200;
74
+ status: import("hono/utils/http-status").ContentfulStatusCode;
48
75
  };
49
76
  };
50
77
  }, "/getDeployEvent"> | import("hono/types").MergeSchemaPath<{
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/issuance/erc721/index.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAiB3B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/issuance/erc721/index.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAkB3B,CAAC"}
@@ -2,6 +2,7 @@ import { createController } from "../../common/controller.js";
2
2
  import { ApproveErc721 } from "./approve.js";
3
3
  import { BurnErc721 } from "./burn.js";
4
4
  import { CreateErc721Token } from "./deploy.js";
5
+ import { CreateGatedErc721Token } from "./deployGated.js";
5
6
  import { GrantRoleErc721 } from "./grantRole.js";
6
7
  import { InitializeErc721 } from "./initialize.js";
7
8
  import { MintErc721 } from "./mint.js";
@@ -16,6 +17,7 @@ export const Erc721Controller = createController({
16
17
  build: (factory) => factory
17
18
  .createApp()
18
19
  .route("/deploy", CreateErc721Token.build(factory))
20
+ .route("/deployGated", CreateGatedErc721Token.build(factory))
19
21
  .route("/getDeployEvent", ParseErc721DeployEvent.build(factory))
20
22
  .route("/approve", ApproveErc721.build(factory))
21
23
  .route("/burn", BurnErc721.build(factory))
@@ -16,7 +16,7 @@ export declare const ParseErc721DeployEvent: import("../../common/controller.js"
16
16
  baseURI: string;
17
17
  };
18
18
  outputFormat: "json";
19
- status: 200;
19
+ status: import("hono/utils/http-status").ContentfulStatusCode;
20
20
  };
21
21
  };
22
22
  }, "/">>;
@@ -1 +1 @@
1
- {"version":3,"file":"parseErc721DeployEvent.d.ts","sourceRoot":"","sources":["../../../src/issuance/erc721/parseErc721DeployEvent.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;QAuDjC,CAAC"}
1
+ {"version":3,"file":"parseErc721DeployEvent.d.ts","sourceRoot":"","sources":["../../../src/issuance/erc721/parseErc721DeployEvent.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;QAoDjC,CAAC"}
@@ -47,7 +47,7 @@ export const ParseErc721DeployEvent = createController({
47
47
  },
48
48
  }), validator("query", QuerySchema), async (c) => {
49
49
  const params = c.req.valid("query");
50
- const receipt = await waitForTransactionReceipt(getPublicClient(params.chainId), {
50
+ const receipt = await waitForTransactionReceipt(getPublicClient(params.chainId, c.env.config), {
51
51
  hash: params.hash,
52
52
  });
53
53
  const [event] = parseEventLogs({
@@ -65,7 +65,7 @@ export const ParseErc721DeployEvent = createController({
65
65
  name: event.args.name,
66
66
  symbol: event.args.symbol,
67
67
  baseURI: event.args.baseURI,
68
- }, 200);
68
+ });
69
69
  }),
70
70
  });
71
71
  class UnableParseErc721DeployEvent extends HttpError {