@fatsolutions/privacy-pools-core-starknet-sdk 0.0.16 → 0.0.18

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.
@@ -16,7 +16,8 @@ export declare enum SNContractErrorCode {
16
16
  }
17
17
  /** Error codes for data format and conversion issues */
18
18
  export declare enum SNFormatErrorCode {
19
- CONVERSION = 0
19
+ CONVERSION = 0,
20
+ PARSE = 1
20
21
  }
21
22
  export declare enum SNDataErrorCode {
22
23
  NO_EVENTS = 0
@@ -70,6 +71,12 @@ export declare class SNFormatError extends StarknetSDKError {
70
71
  * @returns SNFormatError with CONVERSION code
71
72
  */
72
73
  static conversion(context?: string): SNFormatError;
74
+ /**
75
+ * Creates a parse error instance.
76
+ * @param context - Optional context about what conversion failed
77
+ * @returns SNFormatError with PARSE code
78
+ */
79
+ static parse(context?: string): SNFormatError;
73
80
  }
74
81
  /**
75
82
  * Error class for privacy pool validation failures.
@@ -24,6 +24,7 @@ var SNContractErrorCode;
24
24
  var SNFormatErrorCode;
25
25
  (function (SNFormatErrorCode) {
26
26
  SNFormatErrorCode[SNFormatErrorCode["CONVERSION"] = 0] = "CONVERSION";
27
+ SNFormatErrorCode[SNFormatErrorCode["PARSE"] = 1] = "PARSE";
27
28
  })(SNFormatErrorCode || (exports.SNFormatErrorCode = SNFormatErrorCode = {}));
28
29
  var SNDataErrorCode;
29
30
  (function (SNDataErrorCode) {
@@ -92,6 +93,15 @@ class SNFormatError extends StarknetSDKError {
92
93
  const _context = context || "Conversion failed";
93
94
  return new this(_context, SNFormatErrorCode.CONVERSION);
94
95
  }
96
+ /**
97
+ * Creates a parse error instance.
98
+ * @param context - Optional context about what conversion failed
99
+ * @returns SNFormatError with PARSE code
100
+ */
101
+ static parse(context) {
102
+ const _context = context || "Parse failed";
103
+ return new this(_context, SNFormatErrorCode.PARSE);
104
+ }
95
105
  }
96
106
  exports.SNFormatError = SNFormatError;
97
107
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
package/dist/sdk.d.ts CHANGED
@@ -65,4 +65,28 @@ export declare class PrivacyPoolStarknetSDK extends PrivacyPoolSDK {
65
65
  commitmentProof: CommitmentProof;
66
66
  calldata: bigint[];
67
67
  }>;
68
+ /**
69
+ * Converts a withdrawal proof to Garaga-formatted calldata.
70
+ *
71
+ * This utility method takes an existing withdrawal proof and converts it to the calldata format
72
+ * required by Garaga's Groth16 verifier on Starknet. Useful when you already have a withdrawal
73
+ * proof and need to format it for Starknet contract calls without regenerating the proof.
74
+ *
75
+ * @param withdrawalProof - The withdrawal proof to convert
76
+ * @returns Promise resolving to Garaga-formatted calldata as an array of bigints
77
+ * @throws {Error} If verification key cannot be retrieved or conversion fails
78
+ */
79
+ convertWithdrawProofToGaragaCalldata(withdrawalProof: WithdrawalProof): Promise<bigint[]>;
80
+ /**
81
+ * Converts a commitment proof to Garaga-formatted calldata.
82
+ *
83
+ * This utility method takes an existing commitment proof and converts it to the calldata format
84
+ * required by Garaga's Groth16 verifier on Starknet. Useful when you already have a commitment
85
+ * proof and need to format it for Starknet contract calls without regenerating the proof.
86
+ *
87
+ * @param commitmentProof - The commitment proof to convert
88
+ * @returns Promise resolving to Garaga-formatted calldata as an array of bigints
89
+ * @throws {Error} If verification key cannot be retrieved or conversion fails
90
+ */
91
+ convertCommitmentProofToGaragaCalldata(commitmentProof: CommitmentProof): Promise<bigint[]>;
68
92
  }
package/dist/sdk.js CHANGED
@@ -81,6 +81,36 @@ class PrivacyPoolStarknetSDK extends privacy_pools_core_sdk_1.PrivacyPoolSDK {
81
81
  calldata: await (0, utils_1.withdrawalProofToGaragaCalldata)(commitmentProof, vkeyRaw)
82
82
  };
83
83
  }
84
+ /**
85
+ * Converts a withdrawal proof to Garaga-formatted calldata.
86
+ *
87
+ * This utility method takes an existing withdrawal proof and converts it to the calldata format
88
+ * required by Garaga's Groth16 verifier on Starknet. Useful when you already have a withdrawal
89
+ * proof and need to format it for Starknet contract calls without regenerating the proof.
90
+ *
91
+ * @param withdrawalProof - The withdrawal proof to convert
92
+ * @returns Promise resolving to Garaga-formatted calldata as an array of bigints
93
+ * @throws {Error} If verification key cannot be retrieved or conversion fails
94
+ */
95
+ async convertWithdrawProofToGaragaCalldata(withdrawalProof) {
96
+ const vkeyRaw = await this.circuits.getVerificationKey(privacy_pools_core_sdk_1.CircuitName.Withdraw);
97
+ return await (0, utils_1.withdrawalProofToGaragaCalldata)(withdrawalProof, vkeyRaw);
98
+ }
99
+ /**
100
+ * Converts a commitment proof to Garaga-formatted calldata.
101
+ *
102
+ * This utility method takes an existing commitment proof and converts it to the calldata format
103
+ * required by Garaga's Groth16 verifier on Starknet. Useful when you already have a commitment
104
+ * proof and need to format it for Starknet contract calls without regenerating the proof.
105
+ *
106
+ * @param commitmentProof - The commitment proof to convert
107
+ * @returns Promise resolving to Garaga-formatted calldata as an array of bigints
108
+ * @throws {Error} If verification key cannot be retrieved or conversion fails
109
+ */
110
+ async convertCommitmentProofToGaragaCalldata(commitmentProof) {
111
+ const vkeyRaw = await this.circuits.getVerificationKey(privacy_pools_core_sdk_1.CircuitName.Commitment);
112
+ return await (0, utils_1.withdrawalProofToGaragaCalldata)(commitmentProof, vkeyRaw);
113
+ }
84
114
  }
85
115
  exports.PrivacyPoolStarknetSDK = PrivacyPoolStarknetSDK;
86
116
  //# sourceMappingURL=sdk.js.map
package/dist/sdk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":";;;AACA,0EAAmK;AACnK,qEAA8E;AAC9E,mCAA0D;AAG1D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAa,sBAAuB,SAAQ,uCAAc;IACxD,QAAQ,CAAoB;IAE5B;;;;OAIG;IACH,YAAY,QAA2B;QACrC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACI,wBAAwB,CAC7B,iBAA0B,EAC1B,iBAA0C;QAE1C,OAAO,IAAI,iDAA6B,CACtC,iBAAiB,EACjB,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,iBAAiB,CAAC,UAAsB,EAAE,KAA2B;QACzE,MAAM,eAAe,GAAoB,MAAM,KAAK,CAAC,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,oCAAW,CAAC,QAAQ,CAAC,CAAC;QAC7E,OAAO;YACL,eAAe;YACf,QAAQ,EAAE,MAAM,IAAA,uCAA+B,EAAC,eAAe,EAAE,OAAO,CAAC;SAC1E,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,iBAAiB,CAAC,UAAsB;QAC5C,MAAM,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,UAAU,CAAC;QACxF,MAAM,eAAe,GAAoB,MAAM,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACtG,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,oCAAW,CAAC,UAAU,CAAC,CAAC;QAC/E,OAAO;YACL,eAAe;YACf,QAAQ,EAAE,MAAM,IAAA,uCAA+B,EAAC,eAAe,EAAE,OAAO,CAAC;SAC1E,CAAC;IACJ,CAAC;CAEF;AAtED,wDAsEC"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":";;;AACA,0EAAmK;AACnK,qEAA8E;AAC9E,mCAA0D;AAG1D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAa,sBAAuB,SAAQ,uCAAc;IACxD,QAAQ,CAAoB;IAE5B;;;;OAIG;IACH,YAAY,QAA2B;QACrC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACI,wBAAwB,CAC7B,iBAA0B,EAC1B,iBAA0C;QAE1C,OAAO,IAAI,iDAA6B,CACtC,iBAAiB,EACjB,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,iBAAiB,CAAC,UAAsB,EAAE,KAA2B;QACzE,MAAM,eAAe,GAAoB,MAAM,KAAK,CAAC,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,oCAAW,CAAC,QAAQ,CAAC,CAAC;QAC7E,OAAO;YACL,eAAe;YACf,QAAQ,EAAE,MAAM,IAAA,uCAA+B,EAAC,eAAe,EAAE,OAAO,CAAC;SAC1E,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,iBAAiB,CAAC,UAAsB;QAC5C,MAAM,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,UAAU,CAAC;QACxF,MAAM,eAAe,GAAoB,MAAM,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACtG,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,oCAAW,CAAC,UAAU,CAAC,CAAC;QAC/E,OAAO;YACL,eAAe;YACf,QAAQ,EAAE,MAAM,IAAA,uCAA+B,EAAC,eAAe,EAAE,OAAO,CAAC;SAC1E,CAAC;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,oCAAoC,CAAC,eAAgC;QACzE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,oCAAW,CAAC,QAAQ,CAAC,CAAC;QAC7E,OAAO,MAAM,IAAA,uCAA+B,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,sCAAsC,CAAC,eAAgC;QAC3E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,oCAAW,CAAC,UAAU,CAAC,CAAC;QAC/E,OAAO,MAAM,IAAA,uCAA+B,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CAEF;AAtGD,wDAsGC"}
@@ -29,11 +29,27 @@ export interface RelayData {
29
29
  * @param data - The relay data to serialize
30
30
  * @returns Array of string representations of the relay data fields
31
31
  */
32
- export declare function serializeRelayData(data: RelayData): string[];
32
+ export declare function serializeRelayData(data: RelayData): `0x${string}`[];
33
+ /**
34
+ * Parses raw string data into a RelayData object.
35
+ *
36
+ * @param rawData - Array of string representations of relay data fields
37
+ * @returns Parsed RelayData object
38
+ * @throws {SNFormatError} When the raw data cannot be parsed into valid RelayData
39
+ */
40
+ export declare function parseRelayData(rawData: string[]): RelayData;
33
41
  /**
34
42
  * Serializes withdrawal data into a format suitable for Starknet contract calls.
35
43
  *
36
44
  * @param withdrawal - The withdrawal data to serialize
37
45
  * @returns Array of string representations of the withdrawal fields
38
46
  */
39
- export declare function serializeWithdrawal(withdrawal: Withdrawal): string[];
47
+ export declare function serializeWithdrawal(withdrawal: Withdrawal): `0x${string}`[];
48
+ /**
49
+ * Parses raw string data into a Withdrawal object.
50
+ *
51
+ * @param rawData - Array of string representations of withdrawal data fields
52
+ * @returns Parsed Withdrawal object
53
+ * @throws {SNFormatError} When the raw data cannot be parsed into a valid Withdrawal
54
+ */
55
+ export declare function parseWithdrawal(rawData: string[]): Withdrawal;
@@ -1,8 +1,37 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.serializeRelayData = serializeRelayData;
4
+ exports.parseRelayData = parseRelayData;
4
5
  exports.serializeWithdrawal = serializeWithdrawal;
6
+ exports.parseWithdrawal = parseWithdrawal;
5
7
  const starknet_1 = require("starknet");
8
+ const abis_1 = require("../abis");
9
+ const errors_1 = require("../errors");
10
+ const RelayDataAbi = [
11
+ {
12
+ "type": "interface",
13
+ },
14
+ {
15
+ "type": "struct",
16
+ "name": "privacy_pools::interfaces::IEntryPoint::RelayData",
17
+ "members": [
18
+ {
19
+ "name": "recipient",
20
+ "type": "core::starknet::contract_address::ContractAddress"
21
+ },
22
+ {
23
+ "name": "feeRecipient",
24
+ "type": "core::starknet::contract_address::ContractAddress"
25
+ },
26
+ {
27
+ "name": "relayFeeBPS",
28
+ "type": "core::integer::u256"
29
+ },
30
+ ]
31
+ },
32
+ ];
33
+ const relayDataCd = new starknet_1.CallData(RelayDataAbi);
34
+ const entrypointCd = new starknet_1.CallData(abis_1.EntryPointABI);
6
35
  /**
7
36
  * Serializes relay data into a format suitable for Starknet contract calls.
8
37
  *
@@ -12,7 +41,35 @@ const starknet_1 = require("starknet");
12
41
  function serializeRelayData(data) {
13
42
  const { recipient, feeRecipient, relayFeeBPS } = data;
14
43
  const { low, high } = starknet_1.cairo.uint256(relayFeeBPS);
15
- return [recipient.toString(), feeRecipient.toString(), low.toString(), high.toString()];
44
+ return [
45
+ starknet_1.num.toHex64(recipient),
46
+ starknet_1.num.toHex64(feeRecipient),
47
+ starknet_1.num.toHex64(low),
48
+ starknet_1.num.toHex64(high)
49
+ ];
50
+ }
51
+ function isRelayData(data) {
52
+ const _data = data;
53
+ return (_data.feeRecipient !== undefined && starknet_1.num.isBigNumberish(_data.feeRecipient))
54
+ && (_data.recipient !== undefined && starknet_1.num.isBigNumberish(_data.recipient))
55
+ && (_data.relayFeeBPS !== undefined && starknet_1.num.isBigNumberish(_data.relayFeeBPS));
56
+ }
57
+ /**
58
+ * Parses raw string data into a RelayData object.
59
+ *
60
+ * @param rawData - Array of string representations of relay data fields
61
+ * @returns Parsed RelayData object
62
+ * @throws {SNFormatError} When the raw data cannot be parsed into valid RelayData
63
+ */
64
+ function parseRelayData(rawData) {
65
+ if (!rawData.every(starknet_1.num.isBigNumberish)) {
66
+ throw errors_1.SNFormatError.parse(`Can't parse RelayData from ${rawData}. Some values are not BigNumberish`);
67
+ }
68
+ const structName = "privacy_pools::interfaces::IEntryPoint::RelayData";
69
+ const result = relayDataCd.decodeParameters(structName, rawData);
70
+ if (isRelayData(result))
71
+ return result;
72
+ throw errors_1.SNFormatError.parse(`Can't parse RelayData from ${rawData}`);
16
73
  }
17
74
  /**
18
75
  * Serializes withdrawal data into a format suitable for Starknet contract calls.
@@ -22,6 +79,32 @@ function serializeRelayData(data) {
22
79
  */
23
80
  function serializeWithdrawal(withdrawal) {
24
81
  const { processor, data } = withdrawal;
25
- return [processor.toString(), data.length.toString(), ...data.map(x => x.toString())];
82
+ return [
83
+ starknet_1.num.toHex64(processor),
84
+ starknet_1.num.toHex64(data.length),
85
+ ...data.map(x => starknet_1.num.toHex64(x))
86
+ ];
87
+ }
88
+ function isWithdrawal(data) {
89
+ const _data = data;
90
+ return (_data.processor !== undefined && starknet_1.num.isBigNumberish(_data.processor))
91
+ && (_data.data !== undefined && _data.data.every(starknet_1.num.isBigNumberish));
92
+ }
93
+ /**
94
+ * Parses raw string data into a Withdrawal object.
95
+ *
96
+ * @param rawData - Array of string representations of withdrawal data fields
97
+ * @returns Parsed Withdrawal object
98
+ * @throws {SNFormatError} When the raw data cannot be parsed into a valid Withdrawal
99
+ */
100
+ function parseWithdrawal(rawData) {
101
+ if (!rawData.every(starknet_1.num.isBigNumberish)) {
102
+ throw errors_1.SNFormatError.parse(`Can't parse Withdrawal from ${rawData}. Some values are not BigNumberish`);
103
+ }
104
+ const structName = "privacy_pools::interfaces::Structs::Withdrawal";
105
+ const result = entrypointCd.decodeParameters(structName, rawData);
106
+ if (isWithdrawal(result))
107
+ return result;
108
+ throw errors_1.SNFormatError.parse(`Can't parse Withdrawal from ${rawData}`);
26
109
  }
27
110
  //# sourceMappingURL=entrypoint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entrypoint.js","sourceRoot":"","sources":["../../src/types/entrypoint.ts"],"names":[],"mappings":";;AAkCA,gDAIC;AAQD,kDAGC;AAjDD,uCAA+C;AA4B/C;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,IAAe;IAChD,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IACtD,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,gBAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACjD,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,UAAsB;IACxD,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;IACvC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACxF,CAAC"}
1
+ {"version":3,"file":"entrypoint.js","sourceRoot":"","sources":["../../src/types/entrypoint.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fatsolutions/privacy-pools-core-starknet-sdk",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Starknet SDK for Privacy Pool protocol with Garaga proof verification support",
6
6
  "author": "Fat Solutions",
@@ -20,7 +20,8 @@ export enum SNContractErrorCode {
20
20
 
21
21
  /** Error codes for data format and conversion issues */
22
22
  export enum SNFormatErrorCode {
23
- CONVERSION
23
+ CONVERSION,
24
+ PARSE
24
25
  }
25
26
 
26
27
 
@@ -100,6 +101,16 @@ export class SNFormatError extends StarknetSDKError {
100
101
  return new this(_context, SNFormatErrorCode.CONVERSION);
101
102
  }
102
103
 
104
+ /**
105
+ * Creates a parse error instance.
106
+ * @param context - Optional context about what conversion failed
107
+ * @returns SNFormatError with PARSE code
108
+ */
109
+ public static parse(context?: string) {
110
+ const _context = context || "Parse failed";
111
+ return new this(_context, SNFormatErrorCode.PARSE);
112
+ }
113
+
103
114
  }
104
115
 
105
116
  /**
package/src/sdk.ts CHANGED
@@ -92,4 +92,36 @@ export class PrivacyPoolStarknetSDK extends PrivacyPoolSDK {
92
92
  };
93
93
  }
94
94
 
95
+ /**
96
+ * Converts a withdrawal proof to Garaga-formatted calldata.
97
+ *
98
+ * This utility method takes an existing withdrawal proof and converts it to the calldata format
99
+ * required by Garaga's Groth16 verifier on Starknet. Useful when you already have a withdrawal
100
+ * proof and need to format it for Starknet contract calls without regenerating the proof.
101
+ *
102
+ * @param withdrawalProof - The withdrawal proof to convert
103
+ * @returns Promise resolving to Garaga-formatted calldata as an array of bigints
104
+ * @throws {Error} If verification key cannot be retrieved or conversion fails
105
+ */
106
+ async convertWithdrawProofToGaragaCalldata(withdrawalProof: WithdrawalProof): Promise<bigint[]> {
107
+ const vkeyRaw = await this.circuits.getVerificationKey(CircuitName.Withdraw);
108
+ return await withdrawalProofToGaragaCalldata(withdrawalProof, vkeyRaw);
109
+ }
110
+
111
+ /**
112
+ * Converts a commitment proof to Garaga-formatted calldata.
113
+ *
114
+ * This utility method takes an existing commitment proof and converts it to the calldata format
115
+ * required by Garaga's Groth16 verifier on Starknet. Useful when you already have a commitment
116
+ * proof and need to format it for Starknet contract calls without regenerating the proof.
117
+ *
118
+ * @param commitmentProof - The commitment proof to convert
119
+ * @returns Promise resolving to Garaga-formatted calldata as an array of bigints
120
+ * @throws {Error} If verification key cannot be retrieved or conversion fails
121
+ */
122
+ async convertCommitmentProofToGaragaCalldata(commitmentProof: CommitmentProof): Promise<bigint[]> {
123
+ const vkeyRaw = await this.circuits.getVerificationKey(CircuitName.Commitment);
124
+ return await withdrawalProofToGaragaCalldata(commitmentProof, vkeyRaw);
125
+ }
126
+
95
127
  }
@@ -1,8 +1,37 @@
1
- import { BigNumberish, cairo } from "starknet";
1
+ import { BigNumberish, cairo, CallData, num } from "starknet";
2
+ import { EntryPointABI } from "../abis";
3
+ import { SNFormatError } from "../errors";
4
+
5
+ const RelayDataAbi = [
6
+ {
7
+ "type": "interface",
8
+ },
9
+ {
10
+ "type": "struct",
11
+ "name": "privacy_pools::interfaces::IEntryPoint::RelayData",
12
+ "members": [
13
+ {
14
+ "name": "recipient",
15
+ "type": "core::starknet::contract_address::ContractAddress"
16
+ },
17
+ {
18
+ "name": "feeRecipient",
19
+ "type": "core::starknet::contract_address::ContractAddress"
20
+ },
21
+ {
22
+ "name": "relayFeeBPS",
23
+ "type": "core::integer::u256"
24
+ },
25
+ ]
26
+ },
27
+ ];
28
+
29
+ const relayDataCd = new CallData(RelayDataAbi);
30
+ const entrypointCd = new CallData(EntryPointABI);
2
31
 
3
32
  /**
4
33
  * Represents a withdrawal request in the Privacy Pool system.
5
- *
34
+ *
6
35
  * @interface Withdrawal
7
36
  */
8
37
  export interface Withdrawal {
@@ -14,7 +43,7 @@ export interface Withdrawal {
14
43
 
15
44
  /**
16
45
  * Represents relay data for processing withdrawal transactions.
17
- *
46
+ *
18
47
  * @interface RelayData
19
48
  */
20
49
  export interface RelayData {
@@ -28,23 +57,81 @@ export interface RelayData {
28
57
 
29
58
  /**
30
59
  * Serializes relay data into a format suitable for Starknet contract calls.
31
- *
60
+ *
32
61
  * @param data - The relay data to serialize
33
62
  * @returns Array of string representations of the relay data fields
34
63
  */
35
- export function serializeRelayData(data: RelayData) {
64
+ export function serializeRelayData(data: RelayData): `0x${string}`[] {
36
65
  const { recipient, feeRecipient, relayFeeBPS } = data;
37
66
  const { low, high } = cairo.uint256(relayFeeBPS);
38
- return [recipient.toString(), feeRecipient.toString(), low.toString(), high.toString()];
67
+ return [
68
+ num.toHex64(recipient) as `0x${string}`,
69
+ num.toHex64(feeRecipient) as `0x${string}`,
70
+ num.toHex64(low) as `0x${string}`,
71
+ num.toHex64(high) as `0x${string}`
72
+ ];
73
+ }
74
+
75
+ function isRelayData(data: unknown): data is RelayData {
76
+ const _data = data as RelayData;
77
+ return (_data.feeRecipient !== undefined && num.isBigNumberish(_data.feeRecipient))
78
+ && (_data.recipient !== undefined && num.isBigNumberish(_data.recipient))
79
+ && (_data.relayFeeBPS !== undefined && num.isBigNumberish(_data.relayFeeBPS));
80
+ }
81
+
82
+ /**
83
+ * Parses raw string data into a RelayData object.
84
+ *
85
+ * @param rawData - Array of string representations of relay data fields
86
+ * @returns Parsed RelayData object
87
+ * @throws {SNFormatError} When the raw data cannot be parsed into valid RelayData
88
+ */
89
+ export function parseRelayData(rawData: string[]): RelayData {
90
+ if (!rawData.every(num.isBigNumberish)) {
91
+ throw SNFormatError.parse(`Can't parse RelayData from ${rawData}. Some values are not BigNumberish`);
92
+ }
93
+ const structName = "privacy_pools::interfaces::IEntryPoint::RelayData";
94
+ const result = relayDataCd.decodeParameters(structName, rawData) as unknown;
95
+ if (isRelayData(result))
96
+ return result;
97
+ throw SNFormatError.parse(`Can't parse RelayData from ${rawData}`);
39
98
  }
40
99
 
41
100
  /**
42
101
  * Serializes withdrawal data into a format suitable for Starknet contract calls.
43
- *
102
+ *
44
103
  * @param withdrawal - The withdrawal data to serialize
45
104
  * @returns Array of string representations of the withdrawal fields
46
105
  */
47
- export function serializeWithdrawal(withdrawal: Withdrawal) {
106
+ export function serializeWithdrawal(withdrawal: Withdrawal): `0x${string}`[] {
48
107
  const { processor, data } = withdrawal;
49
- return [processor.toString(), data.length.toString(), ...data.map(x => x.toString())];
108
+ return [
109
+ num.toHex64(processor) as `0x${string}`,
110
+ num.toHex64(data.length) as `0x${string}`,
111
+ ...data.map(x => num.toHex64(x) as `0x${string}`)
112
+ ];
113
+ }
114
+
115
+ function isWithdrawal(data: unknown): data is Withdrawal {
116
+ const _data = data as Withdrawal;
117
+ return (_data.processor !== undefined && num.isBigNumberish(_data.processor))
118
+ && (_data.data !== undefined && _data.data.every(num.isBigNumberish));
119
+ }
120
+
121
+ /**
122
+ * Parses raw string data into a Withdrawal object.
123
+ *
124
+ * @param rawData - Array of string representations of withdrawal data fields
125
+ * @returns Parsed Withdrawal object
126
+ * @throws {SNFormatError} When the raw data cannot be parsed into a valid Withdrawal
127
+ */
128
+ export function parseWithdrawal(rawData: string[]): Withdrawal {
129
+ if (!rawData.every(num.isBigNumberish)) {
130
+ throw SNFormatError.parse(`Can't parse Withdrawal from ${rawData}. Some values are not BigNumberish`);
131
+ }
132
+ const structName = "privacy_pools::interfaces::Structs::Withdrawal";
133
+ const result = entrypointCd.decodeParameters(structName, rawData);
134
+ if (isWithdrawal(result))
135
+ return result;
136
+ throw SNFormatError.parse(`Can't parse Withdrawal from ${rawData}`);
50
137
  }