@smithii_io/mixoor 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/src/index.js +24 -41
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.mjs +24 -42
- package/dist/src/index.mjs.map +1 -1
- package/dist/test/_setup.js +35 -20
- package/dist/test/_setup.js.map +1 -1
- package/dist/test/{transfer.test.js → _transferSol.test.js} +19 -15
- package/dist/test/_transferSol.test.js.map +1 -0
- package/dist/test/transferSpl.test.js +111 -0
- package/dist/test/transferSpl.test.js.map +1 -0
- package/dist/types/src/generated/errors/mixoor.d.ts +3 -1
- package/dist/types/src/generated/errors/mixoor.d.ts.map +1 -1
- package/dist/types/src/generated/instructions/transfer.d.ts.map +1 -1
- package/dist/types/src/generated/instructions/withdraw.d.ts +11 -11
- package/dist/types/src/generated/instructions/withdraw.d.ts.map +1 -1
- package/dist/types/test/_setup.d.ts +12 -4
- package/dist/types/test/_setup.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/test/transfer.test.js.map +0 -1
package/dist/test/_setup.js
CHANGED
|
@@ -7,6 +7,7 @@ var os = require('os');
|
|
|
7
7
|
var path = require('path');
|
|
8
8
|
var crypto = require('crypto');
|
|
9
9
|
var src = require('../src');
|
|
10
|
+
var token = require('@solana-program/token');
|
|
10
11
|
var _constants = require('./_constants');
|
|
11
12
|
|
|
12
13
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -84,12 +85,12 @@ async function loadRelayerKeypair() {
|
|
|
84
85
|
return await loadKeypairFromFile("~/.config/solana/relayer.json");
|
|
85
86
|
}
|
|
86
87
|
const getTokenBalance = async (client, tokenAccount) => (await client.rpc.getTokenAccountBalance(tokenAccount, { commitment: "confirmed" }).send()).value;
|
|
87
|
-
const
|
|
88
|
+
const createPoolForAuthority = async (client, mint, assetType) => {
|
|
88
89
|
const [authority] = await Promise.all([loadDefaultKeypair()]);
|
|
89
90
|
const createIx = await src.getInitializePoolInstructionAsync({
|
|
90
91
|
authority,
|
|
91
|
-
mint
|
|
92
|
-
assetType
|
|
92
|
+
mint,
|
|
93
|
+
assetType
|
|
93
94
|
});
|
|
94
95
|
await kit.pipe(
|
|
95
96
|
await createDefaultTransaction(client, authority),
|
|
@@ -98,11 +99,13 @@ const createSolPoolForAuthority = async (client) => {
|
|
|
98
99
|
);
|
|
99
100
|
return { authority: authority.address };
|
|
100
101
|
};
|
|
101
|
-
const
|
|
102
|
+
const depositForAuthority = async (client, ixArgs) => {
|
|
102
103
|
const [authority] = await Promise.all([loadDefaultKeypair()]);
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
const { merkleTree, amount, mint, vaultTokenAccount, pool } = ixArgs;
|
|
105
|
+
const [depositorTokenAccount] = await token.findAssociatedTokenPda({
|
|
106
|
+
owner: authority.address,
|
|
107
|
+
tokenProgram: token.TOKEN_PROGRAM_ADDRESS,
|
|
108
|
+
mint
|
|
106
109
|
});
|
|
107
110
|
const secret = crypto.randomBytes(32);
|
|
108
111
|
const nullifier = crypto.randomBytes(32);
|
|
@@ -115,7 +118,9 @@ const depositSolPoolForAuthority = async (client, amount, assetType, merkleTree)
|
|
|
115
118
|
amount,
|
|
116
119
|
commitment,
|
|
117
120
|
newRoot,
|
|
118
|
-
mint
|
|
121
|
+
mint,
|
|
122
|
+
depositorTokenAccount,
|
|
123
|
+
vaultTokenAccount
|
|
119
124
|
});
|
|
120
125
|
await kit.pipe(
|
|
121
126
|
await createDefaultTransaction(client, authority),
|
|
@@ -139,14 +144,21 @@ const transferForAuthority = async (client, ixArgs) => {
|
|
|
139
144
|
relayerFee,
|
|
140
145
|
recipientAmount,
|
|
141
146
|
nullifierHash,
|
|
142
|
-
|
|
147
|
+
pool,
|
|
143
148
|
mint,
|
|
144
149
|
publicInputs,
|
|
145
|
-
proofData: { proofA, proofB, proofC }
|
|
150
|
+
proofData: { proofA, proofB, proofC },
|
|
151
|
+
vaultTokenAccount
|
|
146
152
|
} = ixArgs;
|
|
147
|
-
const [
|
|
148
|
-
|
|
149
|
-
|
|
153
|
+
const [recipientTokenAccount] = await token.findAssociatedTokenPda({
|
|
154
|
+
owner: recipient.address,
|
|
155
|
+
tokenProgram: token.TOKEN_PROGRAM_ADDRESS,
|
|
156
|
+
mint
|
|
157
|
+
});
|
|
158
|
+
const [feeCollectorTokenAccount] = await token.findAssociatedTokenPda({
|
|
159
|
+
owner: _constants.FEE_COLLECTOR_ADDRESS,
|
|
160
|
+
tokenProgram: token.TOKEN_PROGRAM_ADDRESS,
|
|
161
|
+
mint
|
|
150
162
|
});
|
|
151
163
|
const transferIx = await src.getTransferInstructionAsync({
|
|
152
164
|
relayer,
|
|
@@ -159,26 +171,29 @@ const transferForAuthority = async (client, ixArgs) => {
|
|
|
159
171
|
publicInputs,
|
|
160
172
|
recipientAmount,
|
|
161
173
|
relayerFee,
|
|
162
|
-
mint
|
|
174
|
+
mint,
|
|
175
|
+
recipientTokenAccount,
|
|
176
|
+
feeCollectorTokenAccount,
|
|
177
|
+
vaultTokenAccount
|
|
163
178
|
});
|
|
164
179
|
await kit.pipe(
|
|
165
180
|
await createDefaultTransaction(client, relayer),
|
|
166
181
|
(tx) => kit.appendTransactionMessageInstruction(transferIx, tx),
|
|
167
182
|
(tx) => kit.appendTransactionMessageInstructions(
|
|
168
|
-
[computeBudget.getSetComputeUnitLimitInstruction({ units:
|
|
183
|
+
[computeBudget.getSetComputeUnitLimitInstruction({ units: 23e4 })],
|
|
169
184
|
tx
|
|
170
185
|
),
|
|
171
186
|
(tx) => signAndSendTransaction(client, tx)
|
|
172
187
|
);
|
|
173
188
|
return { relayer: relayer.address };
|
|
174
189
|
};
|
|
175
|
-
const updatePoolForRelayer = async (client, root, assetType) => {
|
|
190
|
+
const updatePoolForRelayer = async (client, root, assetType, mint) => {
|
|
176
191
|
const [relayer] = await Promise.all([loadDefaultKeypair()]);
|
|
177
192
|
const [pool] = await src.findPoolAddress({
|
|
178
|
-
mint
|
|
193
|
+
mint,
|
|
179
194
|
assetType
|
|
180
195
|
});
|
|
181
|
-
const updateRootIx =
|
|
196
|
+
const updateRootIx = src.getUpdateRootInstruction({
|
|
182
197
|
pool,
|
|
183
198
|
root
|
|
184
199
|
});
|
|
@@ -196,8 +211,8 @@ exports.airdropSolToAddress = airdropSolToAddress;
|
|
|
196
211
|
exports.createDefaultSolanaClient = createDefaultSolanaClient;
|
|
197
212
|
exports.createDefaultTransaction = createDefaultTransaction;
|
|
198
213
|
exports.createDevnetClient = createDevnetClient;
|
|
199
|
-
exports.
|
|
200
|
-
exports.
|
|
214
|
+
exports.createPoolForAuthority = createPoolForAuthority;
|
|
215
|
+
exports.depositForAuthority = depositForAuthority;
|
|
201
216
|
exports.generateKeyPairSignerWithSol = generateKeyPairSignerWithSol;
|
|
202
217
|
exports.getBalance = getBalance;
|
|
203
218
|
exports.getTokenBalance = getTokenBalance;
|
package/dist/test/_setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../test/_setup.ts"],"names":["createSolanaRpc","createSolanaRpcSubscriptions","generateKeyPairSigner","airdropFactory","lamports","path","os","fs","createKeyPairSignerFromBytes","pipe","createTransactionMessage","setTransactionMessageFeePayerSigner","setTransactionMessageLifetimeUsingBlockhash","signTransactionMessageWithSigners","assertIsSendableTransaction","getSignatureFromTransaction","assertIsTransactionWithBlockhashLifetime","sendAndConfirmTransactionFactory","getInitializePoolInstructionAsync","WRAPPED_SOL_MINT_TOKEN_PROGRAM","AssetType","appendTransactionMessageInstruction","findPoolAddress","randomBytes","generateCommitment","getDepositInstructionAsync","getTransferInstructionAsync","appendTransactionMessageInstructions","getSetComputeUnitLimitInstruction","getUpdateRootInstruction"],"mappings":"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","file":"_setup.js","sourcesContent":["import { getSetComputeUnitLimitInstruction } from '@solana-program/compute-budget';\nimport {\n Address,\n airdropFactory,\n appendTransactionMessageInstruction,\n appendTransactionMessageInstructions,\n assertIsSendableTransaction,\n assertIsTransactionWithBlockhashLifetime,\n Commitment,\n createKeyPairSignerFromBytes,\n createSolanaRpc,\n createSolanaRpcSubscriptions,\n createTransactionMessage,\n generateKeyPairSigner,\n getSignatureFromTransaction,\n KeyPairSigner,\n lamports,\n pipe,\n Rpc,\n RpcSubscriptions,\n sendAndConfirmTransactionFactory,\n setTransactionMessageFeePayerSigner,\n setTransactionMessageLifetimeUsingBlockhash,\n signTransactionMessageWithSigners,\n SolanaRpcApi,\n SolanaRpcSubscriptionsApi,\n TransactionMessage,\n TransactionMessageWithFeePayer,\n TransactionSigner,\n} from '@solana/kit';\n\nimport fs from 'fs';\nimport os from 'os';\nimport path from 'path';\n\nimport { randomBytes } from 'crypto';\nimport {\n AssetType,\n findPoolAddress,\n generateCommitment,\n getDepositInstructionAsync,\n getInitializePoolInstructionAsync,\n getTransferInstructionAsync,\n getUpdateRootInstruction,\n MerkleTree,\n ProofData,\n} from '../src';\nimport { WRAPPED_SOL_MINT_TOKEN_PROGRAM } from './_constants';\n\nexport type Client = {\n rpc: Rpc<SolanaRpcApi>;\n rpcSubscriptions: RpcSubscriptions<SolanaRpcSubscriptionsApi>;\n};\n\nexport const createDefaultSolanaClient = (): Client => {\n const rpc = createSolanaRpc('http://127.0.0.1:8899');\n const rpcSubscriptions = createSolanaRpcSubscriptions('ws://127.0.0.1:8900');\n return { rpc, rpcSubscriptions };\n};\n\nexport const createDevnetClient = (): Client => {\n const rpc = createSolanaRpc('https://api.devnet.solana.com');\n const rpcSubscriptions = createSolanaRpcSubscriptions(\n 'wss://api.devnet.solana.com/'\n );\n\n return { rpc, rpcSubscriptions };\n};\n\nexport const generateKeyPairSignerWithSol = async (\n client: Client,\n putativeLamports: bigint = 1_000_000_000n\n) => {\n const signer = await generateKeyPairSigner();\n await airdropFactory(client)({\n recipientAddress: signer.address,\n lamports: lamports(putativeLamports),\n commitment: 'confirmed',\n });\n return signer;\n};\n\nexport const airdropSolToAddress = async (\n client: Client,\n receiver: Address, // 5 sol\n putativeLamports: bigint = 5_000_000_000n // 5 sol\n) => {\n await airdropFactory(client)({\n recipientAddress: receiver,\n lamports: lamports(putativeLamports),\n commitment: 'confirmed',\n });\n};\n\nexport async function loadKeypairFromFile(\n filePath: string\n): Promise<KeyPairSigner<string>> {\n // This is here so you can also load the default keypair from the file system.\n const resolvedPath = path.resolve(\n filePath.startsWith('~') ? filePath.replace('~', os.homedir()) : filePath\n );\n const loadedKeyBytes = Uint8Array.from(\n JSON.parse(fs.readFileSync(resolvedPath, 'utf8'))\n );\n // Here you can also set the second parameter to true in case you need to extract your private key.\n const keypairSigner = await createKeyPairSignerFromBytes(loadedKeyBytes);\n return keypairSigner;\n}\n\nexport const createDefaultTransaction = async (\n client: Client,\n feePayer: TransactionSigner\n) => {\n const { value: latestBlockhash } = await client.rpc\n .getLatestBlockhash()\n .send();\n return pipe(\n createTransactionMessage({ version: 0 }),\n (tx) => setTransactionMessageFeePayerSigner(feePayer, tx),\n (tx) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx)\n );\n};\n\nexport const signAndSendTransaction = async (\n client: Client,\n transactionMessage: TransactionMessage & TransactionMessageWithFeePayer,\n // & TransactionMessageWithLifetime,\n commitment: Commitment = 'finalized'\n) => {\n const signedTransaction =\n await signTransactionMessageWithSigners(transactionMessage);\n assertIsSendableTransaction(signedTransaction);\n\n const signature = getSignatureFromTransaction(signedTransaction);\n\n assertIsTransactionWithBlockhashLifetime(signedTransaction);\n await sendAndConfirmTransactionFactory(client)(signedTransaction, {\n commitment,\n skipPreflight: true,\n });\n\n console.log('[DEBUG;] le signature ->', signature, '\\n'); // ! debug\n return signature;\n};\n\nexport const getBalance = async (client: Client, address: Address) =>\n (await client.rpc.getBalance(address, { commitment: 'confirmed' }).send())\n .value;\n\nexport async function loadDefaultKeypair(): Promise<KeyPairSigner<string>> {\n return await loadKeypairFromFile('~/.config/solana/id.json');\n}\n\nexport async function loadReceiverKeypair(): Promise<KeyPairSigner<string>> {\n return await loadKeypairFromFile('~/.config/solana/id-new.json');\n}\n\nexport async function loadRelayerKeypair(): Promise<KeyPairSigner<string>> {\n return await loadKeypairFromFile('~/.config/solana/relayer.json');\n}\n\nexport const getTokenBalance = async (client: Client, tokenAccount: Address) =>\n (\n await client.rpc\n .getTokenAccountBalance(tokenAccount, { commitment: 'confirmed' })\n .send()\n ).value;\n\n// -------------------------------------------------- instructions\n\nexport const createSolPoolForAuthority = async (\n client: Client\n // merkleTree?: Address\n): Promise<{ authority: Address }> => {\n const [authority] = await Promise.all([loadDefaultKeypair()]);\n\n const createIx = await getInitializePoolInstructionAsync({\n authority,\n mint: WRAPPED_SOL_MINT_TOKEN_PROGRAM,\n assetType: AssetType.Sol,\n });\n\n await pipe(\n await createDefaultTransaction(client, authority),\n (tx) => appendTransactionMessageInstruction(createIx, tx),\n (tx) => signAndSendTransaction(client, tx)\n );\n\n return { authority: authority.address };\n};\n\nexport const depositSolPoolForAuthority = async (\n client: Client,\n amount: bigint,\n assetType: AssetType,\n merkleTree: MerkleTree\n): Promise<{\n depositor: Address;\n commitment: Uint8Array;\n secret: Uint8Array;\n nullifier: Uint8Array;\n}> => {\n const [authority] = await Promise.all([loadDefaultKeypair()]);\n\n // find pool address\n const [pool] = await findPoolAddress({\n mint: WRAPPED_SOL_MINT_TOKEN_PROGRAM,\n assetType,\n });\n\n // generate commitment\n const secret = randomBytes(32);\n const nullifier = randomBytes(32);\n const commitment = await generateCommitment(secret, nullifier, amount, pool);\n\n // Insert commitment into merkle tree and compute new root\n merkleTree.insert(commitment);\n const newRoot = merkleTree.root();\n\n // ! NOTE, DURING INITIALIZATION,\n const depositIx = await getDepositInstructionAsync({\n depositor: authority,\n pool,\n amount,\n commitment,\n newRoot,\n mint: WRAPPED_SOL_MINT_TOKEN_PROGRAM,\n });\n\n await pipe(\n await createDefaultTransaction(client, authority),\n (tx) => appendTransactionMessageInstruction(depositIx, tx),\n (tx) => signAndSendTransaction(client, tx)\n );\n\n return {\n depositor: authority.address,\n commitment,\n secret,\n nullifier,\n };\n};\n\nexport const transferForAuthority = async (\n client: Client,\n ixArgs: {\n relayerFee: number;\n recipientAmount: bigint;\n nullifierHash: Uint8Array;\n proofData: ProofData;\n publicInputs: Uint8Array[];\n mint: Address;\n assetType: AssetType;\n }\n): Promise<{\n relayer: Address;\n}> => {\n const [relayer, recipient] = await Promise.all([\n loadRelayerKeypair(),\n loadReceiverKeypair(),\n ]);\n\n // airdrop relayer\n await airdropSolToAddress(client, relayer.address);\n\n const {\n relayerFee,\n recipientAmount,\n nullifierHash,\n assetType,\n mint,\n publicInputs,\n proofData: { proofA, proofB, proofC },\n } = ixArgs;\n\n // find pool address\n const [pool] = await findPoolAddress({\n mint,\n assetType,\n });\n\n // TEMPORARY: The autogenerated client hasn't been regenerated yet\n // The Rust program expects: relayer_fee (6th), recipient_amount (7th)\n // But the old client has: amount (6th), fee (7th)\n // So we swap them here until the client is regenerated\n const transferIx = await getTransferInstructionAsync({\n relayer,\n pool,\n recipient: recipient.address,\n proofA,\n proofB,\n proofC,\n nullifierHash,\n publicInputs,\n recipientAmount: recipientAmount,\n relayerFee: relayerFee,\n mint,\n });\n\n await pipe(\n await createDefaultTransaction(client, relayer),\n (tx) => appendTransactionMessageInstruction(transferIx, tx),\n (tx) =>\n appendTransactionMessageInstructions(\n [getSetComputeUnitLimitInstruction({ units: 1_400_000 })],\n tx\n ),\n (tx) => signAndSendTransaction(client, tx)\n );\n\n // todo: return the address of the pool\n // todo: what to return\n return { relayer: relayer.address };\n};\n\nexport const updatePoolForRelayer = async (\n client: Client,\n root: Uint8Array,\n assetType: AssetType\n): Promise<{\n relayer: Address;\n}> => {\n const [relayer] = await Promise.all([loadDefaultKeypair()]);\n\n // find pool address\n const [pool] = await findPoolAddress({\n mint: WRAPPED_SOL_MINT_TOKEN_PROGRAM,\n assetType,\n });\n\n const updateRootIx = await getUpdateRootInstruction({\n pool,\n root,\n });\n\n await pipe(\n await createDefaultTransaction(client, relayer),\n (tx) => appendTransactionMessageInstruction(updateRootIx, tx),\n (tx) => signAndSendTransaction(client, tx)\n );\n\n return {\n relayer: relayer.address,\n };\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../test/_setup.ts"],"names":["createSolanaRpc","createSolanaRpcSubscriptions","generateKeyPairSigner","airdropFactory","lamports","path","os","fs","createKeyPairSignerFromBytes","pipe","createTransactionMessage","setTransactionMessageFeePayerSigner","setTransactionMessageLifetimeUsingBlockhash","signTransactionMessageWithSigners","assertIsSendableTransaction","getSignatureFromTransaction","assertIsTransactionWithBlockhashLifetime","sendAndConfirmTransactionFactory","getInitializePoolInstructionAsync","appendTransactionMessageInstruction","findAssociatedTokenPda","TOKEN_PROGRAM_ADDRESS","randomBytes","generateCommitment","getDepositInstructionAsync","FEE_COLLECTOR_ADDRESS","getTransferInstructionAsync","appendTransactionMessageInstructions","getSetComputeUnitLimitInstruction","findPoolAddress","getUpdateRootInstruction"],"mappings":"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","file":"_setup.js","sourcesContent":["import { getSetComputeUnitLimitInstruction } from '@solana-program/compute-budget';\nimport {\n Address,\n airdropFactory,\n appendTransactionMessageInstruction,\n appendTransactionMessageInstructions,\n assertIsSendableTransaction,\n assertIsTransactionWithBlockhashLifetime,\n Commitment,\n createKeyPairSignerFromBytes,\n createSolanaRpc,\n createSolanaRpcSubscriptions,\n createTransactionMessage,\n generateKeyPairSigner,\n getSignatureFromTransaction,\n KeyPairSigner,\n lamports,\n pipe,\n Rpc,\n RpcSubscriptions,\n sendAndConfirmTransactionFactory,\n setTransactionMessageFeePayerSigner,\n setTransactionMessageLifetimeUsingBlockhash,\n signTransactionMessageWithSigners,\n SolanaRpcApi,\n SolanaRpcSubscriptionsApi,\n TransactionMessage,\n TransactionMessageWithFeePayer,\n TransactionSigner,\n} from '@solana/kit';\n\nimport fs from 'fs';\nimport os from 'os';\nimport path from 'path';\n\nimport { randomBytes } from 'crypto';\nimport {\n AssetType,\n findPoolAddress,\n generateCommitment,\n getDepositInstructionAsync,\n getInitializePoolInstructionAsync,\n getTransferInstructionAsync,\n getUpdateRootInstruction,\n MerkleTree,\n ProofData,\n} from '../src';\nimport {\n findAssociatedTokenPda,\n TOKEN_PROGRAM_ADDRESS,\n} from '@solana-program/token';\nimport { FEE_COLLECTOR_ADDRESS } from './_constants';\n\nexport type Client = {\n rpc: Rpc<SolanaRpcApi>;\n rpcSubscriptions: RpcSubscriptions<SolanaRpcSubscriptionsApi>;\n};\n\nexport const createDefaultSolanaClient = (): Client => {\n const rpc = createSolanaRpc('http://127.0.0.1:8899');\n const rpcSubscriptions = createSolanaRpcSubscriptions('ws://127.0.0.1:8900');\n return { rpc, rpcSubscriptions };\n};\n\nexport const createDevnetClient = (): Client => {\n const rpc = createSolanaRpc('https://api.devnet.solana.com');\n const rpcSubscriptions = createSolanaRpcSubscriptions(\n 'wss://api.devnet.solana.com/'\n );\n\n return { rpc, rpcSubscriptions };\n};\n\nexport const generateKeyPairSignerWithSol = async (\n client: Client,\n putativeLamports: bigint = 1_000_000_000n\n) => {\n const signer = await generateKeyPairSigner();\n await airdropFactory(client)({\n recipientAddress: signer.address,\n lamports: lamports(putativeLamports),\n commitment: 'confirmed',\n });\n return signer;\n};\n\nexport const airdropSolToAddress = async (\n client: Client,\n receiver: Address, // 5 sol\n putativeLamports: bigint = 5_000_000_000n // 5 sol\n) => {\n await airdropFactory(client)({\n recipientAddress: receiver,\n lamports: lamports(putativeLamports),\n commitment: 'confirmed',\n });\n};\n\nexport async function loadKeypairFromFile(\n filePath: string\n): Promise<KeyPairSigner<string>> {\n // This is here so you can also load the default keypair from the file system.\n const resolvedPath = path.resolve(\n filePath.startsWith('~') ? filePath.replace('~', os.homedir()) : filePath\n );\n const loadedKeyBytes = Uint8Array.from(\n JSON.parse(fs.readFileSync(resolvedPath, 'utf8'))\n );\n // Here you can also set the second parameter to true in case you need to extract your private key.\n const keypairSigner = await createKeyPairSignerFromBytes(loadedKeyBytes);\n return keypairSigner;\n}\n\nexport const createDefaultTransaction = async (\n client: Client,\n feePayer: TransactionSigner\n) => {\n const { value: latestBlockhash } = await client.rpc\n .getLatestBlockhash()\n .send();\n return pipe(\n createTransactionMessage({ version: 0 }),\n (tx) => setTransactionMessageFeePayerSigner(feePayer, tx),\n (tx) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx)\n );\n};\n\nexport const signAndSendTransaction = async (\n client: Client,\n transactionMessage: TransactionMessage & TransactionMessageWithFeePayer,\n // & TransactionMessageWithLifetime,\n commitment: Commitment = 'finalized'\n) => {\n const signedTransaction =\n await signTransactionMessageWithSigners(transactionMessage);\n assertIsSendableTransaction(signedTransaction);\n\n const signature = getSignatureFromTransaction(signedTransaction);\n\n assertIsTransactionWithBlockhashLifetime(signedTransaction);\n await sendAndConfirmTransactionFactory(client)(signedTransaction, {\n commitment,\n skipPreflight: true,\n });\n\n console.log('[DEBUG;] le signature ->', signature, '\\n'); // ! debug\n return signature;\n};\n\nexport const getBalance = async (client: Client, address: Address) =>\n (await client.rpc.getBalance(address, { commitment: 'confirmed' }).send())\n .value;\n\nexport async function loadDefaultKeypair(): Promise<KeyPairSigner<string>> {\n return await loadKeypairFromFile('~/.config/solana/id.json');\n}\n\nexport async function loadReceiverKeypair(): Promise<KeyPairSigner<string>> {\n return await loadKeypairFromFile('~/.config/solana/id-new.json');\n}\n\nexport async function loadRelayerKeypair(): Promise<KeyPairSigner<string>> {\n return await loadKeypairFromFile('~/.config/solana/relayer.json');\n}\n\nexport const getTokenBalance = async (client: Client, tokenAccount: Address) =>\n (\n await client.rpc\n .getTokenAccountBalance(tokenAccount, { commitment: 'confirmed' })\n .send()\n ).value;\n\n// -------------------------------------------------- instructions\n\nexport const createPoolForAuthority = async (\n client: Client,\n mint: Address,\n assetType: AssetType\n): Promise<{ authority: Address }> => {\n const [authority] = await Promise.all([loadDefaultKeypair()]);\n\n const createIx = await getInitializePoolInstructionAsync({\n authority,\n mint,\n assetType,\n });\n\n await pipe(\n await createDefaultTransaction(client, authority),\n (tx) => appendTransactionMessageInstruction(createIx, tx),\n (tx) => signAndSendTransaction(client, tx)\n );\n\n return { authority: authority.address };\n};\n\nexport const depositForAuthority = async (\n client: Client,\n ixArgs: {\n amount: bigint;\n merkleTree: MerkleTree;\n mint: Address;\n pool: Address;\n depositorTokenAccount?: Address;\n vaultTokenAccount?: Address;\n }\n): Promise<{\n depositor: Address;\n commitment: Uint8Array;\n secret: Uint8Array;\n nullifier: Uint8Array;\n}> => {\n const [authority] = await Promise.all([loadDefaultKeypair()]);\n\n const { merkleTree, amount, mint, vaultTokenAccount, pool } = ixArgs;\n\n const [depositorTokenAccount] = await findAssociatedTokenPda({\n owner: authority.address,\n tokenProgram: TOKEN_PROGRAM_ADDRESS,\n mint,\n });\n\n // generate commitment\n const secret = randomBytes(32);\n const nullifier = randomBytes(32);\n const commitment = await generateCommitment(secret, nullifier, amount, pool);\n\n // Insert commitment into merkle tree and compute new root\n merkleTree.insert(commitment);\n const newRoot = merkleTree.root();\n\n // ! NOTE, DURING INITIALIZATION,\n const depositIx = await getDepositInstructionAsync({\n depositor: authority,\n pool,\n amount,\n commitment,\n newRoot,\n mint,\n depositorTokenAccount,\n vaultTokenAccount,\n });\n\n await pipe(\n await createDefaultTransaction(client, authority),\n (tx) => appendTransactionMessageInstruction(depositIx, tx),\n (tx) => signAndSendTransaction(client, tx)\n );\n\n return {\n depositor: authority.address,\n commitment,\n secret,\n nullifier,\n };\n};\n\nexport const transferForAuthority = async (\n client: Client,\n ixArgs: {\n relayerFee: number;\n recipientAmount: bigint;\n nullifierHash: Uint8Array;\n proofData: ProofData;\n publicInputs: Uint8Array[];\n vaultTokenAccount?: Address;\n mint: Address;\n pool: Address;\n }\n): Promise<{\n relayer: Address;\n}> => {\n const [relayer, recipient] = await Promise.all([\n loadRelayerKeypair(),\n loadReceiverKeypair(),\n ]);\n\n // airdrop relayer\n await airdropSolToAddress(client, relayer.address);\n\n const {\n relayerFee,\n recipientAmount,\n nullifierHash,\n pool,\n mint,\n publicInputs,\n proofData: { proofA, proofB, proofC },\n vaultTokenAccount,\n } = ixArgs;\n\n const [recipientTokenAccount] = await findAssociatedTokenPda({\n owner: recipient.address,\n tokenProgram: TOKEN_PROGRAM_ADDRESS,\n mint,\n });\n const [feeCollectorTokenAccount] = await findAssociatedTokenPda({\n owner: FEE_COLLECTOR_ADDRESS,\n tokenProgram: TOKEN_PROGRAM_ADDRESS,\n mint,\n });\n\n const transferIx = await getTransferInstructionAsync({\n relayer,\n pool,\n recipient: recipient.address,\n proofA,\n proofB,\n proofC,\n nullifierHash,\n publicInputs,\n recipientAmount,\n relayerFee,\n mint,\n recipientTokenAccount,\n feeCollectorTokenAccount,\n vaultTokenAccount,\n });\n\n await pipe(\n await createDefaultTransaction(client, relayer),\n (tx) => appendTransactionMessageInstruction(transferIx, tx),\n (tx) =>\n appendTransactionMessageInstructions(\n [getSetComputeUnitLimitInstruction({ units: 230_000 })],\n tx\n ),\n (tx) => signAndSendTransaction(client, tx)\n );\n\n // todo: return the address of the pool\n // todo: what to return\n return { relayer: relayer.address };\n};\n\nexport const updatePoolForRelayer = async (\n client: Client,\n root: Uint8Array,\n assetType: AssetType,\n mint: Address\n): Promise<{\n relayer: Address;\n}> => {\n const [relayer] = await Promise.all([loadDefaultKeypair()]);\n\n // find pool address\n const [pool] = await findPoolAddress({\n mint,\n assetType,\n });\n\n const updateRootIx = getUpdateRootInstruction({\n pool,\n root,\n });\n\n await pipe(\n await createDefaultTransaction(client, relayer),\n (tx) => appendTransactionMessageInstruction(updateRootIx, tx),\n (tx) => signAndSendTransaction(client, tx)\n );\n\n return {\n relayer: relayer.address,\n };\n};\n"]}
|
|
@@ -14,8 +14,8 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
|
14
14
|
var __commonJS = (cb, mod) => function __require() {
|
|
15
15
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
16
16
|
};
|
|
17
|
-
var
|
|
18
|
-
"test/
|
|
17
|
+
var require_transferSol_test = __commonJS({
|
|
18
|
+
"test/_transferSol.test.ts"() {
|
|
19
19
|
test__default.default("it transfers authority deposited SOL", async (t) => {
|
|
20
20
|
const client = _setup.createDefaultSolanaClient();
|
|
21
21
|
const relayer = await _setup.loadRelayerKeypair();
|
|
@@ -27,17 +27,21 @@ var require_transfer_test = __commonJS({
|
|
|
27
27
|
assetType: SOL_ASSET_TYPE
|
|
28
28
|
});
|
|
29
29
|
console.log("calling init pool");
|
|
30
|
-
await _setup.
|
|
30
|
+
await _setup.createPoolForAuthority(
|
|
31
|
+
client,
|
|
32
|
+
_constants.WRAPPED_SOL_MINT_TOKEN_PROGRAM,
|
|
33
|
+
SOL_ASSET_TYPE
|
|
34
|
+
);
|
|
31
35
|
const [vault] = await src.findVaultAddress({ pool });
|
|
32
36
|
console.log("calling deposit into pool");
|
|
33
|
-
const depositAmount = BigInt(
|
|
34
|
-
const { secret, nullifier } = await _setup.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
const depositAmount = BigInt(1) * _constants.LAMPORTS_PER_SOL;
|
|
38
|
+
const { secret, nullifier } = await _setup.depositForAuthority(client, {
|
|
39
|
+
amount: depositAmount,
|
|
40
|
+
pool,
|
|
41
|
+
mint: _constants.WRAPPED_SOL_MINT_TOKEN_PROGRAM,
|
|
38
42
|
merkleTree
|
|
39
43
|
// Pass the merkle tree to handle root computation
|
|
40
|
-
);
|
|
44
|
+
});
|
|
41
45
|
const localRoot = merkleTree.root();
|
|
42
46
|
const leafIndex = 0;
|
|
43
47
|
const { pathElements, pathIndices } = merkleTree.getProof(leafIndex);
|
|
@@ -75,8 +79,8 @@ var require_transfer_test = __commonJS({
|
|
|
75
79
|
nullifierHash,
|
|
76
80
|
publicInputs,
|
|
77
81
|
proofData,
|
|
78
|
-
|
|
79
|
-
|
|
82
|
+
mint: _constants.WRAPPED_SOL_MINT_TOKEN_PROGRAM,
|
|
83
|
+
pool
|
|
80
84
|
});
|
|
81
85
|
const balanceAfter = await _setup.getBalance(client, vault);
|
|
82
86
|
console.log("Vault balance after transfer:", balanceAfter);
|
|
@@ -93,8 +97,8 @@ var require_transfer_test = __commonJS({
|
|
|
93
97
|
});
|
|
94
98
|
}
|
|
95
99
|
});
|
|
96
|
-
var
|
|
100
|
+
var _transferSol_test = require_transferSol_test();
|
|
97
101
|
|
|
98
|
-
module.exports =
|
|
99
|
-
//# sourceMappingURL=
|
|
100
|
-
//# sourceMappingURL=
|
|
102
|
+
module.exports = _transferSol_test;
|
|
103
|
+
//# sourceMappingURL=_transferSol.test.js.map
|
|
104
|
+
//# sourceMappingURL=_transferSol.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../test/_transferSol.test.ts"],"names":["test","createDefaultSolanaClient","loadRelayerKeypair","MerkleTree","AssetType","findPoolAddress","WRAPPED_SOL_MINT_TOKEN_PROGRAM","createPoolForAuthority","findVaultAddress","LAMPORTS_PER_SOL","depositForAuthority","generateNullifier","loadReceiverKeypair","getAddressEncoder","generateProof","getBalance","transferForAuthority"],"mappings":"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","file":"_transferSol.test.js","sourcesContent":["import { getAddressEncoder } from '@solana/kit';\nimport test from 'ava';\nimport {\n AssetType,\n findPoolAddress,\n findVaultAddress,\n generateNullifier,\n generateProof,\n MerkleTree,\n} from '../src';\nimport { LAMPORTS_PER_SOL, WRAPPED_SOL_MINT_TOKEN_PROGRAM } from './_constants';\nimport {\n createDefaultSolanaClient,\n createPoolForAuthority,\n depositForAuthority,\n getBalance,\n loadReceiverKeypair,\n loadRelayerKeypair,\n transferForAuthority,\n} from './_setup';\n\ntest('it transfers authority deposited SOL', async (t) => {\n const client = createDefaultSolanaClient();\n const relayer = await loadRelayerKeypair();\n const merkleTree = new MerkleTree(20);\n await merkleTree.initialize();\n\n // _ since we are doing sol, we hardcode the assetType as such\n const SOL_ASSET_TYPE = AssetType.Sol;\n\n // find pool address\n const [pool] = await findPoolAddress({\n mint: WRAPPED_SOL_MINT_TOKEN_PROGRAM,\n assetType: SOL_ASSET_TYPE,\n });\n\n // create pool\n console.log('calling init pool');\n await createPoolForAuthority(\n client,\n WRAPPED_SOL_MINT_TOKEN_PROGRAM,\n SOL_ASSET_TYPE\n );\n\n // find vault address\n const [vault] = await findVaultAddress({ pool });\n\n // deposit\n console.log('calling deposit into pool');\n const depositAmount = BigInt(1) * LAMPORTS_PER_SOL;\n const { secret, nullifier } = await depositForAuthority(client, {\n amount: depositAmount,\n pool,\n mint: WRAPPED_SOL_MINT_TOKEN_PROGRAM,\n merkleTree, // Pass the merkle tree to handle root computation\n });\n\n // Tree already updated inside depositSolPoolForAuthority\n const localRoot = merkleTree.root();\n\n // Get merkle proof for the commitment (leaf index 0 since it's the first deposit)\n const leafIndex = 0;\n const { pathElements, pathIndices } = merkleTree.getProof(leafIndex);\n\n // Use LOCAL root (tree is off-chain now)\n const root = localRoot;\n\n // Generate nullifier hash\n const nullifierHash = await generateNullifier(nullifier, pool);\n\n // Get recipient address\n const recipient = await loadReceiverKeypair();\n const recipientBytes = getAddressEncoder().encode(recipient.address);\n\n // For now, use authority as relayer (can be changed later)\n const relayerBytes = getAddressEncoder().encode(relayer.address);\n\n // Generate zero-knowledge proof\n // In the new design:\n // - relayer_fee: what the relayer gets (user chooses)\n // - recipient_amount: what goes to recipient BEFORE protocol fee (proven by circuit)\n // - circuit proves: depositAmount >= relayer_fee + recipient_amount\n const relayerFee = 0; // No relayer fee for this test\n const recipientAmount = depositAmount; // Withdraw full deposit amount\n\n console.log('Generating ZK proof...');\n const { proofData, publicInputs } = await generateProof({\n secret,\n nullifier,\n amount: depositAmount, // Private input - what was deposited\n pathElements,\n pathIndices,\n recipient: Uint8Array.from(recipientBytes),\n relayer: Uint8Array.from(relayerBytes),\n fee: relayerFee, // Public input - must match instruction parameter\n refund: recipientAmount, // Public input - must match instruction parameter\n root: Uint8Array.from(root),\n poolAddress: pool,\n });\n console.log('ZK proof generated successfully');\n\n // Check vault balance before transfer\n const balanceBefore = await getBalance(client, vault);\n console.log('Vault balance before transfer:', balanceBefore);\n\n // Perform the transfer (withdrawal)\n console.log('calling transfer tx');\n await transferForAuthority(client, {\n relayerFee,\n recipientAmount,\n nullifierHash,\n publicInputs,\n proofData,\n mint: WRAPPED_SOL_MINT_TOKEN_PROGRAM,\n pool,\n });\n\n // Check vault balance after transfer\n const balanceAfter = await getBalance(client, vault);\n console.log('Vault balance after transfer:', balanceAfter);\n\n // Calculate expected amounts\n // Protocol fee is 15bps of recipient_amount\n const protocolFee = (BigInt(recipientAmount) * 15n) / 10000n;\n const finalRecipientAmount = BigInt(recipientAmount) - protocolFee;\n const totalWithdrawn = BigInt(recipientAmount) + BigInt(relayerFee);\n\n console.log('Protocol fee:', protocolFee);\n console.log('Final recipient amount:', finalRecipientAmount);\n console.log('Total withdrawn from vault:', totalWithdrawn);\n\n // Verify vault balance decreased by the total withdrawn amount\n t.truthy(BigInt(balanceBefore) - BigInt(balanceAfter) >= totalWithdrawn);\n\n // Verify recipient received the funds (after protocol fee)\n const recipientBalance = await getBalance(client, recipient.address);\n console.log('Recipient balance:', recipientBalance);\n t.truthy(BigInt(recipientBalance) >= finalRecipientAmount);\n});\n"]}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var kit = require('@solana/kit');
|
|
4
|
+
var test = require('ava');
|
|
5
|
+
var src = require('../src');
|
|
6
|
+
var _constants = require('./_constants');
|
|
7
|
+
var _setup = require('./_setup');
|
|
8
|
+
var token = require('@solana-program/token');
|
|
9
|
+
|
|
10
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
|
|
12
|
+
var test__default = /*#__PURE__*/_interopDefault(test);
|
|
13
|
+
|
|
14
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
15
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
16
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
17
|
+
};
|
|
18
|
+
var require_transferSpl_test = __commonJS({
|
|
19
|
+
"test/transferSpl.test.ts"() {
|
|
20
|
+
test__default.default("it transfers custom SPL token privately", async (t) => {
|
|
21
|
+
const client = _setup.createDefaultSolanaClient();
|
|
22
|
+
const relayer = await _setup.loadRelayerKeypair();
|
|
23
|
+
const merkleTree = new src.MerkleTree(20);
|
|
24
|
+
await merkleTree.initialize();
|
|
25
|
+
const SPL_ASSET_TYPE = src.AssetType.SplToken;
|
|
26
|
+
const SPL_TOKEN_MINT = kit.address(
|
|
27
|
+
"7eV4tJbL9ffQWjyVLbCjieQ6nWPSMJvtBnHxvGnfKPkm"
|
|
28
|
+
);
|
|
29
|
+
const [pool] = await src.findPoolAddress({
|
|
30
|
+
mint: SPL_TOKEN_MINT,
|
|
31
|
+
assetType: SPL_ASSET_TYPE
|
|
32
|
+
});
|
|
33
|
+
console.log("calling init pool");
|
|
34
|
+
await _setup.createPoolForAuthority(client, SPL_TOKEN_MINT, SPL_ASSET_TYPE);
|
|
35
|
+
const [vault] = await src.findVaultAddress({ pool });
|
|
36
|
+
const [vaultTokenAccount] = await token.findAssociatedTokenPda({
|
|
37
|
+
owner: vault,
|
|
38
|
+
tokenProgram: token.TOKEN_PROGRAM_ADDRESS,
|
|
39
|
+
mint: SPL_TOKEN_MINT
|
|
40
|
+
});
|
|
41
|
+
console.log("calling deposit into pool");
|
|
42
|
+
const depositAmount = BigInt(1) * _constants.LAMPORTS_PER_SOL;
|
|
43
|
+
const { secret, nullifier } = await _setup.depositForAuthority(client, {
|
|
44
|
+
amount: depositAmount,
|
|
45
|
+
pool,
|
|
46
|
+
mint: SPL_TOKEN_MINT,
|
|
47
|
+
merkleTree,
|
|
48
|
+
// Pass the merkle tree to handle root computation
|
|
49
|
+
vaultTokenAccount
|
|
50
|
+
});
|
|
51
|
+
const localRoot = merkleTree.root();
|
|
52
|
+
const leafIndex = 0;
|
|
53
|
+
const { pathElements, pathIndices } = merkleTree.getProof(leafIndex);
|
|
54
|
+
const root = localRoot;
|
|
55
|
+
const nullifierHash = await src.generateNullifier(nullifier, pool);
|
|
56
|
+
const recipient = await _setup.loadReceiverKeypair();
|
|
57
|
+
const recipientBytes = kit.getAddressEncoder().encode(recipient.address);
|
|
58
|
+
const relayerBytes = kit.getAddressEncoder().encode(relayer.address);
|
|
59
|
+
const relayerFee = 0;
|
|
60
|
+
const recipientAmount = depositAmount;
|
|
61
|
+
console.log("Generating ZK proof...");
|
|
62
|
+
const { proofData, publicInputs } = await src.generateProof({
|
|
63
|
+
secret,
|
|
64
|
+
nullifier,
|
|
65
|
+
amount: depositAmount,
|
|
66
|
+
// Private input - what was deposited
|
|
67
|
+
pathElements,
|
|
68
|
+
pathIndices,
|
|
69
|
+
recipient: Uint8Array.from(recipientBytes),
|
|
70
|
+
relayer: Uint8Array.from(relayerBytes),
|
|
71
|
+
fee: relayerFee,
|
|
72
|
+
// Public input - must match instruction parameter
|
|
73
|
+
refund: recipientAmount,
|
|
74
|
+
// Public input - must match instruction parameter
|
|
75
|
+
root: Uint8Array.from(root),
|
|
76
|
+
poolAddress: pool
|
|
77
|
+
});
|
|
78
|
+
console.log("ZK proof generated successfully");
|
|
79
|
+
const balanceBefore = await _setup.getBalance(client, vault);
|
|
80
|
+
console.log("Vault balance before transfer:", balanceBefore);
|
|
81
|
+
console.log("calling transfer tx");
|
|
82
|
+
await _setup.transferForAuthority(client, {
|
|
83
|
+
relayerFee,
|
|
84
|
+
recipientAmount,
|
|
85
|
+
nullifierHash,
|
|
86
|
+
publicInputs,
|
|
87
|
+
proofData,
|
|
88
|
+
mint: SPL_TOKEN_MINT,
|
|
89
|
+
pool,
|
|
90
|
+
vaultTokenAccount
|
|
91
|
+
});
|
|
92
|
+
const balanceAfter = await _setup.getBalance(client, vault);
|
|
93
|
+
console.log("Vault balance after transfer:", balanceAfter);
|
|
94
|
+
const protocolFee = BigInt(recipientAmount) * 15n / 10000n;
|
|
95
|
+
const finalRecipientAmount = BigInt(recipientAmount) - protocolFee;
|
|
96
|
+
const totalWithdrawn = BigInt(recipientAmount) + BigInt(relayerFee);
|
|
97
|
+
console.log("Protocol fee:", protocolFee);
|
|
98
|
+
console.log("Final recipient amount:", finalRecipientAmount);
|
|
99
|
+
console.log("Total withdrawn from vault:", totalWithdrawn);
|
|
100
|
+
t.truthy(BigInt(balanceBefore) - BigInt(balanceAfter) >= totalWithdrawn);
|
|
101
|
+
const recipientBalance = await _setup.getBalance(client, recipient.address);
|
|
102
|
+
console.log("Recipient balance:", recipientBalance);
|
|
103
|
+
t.truthy(BigInt(recipientBalance) >= finalRecipientAmount);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
var transferSpl_test = require_transferSpl_test();
|
|
108
|
+
|
|
109
|
+
module.exports = transferSpl_test;
|
|
110
|
+
//# sourceMappingURL=transferSpl.test.js.map
|
|
111
|
+
//# sourceMappingURL=transferSpl.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../test/transferSpl.test.ts"],"names":["test","createDefaultSolanaClient","loadRelayerKeypair","MerkleTree","AssetType","address","findPoolAddress","createPoolForAuthority","findVaultAddress","findAssociatedTokenPda","TOKEN_PROGRAM_ADDRESS","LAMPORTS_PER_SOL","depositForAuthority","generateNullifier","loadReceiverKeypair","getAddressEncoder","generateProof","getBalance","transferForAuthority"],"mappings":"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","file":"transferSpl.test.js","sourcesContent":["import { address, getAddressEncoder } from '@solana/kit';\nimport test from 'ava';\nimport {\n AssetType,\n findPoolAddress,\n findVaultAddress,\n generateNullifier,\n generateProof,\n MerkleTree,\n} from '../src';\nimport { LAMPORTS_PER_SOL } from './_constants';\nimport {\n createDefaultSolanaClient,\n createPoolForAuthority,\n depositForAuthority,\n getBalance,\n loadReceiverKeypair,\n loadRelayerKeypair,\n transferForAuthority,\n} from './_setup';\nimport {\n findAssociatedTokenPda,\n TOKEN_PROGRAM_ADDRESS,\n} from '@solana-program/token';\n\ntest('it transfers custom SPL token privately', async (t) => {\n const client = createDefaultSolanaClient();\n const relayer = await loadRelayerKeypair();\n const merkleTree = new MerkleTree(20);\n await merkleTree.initialize();\n\n // _ since we are doing sol, we hardcode the assetType as such\n const SPL_ASSET_TYPE = AssetType.SplToken;\n const SPL_TOKEN_MINT = address(\n '7eV4tJbL9ffQWjyVLbCjieQ6nWPSMJvtBnHxvGnfKPkm'\n ); // FIXME: UPDATE WITH YOUR SPL TOKEN\n\n // find pool address\n const [pool] = await findPoolAddress({\n mint: SPL_TOKEN_MINT,\n assetType: SPL_ASSET_TYPE,\n });\n\n // create pool\n console.log('calling init pool');\n await createPoolForAuthority(client, SPL_TOKEN_MINT, SPL_ASSET_TYPE);\n\n // find vault address\n const [vault] = await findVaultAddress({ pool });\n const [vaultTokenAccount] = await findAssociatedTokenPda({\n owner: vault,\n tokenProgram: TOKEN_PROGRAM_ADDRESS,\n mint: SPL_TOKEN_MINT,\n });\n\n // deposit\n console.log('calling deposit into pool');\n const depositAmount = BigInt(1) * LAMPORTS_PER_SOL;\n const { secret, nullifier } = await depositForAuthority(client, {\n amount: depositAmount,\n pool,\n mint: SPL_TOKEN_MINT,\n merkleTree, // Pass the merkle tree to handle root computation\n vaultTokenAccount,\n });\n\n // Tree already updated inside depositSolPoolForAuthority\n const localRoot = merkleTree.root();\n\n // Get merkle proof for the commitment (leaf index 0 since it's the first deposit)\n const leafIndex = 0;\n const { pathElements, pathIndices } = merkleTree.getProof(leafIndex);\n\n // Use LOCAL root (tree is off-chain now)\n const root = localRoot;\n\n // Generate nullifier hash\n const nullifierHash = await generateNullifier(nullifier, pool);\n\n // Get recipient address\n const recipient = await loadReceiverKeypair();\n const recipientBytes = getAddressEncoder().encode(recipient.address);\n\n // For now, use authority as relayer (can be changed later)\n const relayerBytes = getAddressEncoder().encode(relayer.address);\n\n // Generate zero-knowledge proof\n // In the new design:\n // - relayer_fee: what the relayer gets (user chooses)\n // - recipient_amount: what goes to recipient BEFORE protocol fee (proven by circuit)\n // - circuit proves: depositAmount >= relayer_fee + recipient_amount\n const relayerFee = 0; // No relayer fee for this test\n const recipientAmount = depositAmount; // Withdraw full deposit amount\n\n console.log('Generating ZK proof...');\n const { proofData, publicInputs } = await generateProof({\n secret,\n nullifier,\n amount: depositAmount, // Private input - what was deposited\n pathElements,\n pathIndices,\n recipient: Uint8Array.from(recipientBytes),\n relayer: Uint8Array.from(relayerBytes),\n fee: relayerFee, // Public input - must match instruction parameter\n refund: recipientAmount, // Public input - must match instruction parameter\n root: Uint8Array.from(root),\n poolAddress: pool,\n });\n console.log('ZK proof generated successfully');\n\n // Check vault balance before transfer\n const balanceBefore = await getBalance(client, vault);\n console.log('Vault balance before transfer:', balanceBefore);\n\n // Perform the transfer (withdrawal)\n console.log('calling transfer tx');\n await transferForAuthority(client, {\n relayerFee,\n recipientAmount,\n nullifierHash,\n publicInputs,\n proofData,\n mint: SPL_TOKEN_MINT,\n pool,\n vaultTokenAccount,\n });\n\n // Check vault balance after transfer\n const balanceAfter = await getBalance(client, vault);\n console.log('Vault balance after transfer:', balanceAfter);\n\n // Calculate expected amounts\n // Protocol fee is 15bps of recipient_amount\n const protocolFee = (BigInt(recipientAmount) * 15n) / 10000n;\n const finalRecipientAmount = BigInt(recipientAmount) - protocolFee;\n const totalWithdrawn = BigInt(recipientAmount) + BigInt(relayerFee);\n\n console.log('Protocol fee:', protocolFee);\n console.log('Final recipient amount:', finalRecipientAmount);\n console.log('Total withdrawn from vault:', totalWithdrawn);\n\n // Verify vault balance decreased by the total withdrawn amount\n t.truthy(BigInt(balanceBefore) - BigInt(balanceAfter) >= totalWithdrawn);\n\n // Verify recipient received the funds (after protocol fee)\n const recipientBalance = await getBalance(client, recipient.address);\n console.log('Recipient balance:', recipientBalance);\n t.truthy(BigInt(recipientBalance) >= finalRecipientAmount);\n});\n"]}
|
|
@@ -34,7 +34,9 @@ export declare const MIXOOR_ERROR__MERKLE_TREE_FULL = 6011;
|
|
|
34
34
|
export declare const MIXOOR_ERROR__INVALID_MERKLE_PROOF = 6012;
|
|
35
35
|
/** PublicInputMismatch: Public input does not match instruction parameter */
|
|
36
36
|
export declare const MIXOOR_ERROR__PUBLIC_INPUT_MISMATCH = 6013;
|
|
37
|
-
|
|
37
|
+
/** InvalidMint: Invalid mint provided to instruction */
|
|
38
|
+
export declare const MIXOOR_ERROR__INVALID_MINT = 6014;
|
|
39
|
+
export type MixoorError = typeof MIXOOR_ERROR__INSUFFICIENT_FUNDS | typeof MIXOOR_ERROR__INVALID_AMOUNT | typeof MIXOOR_ERROR__INVALID_ASSET_TYPE | typeof MIXOOR_ERROR__INVALID_MERKLE_PROOF | typeof MIXOOR_ERROR__INVALID_MERKLE_TREE | typeof MIXOOR_ERROR__INVALID_MERKLE_TREE_ADDRESS | typeof MIXOOR_ERROR__INVALID_MINT | typeof MIXOOR_ERROR__INVALID_PROOF | typeof MIXOOR_ERROR__INVALID_PUBLIC_INPUTS | typeof MIXOOR_ERROR__MERKLE_TREE_FULL | typeof MIXOOR_ERROR__MISSING_TOKEN_ACCOUNT | typeof MIXOOR_ERROR__OVERFLOW | typeof MIXOOR_ERROR__POSEIDON_HASH_ERROR | typeof MIXOOR_ERROR__PUBLIC_INPUT_MISMATCH | typeof MIXOOR_ERROR__UNKNOWN_ROOT;
|
|
38
40
|
export declare function getMixoorErrorMessage(code: MixoorError): string;
|
|
39
41
|
export declare function isMixoorError<TProgramErrorCode extends MixoorError>(error: unknown, transactionMessage: {
|
|
40
42
|
instructions: Record<number, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mixoor.d.ts","sourceRoot":"","sources":["../../../../../src/generated/errors/mixoor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,uCAAuC,EAC5C,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAGrB,kCAAkC;AAClC,eAAO,MAAM,2BAA2B,OAAS,CAAC;AAClD,uCAAuC;AACvC,eAAO,MAAM,0BAA0B,OAAS,CAAC;AACjD,oCAAoC;AACpC,eAAO,MAAM,4BAA4B,OAAS,CAAC;AACnD,4CAA4C;AAC5C,eAAO,MAAM,gCAAgC,OAAS,CAAC;AACvD,iDAAiD;AACjD,eAAO,MAAM,mCAAmC,OAAS,CAAC;AAC1D,yBAAyB;AACzB,eAAO,MAAM,sBAAsB,OAAS,CAAC;AAC7C,2DAA2D;AAC3D,eAAO,MAAM,mCAAmC,OAAS,CAAC;AAC1D,wDAAwD;AACxD,eAAO,MAAM,gCAAgC,OAAS,CAAC;AACvD,4DAA4D;AAC5D,eAAO,MAAM,yCAAyC,OAAS,CAAC;AAChE,+EAA+E;AAC/E,eAAO,MAAM,iCAAiC,OAAS,CAAC;AACxD,6CAA6C;AAC7C,eAAO,MAAM,iCAAiC,OAAS,CAAC;AACxD,0CAA0C;AAC1C,eAAO,MAAM,8BAA8B,OAAS,CAAC;AACrD,+CAA+C;AAC/C,eAAO,MAAM,kCAAkC,OAAS,CAAC;AACzD,6EAA6E;AAC7E,eAAO,MAAM,mCAAmC,OAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"mixoor.d.ts","sourceRoot":"","sources":["../../../../../src/generated/errors/mixoor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,uCAAuC,EAC5C,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAGrB,kCAAkC;AAClC,eAAO,MAAM,2BAA2B,OAAS,CAAC;AAClD,uCAAuC;AACvC,eAAO,MAAM,0BAA0B,OAAS,CAAC;AACjD,oCAAoC;AACpC,eAAO,MAAM,4BAA4B,OAAS,CAAC;AACnD,4CAA4C;AAC5C,eAAO,MAAM,gCAAgC,OAAS,CAAC;AACvD,iDAAiD;AACjD,eAAO,MAAM,mCAAmC,OAAS,CAAC;AAC1D,yBAAyB;AACzB,eAAO,MAAM,sBAAsB,OAAS,CAAC;AAC7C,2DAA2D;AAC3D,eAAO,MAAM,mCAAmC,OAAS,CAAC;AAC1D,wDAAwD;AACxD,eAAO,MAAM,gCAAgC,OAAS,CAAC;AACvD,4DAA4D;AAC5D,eAAO,MAAM,yCAAyC,OAAS,CAAC;AAChE,+EAA+E;AAC/E,eAAO,MAAM,iCAAiC,OAAS,CAAC;AACxD,6CAA6C;AAC7C,eAAO,MAAM,iCAAiC,OAAS,CAAC;AACxD,0CAA0C;AAC1C,eAAO,MAAM,8BAA8B,OAAS,CAAC;AACrD,+CAA+C;AAC/C,eAAO,MAAM,kCAAkC,OAAS,CAAC;AACzD,6EAA6E;AAC7E,eAAO,MAAM,mCAAmC,OAAS,CAAC;AAC1D,wDAAwD;AACxD,eAAO,MAAM,0BAA0B,OAAS,CAAC;AAEjD,MAAM,MAAM,WAAW,GACnB,OAAO,gCAAgC,GACvC,OAAO,4BAA4B,GACnC,OAAO,gCAAgC,GACvC,OAAO,kCAAkC,GACzC,OAAO,iCAAiC,GACxC,OAAO,yCAAyC,GAChD,OAAO,0BAA0B,GACjC,OAAO,2BAA2B,GAClC,OAAO,mCAAmC,GAC1C,OAAO,8BAA8B,GACrC,OAAO,mCAAmC,GAC1C,OAAO,sBAAsB,GAC7B,OAAO,iCAAiC,GACxC,OAAO,mCAAmC,GAC1C,OAAO,0BAA0B,CAAC;AAuBtC,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAM/D;AAED,wBAAgB,aAAa,CAAC,iBAAiB,SAAS,WAAW,EACjE,KAAK,EAAE,OAAO,EACd,kBAAkB,EAAE;IAClB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC3D,EACD,IAAI,CAAC,EAAE,iBAAiB,GACvB,KAAK,IAAI,WAAW,CAAC,OAAO,uCAAuC,CAAC,GACrE,QAAQ,CAAC;IAAE,OAAO,EAAE,QAAQ,CAAC;QAAE,IAAI,EAAE,iBAAiB,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAO7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../../../src/generated/instructions/transfer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../../../src/generated/instructions/transfer.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,12 +9,12 @@ import { type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeC
|
|
|
9
9
|
import { MIXOOR_PROGRAM_ADDRESS } from '../programs';
|
|
10
10
|
export declare const WITHDRAW_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
|
|
11
11
|
export declare function getWithdrawDiscriminatorBytes(): ReadonlyUint8Array;
|
|
12
|
-
export type WithdrawInstruction<TProgram extends string = typeof MIXOOR_PROGRAM_ADDRESS, TAccountAuthority extends string | AccountMeta<string> = 'AdUKMLxLi18EfLqLFQvDaizXmvGoDFaNQfQU681vbTje', TAccountPool extends string | AccountMeta<string> = string, TAccountVault extends string | AccountMeta<string> = string, TAccountVaultAta extends string | AccountMeta<string> = string,
|
|
12
|
+
export type WithdrawInstruction<TProgram extends string = typeof MIXOOR_PROGRAM_ADDRESS, TAccountAuthority extends string | AccountMeta<string> = 'AdUKMLxLi18EfLqLFQvDaizXmvGoDFaNQfQU681vbTje', TAccountPool extends string | AccountMeta<string> = string, TAccountVault extends string | AccountMeta<string> = string, TAccountVaultAta extends string | AccountMeta<string> = string, TAccountAuthorityTokenAccount extends string | AccountMeta<string> = string, TAccountMint extends string | AccountMeta<string> = string, TAccountSystemProgram extends string | AccountMeta<string> = '11111111111111111111111111111111', TAccountTokenProgram extends string | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', TAccountAssociatedTokenProgram extends string | AccountMeta<string> = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL', TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[
|
|
13
13
|
TAccountAuthority extends string ? WritableSignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority> : TAccountAuthority,
|
|
14
14
|
TAccountPool extends string ? WritableAccount<TAccountPool> : TAccountPool,
|
|
15
15
|
TAccountVault extends string ? WritableAccount<TAccountVault> : TAccountVault,
|
|
16
16
|
TAccountVaultAta extends string ? ReadonlyAccount<TAccountVaultAta> : TAccountVaultAta,
|
|
17
|
-
|
|
17
|
+
TAccountAuthorityTokenAccount extends string ? WritableAccount<TAccountAuthorityTokenAccount> : TAccountAuthorityTokenAccount,
|
|
18
18
|
TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,
|
|
19
19
|
TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram,
|
|
20
20
|
TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram,
|
|
@@ -31,36 +31,36 @@ export type WithdrawInstructionDataArgs = {
|
|
|
31
31
|
export declare function getWithdrawInstructionDataEncoder(): FixedSizeEncoder<WithdrawInstructionDataArgs>;
|
|
32
32
|
export declare function getWithdrawInstructionDataDecoder(): FixedSizeDecoder<WithdrawInstructionData>;
|
|
33
33
|
export declare function getWithdrawInstructionDataCodec(): FixedSizeCodec<WithdrawInstructionDataArgs, WithdrawInstructionData>;
|
|
34
|
-
export type WithdrawAsyncInput<TAccountAuthority extends string = string, TAccountPool extends string = string, TAccountVault extends string = string, TAccountVaultAta extends string = string,
|
|
34
|
+
export type WithdrawAsyncInput<TAccountAuthority extends string = string, TAccountPool extends string = string, TAccountVault extends string = string, TAccountVaultAta extends string = string, TAccountAuthorityTokenAccount extends string = string, TAccountMint extends string = string, TAccountSystemProgram extends string = string, TAccountTokenProgram extends string = string, TAccountAssociatedTokenProgram extends string = string> = {
|
|
35
35
|
authority?: TransactionSigner<TAccountAuthority>;
|
|
36
36
|
pool: Address<TAccountPool>;
|
|
37
37
|
vault?: Address<TAccountVault>;
|
|
38
38
|
vaultAta?: Address<TAccountVaultAta>;
|
|
39
|
-
|
|
39
|
+
authorityTokenAccount?: Address<TAccountAuthorityTokenAccount>;
|
|
40
40
|
mint: Address<TAccountMint>;
|
|
41
41
|
systemProgram?: Address<TAccountSystemProgram>;
|
|
42
42
|
tokenProgram?: Address<TAccountTokenProgram>;
|
|
43
43
|
associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;
|
|
44
44
|
amount: WithdrawInstructionDataArgs['amount'];
|
|
45
45
|
};
|
|
46
|
-
export declare function getWithdrawInstructionAsync<TAccountAuthority extends string, TAccountPool extends string, TAccountVault extends string, TAccountVaultAta extends string,
|
|
46
|
+
export declare function getWithdrawInstructionAsync<TAccountAuthority extends string, TAccountPool extends string, TAccountVault extends string, TAccountVaultAta extends string, TAccountAuthorityTokenAccount extends string, TAccountMint extends string, TAccountSystemProgram extends string, TAccountTokenProgram extends string, TAccountAssociatedTokenProgram extends string, TProgramAddress extends Address = typeof MIXOOR_PROGRAM_ADDRESS>(input: WithdrawAsyncInput<TAccountAuthority, TAccountPool, TAccountVault, TAccountVaultAta, TAccountAuthorityTokenAccount, TAccountMint, TAccountSystemProgram, TAccountTokenProgram, TAccountAssociatedTokenProgram>, config?: {
|
|
47
47
|
programAddress?: TProgramAddress;
|
|
48
|
-
}): Promise<WithdrawInstruction<TProgramAddress, TAccountAuthority, TAccountPool, TAccountVault, TAccountVaultAta,
|
|
49
|
-
export type WithdrawInput<TAccountAuthority extends string = string, TAccountPool extends string = string, TAccountVault extends string = string, TAccountVaultAta extends string = string,
|
|
48
|
+
}): Promise<WithdrawInstruction<TProgramAddress, TAccountAuthority, TAccountPool, TAccountVault, TAccountVaultAta, TAccountAuthorityTokenAccount, TAccountMint, TAccountSystemProgram, TAccountTokenProgram, TAccountAssociatedTokenProgram>>;
|
|
49
|
+
export type WithdrawInput<TAccountAuthority extends string = string, TAccountPool extends string = string, TAccountVault extends string = string, TAccountVaultAta extends string = string, TAccountAuthorityTokenAccount extends string = string, TAccountMint extends string = string, TAccountSystemProgram extends string = string, TAccountTokenProgram extends string = string, TAccountAssociatedTokenProgram extends string = string> = {
|
|
50
50
|
authority?: TransactionSigner<TAccountAuthority>;
|
|
51
51
|
pool: Address<TAccountPool>;
|
|
52
52
|
vault: Address<TAccountVault>;
|
|
53
53
|
vaultAta: Address<TAccountVaultAta>;
|
|
54
|
-
|
|
54
|
+
authorityTokenAccount?: Address<TAccountAuthorityTokenAccount>;
|
|
55
55
|
mint: Address<TAccountMint>;
|
|
56
56
|
systemProgram?: Address<TAccountSystemProgram>;
|
|
57
57
|
tokenProgram?: Address<TAccountTokenProgram>;
|
|
58
58
|
associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;
|
|
59
59
|
amount: WithdrawInstructionDataArgs['amount'];
|
|
60
60
|
};
|
|
61
|
-
export declare function getWithdrawInstruction<TAccountAuthority extends string, TAccountPool extends string, TAccountVault extends string, TAccountVaultAta extends string,
|
|
61
|
+
export declare function getWithdrawInstruction<TAccountAuthority extends string, TAccountPool extends string, TAccountVault extends string, TAccountVaultAta extends string, TAccountAuthorityTokenAccount extends string, TAccountMint extends string, TAccountSystemProgram extends string, TAccountTokenProgram extends string, TAccountAssociatedTokenProgram extends string, TProgramAddress extends Address = typeof MIXOOR_PROGRAM_ADDRESS>(input: WithdrawInput<TAccountAuthority, TAccountPool, TAccountVault, TAccountVaultAta, TAccountAuthorityTokenAccount, TAccountMint, TAccountSystemProgram, TAccountTokenProgram, TAccountAssociatedTokenProgram>, config?: {
|
|
62
62
|
programAddress?: TProgramAddress;
|
|
63
|
-
}): WithdrawInstruction<TProgramAddress, TAccountAuthority, TAccountPool, TAccountVault, TAccountVaultAta,
|
|
63
|
+
}): WithdrawInstruction<TProgramAddress, TAccountAuthority, TAccountPool, TAccountVault, TAccountVaultAta, TAccountAuthorityTokenAccount, TAccountMint, TAccountSystemProgram, TAccountTokenProgram, TAccountAssociatedTokenProgram>;
|
|
64
64
|
export type ParsedWithdrawInstruction<TProgram extends string = typeof MIXOOR_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
|
|
65
65
|
programAddress: Address<TProgram>;
|
|
66
66
|
accounts: {
|
|
@@ -68,7 +68,7 @@ export type ParsedWithdrawInstruction<TProgram extends string = typeof MIXOOR_PR
|
|
|
68
68
|
pool: TAccountMetas[1];
|
|
69
69
|
vault: TAccountMetas[2];
|
|
70
70
|
vaultAta: TAccountMetas[3];
|
|
71
|
-
|
|
71
|
+
authorityTokenAccount?: TAccountMetas[4] | undefined;
|
|
72
72
|
mint: TAccountMetas[5];
|
|
73
73
|
systemProgram: TAccountMetas[6];
|
|
74
74
|
tokenProgram: TAccountMetas[7];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withdraw.d.ts","sourceRoot":"","sources":["../../../../../src/generated/instructions/withdraw.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAaL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAOrD,eAAO,MAAM,sBAAsB,yBAEjC,CAAC;AAEH,wBAAgB,6BAA6B,uBAE5C;AAED,MAAM,MAAM,mBAAmB,CAC7B,QAAQ,SAAS,MAAM,GAAG,OAAO,sBAAsB,EACvD,iBAAiB,SAAS,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GACpD,8CAA8C,EAChD,YAAY,SAAS,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EAC1D,aAAa,SAAS,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EAC3D,gBAAgB,SAAS,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EAC9D,
|
|
1
|
+
{"version":3,"file":"withdraw.d.ts","sourceRoot":"","sources":["../../../../../src/generated/instructions/withdraw.ts"],"names":[],"mappings":"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"}
|