@nosana/kit 2.3.1 → 2.4.1

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.
Files changed (45) hide show
  1. package/dist/index.d.ts +13 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +8 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/services/programs/jobs/JobsProgram.d.ts +208 -1
  6. package/dist/services/programs/jobs/JobsProgram.d.ts.map +1 -1
  7. package/dist/services/programs/jobs/JobsProgram.js +108 -0
  8. package/dist/services/programs/jobs/JobsProgram.js.map +1 -1
  9. package/dist/services/programs/jobs/computeUnits.d.ts +16 -0
  10. package/dist/services/programs/jobs/computeUnits.d.ts.map +1 -0
  11. package/dist/services/programs/jobs/computeUnits.generated.d.ts +39 -0
  12. package/dist/services/programs/jobs/computeUnits.generated.d.ts.map +1 -0
  13. package/dist/services/programs/jobs/computeUnits.generated.js +34 -0
  14. package/dist/services/programs/jobs/computeUnits.generated.js.map +1 -0
  15. package/dist/services/programs/jobs/computeUnits.js +20 -0
  16. package/dist/services/programs/jobs/computeUnits.js.map +1 -0
  17. package/dist/services/programs/jobs/decode.d.ts +29 -0
  18. package/dist/services/programs/jobs/decode.d.ts.map +1 -0
  19. package/dist/services/programs/jobs/decode.js +48 -0
  20. package/dist/services/programs/jobs/decode.js.map +1 -0
  21. package/dist/services/programs/jobs/discriminators.d.ts +21 -0
  22. package/dist/services/programs/jobs/discriminators.d.ts.map +1 -0
  23. package/dist/services/programs/jobs/discriminators.js +47 -0
  24. package/dist/services/programs/jobs/discriminators.js.map +1 -0
  25. package/dist/services/programs/jobs/index.d.ts +4 -0
  26. package/dist/services/programs/jobs/index.d.ts.map +1 -1
  27. package/dist/services/programs/jobs/index.js +4 -0
  28. package/dist/services/programs/jobs/index.js.map +1 -1
  29. package/dist/services/programs/jobs/instructions/complete.d.ts +1 -1
  30. package/dist/services/programs/jobs/instructions/complete.d.ts.map +1 -1
  31. package/dist/services/programs/jobs/instructions/complete.js +3 -3
  32. package/dist/services/programs/jobs/instructions/complete.js.map +1 -1
  33. package/dist/services/solana/SolanaService.d.ts +134 -0
  34. package/dist/services/solana/SolanaService.d.ts.map +1 -1
  35. package/dist/services/solana/SolanaService.js +155 -0
  36. package/dist/services/solana/SolanaService.js.map +1 -1
  37. package/dist/utils/index.d.ts +1 -0
  38. package/dist/utils/index.d.ts.map +1 -1
  39. package/dist/utils/index.js +1 -0
  40. package/dist/utils/index.js.map +1 -1
  41. package/dist/utils/packInstructions.d.ts +79 -0
  42. package/dist/utils/packInstructions.d.ts.map +1 -0
  43. package/dist/utils/packInstructions.js +110 -0
  44. package/dist/utils/packInstructions.js.map +1 -0
  45. package/package.json +2 -2
@@ -5,8 +5,16 @@ import { SYSTEM_PROGRAM_ADDRESS, getTransferSolInstruction } from '@solana-progr
5
5
  import { NosanaError, ErrorCodes } from '../../errors/NosanaError.js';
6
6
  import { convertHttpToWebSocketUrl } from '../../utils/convertHttpToWebSocketUrl.js';
7
7
  import { resolveAddressOrWallet } from '../../utils/resolveAddressOrWallet.js';
8
+ import { packInstructions, MAX_COMPUTE_UNITS } from '../../utils/packInstructions.js';
8
9
  import { resolvePriorityFeeMicroLamports } from './priorityFees.js';
9
10
  const SOL_DECIMALS = 9;
11
+ /**
12
+ * Compute units assumed for an instruction whose cost is unknown to the batch
13
+ * sender (no `computeUnits` estimate provided, or an estimator returned
14
+ * undefined). Matches Solana's own per-instruction default, so a transaction is
15
+ * never under-provisioned.
16
+ */
17
+ const DEFAULT_INSTRUCTION_COMPUTE_UNITS = 200000;
10
18
  /**
11
19
  * Factory function to create an estimateAndSetComputeUnitLimit function
12
20
  * that estimates compute units and adds the set compute unit limit instruction
@@ -83,6 +91,80 @@ export function createSolanaService(deps, config) {
83
91
  throw new NosanaError('Failed to get balance info', ErrorCodes.RPC_ERROR, error);
84
92
  }
85
93
  };
94
+ // Shared setup for the batch methods (send and sign-only): resolve the fee payer,
95
+ // pack the groups into buckets, and expose how to map a bucket back to its input
96
+ // groups and how to prepend the per-bucket compute-unit limit. The send/sign step
97
+ // itself differs between the two callers and stays in each method.
98
+ const prepareBatch = (groups, options) => {
99
+ // Resolve the fee payer so size measurement accounts for account dedup accurately.
100
+ const transactionFeePayer = options?.feePayer ?? feePayer ?? deps.getWallet();
101
+ if (!transactionFeePayer) {
102
+ throw new NosanaError('No wallet found and no feePayer provided', ErrorCodes.NO_WALLET);
103
+ }
104
+ // Per-instruction compute-unit estimate, with a safe fallback for unknown
105
+ // instructions, scaled by an optional safety margin. The margin raises both the
106
+ // baked-in compute-unit limit and the packing bound — used to over-provision when
107
+ // a static estimate may under-budget at land time (e.g. a transaction that is
108
+ // signed now but broadcast later against a deeper, costlier market queue).
109
+ const cuOption = options?.computeUnits;
110
+ const margin = Math.max(options?.computeUnitMargin ?? 1, 0);
111
+ const baseComputeUnits = typeof cuOption === 'function'
112
+ ? (ix) => cuOption(ix) ?? DEFAULT_INSTRUCTION_COMPUTE_UNITS
113
+ : () => cuOption ?? DEFAULT_INSTRUCTION_COMPUTE_UNITS;
114
+ const resolveComputeUnits = (ix) => Math.ceil(baseComputeUnits(ix) * margin);
115
+ // Never exceed Solana's hard per-transaction cap, even if a larger value is passed.
116
+ const maxCU = Math.min(options?.maxComputeUnits ?? MAX_COMPUTE_UNITS, MAX_COMPUTE_UNITS);
117
+ // Set the compute-unit limit statically unless the caller opts into simulation.
118
+ const useStaticLimit = options?.estimateComputeUnits !== true;
119
+ // Reserve headroom for the compute-budget / priority-fee instructions that
120
+ // buildTransaction prepends to every transaction, so a packed bucket can never
121
+ // overflow once those are added. Values are placeholders — only their size matters.
122
+ const reservedInstructions = [
123
+ getSetComputeUnitPriceInstruction({ microLamports: 0n }),
124
+ getSetComputeUnitLimitInstruction({ units: 0 }),
125
+ ];
126
+ const buckets = packInstructions(groups, {
127
+ feePayer: transactionFeePayer.address,
128
+ reservedInstructions,
129
+ maxTransactionSize: options?.maxTransactionSize,
130
+ // Bound packing by compute units only when we set the limit statically.
131
+ computeUnits: useStaticLimit ? resolveComputeUnits : undefined,
132
+ maxComputeUnits: maxCU,
133
+ });
134
+ // packInstructions preserves instruction object identity, so map each
135
+ // instruction reference back to the index of the group it came from. This lets
136
+ // every per-transaction result report which submitted groups it carried.
137
+ const groupIndexByInstruction = new Map();
138
+ groups.forEach((group, index) => {
139
+ for (const instruction of Array.isArray(group) ? group : [group]) {
140
+ if (!groupIndexByInstruction.has(instruction)) {
141
+ groupIndexByInstruction.set(instruction, index);
142
+ }
143
+ }
144
+ });
145
+ const groupIndicesOf = (bucket) => {
146
+ const indices = [];
147
+ const seen = new Set();
148
+ for (const instruction of bucket) {
149
+ const index = groupIndexByInstruction.get(instruction);
150
+ if (index !== undefined && !seen.has(index)) {
151
+ seen.add(index);
152
+ indices.push(index);
153
+ }
154
+ }
155
+ return indices;
156
+ };
157
+ // Prepend an explicit, tight compute-unit limit so priority fees stay accurate.
158
+ const withComputeLimit = (bucket) => useStaticLimit
159
+ ? [
160
+ getSetComputeUnitLimitInstruction({
161
+ units: Math.min(bucket.reduce((sum, ix) => sum + resolveComputeUnits(ix), 0), maxCU),
162
+ }),
163
+ ...bucket,
164
+ ]
165
+ : bucket;
166
+ return { buckets, groupIndicesOf, withComputeLimit };
167
+ };
86
168
  return {
87
169
  config,
88
170
  rpc,
@@ -269,6 +351,79 @@ export function createSolanaService(deps, config) {
269
351
  const signedTransaction = await this.signTransaction(transactionMessage);
270
352
  return await this.sendTransaction(signedTransaction, { commitment: options?.commitment });
271
353
  },
354
+ /**
355
+ * Pack instruction groups into the fewest size-bounded transactions, then build,
356
+ * sign, and send all of them, reporting each transaction's outcome.
357
+ *
358
+ * See the interface documentation for details.
359
+ */
360
+ async buildSignAndSendBatch(groups, options) {
361
+ const { buckets, groupIndicesOf, withComputeLimit } = prepareBatch(groups, options);
362
+ // Build, sign, and send one packed bucket as a single transaction.
363
+ const sendBucket = async (bucket) => {
364
+ const transactionMessage = await this.buildTransaction(withComputeLimit(bucket), {
365
+ feePayer: options?.feePayer,
366
+ estimateComputeUnits: options?.estimateComputeUnits,
367
+ });
368
+ const signedTransaction = await this.signTransaction(transactionMessage);
369
+ return this.sendTransaction(signedTransaction, { commitment: options?.commitment });
370
+ };
371
+ const toResult = (bucket, outcome) => ({
372
+ instructions: bucket,
373
+ status: outcome.error === undefined ? 'fulfilled' : 'rejected',
374
+ confirmed: outcome.error === undefined,
375
+ signature: outcome.signature,
376
+ error: outcome.error,
377
+ groupIndices: groupIndicesOf(bucket),
378
+ });
379
+ // Attempt every transaction; a failure in one does not stop the others.
380
+ if (options?.sequential) {
381
+ // Send one at a time, confirming each before the next. When compute units
382
+ // are estimated by simulation, this makes each estimate reflect the true
383
+ // chain state produced by the prior transactions (e.g. a queue that grows
384
+ // or shrinks across the batch), which concurrent sending cannot.
385
+ const results = [];
386
+ for (const bucket of buckets) {
387
+ try {
388
+ results.push(toResult(bucket, { signature: await sendBucket(bucket) }));
389
+ }
390
+ catch (error) {
391
+ results.push(toResult(bucket, { error }));
392
+ }
393
+ }
394
+ return results;
395
+ }
396
+ const settled = await Promise.allSettled(buckets.map(sendBucket));
397
+ return settled.map((result, index) => result.status === 'fulfilled'
398
+ ? toResult(buckets[index], { signature: result.value })
399
+ : toResult(buckets[index], { error: result.reason }));
400
+ },
401
+ /**
402
+ * Pack, build, and sign — but do not send. See the interface documentation.
403
+ */
404
+ async buildAndSignBatch(groups, options) {
405
+ const { buckets, groupIndicesOf, withComputeLimit } = prepareBatch(groups, options);
406
+ // Build + sign each bucket; never send. signTransaction signs with the
407
+ // message's embedded signers, so the fresh job/run keypairs minted by each
408
+ // instruction and the fee payer all sign here — the returned blob is fully
409
+ // signed and broadcastable as-is by a separate process.
410
+ const signBucket = async (bucket) => {
411
+ const transactionMessage = await this.buildTransaction(withComputeLimit(bucket), {
412
+ feePayer: options?.feePayer,
413
+ estimateComputeUnits: options?.estimateComputeUnits,
414
+ });
415
+ const signedTransaction = await this.signTransaction(transactionMessage);
416
+ return {
417
+ blob: this.serializeTransaction(signedTransaction),
418
+ signature: getSignatureFromTransaction(signedTransaction),
419
+ lastValidBlockHeight: transactionMessage.lifetimeConstraint.lastValidBlockHeight,
420
+ instructions: bucket,
421
+ groupIndices: groupIndicesOf(bucket),
422
+ };
423
+ };
424
+ // No send, so the buckets are independent — build + sign them concurrently.
425
+ return Promise.all(buckets.map(signBucket));
426
+ },
272
427
  /**
273
428
  * Get an instruction to transfer SOL from one address to another.
274
429
  *
@@ -1 +1 @@
1
- {"version":3,"file":"SolanaService.js","sourceRoot":"","sources":["../../../src/services/solana/SolanaService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SolanaService.js","sourceRoot":"","sources":["../../../src/services/solana/SolanaService.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export * from './convertBigIntToNumber.js';
2
2
  export * from './convertHttpToWebSocketUrl.js';
3
3
  export * from './getStaticAccounts.js';
4
+ export * from './packInstructions.js';
4
5
  export * from './resolveAddressOrWallet.js';
5
6
  export * from './walletToAuthorizationSigner.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC"}
@@ -2,6 +2,7 @@
2
2
  export * from './convertBigIntToNumber.js';
3
3
  export * from './convertHttpToWebSocketUrl.js';
4
4
  export * from './getStaticAccounts.js';
5
+ export * from './packInstructions.js';
5
6
  export * from './resolveAddressOrWallet.js';
6
7
  export * from './walletToAuthorizationSigner.js';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC"}
@@ -0,0 +1,79 @@
1
+ import { type Address, type Instruction } from '@solana/kit';
2
+ /**
3
+ * Maximum size, in bytes, of a serialized Solana transaction (the packet MTU limit).
4
+ * @group @nosana/kit
5
+ */
6
+ export declare const TRANSACTION_SIZE_LIMIT = 1232;
7
+ /**
8
+ * Maximum compute units a single Solana transaction may consume.
9
+ * @group @nosana/kit
10
+ */
11
+ export declare const MAX_COMPUTE_UNITS = 1400000;
12
+ /**
13
+ * Options for {@link packInstructions}.
14
+ * @group @nosana/kit
15
+ */
16
+ export interface PackInstructionsOptions {
17
+ /**
18
+ * The fee payer address for the resulting transactions. Provided so that size
19
+ * measurement accounts for account deduplication accurately (the fee payer is
20
+ * shared across every instruction). Defaults to a placeholder address, which is
21
+ * slightly conservative.
22
+ */
23
+ feePayer?: Address;
24
+ /**
25
+ * Instructions that will be prepended to every transaction at send time (for
26
+ * example compute-budget or priority-fee instructions). They are charged against
27
+ * the size budget of each bucket but are NOT included in the returned buckets —
28
+ * the transaction builder adds the real ones when sending.
29
+ */
30
+ reservedInstructions?: Instruction[];
31
+ /**
32
+ * Maximum serialized transaction size in bytes. Defaults to
33
+ * {@link TRANSACTION_SIZE_LIMIT} (1232).
34
+ */
35
+ maxTransactionSize?: number;
36
+ /**
37
+ * Optional per-instruction compute-unit estimator. When provided, a bucket is
38
+ * also split whenever its cumulative estimated compute units would exceed
39
+ * {@link PackInstructionsOptions.maxComputeUnits}. When omitted, compute units
40
+ * are not considered and only transaction size bounds the packing.
41
+ */
42
+ computeUnits?: (instruction: Instruction) => number;
43
+ /**
44
+ * Maximum compute units per transaction. Only enforced when
45
+ * {@link PackInstructionsOptions.computeUnits} is provided. Defaults to
46
+ * {@link MAX_COMPUTE_UNITS} (1,400,000).
47
+ */
48
+ maxComputeUnits?: number;
49
+ }
50
+ /**
51
+ * Greedily pack instruction groups into the fewest transactions that each stay
52
+ * within Solana's transaction size limit.
53
+ *
54
+ * Each entry of `groups` is an *atomic group*: a single instruction, or an array
55
+ * of instructions that must land together in the same transaction (e.g. a
56
+ * create-account + initialize pair). A group is never split across transactions;
57
+ * groups are filled into a bucket in order until the next group would overflow the
58
+ * size limit, at which point a new bucket is started.
59
+ *
60
+ * A bucket is bounded by two constraints, and is split whenever the next group
61
+ * would exceed either one:
62
+ * - Transaction size: determined by compiling each candidate transaction
63
+ * in-memory and measuring its serialized length, so shared accounts (program
64
+ * ids, fee payer, sysvars) are correctly deduplicated — no static estimate and
65
+ * no RPC call.
66
+ * - Compute units (optional): when a `computeUnits` estimator is provided, the
67
+ * cumulative estimated compute units of a bucket may not exceed
68
+ * `maxComputeUnits`.
69
+ *
70
+ * @param groups Atomic instruction groups to pack, in order.
71
+ * @param options Packing options (fee payer, reserved instructions, limits).
72
+ * @returns An array of buckets; each bucket is a flat array of instructions for
73
+ * one transaction.
74
+ * @throws {NosanaError} If a single group cannot fit in one transaction (by size
75
+ * or compute units), since it cannot be split.
76
+ * @group @nosana/kit
77
+ */
78
+ export declare function packInstructions(groups: Array<Instruction | Instruction[]>, options?: PackInstructionsOptions): Instruction[][];
79
+ //# sourceMappingURL=packInstructions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packInstructions.d.ts","sourceRoot":"","sources":["../../src/utils/packInstructions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,WAAW,EASjB,MAAM,aAAa,CAAC;AAGrB;;;GAGG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,iBAAiB,UAAY,CAAC;AA+B3C;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,WAAW,EAAE,CAAC;IACrC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,MAAM,CAAC;IACpD;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,KAAK,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC,EAC1C,OAAO,GAAE,uBAA4B,GACpC,WAAW,EAAE,EAAE,CA0DjB"}
@@ -0,0 +1,110 @@
1
+ import { address, appendTransactionMessageInstructions, compileTransaction, createTransactionMessage, getTransactionEncoder, pipe, setTransactionMessageFeePayer, setTransactionMessageLifetimeUsingBlockhash, } from '@solana/kit';
2
+ import { ErrorCodes, NosanaError } from '../errors/NosanaError.js';
3
+ /**
4
+ * Maximum size, in bytes, of a serialized Solana transaction (the packet MTU limit).
5
+ * @group @nosana/kit
6
+ */
7
+ export const TRANSACTION_SIZE_LIMIT = 1232;
8
+ /**
9
+ * Maximum compute units a single Solana transaction may consume.
10
+ * @group @nosana/kit
11
+ */
12
+ export const MAX_COMPUTE_UNITS = 1400000;
13
+ // Placeholder fee payer and blockhash used purely to measure a transaction's
14
+ // serialized size locally (no RPC). Neither value affects the byte length: a fee
15
+ // payer is always one 32-byte account and a blockhash is always 32 bytes, so the
16
+ // measurement is size-accurate. Using a placeholder fee payer that does not appear
17
+ // in any instruction is the conservative choice — it can only ever over-count by a
18
+ // single account, never under-count.
19
+ const PLACEHOLDER_FEE_PAYER = address('11111111111111111111111111111112');
20
+ const PLACEHOLDER_BLOCKHASH = {
21
+ blockhash: '11111111111111111111111111111111',
22
+ lastValidBlockHeight: 0n,
23
+ };
24
+ const transactionEncoder = getTransactionEncoder();
25
+ /**
26
+ * Measure the serialized byte size of a transaction built from the given
27
+ * instructions. Compiles the message in-memory using placeholder fee payer and
28
+ * blockhash values — no network access and no signing required.
29
+ */
30
+ function measureTransactionSize(instructions, feePayer) {
31
+ const message = pipe(createTransactionMessage({ version: 0 }), (tx) => setTransactionMessageFeePayer(feePayer, tx), (tx) => setTransactionMessageLifetimeUsingBlockhash(PLACEHOLDER_BLOCKHASH, tx), (tx) => appendTransactionMessageInstructions(instructions, tx));
32
+ return transactionEncoder.encode(compileTransaction(message)).length;
33
+ }
34
+ /**
35
+ * Greedily pack instruction groups into the fewest transactions that each stay
36
+ * within Solana's transaction size limit.
37
+ *
38
+ * Each entry of `groups` is an *atomic group*: a single instruction, or an array
39
+ * of instructions that must land together in the same transaction (e.g. a
40
+ * create-account + initialize pair). A group is never split across transactions;
41
+ * groups are filled into a bucket in order until the next group would overflow the
42
+ * size limit, at which point a new bucket is started.
43
+ *
44
+ * A bucket is bounded by two constraints, and is split whenever the next group
45
+ * would exceed either one:
46
+ * - Transaction size: determined by compiling each candidate transaction
47
+ * in-memory and measuring its serialized length, so shared accounts (program
48
+ * ids, fee payer, sysvars) are correctly deduplicated — no static estimate and
49
+ * no RPC call.
50
+ * - Compute units (optional): when a `computeUnits` estimator is provided, the
51
+ * cumulative estimated compute units of a bucket may not exceed
52
+ * `maxComputeUnits`.
53
+ *
54
+ * @param groups Atomic instruction groups to pack, in order.
55
+ * @param options Packing options (fee payer, reserved instructions, limits).
56
+ * @returns An array of buckets; each bucket is a flat array of instructions for
57
+ * one transaction.
58
+ * @throws {NosanaError} If a single group cannot fit in one transaction (by size
59
+ * or compute units), since it cannot be split.
60
+ * @group @nosana/kit
61
+ */
62
+ export function packInstructions(groups, options = {}) {
63
+ const feePayer = options.feePayer ?? PLACEHOLDER_FEE_PAYER;
64
+ const reserved = options.reservedInstructions ?? [];
65
+ const maxSize = options.maxTransactionSize ?? TRANSACTION_SIZE_LIMIT;
66
+ const computeUnitsOf = options.computeUnits;
67
+ const maxCU = options.maxComputeUnits ?? MAX_COMPUTE_UNITS;
68
+ const groupComputeUnits = (ixs) => computeUnitsOf ? ixs.reduce((sum, ix) => sum + computeUnitsOf(ix), 0) : 0;
69
+ const buckets = [];
70
+ let current = [];
71
+ let currentCU = 0;
72
+ const tooLargeToSplit = (groupSize, constraint) => {
73
+ const limit = constraint === 'size' ? `${maxSize} bytes` : `${maxCU} compute units`;
74
+ throw new NosanaError(`An atomic group of ${groupSize} instruction(s) exceeds the maximum transaction ` +
75
+ `${constraint} (${limit}) and cannot be split across transactions`, ErrorCodes.TRANSACTION_ERROR);
76
+ };
77
+ for (const group of groups) {
78
+ const groupIxs = Array.isArray(group) ? group : [group];
79
+ if (groupIxs.length === 0)
80
+ continue;
81
+ const groupCU = groupComputeUnits(groupIxs);
82
+ const withGroup = [...current, ...groupIxs];
83
+ const sizeFits = measureTransactionSize([...reserved, ...withGroup], feePayer) <= maxSize;
84
+ const computeFits = !computeUnitsOf || currentCU + groupCU <= maxCU;
85
+ if (sizeFits && computeFits) {
86
+ current = withGroup;
87
+ currentCU += groupCU;
88
+ continue;
89
+ }
90
+ // The group does not fit alongside the current bucket's contents.
91
+ if (current.length === 0) {
92
+ // Nothing to flush — the group cannot fit even on its own.
93
+ tooLargeToSplit(groupIxs.length, sizeFits ? 'compute units' : 'size');
94
+ }
95
+ // Flush the current bucket and place the group into a fresh one.
96
+ buckets.push(current);
97
+ if (measureTransactionSize([...reserved, ...groupIxs], feePayer) > maxSize) {
98
+ tooLargeToSplit(groupIxs.length, 'size');
99
+ }
100
+ if (computeUnitsOf && groupCU > maxCU) {
101
+ tooLargeToSplit(groupIxs.length, 'compute units');
102
+ }
103
+ current = [...groupIxs];
104
+ currentCU = groupCU;
105
+ }
106
+ if (current.length > 0)
107
+ buckets.push(current);
108
+ return buckets;
109
+ }
110
+ //# sourceMappingURL=packInstructions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packInstructions.js","sourceRoot":"","sources":["../../src/utils/packInstructions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nosana/kit",
3
- "version": "2.3.1",
3
+ "version": "2.4.1",
4
4
  "description": "Nosana KIT",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -71,5 +71,5 @@
71
71
  "package.json",
72
72
  "README.md"
73
73
  ],
74
- "gitHead": "f0557eb71c17043450f159a72d67967a6045c74a"
74
+ "gitHead": "acca0b845809e919d243e2e112558f6539a2bab0"
75
75
  }