@solana/web3-compat 0.0.6 → 0.0.8

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 (102) hide show
  1. package/dist/index.browser.cjs +91 -4
  2. package/dist/index.browser.cjs.map +1 -1
  3. package/dist/index.browser.mjs +91 -4
  4. package/dist/index.browser.mjs.map +1 -1
  5. package/dist/index.native.mjs +91 -4
  6. package/dist/index.native.mjs.map +1 -1
  7. package/dist/index.node.cjs +91 -4
  8. package/dist/index.node.cjs.map +1 -1
  9. package/dist/index.node.mjs +91 -4
  10. package/dist/index.node.mjs.map +1 -1
  11. package/dist/types/client/src/actions.d.ts +71 -0
  12. package/dist/types/client/src/actions.d.ts.map +1 -0
  13. package/dist/types/client/src/client/actions.d.ts +18 -0
  14. package/dist/types/client/src/client/actions.d.ts.map +1 -0
  15. package/dist/types/client/src/client/createClient.d.ts +9 -0
  16. package/dist/types/client/src/client/createClient.d.ts.map +1 -0
  17. package/dist/types/client/src/client/createClientHelpers.d.ts +3 -0
  18. package/dist/types/client/src/client/createClientHelpers.d.ts.map +1 -0
  19. package/dist/types/client/src/client/createClientStore.d.ts +29 -0
  20. package/dist/types/client/src/client/createClientStore.d.ts.map +1 -0
  21. package/dist/types/client/src/client/defaultClient.d.ts +26 -0
  22. package/dist/types/client/src/client/defaultClient.d.ts.map +1 -0
  23. package/dist/types/client/src/client/watchers.d.ts +16 -0
  24. package/dist/types/client/src/client/watchers.d.ts.map +1 -0
  25. package/dist/types/client/src/controllers/solTransferController.d.ts +21 -0
  26. package/dist/types/client/src/controllers/solTransferController.d.ts.map +1 -0
  27. package/dist/types/client/src/controllers/splTransferController.d.ts +24 -0
  28. package/dist/types/client/src/controllers/splTransferController.d.ts.map +1 -0
  29. package/dist/types/client/src/controllers/stakeController.d.ts +37 -0
  30. package/dist/types/client/src/controllers/stakeController.d.ts.map +1 -0
  31. package/dist/types/client/src/features/sol.d.ts +41 -0
  32. package/dist/types/client/src/features/sol.d.ts.map +1 -0
  33. package/dist/types/client/src/features/spl.d.ts +59 -0
  34. package/dist/types/client/src/features/spl.d.ts.map +1 -0
  35. package/dist/types/client/src/features/stake.d.ts +115 -0
  36. package/dist/types/client/src/features/stake.d.ts.map +1 -0
  37. package/dist/types/client/src/features/transactions.d.ts +79 -0
  38. package/dist/types/client/src/features/transactions.d.ts.map +1 -0
  39. package/dist/types/client/src/index.d.ts +32 -0
  40. package/dist/types/client/src/index.d.ts.map +1 -0
  41. package/dist/types/client/src/logging/logger.d.ts +24 -0
  42. package/dist/types/client/src/logging/logger.d.ts.map +1 -0
  43. package/dist/types/client/src/numeric/amounts.d.ts +30 -0
  44. package/dist/types/client/src/numeric/amounts.d.ts.map +1 -0
  45. package/dist/types/client/src/numeric/lamports.d.ts +46 -0
  46. package/dist/types/client/src/numeric/lamports.d.ts.map +1 -0
  47. package/dist/types/client/src/numeric/math.d.ts +74 -0
  48. package/dist/types/client/src/numeric/math.d.ts.map +1 -0
  49. package/dist/types/client/src/numeric/rational.d.ts +27 -0
  50. package/dist/types/client/src/numeric/rational.d.ts.map +1 -0
  51. package/dist/types/client/src/rpc/createSolanaRpcClient.d.ts +42 -0
  52. package/dist/types/client/src/rpc/createSolanaRpcClient.d.ts.map +1 -0
  53. package/dist/types/client/src/serialization/json.d.ts +31 -0
  54. package/dist/types/client/src/serialization/json.d.ts.map +1 -0
  55. package/dist/types/client/src/serialization/state.d.ts +25 -0
  56. package/dist/types/client/src/serialization/state.d.ts.map +1 -0
  57. package/dist/types/client/src/signatures/status.d.ts +12 -0
  58. package/dist/types/client/src/signatures/status.d.ts.map +1 -0
  59. package/dist/types/client/src/signers/walletTransactionSigner.d.ts +33 -0
  60. package/dist/types/client/src/signers/walletTransactionSigner.d.ts.map +1 -0
  61. package/dist/types/client/src/state/asyncState.d.ts +12 -0
  62. package/dist/types/client/src/state/asyncState.d.ts.map +1 -0
  63. package/dist/types/client/src/transactions/base64.d.ts +12 -0
  64. package/dist/types/client/src/transactions/base64.d.ts.map +1 -0
  65. package/dist/types/client/src/transactions/prepareTransaction.d.ts +16 -0
  66. package/dist/types/client/src/transactions/prepareTransaction.d.ts.map +1 -0
  67. package/dist/types/client/src/transactions/referenceKeys.d.ts +10 -0
  68. package/dist/types/client/src/transactions/referenceKeys.d.ts.map +1 -0
  69. package/dist/types/client/src/transactions/transactionPoolController.d.ts +53 -0
  70. package/dist/types/client/src/transactions/transactionPoolController.d.ts.map +1 -0
  71. package/dist/types/client/src/types.d.ts +291 -0
  72. package/dist/types/client/src/types.d.ts.map +1 -0
  73. package/dist/types/client/src/utils/addressLike.d.ts +5 -0
  74. package/dist/types/client/src/utils/addressLike.d.ts.map +1 -0
  75. package/dist/types/client/src/utils/cluster.d.ts +14 -0
  76. package/dist/types/client/src/utils/cluster.d.ts.map +1 -0
  77. package/dist/types/client/src/utils/stableStringify.d.ts +2 -0
  78. package/dist/types/client/src/utils/stableStringify.d.ts.map +1 -0
  79. package/dist/types/client/src/utils.d.ts +21 -0
  80. package/dist/types/client/src/utils.d.ts.map +1 -0
  81. package/dist/types/client/src/wallet/connectors.d.ts +29 -0
  82. package/dist/types/client/src/wallet/connectors.d.ts.map +1 -0
  83. package/dist/types/client/src/wallet/registry.d.ts +9 -0
  84. package/dist/types/client/src/wallet/registry.d.ts.map +1 -0
  85. package/dist/types/client/src/wallet/standard.d.ts +37 -0
  86. package/dist/types/client/src/wallet/standard.d.ts.map +1 -0
  87. package/dist/types/web3-compat/src/bridges.d.ts.map +1 -0
  88. package/dist/types/web3-compat/src/connection.d.ts.map +1 -0
  89. package/dist/types/web3-compat/src/index.d.ts.map +1 -0
  90. package/dist/types/web3-compat/src/programs/system-program.d.ts.map +1 -0
  91. package/dist/types/web3-compat/src/utils.d.ts.map +1 -0
  92. package/package.json +2 -2
  93. package/dist/types/bridges.d.ts.map +0 -1
  94. package/dist/types/connection.d.ts.map +0 -1
  95. package/dist/types/index.d.ts.map +0 -1
  96. package/dist/types/programs/system-program.d.ts.map +0 -1
  97. package/dist/types/utils.d.ts.map +0 -1
  98. /package/dist/types/{bridges.d.ts → web3-compat/src/bridges.d.ts} +0 -0
  99. /package/dist/types/{connection.d.ts → web3-compat/src/connection.d.ts} +0 -0
  100. /package/dist/types/{index.d.ts → web3-compat/src/index.d.ts} +0 -0
  101. /package/dist/types/{programs → web3-compat/src/programs}/system-program.d.ts +0 -0
  102. /package/dist/types/{utils.d.ts → web3-compat/src/utils.d.ts} +0 -0
@@ -3,7 +3,7 @@
3
3
  var web3_js = require('@solana/web3.js');
4
4
  var compat = require('@solana/compat');
5
5
  var kit = require('@solana/kit');
6
- var client = require('@solana/client');
6
+ var transactionConfirmation = require('@solana/transaction-confirmation');
7
7
 
8
8
  var __defProp = Object.defineProperty;
9
9
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
@@ -52,12 +52,99 @@ function fromWeb3Instruction(legacyInstruction) {
52
52
  return compat.fromLegacyTransactionInstruction(legacyInstruction);
53
53
  }
54
54
  __name(fromWeb3Instruction, "fromWeb3Instruction");
55
- var DEFAULT_COMMITMENT = "confirmed";
55
+ function createChainedAbortController(parent) {
56
+ const controller = new AbortController();
57
+ if (!parent) {
58
+ return controller;
59
+ }
60
+ if (parent.aborted) {
61
+ controller.abort(parent.reason);
62
+ return controller;
63
+ }
64
+ const onAbort = /* @__PURE__ */ __name(() => {
65
+ controller.abort(parent.reason);
66
+ parent.removeEventListener("abort", onAbort);
67
+ }, "onAbort");
68
+ parent.addEventListener("abort", onAbort, { once: true });
69
+ return controller;
70
+ }
71
+ __name(createChainedAbortController, "createChainedAbortController");
72
+ function toBigint(value) {
73
+ if (value === void 0) {
74
+ return void 0;
75
+ }
76
+ return typeof value === "bigint" ? value : BigInt(Math.floor(value));
77
+ }
78
+ __name(toBigint, "toBigint");
56
79
  var DEFAULT_SIMULATION_CONFIG = Object.freeze({
57
80
  encoding: "base64",
58
81
  replaceRecentBlockhash: true,
59
82
  sigVerify: false
60
83
  });
84
+ function createSolanaRpcClient(config) {
85
+ const endpoint = config.endpoint;
86
+ const websocketEndpoint = config.websocketEndpoint ?? endpoint;
87
+ const commitment = config.commitment ?? "confirmed";
88
+ const rpc = kit.createSolanaRpc(endpoint, config.rpcConfig);
89
+ const rpcSubscriptions = kit.createSolanaRpcSubscriptions(websocketEndpoint, config.rpcSubscriptionsConfig);
90
+ async function sendAndConfirmTransaction2(transaction, options = {}) {
91
+ const abortController = createChainedAbortController(options.abortSignal);
92
+ const targetCommitment = options.commitment ?? commitment;
93
+ const wireTransaction = kit.getBase64EncodedWireTransaction(transaction);
94
+ const response = await rpc.sendTransaction(wireTransaction, {
95
+ encoding: "base64",
96
+ maxRetries: toBigint(options.maxRetries),
97
+ minContextSlot: toBigint(options.minContextSlot),
98
+ preflightCommitment: targetCommitment,
99
+ skipPreflight: options.skipPreflight
100
+ }).send({ abortSignal: abortController.signal });
101
+ const getBlockHeightExceedencePromise = transactionConfirmation.createBlockHeightExceedencePromiseFactory({
102
+ rpc,
103
+ rpcSubscriptions
104
+ });
105
+ const getRecentSignatureConfirmationPromise = transactionConfirmation.createRecentSignatureConfirmationPromiseFactory({
106
+ rpc,
107
+ rpcSubscriptions
108
+ });
109
+ await transactionConfirmation.waitForRecentTransactionConfirmation({
110
+ abortSignal: abortController.signal,
111
+ commitment: targetCommitment,
112
+ getBlockHeightExceedencePromise,
113
+ getRecentSignatureConfirmationPromise,
114
+ transaction
115
+ });
116
+ return response;
117
+ }
118
+ __name(sendAndConfirmTransaction2, "sendAndConfirmTransaction");
119
+ async function simulateTransaction(transaction, options = {}) {
120
+ const wireTransaction = kit.getBase64EncodedWireTransaction(transaction);
121
+ const baseConfig = options.config ?? {};
122
+ const mergedConfig = {
123
+ ...DEFAULT_SIMULATION_CONFIG,
124
+ ...baseConfig,
125
+ commitment: baseConfig.commitment ?? options.commitment ?? commitment
126
+ };
127
+ const normalizedConfig = mergedConfig.sigVerify === true && mergedConfig.replaceRecentBlockhash !== false ? { ...mergedConfig, replaceRecentBlockhash: false } : mergedConfig;
128
+ return rpc.simulateTransaction(wireTransaction, normalizedConfig).send({ abortSignal: options.abortSignal });
129
+ }
130
+ __name(simulateTransaction, "simulateTransaction");
131
+ return {
132
+ commitment,
133
+ endpoint,
134
+ rpc,
135
+ rpcSubscriptions,
136
+ sendAndConfirmTransaction: sendAndConfirmTransaction2,
137
+ simulateTransaction,
138
+ websocketEndpoint
139
+ };
140
+ }
141
+ __name(createSolanaRpcClient, "createSolanaRpcClient");
142
+ var DEFAULT_COMMITMENT = "confirmed";
143
+ var DEFAULT_SIMULATION_CONFIG2 = Object.freeze({
144
+ encoding: "base64",
145
+ replaceRecentBlockhash: true,
146
+ sigVerify: false
147
+ });
61
148
  function normalizeCommitment(commitment) {
62
149
  if (commitment === void 0 || commitment === null) {
63
150
  return void 0;
@@ -150,7 +237,7 @@ var Connection = class {
150
237
  const websocketEndpoint = typeof commitmentOrConfig === "object" && commitmentOrConfig !== null ? commitmentOrConfig.wsEndpoint : void 0;
151
238
  this.commitment = commitment;
152
239
  this.rpcEndpoint = endpoint;
153
- this.#client = client.createSolanaRpcClient({
240
+ this.#client = createSolanaRpcClient({
154
241
  endpoint,
155
242
  websocketEndpoint,
156
243
  commitment: commitment ?? DEFAULT_COMMITMENT
@@ -345,7 +432,7 @@ var Connection = class {
345
432
  commitment
346
433
  };
347
434
  const mergedConfig = {
348
- ...DEFAULT_SIMULATION_CONFIG,
435
+ ...DEFAULT_SIMULATION_CONFIG2,
349
436
  ...baseConfig,
350
437
  commitment
351
438
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/bridges.ts","../src/connection.ts","../src/programs/system-program.ts","../src/utils.ts"],"names":["PublicKey","fromLegacyPublicKey","createKeyPairSignerFromBytes","AccountRole","TransactionInstruction","fromLegacyTransactionInstruction","Transaction","VersionedTransaction","createSolanaRpcClient","Web3SystemProgram","WEB3_LAMPORTS_PER_SOL","VersionedTransactionClass"],"mappings":"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","file":"index.browser.cjs","sourcesContent":["import type { Address } from '@solana/addresses';\nimport { fromLegacyPublicKey, fromLegacyTransactionInstruction } from '@solana/compat';\nimport { AccountRole, createKeyPairSignerFromBytes, type Instruction, type KeyPairSigner } from '@solana/kit';\nimport { type Keypair, PublicKey, type PublicKeyInitData, TransactionInstruction } from '@solana/web3.js';\n\ntype WithOptionalExtractable = Readonly<{\n\textractable?: boolean;\n}>;\n\nexport type ToKitSignerConfig = WithOptionalExtractable;\n\nexport function toAddress<TAddress extends string = string>(input: PublicKey | PublicKeyInitData): Address<TAddress> {\n\tconst pubkey = input instanceof PublicKey ? input : new PublicKey(input);\n\treturn fromLegacyPublicKey(pubkey);\n}\n\nexport function toPublicKey(input: Address | PublicKeyInitData): PublicKey {\n\tif (input instanceof PublicKey) {\n\t\treturn input;\n\t}\n\tif (typeof input === 'string') {\n\t\treturn new PublicKey(input);\n\t}\n\treturn new PublicKey(input);\n}\n\nexport async function toKitSigner(keypair: Keypair, config: ToKitSignerConfig = {}): Promise<KeyPairSigner> {\n\tconst secretKey = new Uint8Array(64);\n\tsecretKey.set(keypair.secretKey);\n\tsecretKey.set(keypair.publicKey.toBytes(), 32);\n\treturn await createKeyPairSignerFromBytes(secretKey, config.extractable ?? false);\n}\n\nexport function toWeb3Instruction(kitInstruction: Instruction): TransactionInstruction {\n\tconst keys =\n\t\tkitInstruction.accounts?.map((account) => {\n\t\t\tconst role = account.role;\n\t\t\tconst isSigner = role === AccountRole.READONLY_SIGNER || role === AccountRole.WRITABLE_SIGNER;\n\t\t\tconst isWritable = role === AccountRole.WRITABLE || role === AccountRole.WRITABLE_SIGNER;\n\t\t\treturn {\n\t\t\t\tisSigner,\n\t\t\t\tisWritable,\n\t\t\t\tpubkey: toPublicKey(account.address),\n\t\t\t};\n\t\t}) ?? [];\n\n\tconst data = kitInstruction.data ? Buffer.from(kitInstruction.data) : Buffer.alloc(0);\n\treturn new TransactionInstruction({\n\t\tdata,\n\t\tkeys,\n\t\tprogramId: toPublicKey(kitInstruction.programAddress),\n\t});\n}\n\nexport function fromWeb3Instruction(legacyInstruction: TransactionInstruction): Instruction {\n\treturn fromLegacyTransactionInstruction(legacyInstruction);\n}\n","import type { Address } from '@solana/addresses';\nimport { createSolanaRpcClient, type SolanaRpcClient } from '@solana/client';\nimport type { Commitment as KitCommitment, Signature } from '@solana/kit';\nimport type { Base64EncodedWireTransaction } from '@solana/transactions';\nimport {\n\ttype AccountInfo,\n\ttype ConnectionConfig,\n\ttype DataSlice,\n\ttype Commitment as LegacyCommitment,\n\tPublicKey,\n\ttype SendOptions,\n\ttype SignatureStatus,\n\ttype SignatureStatusConfig,\n\ttype SimulatedTransactionResponse,\n\ttype SimulateTransactionConfig,\n\tTransaction,\n\ttype TransactionSignature,\n\tVersionedTransaction,\n} from '@solana/web3.js';\n\nimport { toAddress as toKitAddress } from './bridges';\n\ntype NormalizedCommitment = 'processed' | 'confirmed' | 'finalized';\n\ntype RpcContext = Readonly<{\n\tapiVersion?: string;\n\tslot: number;\n}>;\n\ntype AccountInfoConfig = Readonly<{\n\tcommitment?: LegacyCommitment;\n\tdataSlice?: DataSlice;\n\tencoding?: 'base64';\n\tminContextSlot?: number;\n}>;\n\ntype ProgramAccountsConfig = Readonly<{\n\tcommitment?: LegacyCommitment;\n\tdataSlice?: DataSlice;\n\tencoding?: 'base64' | 'base64+zstd';\n\tfilters?: ReadonlyArray<unknown>;\n\tminContextSlot?: number;\n\twithContext?: boolean;\n}>;\n\ntype ConnectionCommitmentInput =\n\t| LegacyCommitment\n\t| (ConnectionConfig & {\n\t\t\tcommitment?: LegacyCommitment;\n\t })\n\t| undefined;\n\ntype RpcResponseWithContext<T> = Readonly<{\n\tcontext: RpcContext;\n\tvalue: T;\n}>;\n\ntype RawTransactionInput = number[] | Uint8Array | Buffer | Transaction | VersionedTransaction;\n\ntype RpcAccount = Readonly<{\n\tdata: readonly [string, string] | string;\n\texecutable: boolean;\n\tlamports: number | bigint;\n\towner: string;\n\trentEpoch: number | bigint;\n}>;\n\ntype ProgramAccountWire = Readonly<{\n\taccount: RpcAccount;\n\tpubkey: string;\n}>;\n\ntype ProgramAccountsWithContext = Readonly<{\n\tcontext: Readonly<{\n\t\tapiVersion?: string;\n\t\tslot: number | bigint;\n\t}>;\n\tvalue: readonly ProgramAccountWire[];\n}>;\n\ntype SignatureStatusConfigWithCommitment = SignatureStatusConfig & {\n\tcommitment?: LegacyCommitment;\n};\n\nconst DEFAULT_COMMITMENT: NormalizedCommitment = 'confirmed';\n\nconst DEFAULT_SIMULATION_CONFIG = Object.freeze({\n\tencoding: 'base64' as const,\n\treplaceRecentBlockhash: true as const,\n\tsigVerify: false as const,\n});\n\nfunction normalizeCommitment(commitment?: LegacyCommitment | null): NormalizedCommitment | undefined {\n\tif (commitment === undefined || commitment === null) {\n\t\treturn undefined;\n\t}\n\tif (commitment === 'recent') {\n\t\treturn 'processed';\n\t}\n\tif (commitment === 'singleGossip') {\n\t\treturn 'processed';\n\t}\n\tif (commitment === 'single') {\n\t\treturn 'confirmed';\n\t}\n\tif (commitment === 'max') {\n\t\treturn 'finalized';\n\t}\n\treturn commitment as NormalizedCommitment;\n}\n\nfunction toBigInt(value: number | bigint | undefined): bigint | undefined {\n\tif (value === undefined) return undefined;\n\treturn typeof value === 'bigint' ? value : BigInt(Math.trunc(value));\n}\n\nfunction toAccountInfo(info: RpcAccount, dataSlice?: DataSlice): AccountInfo<Buffer> {\n\tconst { data, executable, lamports, owner, rentEpoch } = info;\n\tconst [content, encoding] = Array.isArray(data) ? data : [data, 'base64'];\n\tlet buffer = encoding === 'base64' ? Buffer.from(content, 'base64') : Buffer.from(content);\n\tif (dataSlice) {\n\t\tconst start = dataSlice.offset ?? 0;\n\t\tconst end = start + (dataSlice.length ?? buffer.length);\n\t\tbuffer = buffer.subarray(start, end);\n\t}\n\treturn {\n\t\tdata: buffer,\n\t\texecutable,\n\t\tlamports: typeof lamports === 'number' ? lamports : Number(lamports),\n\t\towner: new PublicKey(owner),\n\t\trentEpoch: typeof rentEpoch === 'number' ? rentEpoch : Number(rentEpoch),\n\t};\n}\n\nfunction fromKitAccount(value: unknown): RpcAccount {\n\tconst account = (value ?? {}) as Record<string, unknown>;\n\tconst data = account.data as string | readonly [string, string] | undefined;\n\tconst lamports = account.lamports as number | bigint | undefined;\n\tconst ownerValue = account.owner as unknown;\n\tconst rentEpoch = account.rentEpoch as number | bigint | undefined;\n\tconst owner =\n\t\ttypeof ownerValue === 'string'\n\t\t\t? ownerValue\n\t\t\t: ownerValue instanceof PublicKey\n\t\t\t\t? ownerValue.toBase58()\n\t\t\t\t: typeof ownerValue === 'object' && ownerValue !== null && 'toString' in ownerValue\n\t\t\t\t\t? String(ownerValue)\n\t\t\t\t\t: '11111111111111111111111111111111';\n\treturn {\n\t\tdata: data ?? ['', 'base64'],\n\t\texecutable: Boolean(account.executable),\n\t\tlamports: lamports ?? 0,\n\t\towner,\n\t\trentEpoch: rentEpoch ?? 0,\n\t};\n}\n\nfunction toKitAddressFromInput(input: PublicKey | string): Address<string> {\n\treturn toKitAddress(input instanceof PublicKey ? input : input);\n}\n\nfunction toBase64WireTransaction(raw: RawTransactionInput): Base64EncodedWireTransaction {\n\tif (raw instanceof Transaction || raw instanceof VersionedTransaction) {\n\t\tconst bytes = raw.serialize({\n\t\t\trequireAllSignatures: false,\n\t\t\tverifySignatures: false,\n\t\t});\n\t\treturn Buffer.from(bytes).toString('base64') as Base64EncodedWireTransaction;\n\t}\n\tif (raw instanceof Uint8Array) {\n\t\treturn Buffer.from(raw).toString('base64') as Base64EncodedWireTransaction;\n\t}\n\tif (raw instanceof Buffer) {\n\t\treturn raw.toString('base64') as Base64EncodedWireTransaction;\n\t}\n\tconst uint8 = Uint8Array.from(raw);\n\treturn Buffer.from(uint8).toString('base64') as Base64EncodedWireTransaction;\n}\n\nexport class Connection {\n\treadonly commitment?: NormalizedCommitment;\n\treadonly rpcEndpoint: string;\n\n\t#client: SolanaRpcClient;\n\n\tconstructor(endpoint: string, commitmentOrConfig?: ConnectionCommitmentInput) {\n\t\tconst commitment =\n\t\t\ttypeof commitmentOrConfig === 'string'\n\t\t\t\t? normalizeCommitment(commitmentOrConfig)\n\t\t\t\t: (normalizeCommitment(commitmentOrConfig?.commitment) ?? DEFAULT_COMMITMENT);\n\n\t\tconst websocketEndpoint =\n\t\t\ttypeof commitmentOrConfig === 'object' && commitmentOrConfig !== null\n\t\t\t\t? commitmentOrConfig.wsEndpoint\n\t\t\t\t: undefined;\n\n\t\tthis.commitment = commitment;\n\t\tthis.rpcEndpoint = endpoint;\n\t\tthis.#client = createSolanaRpcClient({\n\t\t\tendpoint,\n\t\t\twebsocketEndpoint,\n\t\t\tcommitment: (commitment ?? DEFAULT_COMMITMENT) as KitCommitment,\n\t\t});\n\t}\n\n\tasync getLatestBlockhash(\n\t\tcommitmentOrConfig?:\n\t\t\t| LegacyCommitment\n\t\t\t| {\n\t\t\t\t\tcommitment?: LegacyCommitment;\n\t\t\t\t\tmaxSupportedTransactionVersion?: number;\n\t\t\t\t\tminContextSlot?: number;\n\t\t\t },\n\t): Promise<{\n\t\tblockhash: string;\n\t\tlastValidBlockHeight: number;\n\t}> {\n\t\tconst baseCommitment =\n\t\t\ttypeof commitmentOrConfig === 'string' ? commitmentOrConfig : commitmentOrConfig?.commitment;\n\t\tconst commitment = normalizeCommitment(baseCommitment) ?? this.commitment ?? DEFAULT_COMMITMENT;\n\t\tconst minContextSlot =\n\t\t\ttypeof commitmentOrConfig === 'object' ? toBigInt(commitmentOrConfig.minContextSlot) : undefined;\n\t\tconst requestOptions: Record<string, unknown> = {\n\t\t\tcommitment: commitment as KitCommitment,\n\t\t};\n\t\tif (minContextSlot !== undefined) {\n\t\t\trequestOptions.minContextSlot = minContextSlot;\n\t\t}\n\t\tif (\n\t\t\ttypeof commitmentOrConfig === 'object' &&\n\t\t\tcommitmentOrConfig?.maxSupportedTransactionVersion !== undefined\n\t\t) {\n\t\t\trequestOptions.maxSupportedTransactionVersion = commitmentOrConfig.maxSupportedTransactionVersion;\n\t\t}\n\t\tconst response = await this.#client.rpc.getLatestBlockhash(requestOptions as never).send();\n\n\t\treturn {\n\t\t\tblockhash: response.value.blockhash,\n\t\t\tlastValidBlockHeight: Number(response.value.lastValidBlockHeight),\n\t\t};\n\t}\n\n\tasync getBalance(publicKey: PublicKey | string, commitment?: LegacyCommitment): Promise<number> {\n\t\tconst address = toKitAddressFromInput(publicKey);\n\t\tconst chosenCommitment = normalizeCommitment(commitment) ?? this.commitment ?? DEFAULT_COMMITMENT;\n\t\tconst result = await this.#client.rpc\n\t\t\t.getBalance(address, { commitment: chosenCommitment as KitCommitment })\n\t\t\t.send();\n\t\treturn typeof result.value === 'number' ? result.value : Number(result.value);\n\t}\n\n\tasync getAccountInfo<TAccountData = Buffer>(\n\t\tpublicKey: PublicKey | string,\n\t\tcommitmentOrConfig?: AccountInfoConfig | LegacyCommitment,\n\t): Promise<AccountInfo<TAccountData> | null> {\n\t\tconst address = toKitAddressFromInput(publicKey);\n\t\tlet localCommitment: NormalizedCommitment | undefined;\n\t\tlet minContextSlot: bigint | undefined;\n\t\tlet dataSlice: DataSlice | undefined;\n\t\tlet encoding: 'base64' | undefined;\n\t\tif (typeof commitmentOrConfig === 'string') {\n\t\t\tlocalCommitment = normalizeCommitment(commitmentOrConfig);\n\t\t} else if (commitmentOrConfig) {\n\t\t\tlocalCommitment = normalizeCommitment(commitmentOrConfig.commitment);\n\t\t\tif (commitmentOrConfig.minContextSlot !== undefined) {\n\t\t\t\tminContextSlot = toBigInt(commitmentOrConfig.minContextSlot);\n\t\t\t}\n\t\t\tdataSlice = commitmentOrConfig.dataSlice;\n\t\t\tencoding = commitmentOrConfig.encoding;\n\t\t}\n\n\t\tconst requestOptions: Record<string, unknown> = {\n\t\t\tcommitment: (localCommitment ?? this.commitment ?? DEFAULT_COMMITMENT) as KitCommitment,\n\t\t};\n\t\tif (minContextSlot !== undefined) {\n\t\t\trequestOptions.minContextSlot = minContextSlot;\n\t\t}\n\t\tif (encoding) {\n\t\t\trequestOptions.encoding = encoding;\n\t\t}\n\t\tif (dataSlice) {\n\t\t\trequestOptions.dataSlice = {\n\t\t\t\tlength: dataSlice.length,\n\t\t\t\toffset: dataSlice.offset,\n\t\t\t};\n\t\t}\n\n\t\tconst response = await this.#client.rpc.getAccountInfo(address, requestOptions as never).send();\n\n\t\tif (!response.value) {\n\t\t\treturn null;\n\t\t}\n\t\tconst accountInfo = toAccountInfo(fromKitAccount(response.value), dataSlice);\n\n\t\treturn accountInfo as AccountInfo<TAccountData>;\n\t}\n\n\tasync getProgramAccounts(\n\t\tprogramId: PublicKey | string,\n\t\tcommitmentOrConfig?: LegacyCommitment | ProgramAccountsConfig,\n\t): Promise<\n\t\t| Array<{\n\t\t\t\taccount: AccountInfo<Buffer | object>;\n\t\t\t\tpubkey: PublicKey;\n\t\t }>\n\t\t| RpcResponseWithContext<\n\t\t\t\tArray<{\n\t\t\t\t\taccount: AccountInfo<Buffer | object>;\n\t\t\t\t\tpubkey: PublicKey;\n\t\t\t\t}>\n\t\t >\n\t> {\n\t\tconst id = toKitAddressFromInput(programId);\n\t\tlet localCommitment: NormalizedCommitment | undefined;\n\t\tlet dataSlice: DataSlice | undefined;\n\t\tlet filters: ReadonlyArray<unknown> | undefined;\n\t\tlet encoding: 'base64' | 'base64+zstd' | undefined;\n\t\tlet minContextSlot: bigint | undefined;\n\t\tlet withContext = false;\n\t\tif (typeof commitmentOrConfig === 'string') {\n\t\t\tlocalCommitment = normalizeCommitment(commitmentOrConfig);\n\t\t} else if (commitmentOrConfig) {\n\t\t\tlocalCommitment = normalizeCommitment(commitmentOrConfig.commitment);\n\t\t\tdataSlice = commitmentOrConfig.dataSlice;\n\t\t\tfilters = commitmentOrConfig.filters;\n\t\t\tencoding = commitmentOrConfig.encoding;\n\t\t\tminContextSlot = toBigInt(commitmentOrConfig.minContextSlot);\n\t\t\twithContext = Boolean(commitmentOrConfig.withContext);\n\t\t}\n\n\t\tconst requestOptions: Record<string, unknown> = {\n\t\t\tcommitment: (localCommitment ?? this.commitment ?? DEFAULT_COMMITMENT) as KitCommitment,\n\t\t\twithContext,\n\t\t};\n\t\tif (dataSlice) {\n\t\t\trequestOptions.dataSlice = {\n\t\t\t\tlength: dataSlice.length,\n\t\t\t\toffset: dataSlice.offset,\n\t\t\t};\n\t\t}\n\t\tif (encoding) {\n\t\t\trequestOptions.encoding = encoding;\n\t\t}\n\t\tif (filters) {\n\t\t\trequestOptions.filters = filters.map((filter) => filter as never);\n\t\t}\n\t\tif (minContextSlot !== undefined) {\n\t\t\trequestOptions.minContextSlot = minContextSlot;\n\t\t}\n\n\t\tconst result = await this.#client.rpc.getProgramAccounts(id, requestOptions as never).send();\n\n\t\tconst mapProgramAccount = (entry: ProgramAccountWire) => {\n\t\t\tconst pubkey = new PublicKey(entry.pubkey);\n\t\t\treturn {\n\t\t\t\taccount: toAccountInfo(fromKitAccount(entry.account), dataSlice),\n\t\t\t\tpubkey,\n\t\t\t};\n\t\t};\n\n\t\tif (withContext && typeof (result as unknown as ProgramAccountsWithContext).context !== 'undefined') {\n\t\t\tconst contextual = result as unknown as ProgramAccountsWithContext;\n\t\t\treturn {\n\t\t\t\tcontext: {\n\t\t\t\t\tapiVersion: contextual.context.apiVersion,\n\t\t\t\t\tslot: Number(contextual.context.slot),\n\t\t\t\t},\n\t\t\t\tvalue: contextual.value.map(mapProgramAccount),\n\t\t\t};\n\t\t}\n\n\t\treturn (result as unknown as readonly ProgramAccountWire[]).map(mapProgramAccount);\n\t}\n\n\tasync getSignatureStatuses(\n\t\tsignatures: readonly TransactionSignature[],\n\t\tconfig?: SignatureStatusConfigWithCommitment,\n\t): Promise<RpcResponseWithContext<(SignatureStatus | null)[]>> {\n\t\tconst targetCommitment = normalizeCommitment(config?.commitment) ?? this.commitment ?? DEFAULT_COMMITMENT;\n\t\tconst kitSignatures = signatures.map((signature) => signature as unknown as Signature);\n\t\tconst response = await this.#client.rpc\n\t\t\t.getSignatureStatuses(kitSignatures, {\n\t\t\t\tcommitment: targetCommitment as KitCommitment,\n\t\t\t\tsearchTransactionHistory: config?.searchTransactionHistory,\n\t\t\t} as never)\n\t\t\t.send();\n\n\t\tconst context = response.context as { slot: number | bigint; apiVersion?: string };\n\t\tconst normalizedContext: RpcContext = {\n\t\t\tapiVersion: context?.apiVersion,\n\t\t\tslot: typeof context?.slot === 'bigint' ? Number(context.slot) : (context?.slot ?? 0),\n\t\t};\n\n\t\tconst normalizedValues = (response.value as readonly (SignatureStatus | null | Record<string, unknown>)[]).map(\n\t\t\t(status) => {\n\t\t\t\tif (!status) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst record = status as Record<string, unknown>;\n\t\t\t\tconst slot = record.slot as number | bigint | undefined;\n\t\t\t\tconst confirmations = record.confirmations as number | bigint | null | undefined;\n\t\t\t\tconst normalizedConfirmations =\n\t\t\t\t\tconfirmations === null\n\t\t\t\t\t\t? null\n\t\t\t\t\t\t: confirmations === undefined\n\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t: typeof confirmations === 'bigint'\n\t\t\t\t\t\t\t\t? Number(confirmations)\n\t\t\t\t\t\t\t\t: confirmations;\n\t\t\t\treturn {\n\t\t\t\t\terr: (record.err ?? null) as SignatureStatus['err'],\n\t\t\t\t\tconfirmations: normalizedConfirmations,\n\t\t\t\t\tconfirmationStatus: record.confirmationStatus as SignatureStatus['confirmationStatus'],\n\t\t\t\t\tslot: slot === undefined ? 0 : typeof slot === 'bigint' ? Number(slot) : slot,\n\t\t\t\t} satisfies SignatureStatus;\n\t\t\t},\n\t\t);\n\n\t\treturn {\n\t\t\tcontext: normalizedContext,\n\t\t\tvalue: normalizedValues as (SignatureStatus | null)[],\n\t\t};\n\t}\n\tasync sendRawTransaction(rawTransaction: RawTransactionInput, options?: SendOptions): Promise<string> {\n\t\tconst wire = toBase64WireTransaction(rawTransaction);\n\n\t\tconst preflightCommitment =\n\t\t\tnormalizeCommitment(\n\t\t\t\toptions?.preflightCommitment ??\n\t\t\t\t\t(options as (SendOptions & { commitment?: LegacyCommitment }) | undefined)?.commitment,\n\t\t\t) ??\n\t\t\tthis.commitment ??\n\t\t\tDEFAULT_COMMITMENT;\n\t\tconst maxRetries = options?.maxRetries === undefined ? undefined : toBigInt(options.maxRetries);\n\t\tconst minContextSlot = options?.minContextSlot === undefined ? undefined : toBigInt(options.minContextSlot);\n\t\tconst plan = this.#client.rpc.sendTransaction(wire, {\n\t\t\tencoding: 'base64',\n\t\t\tmaxRetries,\n\t\t\tminContextSlot,\n\t\t\tpreflightCommitment: preflightCommitment as KitCommitment,\n\t\t\tskipPreflight: options?.skipPreflight,\n\t\t});\n\n\t\treturn await plan.send();\n\t}\n\n\tasync confirmTransaction(\n\t\tsignature: TransactionSignature,\n\t\tcommitment?: LegacyCommitment,\n\t): Promise<RpcResponseWithContext<SignatureStatus | null>> {\n\t\tconst normalizedCommitment = normalizeCommitment(commitment);\n\t\tconst response = await this.getSignatureStatuses([signature], {\n\t\t\tcommitment: normalizedCommitment ?? this.commitment ?? DEFAULT_COMMITMENT,\n\t\t\tsearchTransactionHistory: true,\n\t\t});\n\n\t\treturn {\n\t\t\tcontext: response.context,\n\t\t\tvalue: response.value[0] ?? null,\n\t\t};\n\t}\n\n\tasync simulateTransaction(\n\t\ttransaction: RawTransactionInput,\n\t\tconfig?: SimulateTransactionConfig,\n\t): Promise<RpcResponseWithContext<SimulatedTransactionResponse>> {\n\t\tconst wire = toBase64WireTransaction(transaction);\n\t\tconst commitment = normalizeCommitment(config?.commitment) ?? this.commitment ?? DEFAULT_COMMITMENT;\n\t\tconst baseConfig = {\n\t\t\t...(config ?? {}),\n\t\t\tcommitment,\n\t\t};\n\t\tconst mergedConfig = {\n\t\t\t...DEFAULT_SIMULATION_CONFIG,\n\t\t\t...baseConfig,\n\t\t\tcommitment: commitment as KitCommitment,\n\t\t};\n\t\tconst normalizedConfig =\n\t\t\tmergedConfig.sigVerify === true && mergedConfig.replaceRecentBlockhash !== false\n\t\t\t\t? { ...mergedConfig, replaceRecentBlockhash: false }\n\t\t\t\t: mergedConfig;\n\n\t\tconst response = await this.#client.rpc.simulateTransaction(wire, normalizedConfig as never).send();\n\n\t\treturn {\n\t\t\tcontext: {\n\t\t\t\tapiVersion: (response.context as Record<string, unknown>)?.apiVersion as string | undefined,\n\t\t\t\tslot: Number((response.context as Record<string, unknown>)?.slot ?? 0),\n\t\t\t},\n\t\t\tvalue: response.value as unknown as SimulatedTransactionResponse,\n\t\t};\n\t}\n}\n","import { type PublicKey, TransactionInstruction, SystemProgram as Web3SystemProgram } from '@solana/web3.js';\n\ntype TransferParams = Readonly<{\n\tfromPubkey: PublicKey;\n\tlamports: number | bigint;\n\ttoPubkey: PublicKey;\n}>;\n\nconst TRANSFER_INSTRUCTION_INDEX = 2;\n\nexport const SystemProgram = Object.freeze({\n\t...Web3SystemProgram,\n\ttransfer({ fromPubkey, toPubkey, lamports }: TransferParams): TransactionInstruction {\n\t\tconst data = Buffer.alloc(12);\n\t\tdata.writeUInt32LE(TRANSFER_INSTRUCTION_INDEX, 0);\n\t\tdata.writeBigUInt64LE(BigInt(lamports), 4);\n\t\treturn new TransactionInstruction({\n\t\t\tdata,\n\t\t\tkeys: [\n\t\t\t\t{ isSigner: true, isWritable: true, pubkey: fromPubkey },\n\t\t\t\t{ isSigner: false, isWritable: true, pubkey: toPubkey },\n\t\t\t],\n\t\t\tprogramId: Web3SystemProgram.programId,\n\t\t});\n\t},\n});\n","import type {\n\tCommitment,\n\tTransaction as LegacyTransaction,\n\tVersionedTransaction as LegacyVersionedTransaction,\n\tSendOptions,\n\tSigner,\n} from '@solana/web3.js';\nimport {\n\tVersionedTransaction as VersionedTransactionClass,\n\tLAMPORTS_PER_SOL as WEB3_LAMPORTS_PER_SOL,\n} from '@solana/web3.js';\nimport type { Connection } from './connection';\n\nexport const LAMPORTS_PER_SOL = WEB3_LAMPORTS_PER_SOL;\n\ntype SendAndConfirmOptions = SendOptions & {\n\tcommitment?: Commitment;\n};\n\nfunction serializeTransactionBytes(input: LegacyTransaction | LegacyVersionedTransaction): Uint8Array {\n\tif (input instanceof VersionedTransactionClass) {\n\t\treturn input.serialize();\n\t}\n\treturn (input as LegacyTransaction).serialize({ requireAllSignatures: false });\n}\n\nexport function compileFromCompat(transaction: LegacyTransaction | LegacyVersionedTransaction): string {\n\tconst bytes = serializeTransactionBytes(transaction);\n\treturn Buffer.from(bytes).toString('base64');\n}\n\nfunction applySigners(\n\ttransaction: LegacyTransaction | LegacyVersionedTransaction,\n\tsigners: readonly Signer[] = [],\n): void {\n\tif (!signers.length) {\n\t\treturn;\n\t}\n\tif (transaction instanceof VersionedTransactionClass) {\n\t\ttransaction.sign([...signers]);\n\t} else {\n\t\t(transaction as LegacyTransaction).partialSign(...signers);\n\t}\n}\n\nexport async function sendAndConfirmTransaction(\n\tconnection: Connection,\n\ttransaction: LegacyTransaction | LegacyVersionedTransaction,\n\tsigners: readonly Signer[] = [],\n\toptions: SendAndConfirmOptions = {},\n): Promise<string> {\n\tapplySigners(transaction, signers);\n\tconst serialized = compileFromCompat(transaction);\n\tconst raw = Buffer.from(serialized, 'base64');\n\tconst signature = await connection.sendRawTransaction(raw, options);\n\tconst commitment = options.commitment ?? connection.commitment ?? 'confirmed';\n\tconst confirmation = await connection.confirmTransaction(signature, commitment);\n\tif (confirmation.value?.err) {\n\t\tthrow new Error('Transaction failed');\n\t}\n\treturn signature;\n}\n"]}
1
+ {"version":3,"sources":["../src/bridges.ts","../../client/src/rpc/createSolanaRpcClient.ts","../src/connection.ts","../src/programs/system-program.ts","../src/utils.ts"],"names":["PublicKey","fromLegacyPublicKey","createKeyPairSignerFromBytes","AccountRole","TransactionInstruction","fromLegacyTransactionInstruction","createSolanaRpc","createSolanaRpcSubscriptions","sendAndConfirmTransaction","getBase64EncodedWireTransaction","createBlockHeightExceedencePromiseFactory","createRecentSignatureConfirmationPromiseFactory","waitForRecentTransactionConfirmation","DEFAULT_SIMULATION_CONFIG","Transaction","VersionedTransaction","Web3SystemProgram","WEB3_LAMPORTS_PER_SOL","VersionedTransactionClass"],"mappings":"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","file":"index.browser.cjs","sourcesContent":["import type { Address } from '@solana/addresses';\nimport { fromLegacyPublicKey, fromLegacyTransactionInstruction } from '@solana/compat';\nimport { AccountRole, createKeyPairSignerFromBytes, type Instruction, type KeyPairSigner } from '@solana/kit';\nimport { type Keypair, PublicKey, type PublicKeyInitData, TransactionInstruction } from '@solana/web3.js';\n\ntype WithOptionalExtractable = Readonly<{\n\textractable?: boolean;\n}>;\n\nexport type ToKitSignerConfig = WithOptionalExtractable;\n\nexport function toAddress<TAddress extends string = string>(input: PublicKey | PublicKeyInitData): Address<TAddress> {\n\tconst pubkey = input instanceof PublicKey ? input : new PublicKey(input);\n\treturn fromLegacyPublicKey(pubkey);\n}\n\nexport function toPublicKey(input: Address | PublicKeyInitData): PublicKey {\n\tif (input instanceof PublicKey) {\n\t\treturn input;\n\t}\n\tif (typeof input === 'string') {\n\t\treturn new PublicKey(input);\n\t}\n\treturn new PublicKey(input);\n}\n\nexport async function toKitSigner(keypair: Keypair, config: ToKitSignerConfig = {}): Promise<KeyPairSigner> {\n\tconst secretKey = new Uint8Array(64);\n\tsecretKey.set(keypair.secretKey);\n\tsecretKey.set(keypair.publicKey.toBytes(), 32);\n\treturn await createKeyPairSignerFromBytes(secretKey, config.extractable ?? false);\n}\n\nexport function toWeb3Instruction(kitInstruction: Instruction): TransactionInstruction {\n\tconst keys =\n\t\tkitInstruction.accounts?.map((account) => {\n\t\t\tconst role = account.role;\n\t\t\tconst isSigner = role === AccountRole.READONLY_SIGNER || role === AccountRole.WRITABLE_SIGNER;\n\t\t\tconst isWritable = role === AccountRole.WRITABLE || role === AccountRole.WRITABLE_SIGNER;\n\t\t\treturn {\n\t\t\t\tisSigner,\n\t\t\t\tisWritable,\n\t\t\t\tpubkey: toPublicKey(account.address),\n\t\t\t};\n\t\t}) ?? [];\n\n\tconst data = kitInstruction.data ? Buffer.from(kitInstruction.data) : Buffer.alloc(0);\n\treturn new TransactionInstruction({\n\t\tdata,\n\t\tkeys,\n\t\tprogramId: toPublicKey(kitInstruction.programAddress),\n\t});\n}\n\nexport function fromWeb3Instruction(legacyInstruction: TransactionInstruction): Instruction {\n\treturn fromLegacyTransactionInstruction(legacyInstruction);\n}\n","import {\n\ttype ClusterUrl,\n\ttype Commitment,\n\tcreateSolanaRpc,\n\tcreateSolanaRpcSubscriptions,\n\tgetBase64EncodedWireTransaction,\n\ttype SendableTransaction,\n\ttype Signature,\n\ttype Transaction,\n} from '@solana/kit';\nimport type { TransactionWithLastValidBlockHeight } from '@solana/transaction-confirmation';\nimport {\n\tcreateBlockHeightExceedencePromiseFactory,\n\tcreateRecentSignatureConfirmationPromiseFactory,\n\twaitForRecentTransactionConfirmation,\n} from '@solana/transaction-confirmation';\n\ntype SolanaRpcInstance = ReturnType<typeof createSolanaRpc>;\ntype SolanaRpcSubscriptionsInstance = ReturnType<typeof createSolanaRpcSubscriptions>;\n\ntype ConfirmableTransaction = SendableTransaction & Transaction & TransactionWithLastValidBlockHeight;\n\ntype SimulateTransactionPlan = ReturnType<SolanaRpcInstance['simulateTransaction']>;\ntype SimulateTransactionConfig = Parameters<SolanaRpcInstance['simulateTransaction']>[1];\ntype SimulateTransactionResult = Awaited<ReturnType<SimulateTransactionPlan['send']>>;\n\nexport type SendAndConfirmTransactionOptions = Readonly<{\n\tabortSignal?: AbortSignal;\n\tcommitment?: Commitment;\n\tmaxRetries?: bigint | number;\n\tminContextSlot?: bigint | number;\n\tskipPreflight?: boolean;\n}>;\n\nexport type SimulateTransactionOptions = Readonly<{\n\tabortSignal?: AbortSignal;\n\tcommitment?: Commitment;\n\tconfig?: SimulateTransactionConfig;\n}>;\n\nexport type SolanaRpcClient = Readonly<{\n\tcommitment: Commitment;\n\tendpoint: ClusterUrl;\n\trpc: SolanaRpcInstance;\n\trpcSubscriptions: SolanaRpcSubscriptionsInstance;\n\tsendAndConfirmTransaction(\n\t\ttransaction: ConfirmableTransaction,\n\t\toptions?: SendAndConfirmTransactionOptions,\n\t): Promise<Signature>;\n\tsimulateTransaction(\n\t\ttransaction: SendableTransaction & Transaction,\n\t\toptions?: SimulateTransactionOptions,\n\t): Promise<SimulateTransactionResult>;\n\twebsocketEndpoint: ClusterUrl;\n}>;\n\nexport type CreateSolanaRpcClientConfig = Readonly<{\n\tcommitment?: Commitment;\n\tendpoint: ClusterUrl;\n\trpcConfig?: Parameters<typeof createSolanaRpc>[1];\n\trpcSubscriptionsConfig?: Parameters<typeof createSolanaRpcSubscriptions>[1];\n\twebsocketEndpoint?: ClusterUrl;\n}>;\n\nfunction createChainedAbortController(parent?: AbortSignal): AbortController {\n\tconst controller = new AbortController();\n\tif (!parent) {\n\t\treturn controller;\n\t}\n\tif (parent.aborted) {\n\t\tcontroller.abort(parent.reason);\n\t\treturn controller;\n\t}\n\tconst onAbort = () => {\n\t\tcontroller.abort(parent.reason);\n\t\tparent.removeEventListener('abort', onAbort);\n\t};\n\tparent.addEventListener('abort', onAbort, { once: true });\n\treturn controller;\n}\n\nfunction toBigint(value?: number | bigint): bigint | undefined {\n\tif (value === undefined) {\n\t\treturn undefined;\n\t}\n\treturn typeof value === 'bigint' ? value : BigInt(Math.floor(value));\n}\n\nconst DEFAULT_SIMULATION_CONFIG = Object.freeze({\n\tencoding: 'base64' as const,\n\treplaceRecentBlockhash: true as const,\n\tsigVerify: false as const,\n});\n\n/**\n * Creates a lightweight RPC client that wires up JSON-RPC, subscriptions, and common helpers.\n */\nexport function createSolanaRpcClient(config: CreateSolanaRpcClientConfig): SolanaRpcClient {\n\tconst endpoint = config.endpoint;\n\tconst websocketEndpoint = config.websocketEndpoint ?? endpoint;\n\tconst commitment = config.commitment ?? 'confirmed';\n\tconst rpc = createSolanaRpc(endpoint, config.rpcConfig);\n\tconst rpcSubscriptions = createSolanaRpcSubscriptions(websocketEndpoint, config.rpcSubscriptionsConfig);\n\n\tasync function sendAndConfirmTransaction(\n\t\ttransaction: ConfirmableTransaction,\n\t\toptions: SendAndConfirmTransactionOptions = {},\n\t): Promise<Signature> {\n\t\tconst abortController = createChainedAbortController(options.abortSignal);\n\t\tconst targetCommitment = options.commitment ?? commitment;\n\t\tconst wireTransaction = getBase64EncodedWireTransaction(transaction);\n\t\tconst response = await rpc\n\t\t\t.sendTransaction(wireTransaction, {\n\t\t\t\tencoding: 'base64',\n\t\t\t\tmaxRetries: toBigint(options.maxRetries),\n\t\t\t\tminContextSlot: toBigint(options.minContextSlot),\n\t\t\t\tpreflightCommitment: targetCommitment,\n\t\t\t\tskipPreflight: options.skipPreflight,\n\t\t\t})\n\t\t\t.send({ abortSignal: abortController.signal });\n\n\t\tconst getBlockHeightExceedencePromise = createBlockHeightExceedencePromiseFactory({\n\t\t\trpc: rpc as Parameters<typeof createBlockHeightExceedencePromiseFactory>[0]['rpc'],\n\t\t\trpcSubscriptions: rpcSubscriptions as Parameters<\n\t\t\t\ttypeof createBlockHeightExceedencePromiseFactory\n\t\t\t>[0]['rpcSubscriptions'],\n\t\t});\n\t\tconst getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory({\n\t\t\trpc: rpc as Parameters<typeof createRecentSignatureConfirmationPromiseFactory>[0]['rpc'],\n\t\t\trpcSubscriptions: rpcSubscriptions as Parameters<\n\t\t\t\ttypeof createRecentSignatureConfirmationPromiseFactory\n\t\t\t>[0]['rpcSubscriptions'],\n\t\t});\n\n\t\tawait waitForRecentTransactionConfirmation({\n\t\t\tabortSignal: abortController.signal,\n\t\t\tcommitment: targetCommitment,\n\t\t\tgetBlockHeightExceedencePromise,\n\t\t\tgetRecentSignatureConfirmationPromise,\n\t\t\ttransaction,\n\t\t});\n\n\t\treturn response;\n\t}\n\n\tasync function simulateTransaction(\n\t\ttransaction: SendableTransaction & Transaction,\n\t\toptions: SimulateTransactionOptions = {},\n\t): Promise<SimulateTransactionResult> {\n\t\tconst wireTransaction = getBase64EncodedWireTransaction(transaction);\n\t\tconst baseConfig = (options.config ?? {}) as SimulateTransactionConfig;\n\t\tconst mergedConfig = {\n\t\t\t...DEFAULT_SIMULATION_CONFIG,\n\t\t\t...baseConfig,\n\t\t\tcommitment: baseConfig.commitment ?? options.commitment ?? commitment,\n\t\t};\n\t\tconst normalizedConfig =\n\t\t\tmergedConfig.sigVerify === true && mergedConfig.replaceRecentBlockhash !== false\n\t\t\t\t? { ...mergedConfig, replaceRecentBlockhash: false }\n\t\t\t\t: mergedConfig;\n\t\treturn rpc\n\t\t\t.simulateTransaction(wireTransaction, normalizedConfig as SimulateTransactionConfig)\n\t\t\t.send({ abortSignal: options.abortSignal });\n\t}\n\n\treturn {\n\t\tcommitment,\n\t\tendpoint,\n\t\trpc,\n\t\trpcSubscriptions,\n\t\tsendAndConfirmTransaction,\n\t\tsimulateTransaction,\n\t\twebsocketEndpoint,\n\t};\n}\n","import type { Address } from '@solana/addresses';\nimport { createSolanaRpcClient, type SolanaRpcClient } from '@solana/client';\nimport type { Commitment as KitCommitment, Signature } from '@solana/kit';\nimport type { Base64EncodedWireTransaction } from '@solana/transactions';\nimport {\n\ttype AccountInfo,\n\ttype ConnectionConfig,\n\ttype DataSlice,\n\ttype Commitment as LegacyCommitment,\n\tPublicKey,\n\ttype SendOptions,\n\ttype SignatureStatus,\n\ttype SignatureStatusConfig,\n\ttype SimulatedTransactionResponse,\n\ttype SimulateTransactionConfig,\n\tTransaction,\n\ttype TransactionSignature,\n\tVersionedTransaction,\n} from '@solana/web3.js';\n\nimport { toAddress as toKitAddress } from './bridges';\n\ntype NormalizedCommitment = 'processed' | 'confirmed' | 'finalized';\n\ntype RpcContext = Readonly<{\n\tapiVersion?: string;\n\tslot: number;\n}>;\n\ntype AccountInfoConfig = Readonly<{\n\tcommitment?: LegacyCommitment;\n\tdataSlice?: DataSlice;\n\tencoding?: 'base64';\n\tminContextSlot?: number;\n}>;\n\ntype ProgramAccountsConfig = Readonly<{\n\tcommitment?: LegacyCommitment;\n\tdataSlice?: DataSlice;\n\tencoding?: 'base64' | 'base64+zstd';\n\tfilters?: ReadonlyArray<unknown>;\n\tminContextSlot?: number;\n\twithContext?: boolean;\n}>;\n\ntype ConnectionCommitmentInput =\n\t| LegacyCommitment\n\t| (ConnectionConfig & {\n\t\t\tcommitment?: LegacyCommitment;\n\t })\n\t| undefined;\n\ntype RpcResponseWithContext<T> = Readonly<{\n\tcontext: RpcContext;\n\tvalue: T;\n}>;\n\ntype RawTransactionInput = number[] | Uint8Array | Buffer | Transaction | VersionedTransaction;\n\ntype RpcAccount = Readonly<{\n\tdata: readonly [string, string] | string;\n\texecutable: boolean;\n\tlamports: number | bigint;\n\towner: string;\n\trentEpoch: number | bigint;\n}>;\n\ntype ProgramAccountWire = Readonly<{\n\taccount: RpcAccount;\n\tpubkey: string;\n}>;\n\ntype ProgramAccountsWithContext = Readonly<{\n\tcontext: Readonly<{\n\t\tapiVersion?: string;\n\t\tslot: number | bigint;\n\t}>;\n\tvalue: readonly ProgramAccountWire[];\n}>;\n\ntype SignatureStatusConfigWithCommitment = SignatureStatusConfig & {\n\tcommitment?: LegacyCommitment;\n};\n\nconst DEFAULT_COMMITMENT: NormalizedCommitment = 'confirmed';\n\nconst DEFAULT_SIMULATION_CONFIG = Object.freeze({\n\tencoding: 'base64' as const,\n\treplaceRecentBlockhash: true as const,\n\tsigVerify: false as const,\n});\n\nfunction normalizeCommitment(commitment?: LegacyCommitment | null): NormalizedCommitment | undefined {\n\tif (commitment === undefined || commitment === null) {\n\t\treturn undefined;\n\t}\n\tif (commitment === 'recent') {\n\t\treturn 'processed';\n\t}\n\tif (commitment === 'singleGossip') {\n\t\treturn 'processed';\n\t}\n\tif (commitment === 'single') {\n\t\treturn 'confirmed';\n\t}\n\tif (commitment === 'max') {\n\t\treturn 'finalized';\n\t}\n\treturn commitment as NormalizedCommitment;\n}\n\nfunction toBigInt(value: number | bigint | undefined): bigint | undefined {\n\tif (value === undefined) return undefined;\n\treturn typeof value === 'bigint' ? value : BigInt(Math.trunc(value));\n}\n\nfunction toAccountInfo(info: RpcAccount, dataSlice?: DataSlice): AccountInfo<Buffer> {\n\tconst { data, executable, lamports, owner, rentEpoch } = info;\n\tconst [content, encoding] = Array.isArray(data) ? data : [data, 'base64'];\n\tlet buffer = encoding === 'base64' ? Buffer.from(content, 'base64') : Buffer.from(content);\n\tif (dataSlice) {\n\t\tconst start = dataSlice.offset ?? 0;\n\t\tconst end = start + (dataSlice.length ?? buffer.length);\n\t\tbuffer = buffer.subarray(start, end);\n\t}\n\treturn {\n\t\tdata: buffer,\n\t\texecutable,\n\t\tlamports: typeof lamports === 'number' ? lamports : Number(lamports),\n\t\towner: new PublicKey(owner),\n\t\trentEpoch: typeof rentEpoch === 'number' ? rentEpoch : Number(rentEpoch),\n\t};\n}\n\nfunction fromKitAccount(value: unknown): RpcAccount {\n\tconst account = (value ?? {}) as Record<string, unknown>;\n\tconst data = account.data as string | readonly [string, string] | undefined;\n\tconst lamports = account.lamports as number | bigint | undefined;\n\tconst ownerValue = account.owner as unknown;\n\tconst rentEpoch = account.rentEpoch as number | bigint | undefined;\n\tconst owner =\n\t\ttypeof ownerValue === 'string'\n\t\t\t? ownerValue\n\t\t\t: ownerValue instanceof PublicKey\n\t\t\t\t? ownerValue.toBase58()\n\t\t\t\t: typeof ownerValue === 'object' && ownerValue !== null && 'toString' in ownerValue\n\t\t\t\t\t? String(ownerValue)\n\t\t\t\t\t: '11111111111111111111111111111111';\n\treturn {\n\t\tdata: data ?? ['', 'base64'],\n\t\texecutable: Boolean(account.executable),\n\t\tlamports: lamports ?? 0,\n\t\towner,\n\t\trentEpoch: rentEpoch ?? 0,\n\t};\n}\n\nfunction toKitAddressFromInput(input: PublicKey | string): Address<string> {\n\treturn toKitAddress(input instanceof PublicKey ? input : input);\n}\n\nfunction toBase64WireTransaction(raw: RawTransactionInput): Base64EncodedWireTransaction {\n\tif (raw instanceof Transaction || raw instanceof VersionedTransaction) {\n\t\tconst bytes = raw.serialize({\n\t\t\trequireAllSignatures: false,\n\t\t\tverifySignatures: false,\n\t\t});\n\t\treturn Buffer.from(bytes).toString('base64') as Base64EncodedWireTransaction;\n\t}\n\tif (raw instanceof Uint8Array) {\n\t\treturn Buffer.from(raw).toString('base64') as Base64EncodedWireTransaction;\n\t}\n\tif (raw instanceof Buffer) {\n\t\treturn raw.toString('base64') as Base64EncodedWireTransaction;\n\t}\n\tconst uint8 = Uint8Array.from(raw);\n\treturn Buffer.from(uint8).toString('base64') as Base64EncodedWireTransaction;\n}\n\nexport class Connection {\n\treadonly commitment?: NormalizedCommitment;\n\treadonly rpcEndpoint: string;\n\n\t#client: SolanaRpcClient;\n\n\tconstructor(endpoint: string, commitmentOrConfig?: ConnectionCommitmentInput) {\n\t\tconst commitment =\n\t\t\ttypeof commitmentOrConfig === 'string'\n\t\t\t\t? normalizeCommitment(commitmentOrConfig)\n\t\t\t\t: (normalizeCommitment(commitmentOrConfig?.commitment) ?? DEFAULT_COMMITMENT);\n\n\t\tconst websocketEndpoint =\n\t\t\ttypeof commitmentOrConfig === 'object' && commitmentOrConfig !== null\n\t\t\t\t? commitmentOrConfig.wsEndpoint\n\t\t\t\t: undefined;\n\n\t\tthis.commitment = commitment;\n\t\tthis.rpcEndpoint = endpoint;\n\t\tthis.#client = createSolanaRpcClient({\n\t\t\tendpoint,\n\t\t\twebsocketEndpoint,\n\t\t\tcommitment: (commitment ?? DEFAULT_COMMITMENT) as KitCommitment,\n\t\t});\n\t}\n\n\tasync getLatestBlockhash(\n\t\tcommitmentOrConfig?:\n\t\t\t| LegacyCommitment\n\t\t\t| {\n\t\t\t\t\tcommitment?: LegacyCommitment;\n\t\t\t\t\tmaxSupportedTransactionVersion?: number;\n\t\t\t\t\tminContextSlot?: number;\n\t\t\t },\n\t): Promise<{\n\t\tblockhash: string;\n\t\tlastValidBlockHeight: number;\n\t}> {\n\t\tconst baseCommitment =\n\t\t\ttypeof commitmentOrConfig === 'string' ? commitmentOrConfig : commitmentOrConfig?.commitment;\n\t\tconst commitment = normalizeCommitment(baseCommitment) ?? this.commitment ?? DEFAULT_COMMITMENT;\n\t\tconst minContextSlot =\n\t\t\ttypeof commitmentOrConfig === 'object' ? toBigInt(commitmentOrConfig.minContextSlot) : undefined;\n\t\tconst requestOptions: Record<string, unknown> = {\n\t\t\tcommitment: commitment as KitCommitment,\n\t\t};\n\t\tif (minContextSlot !== undefined) {\n\t\t\trequestOptions.minContextSlot = minContextSlot;\n\t\t}\n\t\tif (\n\t\t\ttypeof commitmentOrConfig === 'object' &&\n\t\t\tcommitmentOrConfig?.maxSupportedTransactionVersion !== undefined\n\t\t) {\n\t\t\trequestOptions.maxSupportedTransactionVersion = commitmentOrConfig.maxSupportedTransactionVersion;\n\t\t}\n\t\tconst response = await this.#client.rpc.getLatestBlockhash(requestOptions as never).send();\n\n\t\treturn {\n\t\t\tblockhash: response.value.blockhash,\n\t\t\tlastValidBlockHeight: Number(response.value.lastValidBlockHeight),\n\t\t};\n\t}\n\n\tasync getBalance(publicKey: PublicKey | string, commitment?: LegacyCommitment): Promise<number> {\n\t\tconst address = toKitAddressFromInput(publicKey);\n\t\tconst chosenCommitment = normalizeCommitment(commitment) ?? this.commitment ?? DEFAULT_COMMITMENT;\n\t\tconst result = await this.#client.rpc\n\t\t\t.getBalance(address, { commitment: chosenCommitment as KitCommitment })\n\t\t\t.send();\n\t\treturn typeof result.value === 'number' ? result.value : Number(result.value);\n\t}\n\n\tasync getAccountInfo<TAccountData = Buffer>(\n\t\tpublicKey: PublicKey | string,\n\t\tcommitmentOrConfig?: AccountInfoConfig | LegacyCommitment,\n\t): Promise<AccountInfo<TAccountData> | null> {\n\t\tconst address = toKitAddressFromInput(publicKey);\n\t\tlet localCommitment: NormalizedCommitment | undefined;\n\t\tlet minContextSlot: bigint | undefined;\n\t\tlet dataSlice: DataSlice | undefined;\n\t\tlet encoding: 'base64' | undefined;\n\t\tif (typeof commitmentOrConfig === 'string') {\n\t\t\tlocalCommitment = normalizeCommitment(commitmentOrConfig);\n\t\t} else if (commitmentOrConfig) {\n\t\t\tlocalCommitment = normalizeCommitment(commitmentOrConfig.commitment);\n\t\t\tif (commitmentOrConfig.minContextSlot !== undefined) {\n\t\t\t\tminContextSlot = toBigInt(commitmentOrConfig.minContextSlot);\n\t\t\t}\n\t\t\tdataSlice = commitmentOrConfig.dataSlice;\n\t\t\tencoding = commitmentOrConfig.encoding;\n\t\t}\n\n\t\tconst requestOptions: Record<string, unknown> = {\n\t\t\tcommitment: (localCommitment ?? this.commitment ?? DEFAULT_COMMITMENT) as KitCommitment,\n\t\t};\n\t\tif (minContextSlot !== undefined) {\n\t\t\trequestOptions.minContextSlot = minContextSlot;\n\t\t}\n\t\tif (encoding) {\n\t\t\trequestOptions.encoding = encoding;\n\t\t}\n\t\tif (dataSlice) {\n\t\t\trequestOptions.dataSlice = {\n\t\t\t\tlength: dataSlice.length,\n\t\t\t\toffset: dataSlice.offset,\n\t\t\t};\n\t\t}\n\n\t\tconst response = await this.#client.rpc.getAccountInfo(address, requestOptions as never).send();\n\n\t\tif (!response.value) {\n\t\t\treturn null;\n\t\t}\n\t\tconst accountInfo = toAccountInfo(fromKitAccount(response.value), dataSlice);\n\n\t\treturn accountInfo as AccountInfo<TAccountData>;\n\t}\n\n\tasync getProgramAccounts(\n\t\tprogramId: PublicKey | string,\n\t\tcommitmentOrConfig?: LegacyCommitment | ProgramAccountsConfig,\n\t): Promise<\n\t\t| Array<{\n\t\t\t\taccount: AccountInfo<Buffer | object>;\n\t\t\t\tpubkey: PublicKey;\n\t\t }>\n\t\t| RpcResponseWithContext<\n\t\t\t\tArray<{\n\t\t\t\t\taccount: AccountInfo<Buffer | object>;\n\t\t\t\t\tpubkey: PublicKey;\n\t\t\t\t}>\n\t\t >\n\t> {\n\t\tconst id = toKitAddressFromInput(programId);\n\t\tlet localCommitment: NormalizedCommitment | undefined;\n\t\tlet dataSlice: DataSlice | undefined;\n\t\tlet filters: ReadonlyArray<unknown> | undefined;\n\t\tlet encoding: 'base64' | 'base64+zstd' | undefined;\n\t\tlet minContextSlot: bigint | undefined;\n\t\tlet withContext = false;\n\t\tif (typeof commitmentOrConfig === 'string') {\n\t\t\tlocalCommitment = normalizeCommitment(commitmentOrConfig);\n\t\t} else if (commitmentOrConfig) {\n\t\t\tlocalCommitment = normalizeCommitment(commitmentOrConfig.commitment);\n\t\t\tdataSlice = commitmentOrConfig.dataSlice;\n\t\t\tfilters = commitmentOrConfig.filters;\n\t\t\tencoding = commitmentOrConfig.encoding;\n\t\t\tminContextSlot = toBigInt(commitmentOrConfig.minContextSlot);\n\t\t\twithContext = Boolean(commitmentOrConfig.withContext);\n\t\t}\n\n\t\tconst requestOptions: Record<string, unknown> = {\n\t\t\tcommitment: (localCommitment ?? this.commitment ?? DEFAULT_COMMITMENT) as KitCommitment,\n\t\t\twithContext,\n\t\t};\n\t\tif (dataSlice) {\n\t\t\trequestOptions.dataSlice = {\n\t\t\t\tlength: dataSlice.length,\n\t\t\t\toffset: dataSlice.offset,\n\t\t\t};\n\t\t}\n\t\tif (encoding) {\n\t\t\trequestOptions.encoding = encoding;\n\t\t}\n\t\tif (filters) {\n\t\t\trequestOptions.filters = filters.map((filter) => filter as never);\n\t\t}\n\t\tif (minContextSlot !== undefined) {\n\t\t\trequestOptions.minContextSlot = minContextSlot;\n\t\t}\n\n\t\tconst result = await this.#client.rpc.getProgramAccounts(id, requestOptions as never).send();\n\n\t\tconst mapProgramAccount = (entry: ProgramAccountWire) => {\n\t\t\tconst pubkey = new PublicKey(entry.pubkey);\n\t\t\treturn {\n\t\t\t\taccount: toAccountInfo(fromKitAccount(entry.account), dataSlice),\n\t\t\t\tpubkey,\n\t\t\t};\n\t\t};\n\n\t\tif (withContext && typeof (result as unknown as ProgramAccountsWithContext).context !== 'undefined') {\n\t\t\tconst contextual = result as unknown as ProgramAccountsWithContext;\n\t\t\treturn {\n\t\t\t\tcontext: {\n\t\t\t\t\tapiVersion: contextual.context.apiVersion,\n\t\t\t\t\tslot: Number(contextual.context.slot),\n\t\t\t\t},\n\t\t\t\tvalue: contextual.value.map(mapProgramAccount),\n\t\t\t};\n\t\t}\n\n\t\treturn (result as unknown as readonly ProgramAccountWire[]).map(mapProgramAccount);\n\t}\n\n\tasync getSignatureStatuses(\n\t\tsignatures: readonly TransactionSignature[],\n\t\tconfig?: SignatureStatusConfigWithCommitment,\n\t): Promise<RpcResponseWithContext<(SignatureStatus | null)[]>> {\n\t\tconst targetCommitment = normalizeCommitment(config?.commitment) ?? this.commitment ?? DEFAULT_COMMITMENT;\n\t\tconst kitSignatures = signatures.map((signature) => signature as unknown as Signature);\n\t\tconst response = await this.#client.rpc\n\t\t\t.getSignatureStatuses(kitSignatures, {\n\t\t\t\tcommitment: targetCommitment as KitCommitment,\n\t\t\t\tsearchTransactionHistory: config?.searchTransactionHistory,\n\t\t\t} as never)\n\t\t\t.send();\n\n\t\tconst context = response.context as { slot: number | bigint; apiVersion?: string };\n\t\tconst normalizedContext: RpcContext = {\n\t\t\tapiVersion: context?.apiVersion,\n\t\t\tslot: typeof context?.slot === 'bigint' ? Number(context.slot) : (context?.slot ?? 0),\n\t\t};\n\n\t\tconst normalizedValues = (response.value as readonly (SignatureStatus | null | Record<string, unknown>)[]).map(\n\t\t\t(status) => {\n\t\t\t\tif (!status) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst record = status as Record<string, unknown>;\n\t\t\t\tconst slot = record.slot as number | bigint | undefined;\n\t\t\t\tconst confirmations = record.confirmations as number | bigint | null | undefined;\n\t\t\t\tconst normalizedConfirmations =\n\t\t\t\t\tconfirmations === null\n\t\t\t\t\t\t? null\n\t\t\t\t\t\t: confirmations === undefined\n\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t: typeof confirmations === 'bigint'\n\t\t\t\t\t\t\t\t? Number(confirmations)\n\t\t\t\t\t\t\t\t: confirmations;\n\t\t\t\treturn {\n\t\t\t\t\terr: (record.err ?? null) as SignatureStatus['err'],\n\t\t\t\t\tconfirmations: normalizedConfirmations,\n\t\t\t\t\tconfirmationStatus: record.confirmationStatus as SignatureStatus['confirmationStatus'],\n\t\t\t\t\tslot: slot === undefined ? 0 : typeof slot === 'bigint' ? Number(slot) : slot,\n\t\t\t\t} satisfies SignatureStatus;\n\t\t\t},\n\t\t);\n\n\t\treturn {\n\t\t\tcontext: normalizedContext,\n\t\t\tvalue: normalizedValues as (SignatureStatus | null)[],\n\t\t};\n\t}\n\tasync sendRawTransaction(rawTransaction: RawTransactionInput, options?: SendOptions): Promise<string> {\n\t\tconst wire = toBase64WireTransaction(rawTransaction);\n\n\t\tconst preflightCommitment =\n\t\t\tnormalizeCommitment(\n\t\t\t\toptions?.preflightCommitment ??\n\t\t\t\t\t(options as (SendOptions & { commitment?: LegacyCommitment }) | undefined)?.commitment,\n\t\t\t) ??\n\t\t\tthis.commitment ??\n\t\t\tDEFAULT_COMMITMENT;\n\t\tconst maxRetries = options?.maxRetries === undefined ? undefined : toBigInt(options.maxRetries);\n\t\tconst minContextSlot = options?.minContextSlot === undefined ? undefined : toBigInt(options.minContextSlot);\n\t\tconst plan = this.#client.rpc.sendTransaction(wire, {\n\t\t\tencoding: 'base64',\n\t\t\tmaxRetries,\n\t\t\tminContextSlot,\n\t\t\tpreflightCommitment: preflightCommitment as KitCommitment,\n\t\t\tskipPreflight: options?.skipPreflight,\n\t\t});\n\n\t\treturn await plan.send();\n\t}\n\n\tasync confirmTransaction(\n\t\tsignature: TransactionSignature,\n\t\tcommitment?: LegacyCommitment,\n\t): Promise<RpcResponseWithContext<SignatureStatus | null>> {\n\t\tconst normalizedCommitment = normalizeCommitment(commitment);\n\t\tconst response = await this.getSignatureStatuses([signature], {\n\t\t\tcommitment: normalizedCommitment ?? this.commitment ?? DEFAULT_COMMITMENT,\n\t\t\tsearchTransactionHistory: true,\n\t\t});\n\n\t\treturn {\n\t\t\tcontext: response.context,\n\t\t\tvalue: response.value[0] ?? null,\n\t\t};\n\t}\n\n\tasync simulateTransaction(\n\t\ttransaction: RawTransactionInput,\n\t\tconfig?: SimulateTransactionConfig,\n\t): Promise<RpcResponseWithContext<SimulatedTransactionResponse>> {\n\t\tconst wire = toBase64WireTransaction(transaction);\n\t\tconst commitment = normalizeCommitment(config?.commitment) ?? this.commitment ?? DEFAULT_COMMITMENT;\n\t\tconst baseConfig = {\n\t\t\t...(config ?? {}),\n\t\t\tcommitment,\n\t\t};\n\t\tconst mergedConfig = {\n\t\t\t...DEFAULT_SIMULATION_CONFIG,\n\t\t\t...baseConfig,\n\t\t\tcommitment: commitment as KitCommitment,\n\t\t};\n\t\tconst normalizedConfig =\n\t\t\tmergedConfig.sigVerify === true && mergedConfig.replaceRecentBlockhash !== false\n\t\t\t\t? { ...mergedConfig, replaceRecentBlockhash: false }\n\t\t\t\t: mergedConfig;\n\n\t\tconst response = await this.#client.rpc.simulateTransaction(wire, normalizedConfig as never).send();\n\n\t\treturn {\n\t\t\tcontext: {\n\t\t\t\tapiVersion: (response.context as Record<string, unknown>)?.apiVersion as string | undefined,\n\t\t\t\tslot: Number((response.context as Record<string, unknown>)?.slot ?? 0),\n\t\t\t},\n\t\t\tvalue: response.value as unknown as SimulatedTransactionResponse,\n\t\t};\n\t}\n}\n","import { type PublicKey, TransactionInstruction, SystemProgram as Web3SystemProgram } from '@solana/web3.js';\n\ntype TransferParams = Readonly<{\n\tfromPubkey: PublicKey;\n\tlamports: number | bigint;\n\ttoPubkey: PublicKey;\n}>;\n\nconst TRANSFER_INSTRUCTION_INDEX = 2;\n\nexport const SystemProgram = Object.freeze({\n\t...Web3SystemProgram,\n\ttransfer({ fromPubkey, toPubkey, lamports }: TransferParams): TransactionInstruction {\n\t\tconst data = Buffer.alloc(12);\n\t\tdata.writeUInt32LE(TRANSFER_INSTRUCTION_INDEX, 0);\n\t\tdata.writeBigUInt64LE(BigInt(lamports), 4);\n\t\treturn new TransactionInstruction({\n\t\t\tdata,\n\t\t\tkeys: [\n\t\t\t\t{ isSigner: true, isWritable: true, pubkey: fromPubkey },\n\t\t\t\t{ isSigner: false, isWritable: true, pubkey: toPubkey },\n\t\t\t],\n\t\t\tprogramId: Web3SystemProgram.programId,\n\t\t});\n\t},\n});\n","import type {\n\tCommitment,\n\tTransaction as LegacyTransaction,\n\tVersionedTransaction as LegacyVersionedTransaction,\n\tSendOptions,\n\tSigner,\n} from '@solana/web3.js';\nimport {\n\tVersionedTransaction as VersionedTransactionClass,\n\tLAMPORTS_PER_SOL as WEB3_LAMPORTS_PER_SOL,\n} from '@solana/web3.js';\nimport type { Connection } from './connection';\n\nexport const LAMPORTS_PER_SOL = WEB3_LAMPORTS_PER_SOL;\n\ntype SendAndConfirmOptions = SendOptions & {\n\tcommitment?: Commitment;\n};\n\nfunction serializeTransactionBytes(input: LegacyTransaction | LegacyVersionedTransaction): Uint8Array {\n\tif (input instanceof VersionedTransactionClass) {\n\t\treturn input.serialize();\n\t}\n\treturn (input as LegacyTransaction).serialize({ requireAllSignatures: false });\n}\n\nexport function compileFromCompat(transaction: LegacyTransaction | LegacyVersionedTransaction): string {\n\tconst bytes = serializeTransactionBytes(transaction);\n\treturn Buffer.from(bytes).toString('base64');\n}\n\nfunction applySigners(\n\ttransaction: LegacyTransaction | LegacyVersionedTransaction,\n\tsigners: readonly Signer[] = [],\n): void {\n\tif (!signers.length) {\n\t\treturn;\n\t}\n\tif (transaction instanceof VersionedTransactionClass) {\n\t\ttransaction.sign([...signers]);\n\t} else {\n\t\t(transaction as LegacyTransaction).partialSign(...signers);\n\t}\n}\n\nexport async function sendAndConfirmTransaction(\n\tconnection: Connection,\n\ttransaction: LegacyTransaction | LegacyVersionedTransaction,\n\tsigners: readonly Signer[] = [],\n\toptions: SendAndConfirmOptions = {},\n): Promise<string> {\n\tapplySigners(transaction, signers);\n\tconst serialized = compileFromCompat(transaction);\n\tconst raw = Buffer.from(serialized, 'base64');\n\tconst signature = await connection.sendRawTransaction(raw, options);\n\tconst commitment = options.commitment ?? connection.commitment ?? 'confirmed';\n\tconst confirmation = await connection.confirmTransaction(signature, commitment);\n\tif (confirmation.value?.err) {\n\t\tthrow new Error('Transaction failed');\n\t}\n\treturn signature;\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import { SystemProgram as SystemProgram$1, TransactionInstruction, PublicKey, Transaction, VersionedTransaction, LAMPORTS_PER_SOL as LAMPORTS_PER_SOL$1 } from '@solana/web3.js';
2
2
  export { Keypair, PublicKey, Transaction, TransactionInstruction, VersionedTransaction } from '@solana/web3.js';
3
3
  import { fromLegacyPublicKey, fromLegacyTransactionInstruction } from '@solana/compat';
4
- import { createKeyPairSignerFromBytes, AccountRole } from '@solana/kit';
5
- import { createSolanaRpcClient } from '@solana/client';
4
+ import { createSolanaRpc, createSolanaRpcSubscriptions, getBase64EncodedWireTransaction, createKeyPairSignerFromBytes, AccountRole } from '@solana/kit';
5
+ import { createBlockHeightExceedencePromiseFactory, createRecentSignatureConfirmationPromiseFactory, waitForRecentTransactionConfirmation } from '@solana/transaction-confirmation';
6
6
 
7
7
  var __defProp = Object.defineProperty;
8
8
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
@@ -51,12 +51,99 @@ function fromWeb3Instruction(legacyInstruction) {
51
51
  return fromLegacyTransactionInstruction(legacyInstruction);
52
52
  }
53
53
  __name(fromWeb3Instruction, "fromWeb3Instruction");
54
- var DEFAULT_COMMITMENT = "confirmed";
54
+ function createChainedAbortController(parent) {
55
+ const controller = new AbortController();
56
+ if (!parent) {
57
+ return controller;
58
+ }
59
+ if (parent.aborted) {
60
+ controller.abort(parent.reason);
61
+ return controller;
62
+ }
63
+ const onAbort = /* @__PURE__ */ __name(() => {
64
+ controller.abort(parent.reason);
65
+ parent.removeEventListener("abort", onAbort);
66
+ }, "onAbort");
67
+ parent.addEventListener("abort", onAbort, { once: true });
68
+ return controller;
69
+ }
70
+ __name(createChainedAbortController, "createChainedAbortController");
71
+ function toBigint(value) {
72
+ if (value === void 0) {
73
+ return void 0;
74
+ }
75
+ return typeof value === "bigint" ? value : BigInt(Math.floor(value));
76
+ }
77
+ __name(toBigint, "toBigint");
55
78
  var DEFAULT_SIMULATION_CONFIG = Object.freeze({
56
79
  encoding: "base64",
57
80
  replaceRecentBlockhash: true,
58
81
  sigVerify: false
59
82
  });
83
+ function createSolanaRpcClient(config) {
84
+ const endpoint = config.endpoint;
85
+ const websocketEndpoint = config.websocketEndpoint ?? endpoint;
86
+ const commitment = config.commitment ?? "confirmed";
87
+ const rpc = createSolanaRpc(endpoint, config.rpcConfig);
88
+ const rpcSubscriptions = createSolanaRpcSubscriptions(websocketEndpoint, config.rpcSubscriptionsConfig);
89
+ async function sendAndConfirmTransaction2(transaction, options = {}) {
90
+ const abortController = createChainedAbortController(options.abortSignal);
91
+ const targetCommitment = options.commitment ?? commitment;
92
+ const wireTransaction = getBase64EncodedWireTransaction(transaction);
93
+ const response = await rpc.sendTransaction(wireTransaction, {
94
+ encoding: "base64",
95
+ maxRetries: toBigint(options.maxRetries),
96
+ minContextSlot: toBigint(options.minContextSlot),
97
+ preflightCommitment: targetCommitment,
98
+ skipPreflight: options.skipPreflight
99
+ }).send({ abortSignal: abortController.signal });
100
+ const getBlockHeightExceedencePromise = createBlockHeightExceedencePromiseFactory({
101
+ rpc,
102
+ rpcSubscriptions
103
+ });
104
+ const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory({
105
+ rpc,
106
+ rpcSubscriptions
107
+ });
108
+ await waitForRecentTransactionConfirmation({
109
+ abortSignal: abortController.signal,
110
+ commitment: targetCommitment,
111
+ getBlockHeightExceedencePromise,
112
+ getRecentSignatureConfirmationPromise,
113
+ transaction
114
+ });
115
+ return response;
116
+ }
117
+ __name(sendAndConfirmTransaction2, "sendAndConfirmTransaction");
118
+ async function simulateTransaction(transaction, options = {}) {
119
+ const wireTransaction = getBase64EncodedWireTransaction(transaction);
120
+ const baseConfig = options.config ?? {};
121
+ const mergedConfig = {
122
+ ...DEFAULT_SIMULATION_CONFIG,
123
+ ...baseConfig,
124
+ commitment: baseConfig.commitment ?? options.commitment ?? commitment
125
+ };
126
+ const normalizedConfig = mergedConfig.sigVerify === true && mergedConfig.replaceRecentBlockhash !== false ? { ...mergedConfig, replaceRecentBlockhash: false } : mergedConfig;
127
+ return rpc.simulateTransaction(wireTransaction, normalizedConfig).send({ abortSignal: options.abortSignal });
128
+ }
129
+ __name(simulateTransaction, "simulateTransaction");
130
+ return {
131
+ commitment,
132
+ endpoint,
133
+ rpc,
134
+ rpcSubscriptions,
135
+ sendAndConfirmTransaction: sendAndConfirmTransaction2,
136
+ simulateTransaction,
137
+ websocketEndpoint
138
+ };
139
+ }
140
+ __name(createSolanaRpcClient, "createSolanaRpcClient");
141
+ var DEFAULT_COMMITMENT = "confirmed";
142
+ var DEFAULT_SIMULATION_CONFIG2 = Object.freeze({
143
+ encoding: "base64",
144
+ replaceRecentBlockhash: true,
145
+ sigVerify: false
146
+ });
60
147
  function normalizeCommitment(commitment) {
61
148
  if (commitment === void 0 || commitment === null) {
62
149
  return void 0;
@@ -344,7 +431,7 @@ var Connection = class {
344
431
  commitment
345
432
  };
346
433
  const mergedConfig = {
347
- ...DEFAULT_SIMULATION_CONFIG,
434
+ ...DEFAULT_SIMULATION_CONFIG2,
348
435
  ...baseConfig,
349
436
  commitment
350
437
  };