@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.
- package/dist/errors/index.d.ts +8 -1
- package/dist/errors/index.js +10 -0
- package/dist/errors/index.js.map +1 -1
- package/dist/sdk.d.ts +24 -0
- package/dist/sdk.js +30 -0
- package/dist/sdk.js.map +1 -1
- package/dist/types/entrypoint.d.ts +18 -2
- package/dist/types/entrypoint.js +85 -2
- package/dist/types/entrypoint.js.map +1 -1
- package/package.json +1 -1
- package/src/errors/index.ts +12 -1
- package/src/sdk.ts +32 -0
- package/src/types/entrypoint.ts +96 -9
package/dist/errors/index.d.ts
CHANGED
|
@@ -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.
|
package/dist/errors/index.js
CHANGED
|
@@ -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
|
/**
|
package/dist/errors/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;AACA,kDAAkD;AAClD,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,2DAAO,CAAA;IACP,mEAAW,CAAA;IACX,6DAAQ,CAAA;AACV,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAED,sDAAsD;AACtD,IAAY,eAEX;AAFD,WAAY,eAAe;IACzB,6EAAgB,CAAA;AAClB,CAAC,EAFW,eAAe,+BAAf,eAAe,QAE1B;AAED,oDAAoD;AACpD,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,iFAAc,CAAA;IACd,qFAAgB,CAAA;IAChB,iEAAM,CAAA;AACR,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B;AAED,wDAAwD;AACxD,IAAY,
|
|
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;
|
|
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;
|
package/dist/types/entrypoint.js
CHANGED
|
@@ -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 [
|
|
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 [
|
|
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":";;
|
|
1
|
+
{"version":3,"file":"entrypoint.js","sourceRoot":"","sources":["../../src/types/entrypoint.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/errors/index.ts
CHANGED
|
@@ -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
|
}
|
package/src/types/entrypoint.ts
CHANGED
|
@@ -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 [
|
|
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 [
|
|
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
|
}
|