@inco/js 0.8.0-devnet-11 → 0.8.0-devnet-13

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 (50) hide show
  1. package/README.md +541 -47
  2. package/dist/cjs/binary.d.ts +84 -0
  3. package/dist/cjs/binary.js +81 -4
  4. package/dist/cjs/chain.d.ts +21 -4
  5. package/dist/cjs/chain.js +18 -7
  6. package/dist/cjs/encryption/encryption.d.ts +115 -0
  7. package/dist/cjs/encryption/encryption.js +98 -7
  8. package/dist/cjs/generated/local-node.d.ts +2 -2
  9. package/dist/cjs/generated/local-node.js +2 -2
  10. package/dist/cjs/handle.d.ts +41 -0
  11. package/dist/cjs/handle.js +31 -6
  12. package/dist/cjs/lite/lightning.d.ts +19 -0
  13. package/dist/cjs/lite/lightning.js +20 -5
  14. package/dist/cjs/local/local-node.d.ts +18 -0
  15. package/dist/cjs/local/local-node.js +18 -3
  16. package/dist/cjs/reencryption/eip712.d.ts +27 -0
  17. package/dist/cjs/reencryption/eip712.js +20 -7
  18. package/dist/cjs/reencryption/types.d.ts +24 -0
  19. package/dist/cjs/viem.d.ts +11 -0
  20. package/dist/cjs/viem.js +12 -1
  21. package/dist/esm/binary.d.ts +84 -0
  22. package/dist/esm/binary.js +81 -4
  23. package/dist/esm/chain.d.ts +21 -4
  24. package/dist/esm/chain.js +17 -6
  25. package/dist/esm/encryption/encryption.d.ts +115 -0
  26. package/dist/esm/encryption/encryption.js +98 -7
  27. package/dist/esm/generated/local-node.d.ts +2 -2
  28. package/dist/esm/generated/local-node.js +2 -2
  29. package/dist/esm/handle.d.ts +41 -0
  30. package/dist/esm/handle.js +31 -6
  31. package/dist/esm/lite/lightning.d.ts +19 -0
  32. package/dist/esm/lite/lightning.js +20 -5
  33. package/dist/esm/local/local-node.d.ts +18 -0
  34. package/dist/esm/local/local-node.js +18 -3
  35. package/dist/esm/reencryption/eip712.d.ts +27 -0
  36. package/dist/esm/reencryption/eip712.js +20 -7
  37. package/dist/esm/reencryption/types.d.ts +24 -0
  38. package/dist/esm/viem.d.ts +11 -0
  39. package/dist/esm/viem.js +12 -1
  40. package/dist/types/binary.d.ts +84 -0
  41. package/dist/types/chain.d.ts +21 -4
  42. package/dist/types/encryption/encryption.d.ts +115 -0
  43. package/dist/types/generated/local-node.d.ts +2 -2
  44. package/dist/types/handle.d.ts +41 -0
  45. package/dist/types/lite/lightning.d.ts +19 -0
  46. package/dist/types/local/local-node.d.ts +18 -0
  47. package/dist/types/reencryption/eip712.d.ts +27 -0
  48. package/dist/types/reencryption/types.d.ts +24 -0
  49. package/dist/types/viem.d.ts +11 -0
  50. package/package.json +1 -7
@@ -4,6 +4,12 @@ exports.LocalNodeEnv = void 0;
4
4
  exports.parseLocalEnv = parseLocalEnv;
5
5
  const effect_1 = require("effect");
6
6
  const binary_js_1 = require("../binary.js");
7
+ /**
8
+ * Schema for the environment variables required to connect to a local Inco node.
9
+ *
10
+ * Includes executor/sender addresses, keys, covalidator settings, and optional
11
+ * remote compute-server overrides. Typically populated from a `.env` file.
12
+ */
7
13
  exports.LocalNodeEnv = effect_1.Schema.Struct({
8
14
  DEPLOYER_ADDRESS: binary_js_1.Address,
9
15
  STATE_DUMP: effect_1.Schema.String,
@@ -23,9 +29,18 @@ exports.LocalNodeEnv = effect_1.Schema.Struct({
23
29
  COVALIDATOR_HOST_CHAIN_ID: effect_1.Schema.optional(effect_1.Schema.String),
24
30
  COVALIDATOR_URL: effect_1.Schema.optional(effect_1.Schema.String),
25
31
  COVALIDATOR_HOST_CHAIN_RPC_URL: effect_1.Schema.optional(effect_1.Schema.String),
32
+ COVALIDATOR_COMPUTE_TYPE: effect_1.Schema.optional(effect_1.Schema.String),
33
+ COVALIDATOR_STORAGE_KEY: effect_1.Schema.optional(binary_js_1.HexString),
26
34
  });
27
- // Parses a local environment file or object into a LocalNodeEnv type.
28
- // If no file or object is provided, it defaults to process.env.
35
+ /**
36
+ * Parses a dotenv-formatted string or `Buffer` into a validated {@link LocalNodeEnv}.
37
+ *
38
+ * Falls back to `process.env` when no argument is provided.
39
+ *
40
+ * @param envFileOrObj - A dotenv-formatted string, `Buffer`, or `undefined` to use `process.env`.
41
+ * @returns A validated `LocalNodeEnv` object.
42
+ * @throws If required environment variables are missing or invalid.
43
+ */
29
44
  function parseLocalEnv(envFileOrObj) {
30
45
  const envObj = envFileOrObj ? readEnv(envFileOrObj) : process.env;
31
46
  return effect_1.Schema.decodeUnknownSync(exports.LocalNodeEnv)(envObj);
@@ -62,4 +77,4 @@ function parseEnv(envContent) {
62
77
  }
63
78
  return env;
64
79
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb2NhbC9sb2NhbC1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTRCQSxzQ0FHQztBQS9CRCxtQ0FBZ0M7QUFDaEMsNENBQWtEO0FBRXJDLFFBQUEsWUFBWSxHQUFHLGVBQU0sQ0FBQyxNQUFNLENBQUM7SUFDeEMsZ0JBQWdCLEVBQUUsbUJBQU87SUFDekIsVUFBVSxFQUFFLGVBQU0sQ0FBQyxNQUFNO0lBQ3pCLGdCQUFnQixFQUFFLG1CQUFPO0lBQ3pCLG9DQUFvQztJQUNwQyxjQUFjLEVBQUUsZUFBTSxDQUFDLFFBQVEsQ0FBQyxxQkFBUyxDQUFDO0lBQzFDLGNBQWMsRUFBRSxtQkFBTztJQUN2QixrQkFBa0IsRUFBRSxxQkFBUztJQUM3QixvQ0FBb0M7SUFDcEMscUJBQXFCLEVBQUUsZUFBTSxDQUFDLFFBQVEsQ0FBQyxxQkFBUyxDQUFDO0lBQ2pELE1BQU0sRUFBRSxlQUFNLENBQUMsTUFBTTtJQUNyQixvQ0FBb0M7SUFDcEMsK0JBQStCLEVBQUUsZUFBTSxDQUFDLFFBQVEsQ0FBQyxxQkFBUyxDQUFDO0lBQzNELG9DQUFvQztJQUNwQyxzQ0FBc0MsRUFBRSxlQUFNLENBQUMsUUFBUSxDQUFDLHFCQUFTLENBQUM7SUFDbEUsOEJBQThCLEVBQUUsbUJBQU87SUFDdkMseUJBQXlCLEVBQUUsZUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3pELGVBQWUsRUFBRSxlQUFNLENBQUMsUUFBUSxDQUFDLGVBQU0sQ0FBQyxNQUFNLENBQUM7SUFDL0MsOEJBQThCLEVBQUUsZUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFNLENBQUMsTUFBTSxDQUFDO0NBQy9ELENBQUMsQ0FBQztBQUlILHNFQUFzRTtBQUN0RSxnRUFBZ0U7QUFDaEUsU0FBZ0IsYUFBYSxDQUFDLFlBQThCO0lBQzFELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBQ2xFLE9BQU8sZUFBTSxDQUFDLGlCQUFpQixDQUFDLG9CQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsVUFBMkI7SUFDMUMsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELG1GQUFtRjtBQUNuRixTQUFTLFFBQVEsQ0FBQyxVQUFrQjtJQUNsQyxJQUFJLEdBQUcsR0FBMkIsRUFBRSxDQUFDO0lBQ3JDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFckMsaUNBQWlDO0lBQ2pDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUMsSUFBSSxVQUFVLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3hELElBQUksS0FBSyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUV6RCx1QkFBdUI7Z0JBQ3ZCLElBQ0UsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzlDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQzlDLENBQUM7b0JBQ0QsS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLENBQUM7Z0JBRUQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNuQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCx5REFBeUQ7SUFDekQsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBZSxFQUFFLEVBQUU7WUFDOUQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyJ9
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb2NhbC9sb2NhbC1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTRDQSxzQ0FHQztBQS9DRCxtQ0FBZ0M7QUFDaEMsNENBQWtEO0FBRWxEOzs7OztHQUtHO0FBQ1UsUUFBQSxZQUFZLEdBQUcsZUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN4QyxnQkFBZ0IsRUFBRSxtQkFBTztJQUN6QixVQUFVLEVBQUUsZUFBTSxDQUFDLE1BQU07SUFDekIsZ0JBQWdCLEVBQUUsbUJBQU87SUFDekIsb0NBQW9DO0lBQ3BDLGNBQWMsRUFBRSxlQUFNLENBQUMsUUFBUSxDQUFDLHFCQUFTLENBQUM7SUFDMUMsY0FBYyxFQUFFLG1CQUFPO0lBQ3ZCLGtCQUFrQixFQUFFLHFCQUFTO0lBQzdCLG9DQUFvQztJQUNwQyxxQkFBcUIsRUFBRSxlQUFNLENBQUMsUUFBUSxDQUFDLHFCQUFTLENBQUM7SUFDakQsTUFBTSxFQUFFLGVBQU0sQ0FBQyxNQUFNO0lBQ3JCLG9DQUFvQztJQUNwQywrQkFBK0IsRUFBRSxlQUFNLENBQUMsUUFBUSxDQUFDLHFCQUFTLENBQUM7SUFDM0Qsb0NBQW9DO0lBQ3BDLHNDQUFzQyxFQUFFLGVBQU0sQ0FBQyxRQUFRLENBQUMscUJBQVMsQ0FBQztJQUNsRSw4QkFBOEIsRUFBRSxtQkFBTztJQUN2Qyx5QkFBeUIsRUFBRSxlQUFNLENBQUMsUUFBUSxDQUFDLGVBQU0sQ0FBQyxNQUFNLENBQUM7SUFDekQsZUFBZSxFQUFFLGVBQU0sQ0FBQyxRQUFRLENBQUMsZUFBTSxDQUFDLE1BQU0sQ0FBQztJQUMvQyw4QkFBOEIsRUFBRSxlQUFNLENBQUMsUUFBUSxDQUFDLGVBQU0sQ0FBQyxNQUFNLENBQUM7SUFDOUQsd0JBQXdCLEVBQUUsZUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3hELHVCQUF1QixFQUFFLGVBQU0sQ0FB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
@@ -14,9 +14,36 @@ declare const baseEIP712: Schema.Struct<{
14
14
  }>>>;
15
15
  }>;
16
16
  type BaseEIP712 = typeof baseEIP712.Type;
17
+ /**
18
+ * An EIP-712 typed data payload with a generic `message` field.
19
+ *
20
+ * Extends the base EIP-712 structure (domain, primaryType, types) with
21
+ * a strongly-typed `message` object for signing.
22
+ *
23
+ * @typeParam Message - The shape of the application-specific message to sign.
24
+ */
17
25
  export interface EIP712<Message extends object> extends BaseEIP712 {
18
26
  message: Message;
19
27
  }
28
+ /**
29
+ * Creates an EIP-712 typed data payload for user signing.
30
+ *
31
+ * Used to verify the user controls the private key corresponding to the ephemeral
32
+ * public key embedded in the payload. The `message` keys must exactly match the
33
+ * `name` values in `primaryTypeFields`.
34
+ *
35
+ * @typeParam PrimaryType - The EIP-712 primary type name.
36
+ * @typeParam Message - The shape of the message to sign.
37
+ * @param params.chainId - The chain ID for the EIP-712 domain.
38
+ * @param params.primaryType - The primary type name (e.g. `"Reencrypt"`).
39
+ * @param params.primaryTypeFields - The field definitions for the primary type.
40
+ * @param params.message - The message object to sign (must match `primaryTypeFields`).
41
+ * @param params.verifyingContract - Optional verifying contract address for the domain.
42
+ * @param params.domainName - Human-readable name for the EIP-712 domain.
43
+ * @param params.domainVersion - Version string for the EIP-712 domain.
44
+ * @returns A complete {@link EIP712} payload ready for signing.
45
+ * @throws If message keys do not match `primaryTypeFields` names.
46
+ */
20
47
  export declare function createEIP712Payload<PrimaryType extends string, Message extends object>({ chainId, primaryType, primaryTypeFields, message, verifyingContract, domainName, domainVersion, }: {
21
48
  chainId: bigint;
22
49
  primaryType: PrimaryType;
@@ -23,12 +23,25 @@ const baseEIP712 = effect_1.Schema.Struct({
23
23
  })),
24
24
  }),
25
25
  });
26
- // This function creates the payload that will be signed by the user. It is used to verify that the
27
- // user has access to the private key that corresponds to the ephemeral public key in the payload.
28
- // If the last argument is provided, it will be used as the contract address.
29
- //
30
- // The `message` argument must have the same keys as the all the `name` values
31
- // in the `primaryTypeFields` argument.
26
+ /**
27
+ * Creates an EIP-712 typed data payload for user signing.
28
+ *
29
+ * Used to verify the user controls the private key corresponding to the ephemeral
30
+ * public key embedded in the payload. The `message` keys must exactly match the
31
+ * `name` values in `primaryTypeFields`.
32
+ *
33
+ * @typeParam PrimaryType - The EIP-712 primary type name.
34
+ * @typeParam Message - The shape of the message to sign.
35
+ * @param params.chainId - The chain ID for the EIP-712 domain.
36
+ * @param params.primaryType - The primary type name (e.g. `"Reencrypt"`).
37
+ * @param params.primaryTypeFields - The field definitions for the primary type.
38
+ * @param params.message - The message object to sign (must match `primaryTypeFields`).
39
+ * @param params.verifyingContract - Optional verifying contract address for the domain.
40
+ * @param params.domainName - Human-readable name for the EIP-712 domain.
41
+ * @param params.domainVersion - Version string for the EIP-712 domain.
42
+ * @returns A complete {@link EIP712} payload ready for signing.
43
+ * @throws If message keys do not match `primaryTypeFields` names.
44
+ */
32
45
  function createEIP712Payload({ chainId, primaryType, primaryTypeFields, message, verifyingContract, domainName, domainVersion, }) {
33
46
  const types = {
34
47
  // This refers to the domain the contract is hosted on.
@@ -74,4 +87,4 @@ function createEIP712Payload({ chainId, primaryType, primaryTypeFields, message,
74
87
  };
75
88
  return msgParams;
76
89
  }
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWlwNzEyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlZW5jcnlwdGlvbi9laXA3MTIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF3Q0Esa0RBcUVDO0FBN0dELG1DQUFnQztBQUVoQyw0Q0FBeUM7QUFFekMseUVBQXlFO0FBQ3pFLCtDQUErQztBQUMvQyxNQUFNLFVBQVUsR0FBRyxlQUFNLENBQUMsTUFBTSxDQUFDO0lBQy9CLE1BQU0sRUFBRSxlQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3BCLE9BQU8sRUFBRSxlQUFNLENBQUMsTUFBTTtRQUN0QixJQUFJLEVBQUUsZUFBTSxDQUFDLE1BQU07UUFDbkIsT0FBTyxFQUFFLGVBQU0sQ0FBQyxNQUFNO1FBQ3RCLGlCQUFpQixFQUFFLGVBQU0sQ0FBQyxRQUFRLENBQUMscUJBQVMsQ0FBQztRQUM3QywyRUFBMkU7UUFDM0Usc0JBQXNCO0tBQ3ZCLENBQUM7SUFDRixXQUFXLEVBQUUsZUFBTSxDQUFDLE1BQU07SUFDMUIsS0FBSyxFQUFFLGVBQU0sQ0FBQyxNQUFNLENBQUM7UUFDbkIsR0FBRyxFQUFFLGVBQU0sQ0FBQyxNQUFNO1FBQ2xCLEtBQUssRUFBRSxlQUFNLENBQUMsS0FBSyxDQUNqQixlQUFNLENBQUMsTUFBTSxDQUFDO1lBQ1osSUFBSSxFQUFFLGVBQU0sQ0FBQyxNQUFNO1lBQ25CLElBQUksRUFBRSxlQUFNLENBQUMsTUFBTTtTQUNwQixDQUFDLENBQ0g7S0FDRixDQUFDO0NBQ0gsQ0FBQyxDQUFDO0FBU0gsbUdBQW1HO0FBQ25HLGtHQUFrRztBQUNsRyw2RUFBNkU7QUFDN0UsRUFBRTtBQUNGLDhFQUE4RTtBQUM5RSx1Q0FBdUM7QUFDdkMsU0FBZ0IsbUJBQW1CLENBR2pDLEVBQ0EsT0FBTyxFQUNQLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsT0FBTyxFQUNQLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsYUFBYSxHQVNkO0lBQ0MsTUFBTSxLQUFLLEdBQUc7UUFDWix1REFBdUQ7UUFDdkQsWUFBWSxFQUFFO1lBQ1osRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDaEMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDbkMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7U0FDckM7UUFDRCx3QkFBd0I7UUFDeEIsQ0FBQyxXQUFXLENBQUMsRUFBRSxpQkFBaUI7S0FDakMsQ0FBQztJQUVGLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUN0QixLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekMsTUFBTSxxQkFBcUIsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzRSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUsscUJBQXFCLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDeEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxNQUFNLElBQUksS0FBSyxDQUNiLGVBQWUsR0FBRyx1Q0FBdUMsQ0FDMUQsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUc7UUFDaEIsS0FBSztRQUNMLDZGQUE2RjtRQUM3RixnR0FBZ0c7UUFDaEcsc0JBQXNCO1FBQ3RCLHlEQUF5RDtRQUN6RCxXQUFXO1FBQ1gsTUFBTSxFQUFFO1lBQ04seUVBQXlFO1lBQ3pFLElBQUksRUFBRSxVQUFVO1lBQ2hCLHNDQUFzQztZQUN0QyxPQUFPLEVBQUUsYUFBYTtZQUN0QixtREFBbUQ7WUFDbkQsT0FBTztZQUNQLGlCQUFpQjtTQUNsQjtRQUNELE9BQU87S0FDUixDQUFDO0lBRUYsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyJ9
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWlwNzEyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlZW5jcnlwdGlvbi9laXA3MTIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE0REEsa0RBcUVDO0FBaklELG1DQUFnQztBQUVoQyw0Q0FBeUM7QUFFekMseUVBQXlFO0FBQ3pFLCtDQUErQztBQUMvQyxNQUFNLFVBQVUsR0FBRyxlQUFNLENBQUMsTUFBTSxDQUFDO0lBQy9CLE1BQU0sRUFBRSxlQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3BCLE9BQU8sRUFBRSxlQUFNLENBQUMsTUFBTTtRQUN0QixJQUFJLEVBQUUsZUFBTSxDQUFDLE1BQU07UUFDbkIsT0FBTyxFQUFFLGVBQU0sQ0FBQyxNQUFNO1FBQ3RCLGlCQUFpQixFQUFFLGVBQU0sQ0FBQyxRQUFRLENBQUMscUJBQVMsQ0FBQztRQUM3QywyRUFBMkU7UUFDM0Usc0JBQXNCO0tBQ3ZCLENBQUM7SUFDRixXQUFXLEVBQUUsZUFBTSxDQUFDLE1BQU07SUFDMUIsS0FBSyxFQUFFLGVBQU0sQ0FBQyxNQUFNLENBQUM7UUFDbkIsR0FBRyxFQUFFLGVBQU0sQ0FBQyxNQUFNO1FBQ2xCLEtBQUssRUFBRSxlQUFNLENBQUMsS0FBSyxDQUNqQixlQUFNLENBQUMsTUFBTSxDQUFDO1lBQ1osSUFBSSxFQUFFLGVBQU0sQ0FBQyxNQUFNO1lBQ25CLElBQUksRUFBRSxlQUFNLENBQUMsTUFBTTtTQUNwQixDQUFDLENBQ0g7S0FDRixDQUFDO0NBQ0gsQ0FBQyxDQUFDO0FBZ0JIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxTQUFnQixtQkFBbUIsQ0FHakMsRUFDQSxPQUFPLEVBQ1AsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixhQUFhLEdBU2Q7SUFDQyxNQUFNLEtBQUssR0FBRztRQUNaLHVEQUF1RDtRQUN2RCxZQUFZLEVBQUU7WUFDWixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNoQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNuQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtTQUNyQztRQUNELHdCQUF3QjtRQUN4QixDQUFDLFdBQVcsQ0FBQyxFQUFFLGlCQUFpQjtLQUNqQyxDQUFDO0lBRUYsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxxRUFBcUU7SUFDckUsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxNQUFNLHFCQUFxQixHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNFLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN4RCxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELEtBQUssTUFBTSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQ2IsZUFBZSxHQUFHLHVDQUF1QyxDQUMxRCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRztRQUNoQixLQUFLO1FBQ0wsNkZBQTZGO1FBQzdGLGdHQUFnRztRQUNoRyxzQkFBc0I7UUFDdEIseURBQXlEO1FBQ3pELFdBQVc7UUFDWCxNQUFNLEVBQUU7WUFDTix5RUFBeUU7WUFDekUsSUFBSSxFQUFFLFVBQVU7WUFDaEIsc0NBQXNDO1lBQ3RDLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLG1EQUFtRDtZQUNuRCxPQUFPO1lBQ1AsaUJBQWlCO1NBQ2xCO1FBQ0QsT0FBTztLQUNSLENBQUM7SUFFRixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIn0=
@@ -4,18 +4,42 @@ import { CiphertextOf, EncryptionScheme, PlaintextOf, SupportedFheType } from '.
4
4
  import { Handle } from '../handle.js';
5
5
  import type { XwingKeypair } from '../lite/xwing.js';
6
6
  import type { BackoffConfig } from '../retry.js';
7
+ /**
8
+ * The core reencryption function type. Takes a handle (and optional ciphertext) and returns
9
+ * the decrypted plaintext. Supports retry configuration for handles that are not yet available.
10
+ *
11
+ * @typeParam S - The encryption scheme (e.g. X-Wing).
12
+ */
7
13
  export type Reencryptor<S extends EncryptionScheme> = <T extends SupportedFheType>(args: ReencryptFnArgs<S, T>, backoffConfig?: Partial<BackoffConfig>) => Promise<PlaintextOf<S, T>>;
14
+ /** Arguments required to construct a {@link Reencryptor}. */
8
15
  export interface ReencryptorArgs {
9
16
  chainId: bigint;
10
17
  }
18
+ /**
19
+ * Arguments for a single reencryption call.
20
+ *
21
+ * @typeParam S - The encryption scheme.
22
+ * @typeParam T - The ENCRYPTION type of the ciphertext.
23
+ */
11
24
  export type ReencryptFnArgs<S extends EncryptionScheme, T extends SupportedFheType> = {
12
25
  handle: Handle;
26
+ /**
27
+ * Optional ciphertext hint. If provided, the reencrypt endpoint may use it directly
28
+ * instead of fetching from the covalidators.
29
+ */
13
30
  ciphertext?: CiphertextOf<S, T>;
14
31
  };
32
+ /** Union of supported ephemeral keypair types for reencryption (currently X-Wing only). */
15
33
  export type SupportedEphemeralKeypairs = XwingKeypair;
34
+ /** An object whose public key can be serialized to a `Uint8Array`. */
16
35
  export interface PubKeyEncodable {
17
36
  encodePublicKey(): Uint8Array;
18
37
  }
38
+ /**
39
+ * A reencryption request to be sent to a reencrypt endpoint.
40
+ *
41
+ * @typeParam EKP - The type of ephemeral keypair used for the reencryption session.
42
+ */
19
43
  export interface ReencryptEndpointRequest<EKP extends SupportedEphemeralKeypairs> {
20
44
  userAddress: Address;
21
45
  handle: Handle;
@@ -1,5 +1,6 @@
1
1
  import { Chain } from 'viem';
2
2
  import { Chainish } from './chain.js';
3
+ /** Map of supported chain short names to their viem chain objects. */
3
4
  export declare const chains: {
4
5
  sepolia: {
5
6
  blockExplorers: {
@@ -778,4 +779,14 @@ export declare const chains: {
778
779
  readonly network: "worldchain-sepolia";
779
780
  };
780
781
  };
782
+ /**
783
+ * Resolves a {@link Chainish} value to a viem {@link Chain} object.
784
+ *
785
+ * Accepts a chain ID (`number` or `bigint`), an object with an `id` field,
786
+ * or a chain short name (e.g. `"baseSepolia"`).
787
+ *
788
+ * @param chainish - The chain identifier to resolve.
789
+ * @returns The matching `viem` chain object.
790
+ * @throws If no supported chain matches the given identifier.
791
+ */
781
792
  export declare function getViemChain(chainish: Chainish): Chain;
package/dist/cjs/viem.js CHANGED
@@ -4,6 +4,7 @@ exports.chains = void 0;
4
4
  exports.getViemChain = getViemChain;
5
5
  const chains_1 = require("viem/chains");
6
6
  const chain_js_1 = require("./chain.js");
7
+ /** Map of supported chain short names to their viem chain objects. */
7
8
  exports.chains = {
8
9
  sepolia: chains_1.sepolia,
9
10
  baseSepolia: chains_1.baseSepolia,
@@ -12,6 +13,16 @@ exports.chains = {
12
13
  anvil: chains_1.anvil,
13
14
  worldchainSepolia: chains_1.worldchainSepolia,
14
15
  };
16
+ /**
17
+ * Resolves a {@link Chainish} value to a viem {@link Chain} object.
18
+ *
19
+ * Accepts a chain ID (`number` or `bigint`), an object with an `id` field,
20
+ * or a chain short name (e.g. `"baseSepolia"`).
21
+ *
22
+ * @param chainish - The chain identifier to resolve.
23
+ * @returns The matching `viem` chain object.
24
+ * @throws If no supported chain matches the given identifier.
25
+ */
15
26
  function getViemChain(chainish) {
16
27
  const { name } = (0, chain_js_1.getSupportedChain)(chainish);
17
28
  const chain = exports.chains[name];
@@ -20,4 +31,4 @@ function getViemChain(chainish) {
20
31
  }
21
32
  return chain;
22
33
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmllbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92aWVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW9CQSxvQ0FPQztBQTFCRCx3Q0FPcUI7QUFDckIseUNBQXlEO0FBRTVDLFFBQUEsTUFBTSxHQUFHO0lBQ3BCLE9BQU8sRUFBUCxnQkFBTztJQUNQLFdBQVcsRUFBWCxvQkFBVztJQUNYLFlBQVksRUFBWixxQkFBWTtJQUNaLGFBQWEsRUFBYixzQkFBYTtJQUNiLEtBQUssRUFBTCxjQUFLO0lBQ0wsaUJBQWlCLEVBQWpCLDBCQUFpQjtDQUNsQixDQUFDO0FBRUYsU0FBZ0IsWUFBWSxDQUFDLFFBQWtCO0lBQzdDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFBLDRCQUFpQixFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sS0FBSyxHQUFHLGNBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMifQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmllbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92aWVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQStCQSxvQ0FPQztBQXJDRCx3Q0FPcUI7QUFDckIseUNBQXlEO0FBRXpELHNFQUFzRTtBQUN6RCxRQUFBLE1BQU0sR0FBRztJQUNwQixPQUFPLEVBQVAsZ0JBQU87SUFDUCxXQUFXLEVBQVgsb0JBQVc7SUFDWCxZQUFZLEVBQVoscUJBQVk7SUFDWixhQUFhLEVBQWIsc0JBQWE7SUFDYixLQUFLLEVBQUwsY0FBSztJQUNMLGlCQUFpQixFQUFqQiwwQkFBaUI7Q0FDbEIsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLFlBQVksQ0FBQyxRQUFrQjtJQUM3QyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBQSw0QkFBaUIsRUFBQyxRQUFRLENBQUMsQ0FBQztJQUM3QyxNQUFNLEtBQUssR0FBRyxjQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIn0=
@@ -1,22 +1,106 @@
1
1
  import { Schema } from 'effect';
2
2
  import { Hex } from 'viem';
3
+ /** Schema for a `0x`-prefixed hex string. */
3
4
  export declare const HexString: Schema.TemplateLiteral<`0x${string}`>;
5
+ /** A `0x`-prefixed hex-encoded string (e.g. `"0xdeadbeef"`). */
4
6
  export type HexString = typeof HexString.Type;
7
+ /** A value that can represent raw bytes — either a hex string or a `Uint8Array`. */
5
8
  export type BytesIsh = string | Uint8Array;
9
+ /**
10
+ * Converts a `Uint8Array` to a `bigint`. Returns `0n` for empty arrays.
11
+ * @param byteArray - The byte array to convert.
12
+ * @returns The unsigned big-endian integer representation of the bytes.
13
+ */
6
14
  export declare function bytesToBigInt(byteArray: Uint8Array): bigint;
15
+ /**
16
+ * Converts a `Buffer` to a `bigint`.
17
+ * @param buffer - The buffer to convert.
18
+ * @returns The unsigned big-endian integer representation of the buffer.
19
+ */
7
20
  export declare function bufferToBigInt(buffer: Buffer): bigint;
21
+ /**
22
+ * Converts a `bigint` to a 32-byte `Buffer`, zero-padded on the left.
23
+ * @param value - The bigint to convert.
24
+ * @returns A 32-byte big-endian buffer.
25
+ */
8
26
  export declare function bigintToBytes(value: bigint): Buffer;
27
+ /**
28
+ * Converts a `bigint` to a {@link Bytes32} hex string, left-padded to 32 bytes.
29
+ *
30
+ * **Warning:** It is the caller's responsibility to ensure the value fits in
31
+ * 32 bytes. Values that are too large will be silently truncated.
32
+ *
33
+ * @param value - The bigint to convert.
34
+ * @returns A `Bytes32` hex string.
35
+ */
9
36
  export declare function bigintToBytes32(value: bigint): Bytes32;
37
+ /**
38
+ * Left-pads a byte array with zeros to the specified length.
39
+ * @param bs - The byte array to pad.
40
+ * @param n - The desired total length in bytes.
41
+ * @returns A new `Buffer` of length `n` with `bs` right-aligned.
42
+ * @throws If `bs` is longer than `n` (would require truncation).
43
+ */
10
44
  export declare function padLeft(bs: Uint8Array, n: number): Buffer;
45
+ /**
46
+ * Parses a {@link BytesIsh} value as a 32-byte value and converts it to a `bigint`.
47
+ * @param bs - A hex string or `Uint8Array` representing exactly 32 bytes.
48
+ * @returns The `bigint` representation of the 32-byte value.
49
+ * @throws If the input is not exactly 32 bytes.
50
+ */
11
51
  export declare function bytes32ToBigint(bs: BytesIsh): bigint;
52
+ /**
53
+ * Decodes a hex string into a `Buffer`. Handles both `0x`-prefixed and bare hex strings.
54
+ * @param hexString - The hex string to decode.
55
+ * @returns A `Buffer` containing the decoded bytes.
56
+ */
12
57
  export declare function bytesFromHexString(hexString: string): Buffer;
58
+ /**
59
+ * Asserts that a string is a valid `0x`-prefixed hex string and narrows its type to `Hex`.
60
+ * @param value - The string to validate.
61
+ * @returns The input typed as `Hex`.
62
+ * @throws If `value` is not a valid hex string.
63
+ */
13
64
  export declare function mustBeHex(value: string): Hex;
65
+ /**
66
+ * Normalises a string to a `0x`-prefixed `Hex` value, adding the prefix if missing.
67
+ * @param value - A hex string, with or without a `0x` prefix.
68
+ * @returns The `0x`-prefixed `Hex` string.
69
+ * @throws If the resulting string is not valid hex.
70
+ */
14
71
  export declare function normaliseToHex(value: string): Hex;
72
+ /**
73
+ * Encodes a `Uint8Array` as a `0x`-prefixed hex string.
74
+ * @param bs - The byte array to encode.
75
+ * @returns A `Hex` string representation of the bytes.
76
+ */
15
77
  export declare function bytesToHex(bs: Uint8Array): Hex;
78
+ /** Schema for a 32-byte (66-character with `0x` prefix) hex string, branded as `Bytes32`. Accepts both hex strings and `Uint8Array` inputs. */
16
79
  export declare const Bytes32: Schema.brand<Schema.filter<Schema.transformOrFail<Schema.Union<[typeof Schema.String, Schema.refine<object & Uint8Array<ArrayBufferLike>, Schema.Schema<object, object, never>>]>, Schema.TemplateLiteral<`0x${string}`>, never>>, "Bytes32">;
80
+ /**
81
+ * Parses and validates a {@link BytesIsh} value as a {@link Bytes32}.
82
+ * @param x - A hex string or `Uint8Array` to parse.
83
+ * @returns A validated `Bytes32` value.
84
+ * @throws If the input is not exactly 32 bytes.
85
+ */
17
86
  export declare function asBytes32(x: BytesIsh): Bytes32;
87
+ /** A branded 32-byte hex string type (`0x` + 64 hex characters). */
18
88
  export type Bytes32 = typeof Bytes32.Type;
89
+ /** A branded 20-byte Ethereum address type (`0x` + 40 hex characters). */
19
90
  export type Address = typeof Address.Type;
91
+ /** Schema for a 20-byte `0x`-prefixed Ethereum address, branded as `Address`. */
20
92
  export declare const Address: Schema.brand<Schema.filter<Schema.TemplateLiteral<`0x${string}`>>, "Address">;
93
+ /**
94
+ * Parses and validates a string as an Ethereum {@link Address} (20-byte, `0x`-prefixed).
95
+ * @param address - The string to parse.
96
+ * @returns A validated `Address` value.
97
+ * @throws If the input is not a valid 20-byte hex address.
98
+ */
21
99
  export declare function parseAddress(address: string): Address;
100
+ /**
101
+ * Parses and validates a string as a {@link HexString} (`0x`-prefixed).
102
+ * @param hex - The string to parse.
103
+ * @returns A validated `HexString` value.
104
+ * @throws If the input is not a valid `0x`-prefixed hex string.
105
+ */
22
106
  export declare function parseHex(hex: string): HexString;
@@ -1,25 +1,54 @@
1
1
  import { ParseResult, Schema } from 'effect';
2
2
  import { isHex } from 'viem';
3
3
  import { parse } from './schema.js';
4
+ /** Schema for a `0x`-prefixed hex string. */
4
5
  export const HexString = Schema.TemplateLiteral('0x', Schema.String);
6
+ /**
7
+ * Converts a `Uint8Array` to a `bigint`. Returns `0n` for empty arrays.
8
+ * @param byteArray - The byte array to convert.
9
+ * @returns The unsigned big-endian integer representation of the bytes.
10
+ */
5
11
  export function bytesToBigInt(byteArray) {
6
12
  // Ugly but better than bigint-buffer that insists on writing junk to stderr if it doesn't have native bindings
7
13
  return !byteArray?.length
8
14
  ? BigInt(0)
9
15
  : BigInt('0x' + Buffer.from(byteArray).toString('hex'));
10
16
  }
17
+ /**
18
+ * Converts a `Buffer` to a `bigint`.
19
+ * @param buffer - The buffer to convert.
20
+ * @returns The unsigned big-endian integer representation of the buffer.
21
+ */
11
22
  export function bufferToBigInt(buffer) {
12
23
  return bytesToBigInt(Uint8Array.from(buffer));
13
24
  }
25
+ /**
26
+ * Converts a `bigint` to a 32-byte `Buffer`, zero-padded on the left.
27
+ * @param value - The bigint to convert.
28
+ * @returns A 32-byte big-endian buffer.
29
+ */
14
30
  export function bigintToBytes(value) {
15
31
  return Buffer.from(value.toString(16).padStart(64, '0'), 'hex');
16
32
  }
17
- // Convert a bigint to a 32-byte array, left-padded if necessary. Note: it is
18
- // caller's responsibility to ensure that the bigint is not too large to fit in
19
- // 32 bytes, or else the result will be truncated.
33
+ /**
34
+ * Converts a `bigint` to a {@link Bytes32} hex string, left-padded to 32 bytes.
35
+ *
36
+ * **Warning:** It is the caller's responsibility to ensure the value fits in
37
+ * 32 bytes. Values that are too large will be silently truncated.
38
+ *
39
+ * @param value - The bigint to convert.
40
+ * @returns A `Bytes32` hex string.
41
+ */
20
42
  export function bigintToBytes32(value) {
21
43
  return parse(Bytes32, bigintToBytes(value).toString('hex'));
22
44
  }
45
+ /**
46
+ * Left-pads a byte array with zeros to the specified length.
47
+ * @param bs - The byte array to pad.
48
+ * @param n - The desired total length in bytes.
49
+ * @returns A new `Buffer` of length `n` with `bs` right-aligned.
50
+ * @throws If `bs` is longer than `n` (would require truncation).
51
+ */
23
52
  export function padLeft(bs, n) {
24
53
  if (bs.length > n) {
25
54
  throw new Error(`Cannot pad ${bs.length} bytes to ${n} - would truncate`);
@@ -28,22 +57,50 @@ export function padLeft(bs, n) {
28
57
  buf.set(bs, n - bs.length);
29
58
  return buf;
30
59
  }
60
+ /**
61
+ * Parses a {@link BytesIsh} value as a 32-byte value and converts it to a `bigint`.
62
+ * @param bs - A hex string or `Uint8Array` representing exactly 32 bytes.
63
+ * @returns The `bigint` representation of the 32-byte value.
64
+ * @throws If the input is not exactly 32 bytes.
65
+ */
31
66
  export function bytes32ToBigint(bs) {
32
67
  const bytes32 = asBytes32(bs);
33
68
  return BigInt(bytes32);
34
69
  }
70
+ /**
71
+ * Decodes a hex string into a `Buffer`. Handles both `0x`-prefixed and bare hex strings.
72
+ * @param hexString - The hex string to decode.
73
+ * @returns A `Buffer` containing the decoded bytes.
74
+ */
35
75
  export function bytesFromHexString(hexString) {
36
76
  return Buffer.from(hexString.startsWith('0x') ? hexString.slice(2) : hexString, 'hex');
37
77
  }
78
+ /**
79
+ * Asserts that a string is a valid `0x`-prefixed hex string and narrows its type to `Hex`.
80
+ * @param value - The string to validate.
81
+ * @returns The input typed as `Hex`.
82
+ * @throws If `value` is not a valid hex string.
83
+ */
38
84
  export function mustBeHex(value) {
39
85
  if (!isHex(value)) {
40
86
  throw new Error(`Expected hex string, got: ${value}`);
41
87
  }
42
88
  return value;
43
89
  }
90
+ /**
91
+ * Normalises a string to a `0x`-prefixed `Hex` value, adding the prefix if missing.
92
+ * @param value - A hex string, with or without a `0x` prefix.
93
+ * @returns The `0x`-prefixed `Hex` string.
94
+ * @throws If the resulting string is not valid hex.
95
+ */
44
96
  export function normaliseToHex(value) {
45
97
  return mustBeHex(value.startsWith('0x') ? value : `0x${value}`);
46
98
  }
99
+ /**
100
+ * Encodes a `Uint8Array` as a `0x`-prefixed hex string.
101
+ * @param bs - The byte array to encode.
102
+ * @returns A `Hex` string representation of the bytes.
103
+ */
47
104
  export function bytesToHex(bs) {
48
105
  return ('0x' + Buffer.from(bs).toString('hex'));
49
106
  }
@@ -57,17 +114,37 @@ const BytesToHex = Schema.transformOrFail(Schema.Union(Schema.String, ByteArray)
57
114
  ? ParseResult.succeed(y)
58
115
  : ParseResult.fail(new ParseResult.Unexpected(y, `'${y}' is not a hex string`)))(normaliseToHex(x)),
59
116
  });
117
+ /** Schema for a 32-byte (66-character with `0x` prefix) hex string, branded as `Bytes32`. Accepts both hex strings and `Uint8Array` inputs. */
60
118
  export const Bytes32 = BytesToHex.pipe(Schema.filter((x) => x.length === 66 ||
61
119
  `Expected 32-byte hex string (66 characters with 0x prefix) but got ${x.length} character string`), Schema.brand('Bytes32'));
120
+ /**
121
+ * Parses and validates a {@link BytesIsh} value as a {@link Bytes32}.
122
+ * @param x - A hex string or `Uint8Array` to parse.
123
+ * @returns A validated `Bytes32` value.
124
+ * @throws If the input is not exactly 32 bytes.
125
+ */
62
126
  export function asBytes32(x) {
63
127
  return parse(Bytes32, x);
64
128
  }
129
+ /** Schema for a 20-byte `0x`-prefixed Ethereum address, branded as `Address`. */
65
130
  export const Address = HexString.pipe(Schema.filter((s) => s.length === 42 ||
66
131
  `Address must be a 20-byte '0x'-prefixed hex string, but got: ${s}`), Schema.brand('Address'));
132
+ /**
133
+ * Parses and validates a string as an Ethereum {@link Address} (20-byte, `0x`-prefixed).
134
+ * @param address - The string to parse.
135
+ * @returns A validated `Address` value.
136
+ * @throws If the input is not a valid 20-byte hex address.
137
+ */
67
138
  export function parseAddress(address) {
68
139
  return parse(Address, address);
69
140
  }
141
+ /**
142
+ * Parses and validates a string as a {@link HexString} (`0x`-prefixed).
143
+ * @param hex - The string to parse.
144
+ * @returns A validated `HexString` value.
145
+ * @throws If the input is not a valid `0x`-prefixed hex string.
146
+ */
70
147
  export function parseHex(hex) {
71
148
  return parse(HexString, hex);
72
149
  }
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JpbmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM3QyxPQUFPLEVBQU8sS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQU1yRSxNQUFNLFVBQVUsYUFBYSxDQUFDLFNBQXFCO0lBQ2pELCtHQUErRztJQUMvRyxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU07UUFDdkIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQWM7SUFDM0MsT0FBTyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQWE7SUFDekMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQsNkVBQTZFO0FBQzdFLCtFQUErRTtBQUMvRSxrREFBa0Q7QUFDbEQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFhO0lBQzNDLE9BQU8sS0FBSyxDQUFDLE9BQU8s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
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JpbmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM3QyxPQUFPLEVBQU8sS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsNkNBQTZDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFRckU7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsU0FBcUI7SUFDakQsK0dBQStHO0lBQy9HLE9BQU8sQ0FBQyxTQUFTLEVBQUUsTUFBTTtRQUN2QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQWM7SUFDM0MsT0FBTyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFhO0lBQ3pDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxL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
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Map of supported chain short names to their chain IDs.
3
+ *
4
+ * @remarks This mirrors viem chain definitions without depending on viem directly,
5
+ * to work around Pulumi closure serialisation issues.
6
+ */
1
7
  export declare const supportedChains: {
2
8
  readonly baseSepolia: 84532;
3
9
  readonly sepolia: 11155111;
@@ -6,20 +12,31 @@ export declare const supportedChains: {
6
12
  readonly worldchainSepolia: 4801;
7
13
  readonly anvil: 31337;
8
14
  };
9
- export declare const fheSupportedChains: {
10
- readonly baseSepolia: 84532;
11
- readonly sepolia: 11155111;
12
- };
13
15
  type SupportedChains = typeof supportedChains;
16
+ /** Numeric chain ID of a supported chain (e.g. `84532`, `11155111`). */
14
17
  export type SupportedChainId = SupportedChains[keyof SupportedChains];
18
+ /** Short name of a supported chain (e.g. `"baseSepolia"`, `"sepolia"`). */
15
19
  export type SupportedChainName = keyof SupportedChains;
20
+ /** A supported chain identified by both its short name and numeric ID. */
16
21
  export type SupportedChain = {
17
22
  name: SupportedChainName;
18
23
  id: SupportedChainId;
19
24
  };
25
+ /** A value that can represent a number — either a `number` or a `bigint`. */
20
26
  export type Numberish = number | bigint;
27
+ /** A flexible chain identifier: a chain ID (`number` | `bigint`), an object with an `id` field, or a chain short name. */
21
28
  export type Chainish = {
22
29
  id: Numberish;
23
30
  } | Numberish | string;
31
+ /**
32
+ * Resolves a {@link Chainish} value to a {@link SupportedChain}.
33
+ *
34
+ * Accepts a chain ID (`number` or `bigint`), an object with an `id` field,
35
+ * or a chain short name (e.g. `"baseSepolia"`).
36
+ *
37
+ * @param chainish - The chain identifier to resolve.
38
+ * @returns The matching `SupportedChain` with both `name` and `id`.
39
+ * @throws If no supported chain matches the given identifier.
40
+ */
24
41
  export declare function getSupportedChain(chainish: Chainish): SupportedChain;
25
42
  export {};
package/dist/esm/chain.js CHANGED
@@ -2,6 +2,12 @@
2
2
  // This file can be seen as mirroring the functionality of viem changes without depending on it directly.
3
3
  // It exists as a workaround for some very gnarly issues with code reuse between Pulumi and this module, partly
4
4
  // relating to modules but also linked to Pulumi's ability to capture closures and serialise them.
5
+ /**
6
+ * Map of supported chain short names to their chain IDs.
7
+ *
8
+ * @remarks This mirrors viem chain definitions without depending on viem directly,
9
+ * to work around Pulumi closure serialisation issues.
10
+ */
5
11
  export const supportedChains = {
6
12
  baseSepolia: 84532,
7
13
  sepolia: 11155111,
@@ -10,11 +16,16 @@ export const supportedChains = {
10
16
  worldchainSepolia: 4801,
11
17
  anvil: 31337,
12
18
  };
13
- export const fheSupportedChains = {
14
- baseSepolia: 84532,
15
- sepolia: 11155111,
16
- };
17
- // Get supportedChain either by its chain ID or the short name (lower pascal case)
19
+ /**
20
+ * Resolves a {@link Chainish} value to a {@link SupportedChain}.
21
+ *
22
+ * Accepts a chain ID (`number` or `bigint`), an object with an `id` field,
23
+ * or a chain short name (e.g. `"baseSepolia"`).
24
+ *
25
+ * @param chainish - The chain identifier to resolve.
26
+ * @returns The matching `SupportedChain` with both `name` and `id`.
27
+ * @throws If no supported chain matches the given identifier.
28
+ */
18
29
  export function getSupportedChain(chainish) {
19
30
  const found = typeof chainish === 'number' || typeof chainish === 'bigint'
20
31
  ? Object.entries(supportedChains).find(([, id]) => id === Number(chainish))
@@ -27,4 +38,4 @@ export function getSupportedChain(chainish) {
27
38
  const [name, id] = found;
28
39
  return { name: name, id };
29
40
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUZBQW1GO0FBRW5GLHlHQUF5RztBQUN6RywrR0FBK0c7QUFDL0csa0dBQWtHO0FBRWxHLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixXQUFXLEVBQUUsS0FBSztJQUNsQixPQUFPLEVBQUUsUUFBUTtJQUNqQixZQUFZLEVBQUUsS0FBSztJQUNuQixhQUFhLEVBQUUsSUFBSTtJQUNuQixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLEtBQUssRUFBRSxLQUFLO0NBQ0osQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLFdBQVcsRUFBRSxLQUFLO0lBQ2xCLE9BQU8sRUFBRSxRQUFRO0NBQ1QsQ0FBQztBQWNYLGtGQUFrRjtBQUNsRixNQUFNLFVBQVUsaUJBQWlCLENBQUMsUUFBa0I7SUFDbEQsTUFBTSxLQUFLLEdBQ1QsT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVE7UUFDMUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUNsQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FDcEM7UUFDSCxDQUFDLENBQUMsT0FBTyxRQUFRLEtBQUssUUFBUTtZQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQ2xDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FDdkM7WUFDSCxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQ2xDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FDeEMsQ0FBQztJQUNWLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLFFBQVEsWUFBWSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUNELE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBMEIsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRCxDQUFDIn0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUZBQW1GO0FBRW5GLHlHQUF5RztBQUN6RywrR0FBK0c7QUFDL0csa0dBQWtHO0FBRWxHOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLFdBQVcsRUFBRSxLQUFLO0lBQ2xCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFlBQVksRUFBRSxLQUFLO0lBQ25CLGFBQWEsRUFBRSxJQUFJO0lBQ25CLGlCQUFpQixFQUFFLElBQUk7SUFDdkIsS0FBSyxFQUFFLEtBQUs7Q0FDSixDQUFDO0FBbUJYOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxRQUFrQjtJQUNsRCxNQUFNLEtBQUssR0FDVCxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUTtRQUMxRCxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQ2xDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUNwQztRQUNILENBQUMsQ0FBQyxPQUFPLFFBQVEsS0FBSyxRQUFRO1lBQzVCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FDbEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUN2QztZQUNILENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FDbEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUN4QyxDQUFDO0lBQ1YsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsUUFBUSxZQUFZLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDekIsT0FBTyxFQUFFLElBQUksRUFBRSxJQUEwQixFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xELENBQUMifQ==