@arcanetech/privacy-sdk-stellar 0.2.0 → 0.2.3

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.
@@ -0,0 +1,107 @@
1
+ import { OperationKind, DepositIntent, TransferIntent, WithdrawIntent } from '@arcanetech/privacy-sdk-core';
2
+ import { OnboardingPayload } from 'contract';
3
+ export { createInMemoryStateAdapter } from '@arcanetech/privacy-sdk-state-memory';
4
+
5
+ type StellarPrivateRecordStatus = 'pending' | 'finalized' | 'spent';
6
+ interface StellarPrivateCoinNote {
7
+ value: string;
8
+ nullifier: string;
9
+ secret: string;
10
+ commitment: string;
11
+ asset_hi: string;
12
+ asset_lo: string;
13
+ application_id?: string;
14
+ }
15
+ interface StellarPendingClaim {
16
+ id: string;
17
+ owner: StellarAddress;
18
+ asset: StellarAssetId;
19
+ amount: bigint;
20
+ createdAt: string;
21
+ poolTxId?: string;
22
+ commitmentHex?: string;
23
+ nullifierHex?: string;
24
+ futureNullifierHashHex?: string;
25
+ assetHiHex?: string;
26
+ assetLoHex?: string;
27
+ nullifierFieldHex?: string;
28
+ secretHex?: string;
29
+ tempPublicKeyXHex?: string;
30
+ tempPublicKeyYHex?: string;
31
+ encryptedRecoveryBase64?: string;
32
+ createdAtLedger?: number;
33
+ }
34
+ interface StellarPrivateRecord {
35
+ id: string;
36
+ owner: StellarAddress;
37
+ asset: StellarAssetId;
38
+ amount: bigint;
39
+ consumed: boolean;
40
+ status?: StellarPrivateRecordStatus;
41
+ poolContract?: string;
42
+ commitmentHex?: string;
43
+ nullifierHex?: string;
44
+ amountDisplay?: number;
45
+ deliveryId?: number;
46
+ privateAddress?: string;
47
+ txHash?: string;
48
+ coinNote?: StellarPrivateCoinNote;
49
+ depositScalarHex?: string;
50
+ precommitementHex?: string;
51
+ }
52
+
53
+ type KytApplicationIdHints = [string, string, string, string];
54
+
55
+ type StellarPendingClaimSource = {
56
+ kind: 'pendingClaim';
57
+ claimId: string;
58
+ } | {
59
+ kind: 'pendingClaim';
60
+ claim: StellarPendingClaim;
61
+ };
62
+ type StellarTransferFromAddress = StellarAddress | StellarPendingClaimSource;
63
+
64
+ type StellarAddress = string;
65
+ type StellarAssetId = string;
66
+
67
+ type StellarTransferIntent = TransferIntent<StellarTransferFromAddress, StellarAssetId, bigint, StellarAddress>;
68
+
69
+ interface StellarPreparedOperation {
70
+ kind: OperationKind;
71
+ intent: DepositIntent<StellarAddress, StellarAssetId, bigint> | StellarTransferIntent | WithdrawIntent<StellarAddress, StellarAssetId, bigint>;
72
+ consumedRecords: StellarPrivateRecord[];
73
+ outputRecords: StellarPrivateRecord[];
74
+ submissionPayload: StellarSubmissionPayload;
75
+ transactArtifacts?: StellarTransactArtifacts;
76
+ }
77
+ interface StellarSubmissionPayload {
78
+ operationId: string;
79
+ signed: boolean;
80
+ txHash?: string;
81
+ }
82
+ interface StellarTransactArtifacts {
83
+ proofHex?: string;
84
+ publicHex?: string;
85
+ applicationIdsPlaintext?: KytApplicationIdHints;
86
+ tokenAddress?: string;
87
+ depositScalarHex?: string;
88
+ precommitementHex?: string;
89
+ commitmentHex?: string;
90
+ walletPublicKey?: string;
91
+ onboarding?: OnboardingPayload;
92
+ executeFinalizeRequired?: boolean;
93
+ pendingClaim?: StellarPendingClaim;
94
+ spendSource?: 'privateAddress' | 'pendingClaim';
95
+ }
96
+ interface StellarOperationReceipt {
97
+ operationId: string;
98
+ confirmed: boolean;
99
+ }
100
+ interface StellarTransactEngine {
101
+ prepare(prepared: StellarPreparedOperation): Promise<StellarPreparedOperation>;
102
+ submit(prepared: StellarPreparedOperation, signedPayload: StellarSubmissionPayload): Promise<StellarOperationReceipt>;
103
+ }
104
+
105
+ declare function createFakeTransactEngine(overrides?: Partial<StellarTransactEngine>): StellarTransactEngine;
106
+
107
+ export { createFakeTransactEngine };
@@ -0,0 +1,54 @@
1
+ // src/testing/fake-transact-engine.ts
2
+ function createFakeTransactEngine(overrides = {}) {
3
+ return {
4
+ prepare: async (prepared) => prepared,
5
+ submit: async (_prepared, signedPayload) => ({
6
+ operationId: signedPayload.operationId,
7
+ confirmed: true
8
+ }),
9
+ ...overrides
10
+ };
11
+ }
12
+
13
+ // ../state/memory/dist/index.js
14
+ import {
15
+ applyStateOperations,
16
+ cloneStateTree,
17
+ createStateBridge
18
+ } from "@arcanetech/privacy-sdk-core/state";
19
+ function createInMemoryStateAdapter(initialState = {}) {
20
+ let stateTree = cloneStateTree(initialState);
21
+ const registeredTypes = /* @__PURE__ */ new Set();
22
+ const adapter = {
23
+ registerDefinition(definition) {
24
+ registeredTypes.add(definition.type);
25
+ },
26
+ async write(call) {
27
+ if (!registeredTypes.has(call.type)) {
28
+ throw new Error(`Unregistered in-memory state type: ${call.type}`);
29
+ }
30
+ const draft = cloneStateTree(stateTree);
31
+ applyStateOperations(draft, call.operations, "write");
32
+ stateTree = draft;
33
+ },
34
+ async read(call) {
35
+ if (!registeredTypes.has(call.type)) {
36
+ throw new Error(`Unregistered in-memory state type: ${call.type}`);
37
+ }
38
+ const draft = cloneStateTree(stateTree);
39
+ return applyStateOperations(draft, call.operations, "read");
40
+ },
41
+ getState() {
42
+ return cloneStateTree(stateTree);
43
+ },
44
+ resetState(nextState = {}) {
45
+ stateTree = cloneStateTree(nextState);
46
+ }
47
+ };
48
+ return adapter;
49
+ }
50
+ export {
51
+ createFakeTransactEngine,
52
+ createInMemoryStateAdapter
53
+ };
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/testing/fake-transact-engine.ts","../../../state/memory/src/index.ts"],"sourcesContent":["import type { StellarOperationReceipt, StellarTransactEngine } from '../types.js';\n\nexport function createFakeTransactEngine(\n overrides: Partial<StellarTransactEngine> = {},\n): StellarTransactEngine {\n return {\n prepare: async (prepared) => prepared,\n submit: async (_prepared, signedPayload): Promise<StellarOperationReceipt> => ({\n operationId: signedPayload.operationId,\n confirmed: true,\n }),\n ...overrides,\n };\n}\n","import {\n applyStateOperations,\n cloneStateTree,\n createStateBridge,\n type StateBridge,\n type StateBridgeAdapter,\n type StateBridgeCall,\n type StateBridgeDefinition,\n} from '@arcanetech/privacy-sdk-core/state';\n\nexport interface InMemoryStateAdapter extends StateBridgeAdapter {\n getState(): Record<string, unknown>;\n resetState(nextState?: Record<string, unknown>): void;\n}\n\nexport function createInMemoryStateAdapter(\n initialState: Record<string, unknown> = {},\n): InMemoryStateAdapter {\n let stateTree = cloneStateTree(initialState);\n const registeredTypes = new Set<string>();\n\n const adapter: InMemoryStateAdapter = {\n registerDefinition(definition: StateBridgeDefinition) {\n registeredTypes.add(definition.type);\n },\n async write(call: StateBridgeCall) {\n if (!registeredTypes.has(call.type)) {\n throw new Error(`Unregistered in-memory state type: ${call.type}`);\n }\n const draft = cloneStateTree(stateTree);\n applyStateOperations(draft, call.operations, 'write');\n stateTree = draft;\n },\n async read<TResult>(call: StateBridgeCall): Promise<TResult> {\n if (!registeredTypes.has(call.type)) {\n throw new Error(`Unregistered in-memory state type: ${call.type}`);\n }\n const draft = cloneStateTree(stateTree);\n return applyStateOperations(draft, call.operations, 'read') as TResult;\n },\n getState() {\n return cloneStateTree(stateTree);\n },\n resetState(nextState: Record<string, unknown> = {}) {\n stateTree = cloneStateTree(nextState);\n },\n };\n\n return adapter;\n}\n\nexport function createInMemoryStateBridge(initialState?: Record<string, unknown>): {\n adapter: InMemoryStateAdapter;\n bridge: StateBridge;\n} {\n const adapter = createInMemoryStateAdapter(initialState);\n const bridge = createStateBridge(adapter);\n return { adapter, bridge };\n}\n"],"mappings":";AAEO,SAAS,yBACd,YAA4C,CAAC,GACtB;AACvB,SAAO;AAAA,IACL,SAAS,OAAO,aAAa;AAAA,IAC7B,QAAQ,OAAO,WAAW,mBAAqD;AAAA,MAC7E,aAAa,cAAc;AAAA,MAC3B,WAAW;AAAA,IACb;AAAA,IACA,GAAG;AAAA,EACL;AACF;;;ACbA;EACE;EACA;EACA;OAKK;AAOA,SAAS,2BACd,eAAwC,CAAC,GACnB;AACtB,MAAI,YAAY,eAAe,YAAY;AAC3C,QAAM,kBAAkB,oBAAI,IAAY;AAExC,QAAM,UAAgC;IACpC,mBAAmB,YAAmC;AACpD,sBAAgB,IAAI,WAAW,IAAI;IACrC;IACA,MAAM,MAAM,MAAuB;AACjC,UAAI,CAAC,gBAAgB,IAAI,KAAK,IAAI,GAAG;AACnC,cAAM,IAAI,MAAM,sCAAsC,KAAK,IAAI,EAAE;MACnE;AACA,YAAM,QAAQ,eAAe,SAAS;AACtC,2BAAqB,OAAO,KAAK,YAAY,OAAO;AACpD,kBAAY;IACd;IACA,MAAM,KAAc,MAAyC;AAC3D,UAAI,CAAC,gBAAgB,IAAI,KAAK,IAAI,GAAG;AACnC,cAAM,IAAI,MAAM,sCAAsC,KAAK,IAAI,EAAE;MACnE;AACA,YAAM,QAAQ,eAAe,SAAS;AACtC,aAAO,qBAAqB,OAAO,KAAK,YAAY,MAAM;IAC5D;IACA,WAAW;AACT,aAAO,eAAe,SAAS;IACjC;IACA,WAAW,YAAqC,CAAC,GAAG;AAClD,kBAAY,eAAe,SAAS;IACtC;EACF;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,399 @@
1
+ import { DepositObject, CoinData, AuditPublicKey, PrivacyPoolSDK, StateFile, TransactionAuditParams, InspectKytPassageApproved } from '@auditable/privacy-pool-zk-sdk';
2
+ export { DEFAULT_STEALTH_SIGN_NONCE as DEFAULT_PRIVATE_ADDRESS_SIGN_NONCE } from '@auditable/privacy-pool-zk-sdk';
3
+ import { Buffer as Buffer$1 } from 'buffer';
4
+ import { OnboardingPayload } from 'contract';
5
+ export { OnboardingPayload, PrivateAddressRegistration } from 'contract';
6
+ import { StateBridgeAdapter } from '@arcanetech/privacy-sdk-core/state';
7
+
8
+ interface StellarPoolMerkleState {
9
+ poolContract: string;
10
+ commitments: string[];
11
+ commitmentCount: number;
12
+ merkleRootHex: string;
13
+ updatedAt: number;
14
+ syncedLedger?: number;
15
+ }
16
+ interface StellarLeafEphemeral {
17
+ poolContract: string;
18
+ leafIndex: number;
19
+ xHex: string;
20
+ yHex: string;
21
+ cachedAt?: string;
22
+ }
23
+
24
+ type AlignedDepositSlot = {
25
+ deposit: DepositObject;
26
+ commitment_hex: string;
27
+ coin: CoinData;
28
+ depositScalarHex: string;
29
+ precommitementHex: string;
30
+ };
31
+ type KytApplicationIdHints = [string, string, string, string];
32
+ type ProofResult = {
33
+ proof_hex: string;
34
+ public_hex: string;
35
+ applicationIdsPlaintext: KytApplicationIdHints;
36
+ };
37
+ type ProofWithChange = ProofResult & {
38
+ changeCoin?: {
39
+ commitment_hex: string;
40
+ coin: CoinData;
41
+ depositScalarHex: string;
42
+ precommitementHex: string;
43
+ };
44
+ };
45
+
46
+ interface PoolMerkleStatePort {
47
+ get(poolContract: string): Promise<StellarPoolMerkleState | undefined>;
48
+ set(state: StellarPoolMerkleState): Promise<void>;
49
+ }
50
+ interface LeafEphemeralStatePort {
51
+ get(input: {
52
+ poolContract: string;
53
+ leafIndex: number;
54
+ }): Promise<StellarLeafEphemeral | undefined>;
55
+ set(ephemeral: StellarLeafEphemeral): Promise<void>;
56
+ }
57
+
58
+ type StellarSignTransaction = (input: {
59
+ xdr: string;
60
+ networkPassphrase: string;
61
+ address: string;
62
+ }) => Promise<{
63
+ signedTxXdr: string;
64
+ }>;
65
+
66
+ interface TransferTemporaryRecipientKey {
67
+ temporaryScalarHex: string;
68
+ temporaryPrivateAddressStpl1: string;
69
+ }
70
+ interface TransferOnboardingRecipientNoteInput$1 {
71
+ tokenAddress: string;
72
+ nullifier: string;
73
+ secret: string;
74
+ value: string;
75
+ }
76
+ interface TransferRecipientExecutionContext {
77
+ recipientPrivateAddressStpl1: string;
78
+ recipientStellarAddress?: string;
79
+ temporaryRecipientKey?: TransferTemporaryRecipientKey;
80
+ }
81
+ interface BuildTransferOnboardingAtExecuteInput {
82
+ ownerStellarAddress: string;
83
+ temporaryRecipientKey: TransferTemporaryRecipientKey;
84
+ recipientNote: TransferOnboardingRecipientNoteInput$1;
85
+ }
86
+ interface StellarKytEnvironment {
87
+ apiBaseUrl: string;
88
+ kytPassageRegistryContract: string;
89
+ registerPassageOnChain?: boolean;
90
+ }
91
+ interface StellarTransactEnvironment {
92
+ network: StellarNetworkConfig;
93
+ auditPublicKey?: AuditPublicKey;
94
+ kyt: StellarKytEnvironment;
95
+ signTransaction?: StellarSignTransaction;
96
+ resolveTokenContractId?: (assetId: StellarAssetId) => string | Promise<string>;
97
+ resolveSenderPrivKeyScalarHex?: (privateAddressStpl1: string) => Promise<string>;
98
+ readSenderPrivKeyScalarHex?: (privateAddressStpl1: string) => Promise<string | undefined>;
99
+ ensureSenderPrivKeyScalarHex?: (privateAddressStpl1: string) => Promise<string>;
100
+ resolveSenderPrivKeyScalarFromState?: (input: {
101
+ owner: string;
102
+ privateAddressStpl1: string;
103
+ }) => Promise<string | undefined>;
104
+ resolveTransferRecipientAtExecute?: (input: {
105
+ recipientStellarAddress: string;
106
+ walletPublicKey: string;
107
+ }) => Promise<TransferRecipientExecutionContext>;
108
+ buildTransferOnboardingAtExecute?: (input: BuildTransferOnboardingAtExecuteInput) => Promise<OnboardingPayload>;
109
+ resolveWalletPublicKey?: () => Promise<string>;
110
+ poolMerkleState?: PoolMerkleStatePort;
111
+ leafEphemeral?: LeafEphemeralStatePort;
112
+ }
113
+
114
+ type StellarAssetId = string;
115
+
116
+ interface StellarNetworkConfig {
117
+ id: string;
118
+ rpcUrl: string;
119
+ networkPassphrase: string;
120
+ poolContract: string;
121
+ registryContract: string;
122
+ applicationId: string;
123
+ }
124
+ interface StellarBrowserAssets {
125
+ sdkWasm: ArrayBuffer;
126
+ circuitWasm: ArrayBuffer;
127
+ provingKey: ArrayBuffer;
128
+ }
129
+
130
+ declare class PrivacyPoolService {
131
+ private readonly assets?;
132
+ private readonly applicationId?;
133
+ private readonly auditPublicKey?;
134
+ private sdk;
135
+ private initPromise;
136
+ constructor(assets?: StellarBrowserAssets | undefined, applicationId?: string | undefined, auditPublicKey?: [string, string] | undefined);
137
+ private ensureInit;
138
+ getInitializedSdk(): Promise<PrivacyPoolSDK>;
139
+ getAuditPublicKey(): [string, string] | undefined;
140
+ getApplicationId(): string;
141
+ generatePrivateAddressFromStellarSignature(signature: string): Promise<string>;
142
+ sharedSecretX(recipientScalarHex: string, ephemeralKeyEncoded: string): Promise<string>;
143
+ buildAlignedDepositSlot(parameters: {
144
+ privateAddressStpl1: string;
145
+ amountStroops: bigint;
146
+ tokenAddress: string;
147
+ }): Promise<AlignedDepositSlot>;
148
+ createAlignedShieldCoinData(parameters: {
149
+ privateAddressStpl1: string;
150
+ amountStroops: bigint;
151
+ tokenAddress: string;
152
+ }): Promise<Omit<AlignedDepositSlot, 'deposit'>>;
153
+ prepareDepositTransactProof(parameters: {
154
+ privateAddressStpl1: string;
155
+ coin: CoinData;
156
+ depositScalarHex: string;
157
+ merkleRootBytes: Buffer$1;
158
+ tokenAddress: string;
159
+ }): Promise<ProofResult>;
160
+ calculateNullifierHash(nullifier: string): Promise<string>;
161
+ prepareWithdrawTransactProof(parameters: {
162
+ coin: CoinData;
163
+ state: StateFile;
164
+ destinationStellarAddress: string;
165
+ privKeyScalarHex: string;
166
+ depositorEphemeralKey: string;
167
+ withdrawAmountStroops: bigint;
168
+ changePrivateAddressStpl1: string | undefined;
169
+ tokenAddress: string;
170
+ }): Promise<ProofWithChange>;
171
+ prepareWithdrawTransactProofDual(parameters: {
172
+ coinA: CoinData;
173
+ coinB: CoinData;
174
+ state: StateFile;
175
+ destinationStellarAddress: string;
176
+ privKeyScalarHex: string;
177
+ depositorEphemeralAKey: string;
178
+ depositorEphemeralBKey: string;
179
+ withdrawAmountStroops: bigint;
180
+ changePrivateAddressStpl1: string | undefined;
181
+ tokenAddress: string;
182
+ }): Promise<ProofWithChange>;
183
+ }
184
+
185
+ declare function createPrivacyPoolService(input?: {
186
+ assets?: StellarBrowserAssets;
187
+ applicationId?: string;
188
+ auditPublicKey?: [string, string];
189
+ }): PrivacyPoolService;
190
+ declare function configurePrivacyPoolService(service: PrivacyPoolService): void;
191
+ declare function getPrivacyPoolService(): PrivacyPoolService;
192
+
193
+ declare function parseAuditPublicKeyFromEnvHex(raw: string): AuditPublicKey;
194
+ declare function buildPoolTransactionAuditParameters(input: {
195
+ applicationId: string;
196
+ auditPublicKey?: AuditPublicKey;
197
+ }): TransactionAuditParams;
198
+ declare function resolvePoolApplicationId(applicationId: string | undefined): string;
199
+
200
+ type DecodedPrivateAddress = {
201
+ x: string;
202
+ y: string;
203
+ };
204
+ type PrivateAddressGenerator = (signature: string) => string | Promise<string>;
205
+ type PrivateAddressSdk = {
206
+ generatePrivateAddressFromStellarSignature: PrivateAddressGenerator;
207
+ };
208
+ declare function buildPrivateAddressSignMessage(publicKey: string, nonce: string): string;
209
+ declare function decodePrivateAddress(value: string): DecodedPrivateAddress;
210
+ declare function encodePrivateAddress(decoded: DecodedPrivateAddress): string;
211
+ declare function encodePrivateAddressFromHexCoordinates(publicKeyXHex: string, publicKeyYHex: string): string;
212
+ declare function recipientPublicKeysDecimalFromPrivateAddress(value: string): unknown;
213
+ declare function privateAddressSdk(sdk: PrivacyPoolSDK): PrivateAddressSdk;
214
+
215
+ interface LoadBrowserAssetsInput {
216
+ sdkWasmUrl: string;
217
+ circuitWasmUrl: string;
218
+ provingKeyUrl: string;
219
+ cacheBust?: boolean;
220
+ }
221
+ declare function loadStellarBrowserAssets(input: LoadBrowserAssetsInput): Promise<StellarBrowserAssets>;
222
+ declare function loadDefaultStellarBrowserAssets(options?: {
223
+ cacheBust?: boolean;
224
+ }): Promise<StellarBrowserAssets>;
225
+
226
+ declare function generateTemporaryRecipientPrivateAddress(): Promise<{
227
+ temporaryScalarHex: string;
228
+ temporaryPrivateAddressStpl1: string;
229
+ }>;
230
+
231
+ type TransferOnboardingRecipientNoteInput = {
232
+ tokenAddress: string;
233
+ nullifier: string;
234
+ secret: string;
235
+ value: string;
236
+ };
237
+ type TemporaryRecipientKeyMaterial = {
238
+ temporaryScalarHex: string;
239
+ temporaryPrivateAddressStpl1: string;
240
+ };
241
+ declare function generateRandomDepositScalarHex(): Promise<string>;
242
+ declare function buildOnboardingPayload(parameters: {
243
+ ownerStellarAddress: string;
244
+ temporaryKey: TemporaryRecipientKeyMaterial;
245
+ recipientNotes: TransferOnboardingRecipientNoteInput[];
246
+ permanentPrivateAddressStpl1?: string;
247
+ }): OnboardingPayload;
248
+ declare function buildTransferOnboardingAtExecute(input: BuildTransferOnboardingAtExecuteInput): Promise<OnboardingPayload>;
249
+
250
+ declare class KytInspectError extends Error {
251
+ readonly reasonCode: string;
252
+ readonly decisionId?: string;
253
+ readonly detailAddress?: string;
254
+ constructor(parameters: {
255
+ message: string;
256
+ reasonCode: string;
257
+ decisionId?: string;
258
+ detailAddress?: string;
259
+ });
260
+ }
261
+ declare function parseKytReasonCode(reasonCode: string): {
262
+ code: string;
263
+ address?: string;
264
+ };
265
+
266
+ interface SubmitSorobanDepositInput {
267
+ contractId: string;
268
+ walletPublicKey: string;
269
+ privateAddressStpl1: string;
270
+ coin: CoinData;
271
+ depositScalarHex: string;
272
+ tokenAddress: string;
273
+ networkPassphrase: string;
274
+ sorobanRpcUrl: string;
275
+ privacyPoolService: PrivacyPoolService;
276
+ transactEnvironment: StellarTransactEnvironment;
277
+ }
278
+ declare function submitSorobanDeposit(input: SubmitSorobanDepositInput): Promise<string>;
279
+
280
+ interface SubmitSorobanConfidentialTransferInput {
281
+ contractId: string;
282
+ walletPublicKey: string;
283
+ proofHex: string;
284
+ publicHex: string;
285
+ onboarding?: OnboardingPayload;
286
+ applicationIdsPlaintext?: KytApplicationIdHints;
287
+ networkPassphrase: string;
288
+ sorobanRpcUrl: string;
289
+ transactEnvironment: StellarTransactEnvironment;
290
+ }
291
+ declare function submitSorobanConfidentialTransfer(input: SubmitSorobanConfidentialTransferInput): Promise<string>;
292
+
293
+ declare function tokenAddressToAssetLeg(tokenAddress: string): [string, string];
294
+ declare function assetLegToTokenAddress(assetHi: string, assetLo: string): string;
295
+
296
+ type GeneratedOutputCoin = {
297
+ commitment_hex: string;
298
+ coin: CoinData;
299
+ depositScalarHex: string;
300
+ precommitementHex: string;
301
+ };
302
+
303
+ type PrepareConfidentialTransferProofDualParameters = {
304
+ coinA: CoinData;
305
+ coinB: CoinData;
306
+ state: StateFile;
307
+ senderGAddress: string;
308
+ senderPrivKeyScalarHex: string;
309
+ ephemeralAKey: string;
310
+ ephemeralBKey: string;
311
+ transferStroops: bigint;
312
+ recipientPrivateAddressStpl1: string;
313
+ selfPrivateAddressStpl1ForChange: string | undefined;
314
+ tokenAddress: string;
315
+ };
316
+ type PrepareConfidentialTransferProofDualResult = {
317
+ proof_hex: string;
318
+ public_hex: string;
319
+ applicationIdsPlaintext: KytApplicationIdHints;
320
+ recipientCoin: GeneratedOutputCoin;
321
+ changeCoin?: GeneratedOutputCoin;
322
+ };
323
+ declare function prepareConfidentialTransferProofDual(parameters: PrepareConfidentialTransferProofDualParameters): Promise<PrepareConfidentialTransferProofDualResult>;
324
+
325
+ type PrepareConfidentialTransferProofParameters = {
326
+ coin: CoinData;
327
+ state: StateFile;
328
+ senderGAddress: string;
329
+ senderPrivKeyScalarHex: string;
330
+ depositorEphemeralKey: string;
331
+ transferStroops: bigint;
332
+ recipientPrivateAddressStpl1: string;
333
+ selfPrivateAddressStpl1ForChange: string | undefined;
334
+ tokenAddress: string;
335
+ };
336
+ type PrepareConfidentialTransferProofResult = {
337
+ proof_hex: string;
338
+ public_hex: string;
339
+ applicationIdsPlaintext: KytApplicationIdHints;
340
+ recipientCoin: GeneratedOutputCoin;
341
+ changeCoin?: GeneratedOutputCoin;
342
+ };
343
+ declare function prepareConfidentialTransferProof(parameters: PrepareConfidentialTransferProofParameters): Promise<PrepareConfidentialTransferProofResult>;
344
+
345
+ interface FetchContractMerkleResult {
346
+ commitmentCount: number;
347
+ commitments: string[];
348
+ merkleRootHex: string;
349
+ updatedAt: number;
350
+ }
351
+ declare function fetchAndMergeMerkleState(parameters: {
352
+ poolContractId: string;
353
+ walletPublicKey: string;
354
+ transactEnvironment: StellarTransactEnvironment;
355
+ poolMerkleState?: PoolMerkleStatePort;
356
+ }): Promise<FetchContractMerkleResult>;
357
+ declare function readLeafEphemeralHex(parameters: {
358
+ poolContractId: string;
359
+ walletPublicKey: string;
360
+ leafIndex: number;
361
+ transactEnvironment: StellarTransactEnvironment;
362
+ leafEphemeral?: LeafEphemeralStatePort;
363
+ }): Promise<{
364
+ xHex: string;
365
+ yHex: string;
366
+ }>;
367
+
368
+ interface DecryptedKytAuditSlot {
369
+ slot: number;
370
+ decryptOk: boolean;
371
+ auditTagValid: boolean;
372
+ noteAuditPublicKey?: [string, string];
373
+ expectedAuditPublicKey?: [string, string];
374
+ plaintext?: string[];
375
+ }
376
+ interface RequestKytPassageForPoolInteractionInput {
377
+ owner: string;
378
+ poolContract: string;
379
+ proofHex: string;
380
+ publicHex: string;
381
+ onboarding?: OnboardingPayload;
382
+ decryptedAuditSlots?: DecryptedKytAuditSlot[];
383
+ applicationIdsPlaintext?: KytApplicationIdHints;
384
+ networkPassphrase: string;
385
+ sorobanRpcUrl: string;
386
+ transactEnvironment: StellarTransactEnvironment;
387
+ }
388
+ declare function requestKytPassageForPoolInteraction(input: RequestKytPassageForPoolInteractionInput): Promise<InspectKytPassageApproved>;
389
+
390
+ declare const MIN_CONFIDENTIAL_TRANSFER_STROOPS = 1n;
391
+ declare const ZERO_STROOPS = 0n;
392
+
393
+ declare function frDecimalToPaddedBytes32(decimal: string): Buffer;
394
+
395
+ declare function runTtlPreflight(assembledTransaction: unknown): Promise<void>;
396
+
397
+ declare function attachPoolStatePorts(transactEnvironment: StellarTransactEnvironment | undefined, state: StateBridgeAdapter): StellarTransactEnvironment | undefined;
398
+
399
+ export { type AlignedDepositSlot, type BuildTransferOnboardingAtExecuteInput, type KytApplicationIdHints, KytInspectError, type LoadBrowserAssetsInput, MIN_CONFIDENTIAL_TRANSFER_STROOPS, PrivacyPoolService, type ProofResult, type ProofWithChange, type RequestKytPassageForPoolInteractionInput, type StellarKytEnvironment, type StellarTransactEnvironment, type TemporaryRecipientKeyMaterial, type TransferOnboardingRecipientNoteInput$1 as TransferOnboardingRecipientNoteInput, type TransferRecipientExecutionContext, type TransferTemporaryRecipientKey, ZERO_STROOPS, assetLegToTokenAddress, attachPoolStatePorts, buildOnboardingPayload, buildPoolTransactionAuditParameters, buildPrivateAddressSignMessage, buildTransferOnboardingAtExecute, configurePrivacyPoolService, createPrivacyPoolService, decodePrivateAddress, encodePrivateAddress, encodePrivateAddressFromHexCoordinates, fetchAndMergeMerkleState, frDecimalToPaddedBytes32, generateRandomDepositScalarHex, generateTemporaryRecipientPrivateAddress, getPrivacyPoolService, loadDefaultStellarBrowserAssets, loadStellarBrowserAssets, parseAuditPublicKeyFromEnvHex, parseKytReasonCode, prepareConfidentialTransferProof, prepareConfidentialTransferProofDual, privateAddressSdk, readLeafEphemeralHex, recipientPublicKeysDecimalFromPrivateAddress, requestKytPassageForPoolInteraction, resolvePoolApplicationId, runTtlPreflight, submitSorobanConfidentialTransfer, submitSorobanDeposit, tokenAddressToAssetLeg };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcanetech/privacy-sdk-stellar",
3
- "version": "0.2.0",
3
+ "version": "0.2.3",
4
4
  "description": "Stellar preset for the Arcane privacy SDK",
5
5
  "type": "module",
6
6
  "browser": "./dist/index.js",
@@ -48,7 +48,7 @@
48
48
  "typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.test.json"
49
49
  },
50
50
  "dependencies": {
51
- "@arcanetech/privacy-sdk-core": "0.1.0",
51
+ "@arcanetech/privacy-sdk-core": "*",
52
52
  "@auditable/privacy-pool-zk-sdk": "^0.6.1-rc.5",
53
53
  "@stellar/stellar-sdk": "^14.6.1",
54
54
  "buffer": "^6.0.3",
@@ -57,11 +57,16 @@
57
57
  "zod": "^3.24.2"
58
58
  },
59
59
  "devDependencies": {
60
- "@arcanetech/privacy-sdk-state-memory": "0.1.0",
61
- "@arcanetech/privacy-sdk-state-redux": "0.1.0",
60
+ "@arcanetech/privacy-sdk-state-memory": "0.2.1",
61
+ "@arcanetech/privacy-sdk-state-redux": "0.2.1",
62
62
  "@reduxjs/toolkit": "^2.6.1"
63
63
  },
64
64
  "sideEffects": false,
65
+ "repository": {
66
+ "type": "git",
67
+ "url": "git+https://github.com/Polynom-Labs/privacy-layer-confidential-sdk.git",
68
+ "directory": "packages/stellar"
69
+ },
65
70
  "license": "UNLICENSED",
66
71
  "publishConfig": {
67
72
  "access": "public"