@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.
@@ -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 createSolPoolForAuthority = async (client) => {
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: _constants.WRAPPED_SOL_MINT_TOKEN_PROGRAM,
92
- assetType: src.AssetType.Sol
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 depositSolPoolForAuthority = async (client, amount, assetType, merkleTree) => {
102
+ const depositForAuthority = async (client, ixArgs) => {
102
103
  const [authority] = await Promise.all([loadDefaultKeypair()]);
103
- const [pool] = await src.findPoolAddress({
104
- mint: _constants.WRAPPED_SOL_MINT_TOKEN_PROGRAM,
105
- assetType
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: _constants.WRAPPED_SOL_MINT_TOKEN_PROGRAM
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
- assetType,
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 [pool] = await src.findPoolAddress({
148
- mint,
149
- assetType
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: 14e5 })],
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: _constants.WRAPPED_SOL_MINT_TOKEN_PROGRAM,
193
+ mint,
179
194
  assetType
180
195
  });
181
- const updateRootIx = await src.getUpdateRootInstruction({
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.createSolPoolForAuthority = createSolPoolForAuthority;
200
- exports.depositSolPoolForAuthority = depositSolPoolForAuthority;
214
+ exports.createPoolForAuthority = createPoolForAuthority;
215
+ exports.depositForAuthority = depositForAuthority;
201
216
  exports.generateKeyPairSignerWithSol = generateKeyPairSignerWithSol;
202
217
  exports.getBalance = getBalance;
203
218
  exports.getTokenBalance = getTokenBalance;
@@ -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 require_transfer_test = __commonJS({
18
- "test/transfer.test.ts"() {
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.createSolPoolForAuthority(client);
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(10) * _constants.LAMPORTS_PER_SOL;
34
- const { secret, nullifier } = await _setup.depositSolPoolForAuthority(
35
- client,
36
- depositAmount,
37
- SOL_ASSET_TYPE,
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
- assetType: SOL_ASSET_TYPE,
79
- mint: _constants.WRAPPED_SOL_MINT_TOKEN_PROGRAM
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 transfer_test = require_transfer_test();
100
+ var _transferSol_test = require_transferSol_test();
97
101
 
98
- module.exports = transfer_test;
99
- //# sourceMappingURL=transfer.test.js.map
100
- //# sourceMappingURL=transfer.test.js.map
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":";;;;;;;;;;;;;;;;AAAA,IAAA,wBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2BAAA,GAAA;AAqBA,IAAAA,qBAAA,CAAK,sCAAA,EAAwC,OAAO,CAAA,KAAM;AACxD,MAAA,MAAM,SAASC,gCAAA,EAA0B;AACzC,MAAA,MAAM,OAAA,GAAU,MAAMC,yBAAA,EAAmB;AACzC,MAAA,MAAM,UAAA,GAAa,IAAIC,cAAA,CAAW,EAAE,CAAA;AACpC,MAAA,MAAM,WAAW,UAAA,EAAW;AAG5B,MAAA,MAAM,iBAAiBC,aAAA,CAAU,GAAA;AAGjC,MAAA,MAAM,CAAC,IAAI,CAAA,GAAI,MAAMC,mBAAA,CAAgB;AAAA,QACnC,IAAA,EAAMC,yCAAA;AAAA,QACN,SAAA,EAAW;AAAA,OACZ,CAAA;AAGD,MAAA,OAAA,CAAQ,IAAI,mBAAmB,CAAA;AAC/B,MAAA,MAAMC,6BAAA;AAAA,QACJ,MAAA;AAAA,QACAD,yCAAA;AAAA,QACA;AAAA,OACF;AAGA,MAAA,MAAM,CAAC,KAAK,CAAA,GAAI,MAAME,oBAAA,CAAiB,EAAE,MAAM,CAAA;AAG/C,MAAA,OAAA,CAAQ,IAAI,2BAA2B,CAAA;AACvC,MAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,CAAC,CAAA,GAAIC,2BAAA;AAClC,MAAA,MAAM,EAAE,MAAA,EAAQ,SAAA,EAAU,GAAI,MAAMC,2BAAoB,MAAA,EAAQ;AAAA,QAC9D,MAAA,EAAQ,aAAA;AAAA,QACR,IAAA;AAAA,QACA,IAAA,EAAMJ,yCAAA;AAAA,QACN;AAAA;AAAA,OACD,CAAA;AAGD,MAAA,MAAM,SAAA,GAAY,WAAW,IAAA,EAAK;AAGlC,MAAA,MAAM,SAAA,GAAY,CAAA;AAClB,MAAA,MAAM,EAAE,YAAA,EAAc,WAAA,EAAY,GAAI,UAAA,CAAW,SAAS,SAAS,CAAA;AAGnE,MAAA,MAAM,IAAA,GAAO,SAAA;AAGb,MAAA,MAAM,aAAA,GAAgB,MAAMK,qBAAA,CAAkB,SAAA,EAAW,IAAI,CAAA;AAG7D,MAAA,MAAM,SAAA,GAAY,MAAMC,0BAAA,EAAoB;AAC5C,MAAA,MAAM,cAAA,GAAiBC,qBAAA,EAAkB,CAAE,MAAA,CAAO,UAAU,OAAO,CAAA;AAGnE,MAAA,MAAM,YAAA,GAAeA,qBAAA,EAAkB,CAAE,MAAA,CAAO,QAAQ,OAAO,CAAA;AAO/D,MAAA,MAAM,UAAA,GAAa,CAAA;AACnB,MAAA,MAAM,eAAA,GAAkB,aAAA;AAExB,MAAA,OAAA,CAAQ,IAAI,wBAAwB,CAAA;AACpC,MAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAa,GAAI,MAAMC,iBAAA,CAAc;AAAA,QACtD,MAAA;AAAA,QACA,SAAA;AAAA,QACA,MAAA,EAAQ,aAAA;AAAA;AAAA,QACR,YAAA;AAAA,QACA,WAAA;AAAA,QACA,SAAA,EAAW,UAAA,CAAW,IAAA,CAAK,cAAc,CAAA;AAAA,QACzC,OAAA,EAAS,UAAA,CAAW,IAAA,CAAK,YAAY,CAAA;AAAA,QACrC,GAAA,EAAK,UAAA;AAAA;AAAA,QACL,MAAA,EAAQ,eAAA;AAAA;AAAA,QACR,IAAA,EAAM,UAAA,CAAW,IAAA,CAAK,IAAI,CAAA;AAAA,QAC1B,WAAA,EAAa;AAAA,OACd,CAAA;AACD,MAAA,OAAA,CAAQ,IAAI,iCAAiC,CAAA;AAG7C,MAAA,MAAM,aAAA,GAAgB,MAAMC,iBAAA,CAAW,MAAA,EAAQ,KAAK,CAAA;AACpD,MAAA,OAAA,CAAQ,GAAA,CAAI,kCAAkC,aAAa,CAAA;AAG3D,MAAA,OAAA,CAAQ,IAAI,qBAAqB,CAAA;AACjC,MAAA,MAAMC,4BAAqB,MAAA,EAAQ;AAAA,QACjC,UAAA;AAAA,QACA,eAAA;AAAA,QACA,aAAA;AAAA,QACA,YAAA;AAAA,QACA,SAAA;AAAA,QACA,IAAA,EAAMV,yCAAA;AAAA,QACN;AAAA,OACD,CAAA;AAGD,MAAA,MAAM,YAAA,GAAe,MAAMS,iBAAA,CAAW,MAAA,EAAQ,KAAK,CAAA;AACnD,MAAA,OAAA,CAAQ,GAAA,CAAI,iCAAiC,YAAY,CAAA;AAIzD,MAAA,MAAM,WAAA,GAAe,MAAA,CAAO,eAAe,CAAA,GAAI,GAAA,GAAO,MAAA;AACtD,MAAA,MAAM,oBAAA,GAAuB,MAAA,CAAO,eAAe,CAAA,GAAI,WAAA;AACvD,MAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,eAAe,CAAA,GAAI,OAAO,UAAU,CAAA;AAElE,MAAA,OAAA,CAAQ,GAAA,CAAI,iBAAiB,WAAW,CAAA;AACxC,MAAA,OAAA,CAAQ,GAAA,CAAI,2BAA2B,oBAAoB,CAAA;AAC3D,MAAA,OAAA,CAAQ,GAAA,CAAI,+BAA+B,cAAc,CAAA;AAGzD,MAAA,CAAA,CAAE,OAAO,MAAA,CAAO,aAAa,IAAI,MAAA,CAAO,YAAY,KAAK,cAAc,CAAA;AAGvE,MAAA,MAAM,gBAAA,GAAmB,MAAMA,iBAAA,CAAW,MAAA,EAAQ,UAAU,OAAO,CAAA;AACnE,MAAA,OAAA,CAAQ,GAAA,CAAI,sBAAsB,gBAAgB,CAAA;AAClD,MAAA,CAAA,CAAE,MAAA,CAAO,MAAA,CAAO,gBAAgB,CAAA,IAAK,oBAAoB,CAAA;AAAA,IAC3D,CAAC,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA","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
- 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_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;
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;AAE1D,MAAM,MAAM,WAAW,GACnB,OAAO,gCAAgC,GACvC,OAAO,4BAA4B,GACnC,OAAO,gCAAgC,GACvC,OAAO,kCAAkC,GACzC,OAAO,iCAAiC,GACxC,OAAO,yCAAyC,GAChD,OAAO,2BAA2B,GAClC,OAAO,mCAAmC,GAC1C,OAAO,8BAA8B,GACrC,OAAO,mCAAmC,GAC1C,OAAO,sBAAsB,GAC7B,OAAO,iCAAiC,GACxC,OAAO,mCAAmC,GAC1C,OAAO,0BAA0B,CAAC;AAsBtC,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
+ {"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":"AAAA;;;;;;GAMG;AAEH,OAAO,EAeL,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;AAQrD,eAAO,MAAM,sBAAsB,yBAEjC,CAAC;AAEH,wBAAgB,6BAA6B,uBAE5C;AAED,MAAM,MAAM,mBAAmB,CAC7B,QAAQ,SAAS,MAAM,GAAG,OAAO,sBAAsB,EACvD,eAAe,SAAS,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EAC7D,YAAY,SAAS,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EAC1D,YAAY,SAAS,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EAC1D,aAAa,SAAS,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EAC3D,iBAAiB,SAAS,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EAC/D,iBAAiB,SAAS,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EAC/D,yBAAyB,SAAS,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EACvE,6BAA6B,SAAS,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EAC3E,oBAAoB,SAAS,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GACvD,8CAA8C,EAChD,gCAAgC,SAAS,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GACnE,MAAM,EACR,qBAAqB,SAAS,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GACxD,kCAAkC,EACpC,oBAAoB,SAAS,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GACvD,6CAA6C,EAC/C,8BAA8B,SAAS,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GACjE,8CAA8C,EAChD,kBAAkB,SAAS,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAC5D,WAAW,CAAC,QAAQ,CAAC,GACvB,mBAAmB,CAAC,kBAAkB,CAAC,GACvC,uBAAuB,CACrB;IACE,eAAe,SAAS,MAAM,GAC1B,qBAAqB,CAAC,eAAe,CAAC,GACpC,iBAAiB,CAAC,eAAe,CAAC,GACpC,eAAe;IACnB,YAAY,SAAS,MAAM,GACvB,eAAe,CAAC,YAAY,CAAC,GAC7B,YAAY;IAChB,YAAY,SAAS,MAAM,GACvB,eAAe,CAAC,YAAY,CAAC,GAC7B,YAAY;IAChB,aAAa,SAAS,MAAM,GACxB,eAAe,CAAC,aAAa,CAAC,GAC9B,aAAa;IACjB,iBAAiB,SAAS,MAAM,GAC5B,eAAe,CAAC,iBAAiB,CAAC,GAClC,iBAAiB;IACrB,iBAAiB,SAAS,MAAM,GAC5B,eAAe,CAAC,iBAAiB,CAAC,GAClC,iBAAiB;IACrB,yBAAyB,SAAS,MAAM,GACpC,eAAe,CAAC,yBAAyB,CAAC,GAC1C,yBAAyB;IAC7B,6BAA6B,SAAS,MAAM,GACxC,eAAe,CAAC,6BAA6B,CAAC,GAC9C,6BAA6B;IACjC,oBAAoB,SAAS,MAAM,GAC/B,eAAe,CAAC,oBAAoB,CAAC,GACrC,oBAAoB;IACxB,gCAAgC,SAAS,MAAM,GAC3C,eAAe,CAAC,gCAAgC,CAAC,GACjD,gCAAgC;IACpC,qBAAqB,SAAS,MAAM,GAChC,eAAe,CAAC,qBAAqB,CAAC,GACtC,qBAAqB;IACzB,oBAAoB,SAAS,MAAM,GAC/B,eAAe,CAAC,oBAAoB,CAAC,GACrC,oBAAoB;IACxB,8BAA8B,SAAS,MAAM,GACzC,eAAe,CAAC,8BAA8B,CAAC,GAC/C,8BAA8B;IAClC,GAAG,kBAAkB;CACtB,CACF,CAAC;AAEJ,MAAM,MAAM,uBAAuB,GAAG;IACpC,aAAa,EAAE,kBAAkB,CAAC;IAClC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,YAAY,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACxC,aAAa,EAAE,kBAAkB,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,YAAY,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACxC,aAAa,EAAE,kBAAkB,CAAC;IAClC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC;CAClC,CAAC;AAEF,wBAAgB,iCAAiC,IAAI,gBAAgB,CAAC,2BAA2B,CAAC,CAiBjG;AAED,wBAAgB,iCAAiC,IAAI,gBAAgB,CAAC,uBAAuB,CAAC,CAc7F;AAED,wBAAgB,+BAA+B,IAAI,cAAc,CAC/D,2BAA2B,EAC3B,uBAAuB,CACxB,CAKA;AAED,MAAM,MAAM,kBAAkB,CAC5B,eAAe,SAAS,MAAM,GAAG,MAAM,EACvC,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,aAAa,SAAS,MAAM,GAAG,MAAM,EACrC,iBAAiB,SAAS,MAAM,GAAG,MAAM,EACzC,iBAAiB,SAAS,MAAM,GAAG,MAAM,EACzC,yBAAyB,SAAS,MAAM,GAAG,MAAM,EACjD,6BAA6B,SAAS,MAAM,GAAG,MAAM,EACrD,oBAAoB,SAAS,MAAM,GAAG,MAAM,EAC5C,gCAAgC,SAAS,MAAM,GAAG,MAAM,EACxD,qBAAqB,SAAS,MAAM,GAAG,MAAM,EAC7C,oBAAoB,SAAS,MAAM,GAAG,MAAM,EAC5C,8BAA8B,SAAS,MAAM,GAAG,MAAM,IACpD;IACF,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAC5C,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvC,SAAS,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACtC,iBAAiB,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACvD,qBAAqB,CAAC,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC/D,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC7C,wBAAwB,CAAC,EAAE,OAAO,CAAC,gCAAgC,CAAC,CAAC;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/C,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC7C,sBAAsB,CAAC,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACjE,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAC9C,YAAY,EAAE,2BAA2B,CAAC,cAAc,CAAC,CAAC;IAC1D,aAAa,EAAE,2BAA2B,CAAC,eAAe,CAAC,CAAC;IAC5D,UAAU,EAAE,2BAA2B,CAAC,YAAY,CAAC,CAAC;IACtD,eAAe,EAAE,2BAA2B,CAAC,iBAAiB,CAAC,CAAC;CACjE,CAAC;AAEF,wBAAsB,2BAA2B,CAC/C,eAAe,SAAS,MAAM,EAC9B,YAAY,SAAS,MAAM,EAC3B,YAAY,SAAS,MAAM,EAC3B,aAAa,SAAS,MAAM,EAC5B,iBAAiB,SAAS,MAAM,EAChC,iBAAiB,SAAS,MAAM,EAChC,yBAAyB,SAAS,MAAM,EACxC,6BAA6B,SAAS,MAAM,EAC5C,oBAAoB,SAAS,MAAM,EACnC,gCAAgC,SAAS,MAAM,EAC/C,qBAAqB,SAAS,MAAM,EACpC,oBAAoB,SAAS,MAAM,EACnC,8BAA8B,SAAS,MAAM,EAC7C,eAAe,SAAS,OAAO,GAAG,OAAO,sBAAsB,EAE/D,KAAK,EAAE,kBAAkB,CACvB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,oBAAoB,EACpB,gCAAgC,EAChC,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,CAC/B,EACD,MAAM,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,eAAe,CAAA;CAAE,GAC5C,OAAO,CACR,mBAAmB,CACjB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,oBAAoB,EACpB,gCAAgC,EAChC,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,CAC/B,CACF,CAsHA;AAED,MAAM,MAAM,aAAa,CACvB,eAAe,SAAS,MAAM,GAAG,MAAM,EACvC,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,aAAa,SAAS,MAAM,GAAG,MAAM,EACrC,iBAAiB,SAAS,MAAM,GAAG,MAAM,EACzC,iBAAiB,SAAS,MAAM,GAAG,MAAM,EACzC,yBAAyB,SAAS,MAAM,GAAG,MAAM,EACjD,6BAA6B,SAAS,MAAM,GAAG,MAAM,EACrD,oBAAoB,SAAS,MAAM,GAAG,MAAM,EAC5C,gCAAgC,SAAS,MAAM,GAAG,MAAM,EACxD,qBAAqB,SAAS,MAAM,GAAG,MAAM,EAC7C,oBAAoB,SAAS,MAAM,GAAG,MAAM,EAC5C,8BAA8B,SAAS,MAAM,GAAG,MAAM,IACpD;IACF,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAC5C,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5B,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACtC,SAAS,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACtC,iBAAiB,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACvD,qBAAqB,CAAC,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC/D,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC7C,wBAAwB,CAAC,EAAE,OAAO,CAAC,gCAAgC,CAAC,CAAC;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/C,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC7C,sBAAsB,CAAC,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACjE,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAC9C,YAAY,EAAE,2BAA2B,CAAC,cAAc,CAAC,CAAC;IAC1D,aAAa,EAAE,2BAA2B,CAAC,eAAe,CAAC,CAAC;IAC5D,UAAU,EAAE,2BAA2B,CAAC,YAAY,CAAC,CAAC;IACtD,eAAe,EAAE,2BAA2B,CAAC,iBAAiB,CAAC,CAAC;CACjE,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,eAAe,SAAS,MAAM,EAC9B,YAAY,SAAS,MAAM,EAC3B,YAAY,SAAS,MAAM,EAC3B,aAAa,SAAS,MAAM,EAC5B,iBAAiB,SAAS,MAAM,EAChC,iBAAiB,SAAS,MAAM,EAChC,yBAAyB,SAAS,MAAM,EACxC,6BAA6B,SAAS,MAAM,EAC5C,oBAAoB,SAAS,MAAM,EACnC,gCAAgC,SAAS,MAAM,EAC/C,qBAAqB,SAAS,MAAM,EACpC,oBAAoB,SAAS,MAAM,EACnC,8BAA8B,SAAS,MAAM,EAC7C,eAAe,SAAS,OAAO,GAAG,OAAO,sBAAsB,EAE/D,KAAK,EAAE,aAAa,CAClB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,oBAAoB,EACpB,gCAAgC,EAChC,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,CAC/B,EACD,MAAM,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,eAAe,CAAA;CAAE,GAC5C,mBAAmB,CACpB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,oBAAoB,EACpB,gCAAgC,EAChC,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,CAC/B,CA+FA;AAED,MAAM,MAAM,yBAAyB,CACnC,QAAQ,SAAS,MAAM,GAAG,OAAO,sBAAsB,EACvD,aAAa,SAAS,SAAS,WAAW,EAAE,GAAG,SAAS,WAAW,EAAE,IACnE;IACF,cAAc,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,QAAQ,EAAE;QACR,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;QACvB,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;QACxB,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5B,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5B,iBAAiB,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QACjD,qBAAqB,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QACrD,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;QAC/B,wBAAwB,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QACxD,aAAa,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;QACjC,YAAY,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;QAChC,sBAAsB,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;KAC3C,CAAC;IACF,IAAI,EAAE,uBAAuB,CAAC;CAC/B,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,QAAQ,SAAS,MAAM,EACvB,aAAa,SAAS,SAAS,WAAW,EAAE,EAE5C,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,GAChC,uBAAuB,CAAC,aAAa,CAAC,GACtC,mBAAmB,CAAC,kBAAkB,CAAC,GACxC,yBAAyB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAoCpD"}
@@ -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, TAccountAuthorityAta 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<[
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
- TAccountAuthorityAta extends string ? ReadonlyAccount<TAccountAuthorityAta> : TAccountAuthorityAta,
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, TAccountAuthorityAta extends string = string, TAccountMint extends string = string, TAccountSystemProgram extends string = string, TAccountTokenProgram extends string = string, TAccountAssociatedTokenProgram 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
- authorityAta?: Address<TAccountAuthorityAta>;
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, TAccountAuthorityAta 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, TAccountAuthorityAta, TAccountMint, TAccountSystemProgram, TAccountTokenProgram, TAccountAssociatedTokenProgram>, config?: {
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, TAccountAuthorityAta, TAccountMint, TAccountSystemProgram, TAccountTokenProgram, TAccountAssociatedTokenProgram>>;
49
- export type WithdrawInput<TAccountAuthority extends string = string, TAccountPool extends string = string, TAccountVault extends string = string, TAccountVaultAta extends string = string, TAccountAuthorityAta extends string = string, TAccountMint extends string = string, TAccountSystemProgram extends string = string, TAccountTokenProgram extends string = string, TAccountAssociatedTokenProgram 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
- authorityAta: Address<TAccountAuthorityAta>;
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, TAccountAuthorityAta 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, TAccountAuthorityAta, TAccountMint, TAccountSystemProgram, TAccountTokenProgram, TAccountAssociatedTokenProgram>, config?: {
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, TAccountAuthorityAta, TAccountMint, TAccountSystemProgram, TAccountTokenProgram, TAccountAssociatedTokenProgram>;
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
- authorityAta: TAccountMetas[4];
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":"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"}
1
+ {"version":3,"file":"withdraw.d.ts","sourceRoot":"","sources":["../../../../../src/generated/instructions/withdraw.ts"],"names":[],"mappings":"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"}