@solana/sysvars 2.0.0-rc.1 → 2.0.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,5 @@
1
1
  [![npm][npm-image]][npm-url]
2
2
  [![npm-downloads][npm-downloads-image]][npm-url]
3
- [![semantic-release][semantic-release-image]][semantic-release-url]
4
3
  <br />
5
4
  [![code-style-prettier][code-style-prettier-image]][code-style-prettier-url]
6
5
 
@@ -9,8 +8,6 @@
9
8
  [npm-downloads-image]: https://img.shields.io/npm/dm/@solana/sysvars/rc.svg?style=flat
10
9
  [npm-image]: https://img.shields.io/npm/v/@solana/sysvars/rc.svg?style=flat
11
10
  [npm-url]: https://www.npmjs.com/package/@solana/sysvars/v/rc
12
- [semantic-release-image]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
13
- [semantic-release-url]: https://github.com/semantic-release/semantic-release
14
11
 
15
12
  # @solana/sysvars
16
13
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/sysvar.ts","../src/clock.ts","../src/epoch-rewards.ts","../src/epoch-schedule.ts","../src/fees.ts","../src/last-restart-slot.ts","../src/recent-blockhashes.ts","../src/rent.ts","../src/slot-hashes.ts","../src/slot-history.ts","../src/stake-history.ts"],"names":["fetchEncodedAccount","fetchJsonParsedAccount","getStructEncoder","getU64Encoder","getI64Encoder","getStructDecoder","getU64Decoder","getI64Decoder","combineCodec","assertAccountExists","decodeAccount","getBooleanEncoder","getBooleanDecoder","getDefaultLamportsEncoder","getDefaultLamportsDecoder","getArrayEncoder","getBlockhashEncoder","getArrayDecoder","getBlockhashDecoder","getF64Encoder","getU8Encoder","getF64Decoder","getU8Decoder","getArrayCodec","getU64Codec","createEncoder","createDecoder","SolanaError","SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH","SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE","SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS"],"mappings":"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","file":"index.browser.cjs","sourcesContent":["import {\n type FetchAccountConfig,\n fetchEncodedAccount,\n fetchJsonParsedAccount,\n type MaybeAccount,\n type MaybeEncodedAccount,\n} from '@solana/accounts';\nimport type { Address } from '@solana/addresses';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { JsonParsedSysvarAccount } from '@solana/rpc-parsed-types';\nimport type { Rpc } from '@solana/rpc-spec';\n\nexport const SYSVAR_CLOCK_ADDRESS =\n 'SysvarC1ock11111111111111111111111111111111' as Address<'SysvarC1ock11111111111111111111111111111111'>;\nexport const SYSVAR_EPOCH_REWARDS_ADDRESS =\n 'SysvarEpochRewards1111111111111111111111111' as Address<'SysvarEpochRewards1111111111111111111111111'>;\nexport const SYSVAR_EPOCH_SCHEDULE_ADDRESS =\n 'SysvarEpochSchedu1e111111111111111111111111' as Address<'SysvarEpochSchedu1e111111111111111111111111'>;\nexport const SYSVAR_FEES_ADDRESS =\n 'SysvarFees111111111111111111111111111111111' as Address<'SysvarFees111111111111111111111111111111111'>;\nexport const SYSVAR_INSTRUCTIONS_ADDRESS =\n 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;\nexport const SYSVAR_LAST_RESTART_SLOT_ADDRESS =\n 'SysvarLastRestartS1ot1111111111111111111111' as Address<'SysvarLastRestartS1ot1111111111111111111111'>;\nexport const SYSVAR_RECENT_BLOCKHASHES_ADDRESS =\n 'SysvarRecentB1ockHashes11111111111111111111' as Address<'SysvarRecentB1ockHashes11111111111111111111'>;\nexport const SYSVAR_RENT_ADDRESS =\n 'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\nexport const SYSVAR_SLOT_HASHES_ADDRESS =\n 'SysvarS1otHashes111111111111111111111111111' as Address<'SysvarS1otHashes111111111111111111111111111'>;\nexport const SYSVAR_SLOT_HISTORY_ADDRESS =\n 'SysvarS1otHistory11111111111111111111111111' as Address<'SysvarS1otHistory11111111111111111111111111'>;\nexport const SYSVAR_STAKE_HISTORY_ADDRESS =\n 'SysvarStakeHistory1111111111111111111111111' as Address<'SysvarStakeHistory1111111111111111111111111'>;\n\ntype SysvarAddress =\n | typeof SYSVAR_CLOCK_ADDRESS\n | typeof SYSVAR_EPOCH_REWARDS_ADDRESS\n | typeof SYSVAR_EPOCH_SCHEDULE_ADDRESS\n | typeof SYSVAR_FEES_ADDRESS\n | typeof SYSVAR_INSTRUCTIONS_ADDRESS\n | typeof SYSVAR_LAST_RESTART_SLOT_ADDRESS\n | typeof SYSVAR_RECENT_BLOCKHASHES_ADDRESS\n | typeof SYSVAR_RENT_ADDRESS\n | typeof SYSVAR_SLOT_HASHES_ADDRESS\n | typeof SYSVAR_SLOT_HISTORY_ADDRESS\n | typeof SYSVAR_STAKE_HISTORY_ADDRESS;\n\n/**\n * Fetch an encoded sysvar account.\n *\n * Sysvars are special accounts that contain dynamically-updated data about the\n * network cluster, the blockchain history, and the executing transaction.\n */\nexport async function fetchEncodedSysvarAccount<TAddress extends SysvarAddress>(\n rpc: Rpc<GetAccountInfoApi>,\n address: TAddress,\n config?: FetchAccountConfig,\n): Promise<MaybeEncodedAccount<TAddress>> {\n return await fetchEncodedAccount<TAddress>(rpc, address, config);\n}\n\n/**\n * Fetch a JSON-parsed sysvar account.\n *\n * Sysvars are special accounts that contain dynamically-updated data about the\n * network cluster, the blockchain history, and the executing transaction.\n */\nexport async function fetchJsonParsedSysvarAccount<TAddress extends SysvarAddress>(\n rpc: Rpc<GetAccountInfoApi>,\n address: TAddress,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<JsonParsedSysvarAccount, TAddress> | MaybeEncodedAccount<TAddress>> {\n return await fetchJsonParsedAccount<JsonParsedSysvarAccount, TAddress>(rpc, address, config);\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Epoch, Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_CLOCK_ADDRESS } from './sysvar';\n\ntype UnixTimestamp = bigint;\n\ntype SysvarClockSize = 40;\n\n/**\n * The `Clock` sysvar.\n *\n * Information about the network’s clock, ticks, slots, etc.\n */\nexport type SysvarClock = Readonly<{\n epoch: Epoch;\n epochStartTimestamp: UnixTimestamp;\n leaderScheduleEpoch: Epoch;\n slot: Slot;\n unixTimestamp: UnixTimestamp;\n}>;\n\nexport function getSysvarClockEncoder(): FixedSizeEncoder<SysvarClock, SysvarClockSize> {\n return getStructEncoder([\n ['slot', getU64Encoder()],\n ['epochStartTimestamp', getI64Encoder()],\n ['epoch', getU64Encoder()],\n ['leaderScheduleEpoch', getU64Encoder()],\n ['unixTimestamp', getI64Encoder()],\n ]) as FixedSizeEncoder<SysvarClock, SysvarClockSize>;\n}\n\nexport function getSysvarClockDecoder(): FixedSizeDecoder<SysvarClock, SysvarClockSize> {\n return getStructDecoder([\n ['slot', getU64Decoder()],\n ['epochStartTimestamp', getI64Decoder()],\n ['epoch', getU64Decoder()],\n ['leaderScheduleEpoch', getU64Decoder()],\n ['unixTimestamp', getI64Decoder()],\n ]) as FixedSizeDecoder<SysvarClock, SysvarClockSize>;\n}\n\nexport function getSysvarClockCodec(): FixedSizeCodec<SysvarClock, SysvarClock, SysvarClockSize> {\n return combineCodec(getSysvarClockEncoder(), getSysvarClockDecoder());\n}\n\n/**\n * Fetch the `Clock` sysvar.\n *\n * Information about the network’s clock, ticks, slots, etc.\n */\nexport async function fetchSysvarClock(rpc: Rpc<GetAccountInfoApi>, config?: FetchAccountConfig): Promise<SysvarClock> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_CLOCK_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarClockDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_EPOCH_REWARDS_ADDRESS } from './sysvar';\n\ntype SysvarEpochRewardsSize = 24;\n\n/**\n * The `EpochRewards` sysvar.\n *\n * Tracks the progress of epoch rewards distribution. It includes:\n * - Total rewards for the current epoch, in lamports.\n * - Rewards for the current epoch distributed so far, in lamports.\n * - Distribution completed block height, i.e. distribution of all staking rewards for the current\n * epoch will be completed at this block height.\n *\n * Note that `EpochRewards` only lasts for a handful of blocks at the start of\n * an epoch. When all rewards have been distributed, the sysvar is deleted.\n * See https://github.com/solana-labs/solana/blob/e0203f22dc83cb792fa97f91dbe6e924cbd08af1/docs/src/runtime/sysvars.md?plain=1#L155-L168\n */\nexport type SysvarEpochRewards = Readonly<{\n distributedRewards: bigint;\n distributionCompleteBlockHeight: bigint;\n totalRewards: bigint;\n}>;\n\nexport function getSysvarEpochRewardsEncoder(): FixedSizeEncoder<SysvarEpochRewards, SysvarEpochRewardsSize> {\n return getStructEncoder([\n ['distributionCompleteBlockHeight', getU64Encoder()],\n ['distributedRewards', getU64Encoder()],\n ['totalRewards', getU64Encoder()],\n ]) as FixedSizeEncoder<SysvarEpochRewards, SysvarEpochRewardsSize>;\n}\n\nexport function getSysvarEpochRewardsDecoder(): FixedSizeDecoder<SysvarEpochRewards, SysvarEpochRewardsSize> {\n return getStructDecoder([\n ['distributionCompleteBlockHeight', getU64Decoder()],\n ['distributedRewards', getU64Decoder()],\n ['totalRewards', getU64Decoder()],\n ]) as FixedSizeDecoder<SysvarEpochRewards, SysvarEpochRewardsSize>;\n}\n\nexport function getSysvarEpochRewardsCodec(): FixedSizeCodec<\n SysvarEpochRewards,\n SysvarEpochRewards,\n SysvarEpochRewardsSize\n> {\n return combineCodec(getSysvarEpochRewardsEncoder(), getSysvarEpochRewardsDecoder());\n}\n\n/**\n * Fetch the `EpochRewards` sysvar.\n *\n * Tracks the progress of epoch rewards distribution. It includes:\n * - Total rewards for the current epoch, in lamports.\n * - Rewards for the current epoch distributed so far, in lamports.\n * - Distribution completed block height, i.e. distribution of all staking rewards for the current\n * epoch will be completed at this block height.\n *\n * Note that `EpochRewards` only lasts for a handful of blocks at the start of\n * an epoch. When all rewards have been distributed, the sysvar is deleted.\n * See https://github.com/solana-labs/solana/blob/e0203f22dc83cb792fa97f91dbe6e924cbd08af1/docs/src/runtime/sysvars.md?plain=1#L155-L168\n */\nexport async function fetchSysvarEpochRewards(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarEpochRewards> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_EPOCH_REWARDS_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarEpochRewardsDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Epoch, Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_EPOCH_SCHEDULE_ADDRESS } from './sysvar';\n\ntype SysvarEpochScheduleSize = 33;\n\n/**\n * The `EpochSchedule` sysvar.\n *\n * Information about epoch duration.\n */\nexport type SysvarEpochSchedule = Readonly<{\n firstNormalEpoch: Epoch;\n firstNormalSlot: Slot;\n leaderScheduleSlotOffset: bigint;\n slotsPerEpoch: bigint;\n warmup: boolean;\n}>;\n\nexport function getSysvarEpochScheduleEncoder(): FixedSizeEncoder<SysvarEpochSchedule, SysvarEpochScheduleSize> {\n return getStructEncoder([\n ['slotsPerEpoch', getU64Encoder()],\n ['leaderScheduleSlotOffset', getU64Encoder()],\n ['warmup', getBooleanEncoder()],\n ['firstNormalEpoch', getU64Encoder()],\n ['firstNormalSlot', getU64Encoder()],\n ]) as FixedSizeEncoder<SysvarEpochSchedule, SysvarEpochScheduleSize>;\n}\n\nexport function getSysvarEpochScheduleDecoder(): FixedSizeDecoder<SysvarEpochSchedule, SysvarEpochScheduleSize> {\n return getStructDecoder([\n ['slotsPerEpoch', getU64Decoder()],\n ['leaderScheduleSlotOffset', getU64Decoder()],\n ['warmup', getBooleanDecoder()],\n ['firstNormalEpoch', getU64Decoder()],\n ['firstNormalSlot', getU64Decoder()],\n ]) as FixedSizeDecoder<SysvarEpochSchedule, SysvarEpochScheduleSize>;\n}\n\nexport function getSysvarEpochScheduleCodec(): FixedSizeCodec<\n SysvarEpochSchedule,\n SysvarEpochSchedule,\n SysvarEpochScheduleSize\n> {\n return combineCodec(getSysvarEpochScheduleEncoder(), getSysvarEpochScheduleDecoder());\n}\n\n/**\n * Fetch the `EpochSchedule` sysvar.\n *\n * Information about epoch duration.\n */\nexport async function fetchSysvarEpochSchedule(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarEpochSchedule> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_EPOCH_SCHEDULE_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarEpochScheduleDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getStructDecoder,\n getStructEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport {\n getDefaultLamportsDecoder,\n getDefaultLamportsEncoder,\n LamportsUnsafeBeyond2Pow53Minus1,\n} from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_FEES_ADDRESS } from './sysvar';\n\ntype FeeCalculator = Readonly<{\n lamportsPerSignature: LamportsUnsafeBeyond2Pow53Minus1;\n}>;\n\ntype SysvarFeesSize = 8;\n\n/**\n * The `Fees` sysvar.\n *\n * Current cluster fees.\n */\nexport type SysvarFees = Readonly<{\n feeCalculator: FeeCalculator;\n}>;\n\nexport function getSysvarFeesEncoder(): FixedSizeEncoder<SysvarFees, SysvarFeesSize> {\n return getStructEncoder([\n ['feeCalculator', getStructEncoder([['lamportsPerSignature', getDefaultLamportsEncoder()]])],\n ]) as FixedSizeEncoder<SysvarFees, SysvarFeesSize>;\n}\n\nexport function getSysvarFeesDecoder(): FixedSizeDecoder<SysvarFees, SysvarFeesSize> {\n return getStructDecoder([\n ['feeCalculator', getStructDecoder([['lamportsPerSignature', getDefaultLamportsDecoder()]])],\n ]) as FixedSizeDecoder<SysvarFees, SysvarFeesSize>;\n}\n\nexport function getSysvarFeesCodec(): FixedSizeCodec<SysvarFees, SysvarFees, SysvarFeesSize> {\n return combineCodec(getSysvarFeesEncoder(), getSysvarFeesDecoder());\n}\n\n/**\n * Fetch the `Fees` sysvar.\n *\n * Current cluster fees.\n */\nexport async function fetchSysvarFees(rpc: Rpc<GetAccountInfoApi>, config?: FetchAccountConfig): Promise<SysvarFees> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_FEES_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarFeesDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_LAST_RESTART_SLOT_ADDRESS } from './sysvar';\n\ntype SysvarLastRestartSlotSize = 8;\n\n/**\n * The `LastRestartSlot` sysvar.\n *\n * Information about the last restart slot (hard fork).\n *\n * The `LastRestartSlot` sysvar provides access to the last restart slot kept in the\n * bank fork for the slot on the fork that executes the current transaction.\n * In case there was no fork it returns `0`.\n */\nexport type SysvarLastRestartSlot = Readonly<{\n lastRestartSlot: Slot;\n}>;\n\nexport function getSysvarLastRestartSlotEncoder(): FixedSizeEncoder<SysvarLastRestartSlot, SysvarLastRestartSlotSize> {\n return getStructEncoder([['lastRestartSlot', getU64Encoder()]]) as FixedSizeEncoder<\n SysvarLastRestartSlot,\n SysvarLastRestartSlotSize\n >;\n}\n\nexport function getSysvarLastRestartSlotDecoder(): FixedSizeDecoder<SysvarLastRestartSlot, SysvarLastRestartSlotSize> {\n return getStructDecoder([['lastRestartSlot', getU64Decoder()]]) as FixedSizeDecoder<\n SysvarLastRestartSlot,\n SysvarLastRestartSlotSize\n >;\n}\n\nexport function getSysvarLastRestartSlotCodec(): FixedSizeCodec<\n SysvarLastRestartSlot,\n SysvarLastRestartSlot,\n SysvarLastRestartSlotSize\n> {\n return combineCodec(getSysvarLastRestartSlotEncoder(), getSysvarLastRestartSlotDecoder());\n}\n\n/**\n * Fetch the `LastRestartSlot` sysvar.\n *\n * Information about the last restart slot (hard fork).\n *\n * The `LastRestartSlot` sysvar provides access to the last restart slot kept in the\n * bank fork for the slot on the fork that executes the current transaction.\n * In case there was no fork it returns `0`.\n */\nexport async function fetchSysvarLastRestartSlot(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarLastRestartSlot> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_LAST_RESTART_SLOT_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarLastRestartSlotDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport {\n type Blockhash,\n getBlockhashDecoder,\n getBlockhashEncoder,\n getDefaultLamportsDecoder,\n getDefaultLamportsEncoder,\n type LamportsUnsafeBeyond2Pow53Minus1,\n} from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_RECENT_BLOCKHASHES_ADDRESS } from './sysvar';\n\ntype FeeCalculator = Readonly<{\n lamportsPerSignature: LamportsUnsafeBeyond2Pow53Minus1;\n}>;\ntype Entry = Readonly<{\n blockhash: Blockhash;\n feeCalculator: FeeCalculator;\n}>;\n\n/**\n * The `RecentBlockhashes` sysvar.\n *\n * Information about recent blocks and their fee calculators.\n */\nexport type SysvarRecentBlockhashes = Entry[];\n\nexport function getSysvarRecentBlockhashesEncoder(): VariableSizeEncoder<SysvarRecentBlockhashes> {\n return getArrayEncoder(\n getStructEncoder([\n ['blockhash', getBlockhashEncoder()],\n ['feeCalculator', getStructEncoder([['lamportsPerSignature', getDefaultLamportsEncoder()]])],\n ]),\n );\n}\n\nexport function getSysvarRecentBlockhashesDecoder(): VariableSizeDecoder<SysvarRecentBlockhashes> {\n return getArrayDecoder(\n getStructDecoder([\n ['blockhash', getBlockhashDecoder()],\n ['feeCalculator', getStructDecoder([['lamportsPerSignature', getDefaultLamportsDecoder()]])],\n ]),\n );\n}\n\nexport function getSysvarRecentBlockhashesCodec(): VariableSizeCodec<SysvarRecentBlockhashes> {\n return combineCodec(getSysvarRecentBlockhashesEncoder(), getSysvarRecentBlockhashesDecoder());\n}\n\n/**\n * Fetch the `RecentBlockhashes` sysvar.\n *\n * Information about recent blocks and their fee calculators.\n */\nexport async function fetchSysvarRecentBlockhashes(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarRecentBlockhashes> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_RECENT_BLOCKHASHES_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarRecentBlockhashesDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getF64Decoder,\n getF64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport {\n getDefaultLamportsDecoder,\n getDefaultLamportsEncoder,\n type LamportsUnsafeBeyond2Pow53Minus1,\n} from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_RENT_ADDRESS } from './sysvar';\n\ntype SysvarRentSize = 17;\n\n/**\n * The `Rent` sysvar.\n *\n * Configuration for network rent.\n */\nexport type SysvarRent = Readonly<{\n burnPercent: number;\n exemptionThreshold: number;\n lamportsPerByteYear: LamportsUnsafeBeyond2Pow53Minus1;\n}>;\n\nexport function getSysvarRentEncoder(): FixedSizeEncoder<SysvarRent, SysvarRentSize> {\n return getStructEncoder([\n ['lamportsPerByteYear', getDefaultLamportsEncoder()],\n ['exemptionThreshold', getF64Encoder()],\n ['burnPercent', getU8Encoder()],\n ]) as FixedSizeEncoder<SysvarRent, SysvarRentSize>;\n}\n\nexport function getSysvarRentDecoder(): FixedSizeDecoder<SysvarRent, SysvarRentSize> {\n return getStructDecoder([\n ['lamportsPerByteYear', getDefaultLamportsDecoder()],\n ['exemptionThreshold', getF64Decoder()],\n ['burnPercent', getU8Decoder()],\n ]) as FixedSizeDecoder<SysvarRent, SysvarRentSize>;\n}\n\nexport function getSysvarRentCodec(): FixedSizeCodec<SysvarRent, SysvarRent, SysvarRentSize> {\n return combineCodec(getSysvarRentEncoder(), getSysvarRentDecoder());\n}\n\n/**\n * Fetch the `Rent` sysvar.\n *\n * Configuration for network rent.\n */\nexport async function fetchSysvarRent(rpc: Rpc<GetAccountInfoApi>, config?: FetchAccountConfig): Promise<SysvarRent> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_RENT_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarRentDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport { type Blockhash, getBlockhashDecoder, getBlockhashEncoder, type Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_SLOT_HASHES_ADDRESS } from './sysvar';\n\ntype Entry = Readonly<{\n hash: Blockhash;\n slot: Slot;\n}>;\n\n/**\n * The `SlotHashes` sysvar.\n *\n * The most recent hashes of a slot's parent banks.\n */\nexport type SysvarSlotHashes = Entry[];\n\nexport function getSysvarSlotHashesEncoder(): VariableSizeEncoder<SysvarSlotHashes> {\n return getArrayEncoder(\n getStructEncoder([\n ['slot', getU64Encoder()],\n ['hash', getBlockhashEncoder()],\n ]),\n );\n}\n\nexport function getSysvarSlotHashesDecoder(): VariableSizeDecoder<SysvarSlotHashes> {\n return getArrayDecoder(\n getStructDecoder([\n ['slot', getU64Decoder()],\n ['hash', getBlockhashDecoder()],\n ]),\n );\n}\n\nexport function getSysvarSlotHashesCodec(): VariableSizeCodec<SysvarSlotHashes> {\n return combineCodec(getSysvarSlotHashesEncoder(), getSysvarSlotHashesDecoder());\n}\n\n/**\n * Fetch the `SlotHashes` sysvar.\n *\n * The most recent hashes of a slot's parent banks.\n */\nexport async function fetchSysvarSlotHashes(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarSlotHashes> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_SLOT_HASHES_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarSlotHashesDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n createDecoder,\n createEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getArrayCodec,\n getU64Codec,\n getU64Decoder,\n getU64Encoder,\n ReadonlyUint8Array,\n} from '@solana/codecs';\nimport {\n SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS,\n SolanaError,\n} from '@solana/errors';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_SLOT_HISTORY_ADDRESS } from './sysvar';\n\nconst BITVEC_DISCRIMINATOR = 1;\n// Max number of bits in the bitvector.\n// The Solana SDK defines a constant `MAX_ENTRIES` representing the maximum\n// number of bits that can be represented by the bitvector in the `SlotHistory`\n// sysvar. This value is 1024 * 1024 = 1_048_576.\n// See https://github.com/solana-labs/solana/blob/e0203f22dc83cb792fa97f91dbe6e924cbd08af1/sdk/program/src/slot_history.rs#L43\nconst BITVEC_NUM_BITS = 1024 * 1024;\n// The length of the bitvector in blocks.\n// At 64 bits per block, this is 1024 * 1024 / 64 = 16_384.\nconst BITVEC_LENGTH = BITVEC_NUM_BITS / 64;\n\nconst SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE =\n 1 + // Discriminator\n 8 + // bitvector length (u64)\n BITVEC_LENGTH * 8 +\n 8 + // Number of bits (u64)\n 8; // Next slot (u64)\n\nlet memoizedU64Encoder: FixedSizeEncoder<bigint, 8> | undefined;\nlet memoizedU64Decoder: FixedSizeDecoder<bigint, 8> | undefined;\nlet memoizedU64ArrayEncoder: FixedSizeEncoder<bigint[]> | undefined;\nlet memoizedU64ArrayDecoder: FixedSizeDecoder<bigint[]> | undefined;\n\nfunction getMemoizedU64Encoder(): FixedSizeEncoder<bigint, 8> {\n if (!memoizedU64Encoder) memoizedU64Encoder = getU64Encoder();\n return memoizedU64Encoder;\n}\nfunction getMemoizedU64Decoder(): FixedSizeDecoder<bigint, 8> {\n if (!memoizedU64Decoder) memoizedU64Decoder = getU64Decoder();\n return memoizedU64Decoder;\n}\nfunction getMemoizedU64ArrayEncoder(): FixedSizeEncoder<bigint[], typeof BITVEC_LENGTH> {\n if (!memoizedU64ArrayEncoder) memoizedU64ArrayEncoder = getArrayCodec(getU64Codec(), { size: BITVEC_LENGTH });\n return memoizedU64ArrayEncoder;\n}\nfunction getMemoizedU64ArrayDecoder(): FixedSizeDecoder<bigint[], typeof BITVEC_LENGTH> {\n if (!memoizedU64ArrayDecoder) memoizedU64ArrayDecoder = getArrayCodec(getU64Codec(), { size: BITVEC_LENGTH });\n return memoizedU64ArrayDecoder;\n}\n\ntype SysvarSlotHistorySize = typeof SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE;\n\n/**\n * The `SlotHistory` sysvar.\n *\n * A bitvector of slots present over the last epoch.\n */\nexport type SysvarSlotHistory = {\n bits: bigint[];\n nextSlot: Slot;\n};\n\nexport function getSysvarSlotHistoryEncoder(): FixedSizeEncoder<SysvarSlotHistory, SysvarSlotHistorySize> {\n return createEncoder({\n fixedSize: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE,\n write: (value: SysvarSlotHistory, bytes, offset) => {\n // First byte is the bitvector discriminator.\n bytes.set([BITVEC_DISCRIMINATOR], offset);\n offset += 1;\n // Next 8 bytes are the bitvector length.\n getMemoizedU64Encoder().write(BigInt(BITVEC_LENGTH), bytes, offset);\n offset += 8;\n // Next `BITVEC_LENGTH` bytes are the bitvector.\n // Any missing bits are assumed to be 0.\n getMemoizedU64ArrayEncoder().write(value.bits, bytes, offset);\n offset += BITVEC_LENGTH * 8;\n // Next 8 bytes are the number of bits.\n getMemoizedU64Encoder().write(BigInt(BITVEC_NUM_BITS), bytes, offset);\n offset += 8;\n // Next 8 bytes are the next slot.\n getMemoizedU64Encoder().write(value.nextSlot, bytes, offset);\n offset += 8;\n return offset;\n },\n });\n}\n\nexport function getSysvarSlotHistoryDecoder(): FixedSizeDecoder<SysvarSlotHistory, SysvarSlotHistorySize> {\n return createDecoder({\n fixedSize: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE,\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n // Byte length should be exact.\n if (bytes.length != SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH, {\n actual: bytes.length,\n expected: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE,\n });\n }\n // First byte is the bitvector discriminator.\n const discriminator = bytes[offset];\n offset += 1;\n if (discriminator !== BITVEC_DISCRIMINATOR) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE, {\n actual: discriminator,\n expected: BITVEC_DISCRIMINATOR,\n });\n }\n // Next 8 bytes are the bitvector length.\n const bitVecLength = getMemoizedU64Decoder().read(bytes, offset)[0];\n offset += 8;\n if (bitVecLength !== BigInt(BITVEC_LENGTH)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, {\n actual: bitVecLength,\n codecDescription: 'SysvarSlotHistoryCodec',\n expected: BITVEC_LENGTH,\n });\n }\n // Next `BITVEC_LENGTH` bytes are the bitvector.\n const bits = getMemoizedU64ArrayDecoder().read(bytes, offset)[0];\n offset += BITVEC_LENGTH * 8;\n // Next 8 bytes are the number of bits.\n const numBits = getMemoizedU64Decoder().read(bytes, offset)[0];\n offset += 8;\n if (numBits !== BigInt(BITVEC_NUM_BITS)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, {\n actual: numBits,\n codecDescription: 'SysvarSlotHistoryCodec',\n expected: BITVEC_NUM_BITS,\n });\n }\n // Next 8 bytes are the next slot.\n const nextSlot = getMemoizedU64Decoder().read(bytes, offset)[0];\n offset += 8;\n return [\n {\n bits,\n nextSlot,\n },\n offset,\n ];\n },\n });\n}\n\nexport function getSysvarSlotHistoryCodec(): FixedSizeCodec<\n SysvarSlotHistory,\n SysvarSlotHistory,\n SysvarSlotHistorySize\n> {\n return combineCodec(getSysvarSlotHistoryEncoder(), getSysvarSlotHistoryDecoder());\n}\n\n/**\n * Fetch the `SlotHistory` sysvar.\n *\n * A bitvector of slots present over the last epoch.\n */\nexport async function fetchSysvarSlotHistory(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarSlotHistory> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_SLOT_HISTORY_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarSlotHistoryDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport {\n getDefaultLamportsDecoder,\n getDefaultLamportsEncoder,\n type LamportsUnsafeBeyond2Pow53Minus1,\n} from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_STAKE_HISTORY_ADDRESS } from './sysvar';\n\ntype Entry = Readonly<{\n activating: LamportsUnsafeBeyond2Pow53Minus1;\n deactivating: LamportsUnsafeBeyond2Pow53Minus1;\n effective: LamportsUnsafeBeyond2Pow53Minus1;\n}>;\n\n/**\n * The `StakeHistory` sysvar.\n *\n * History of stake activations and de-activations.\n */\nexport type SysvarStakeHistory = Entry[];\n\nexport function getSysvarStakeHistoryEncoder(): VariableSizeEncoder<SysvarStakeHistory> {\n return getArrayEncoder(\n getStructEncoder([\n ['effective', getDefaultLamportsEncoder()],\n ['activating', getDefaultLamportsEncoder()],\n ['deactivating', getDefaultLamportsEncoder()],\n ]),\n );\n}\n\nexport function getSysvarStakeHistoryDecoder(): VariableSizeDecoder<SysvarStakeHistory> {\n return getArrayDecoder(\n getStructDecoder([\n ['effective', getDefaultLamportsDecoder()],\n ['activating', getDefaultLamportsDecoder()],\n ['deactivating', getDefaultLamportsDecoder()],\n ]),\n );\n}\n\nexport function getSysvarStakeHistoryCodec(): VariableSizeCodec<SysvarStakeHistory> {\n return combineCodec(getSysvarStakeHistoryEncoder(), getSysvarStakeHistoryDecoder());\n}\n\n/**\n * Fetch the `StakeHistory` sysvar.\n *\n * History of stake activations and de-activations.\n */\nexport async function fetchSysvarStakeHistory(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarStakeHistory> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_STAKE_HISTORY_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarStakeHistoryDecoder());\n return decoded.data;\n}\n"]}
1
+ {"version":3,"sources":["../src/sysvar.ts","../src/clock.ts","../src/epoch-rewards.ts","../src/epoch-schedule.ts","../src/fees.ts","../src/last-restart-slot.ts","../src/recent-blockhashes.ts","../src/rent.ts","../src/slot-hashes.ts","../src/slot-history.ts","../src/stake-history.ts"],"names":["fetchEncodedAccount","fetchJsonParsedAccount","getStructEncoder","getU64Encoder","getI64Encoder","getStructDecoder","getU64Decoder","getI64Decoder","combineCodec","assertAccountExists","decodeAccount","getBooleanEncoder","getBooleanDecoder","getDefaultLamportsEncoder","getDefaultLamportsDecoder","getArrayEncoder","getBlockhashEncoder","getArrayDecoder","getBlockhashDecoder","getF64Encoder","getU8Encoder","getF64Decoder","getU8Decoder","getArrayCodec","getU64Codec","createEncoder","createDecoder","SolanaError","SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH","SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE","SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS"],"mappings":"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","file":"index.browser.cjs","sourcesContent":["import {\n type FetchAccountConfig,\n fetchEncodedAccount,\n fetchJsonParsedAccount,\n type MaybeAccount,\n type MaybeEncodedAccount,\n} from '@solana/accounts';\nimport type { Address } from '@solana/addresses';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { JsonParsedSysvarAccount } from '@solana/rpc-parsed-types';\nimport type { Rpc } from '@solana/rpc-spec';\n\nexport const SYSVAR_CLOCK_ADDRESS =\n 'SysvarC1ock11111111111111111111111111111111' as Address<'SysvarC1ock11111111111111111111111111111111'>;\nexport const SYSVAR_EPOCH_REWARDS_ADDRESS =\n 'SysvarEpochRewards1111111111111111111111111' as Address<'SysvarEpochRewards1111111111111111111111111'>;\nexport const SYSVAR_EPOCH_SCHEDULE_ADDRESS =\n 'SysvarEpochSchedu1e111111111111111111111111' as Address<'SysvarEpochSchedu1e111111111111111111111111'>;\nexport const SYSVAR_FEES_ADDRESS =\n 'SysvarFees111111111111111111111111111111111' as Address<'SysvarFees111111111111111111111111111111111'>;\nexport const SYSVAR_INSTRUCTIONS_ADDRESS =\n 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;\nexport const SYSVAR_LAST_RESTART_SLOT_ADDRESS =\n 'SysvarLastRestartS1ot1111111111111111111111' as Address<'SysvarLastRestartS1ot1111111111111111111111'>;\nexport const SYSVAR_RECENT_BLOCKHASHES_ADDRESS =\n 'SysvarRecentB1ockHashes11111111111111111111' as Address<'SysvarRecentB1ockHashes11111111111111111111'>;\nexport const SYSVAR_RENT_ADDRESS =\n 'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\nexport const SYSVAR_SLOT_HASHES_ADDRESS =\n 'SysvarS1otHashes111111111111111111111111111' as Address<'SysvarS1otHashes111111111111111111111111111'>;\nexport const SYSVAR_SLOT_HISTORY_ADDRESS =\n 'SysvarS1otHistory11111111111111111111111111' as Address<'SysvarS1otHistory11111111111111111111111111'>;\nexport const SYSVAR_STAKE_HISTORY_ADDRESS =\n 'SysvarStakeHistory1111111111111111111111111' as Address<'SysvarStakeHistory1111111111111111111111111'>;\n\ntype SysvarAddress =\n | typeof SYSVAR_CLOCK_ADDRESS\n | typeof SYSVAR_EPOCH_REWARDS_ADDRESS\n | typeof SYSVAR_EPOCH_SCHEDULE_ADDRESS\n | typeof SYSVAR_FEES_ADDRESS\n | typeof SYSVAR_INSTRUCTIONS_ADDRESS\n | typeof SYSVAR_LAST_RESTART_SLOT_ADDRESS\n | typeof SYSVAR_RECENT_BLOCKHASHES_ADDRESS\n | typeof SYSVAR_RENT_ADDRESS\n | typeof SYSVAR_SLOT_HASHES_ADDRESS\n | typeof SYSVAR_SLOT_HISTORY_ADDRESS\n | typeof SYSVAR_STAKE_HISTORY_ADDRESS;\n\n/**\n * Fetch an encoded sysvar account.\n *\n * Sysvars are special accounts that contain dynamically-updated data about the\n * network cluster, the blockchain history, and the executing transaction.\n */\nexport async function fetchEncodedSysvarAccount<TAddress extends SysvarAddress>(\n rpc: Rpc<GetAccountInfoApi>,\n address: TAddress,\n config?: FetchAccountConfig,\n): Promise<MaybeEncodedAccount<TAddress>> {\n return await fetchEncodedAccount<TAddress>(rpc, address, config);\n}\n\n/**\n * Fetch a JSON-parsed sysvar account.\n *\n * Sysvars are special accounts that contain dynamically-updated data about the\n * network cluster, the blockchain history, and the executing transaction.\n */\nexport async function fetchJsonParsedSysvarAccount<TAddress extends SysvarAddress>(\n rpc: Rpc<GetAccountInfoApi>,\n address: TAddress,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<JsonParsedSysvarAccount, TAddress> | MaybeEncodedAccount<TAddress>> {\n return await fetchJsonParsedAccount<JsonParsedSysvarAccount, TAddress>(rpc, address, config);\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Epoch, Slot, UnixTimestamp } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_CLOCK_ADDRESS } from './sysvar';\n\ntype SysvarClockSize = 40;\n\n/**\n * The `Clock` sysvar.\n *\n * Information about the network’s clock, ticks, slots, etc.\n */\nexport type SysvarClock = Readonly<{\n epoch: Epoch;\n epochStartTimestamp: UnixTimestamp;\n leaderScheduleEpoch: Epoch;\n slot: Slot;\n unixTimestamp: UnixTimestamp;\n}>;\n\nexport function getSysvarClockEncoder(): FixedSizeEncoder<SysvarClock, SysvarClockSize> {\n return getStructEncoder([\n ['slot', getU64Encoder()],\n ['epochStartTimestamp', getI64Encoder()],\n ['epoch', getU64Encoder()],\n ['leaderScheduleEpoch', getU64Encoder()],\n ['unixTimestamp', getI64Encoder()],\n ]) as FixedSizeEncoder<SysvarClock, SysvarClockSize>;\n}\n\nexport function getSysvarClockDecoder(): FixedSizeDecoder<SysvarClock, SysvarClockSize> {\n return getStructDecoder([\n ['slot', getU64Decoder()],\n ['epochStartTimestamp', getI64Decoder()],\n ['epoch', getU64Decoder()],\n ['leaderScheduleEpoch', getU64Decoder()],\n ['unixTimestamp', getI64Decoder()],\n ]) as FixedSizeDecoder<SysvarClock, SysvarClockSize>;\n}\n\nexport function getSysvarClockCodec(): FixedSizeCodec<SysvarClock, SysvarClock, SysvarClockSize> {\n return combineCodec(getSysvarClockEncoder(), getSysvarClockDecoder());\n}\n\n/**\n * Fetch the `Clock` sysvar.\n *\n * Information about the network’s clock, ticks, slots, etc.\n */\nexport async function fetchSysvarClock(rpc: Rpc<GetAccountInfoApi>, config?: FetchAccountConfig): Promise<SysvarClock> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_CLOCK_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarClockDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_EPOCH_REWARDS_ADDRESS } from './sysvar';\n\ntype SysvarEpochRewardsSize = 24;\n\n/**\n * The `EpochRewards` sysvar.\n *\n * Tracks the progress of epoch rewards distribution. It includes:\n * - Total rewards for the current epoch, in lamports.\n * - Rewards for the current epoch distributed so far, in lamports.\n * - Distribution completed block height, i.e. distribution of all staking rewards for the current\n * epoch will be completed at this block height.\n *\n * Note that `EpochRewards` only lasts for a handful of blocks at the start of\n * an epoch. When all rewards have been distributed, the sysvar is deleted.\n * See https://github.com/solana-labs/solana/blob/e0203f22dc83cb792fa97f91dbe6e924cbd08af1/docs/src/runtime/sysvars.md?plain=1#L155-L168\n */\nexport type SysvarEpochRewards = Readonly<{\n distributedRewards: bigint;\n distributionCompleteBlockHeight: bigint;\n totalRewards: bigint;\n}>;\n\nexport function getSysvarEpochRewardsEncoder(): FixedSizeEncoder<SysvarEpochRewards, SysvarEpochRewardsSize> {\n return getStructEncoder([\n ['distributionCompleteBlockHeight', getU64Encoder()],\n ['distributedRewards', getU64Encoder()],\n ['totalRewards', getU64Encoder()],\n ]) as FixedSizeEncoder<SysvarEpochRewards, SysvarEpochRewardsSize>;\n}\n\nexport function getSysvarEpochRewardsDecoder(): FixedSizeDecoder<SysvarEpochRewards, SysvarEpochRewardsSize> {\n return getStructDecoder([\n ['distributionCompleteBlockHeight', getU64Decoder()],\n ['distributedRewards', getU64Decoder()],\n ['totalRewards', getU64Decoder()],\n ]) as FixedSizeDecoder<SysvarEpochRewards, SysvarEpochRewardsSize>;\n}\n\nexport function getSysvarEpochRewardsCodec(): FixedSizeCodec<\n SysvarEpochRewards,\n SysvarEpochRewards,\n SysvarEpochRewardsSize\n> {\n return combineCodec(getSysvarEpochRewardsEncoder(), getSysvarEpochRewardsDecoder());\n}\n\n/**\n * Fetch the `EpochRewards` sysvar.\n *\n * Tracks the progress of epoch rewards distribution. It includes:\n * - Total rewards for the current epoch, in lamports.\n * - Rewards for the current epoch distributed so far, in lamports.\n * - Distribution completed block height, i.e. distribution of all staking rewards for the current\n * epoch will be completed at this block height.\n *\n * Note that `EpochRewards` only lasts for a handful of blocks at the start of\n * an epoch. When all rewards have been distributed, the sysvar is deleted.\n * See https://github.com/solana-labs/solana/blob/e0203f22dc83cb792fa97f91dbe6e924cbd08af1/docs/src/runtime/sysvars.md?plain=1#L155-L168\n */\nexport async function fetchSysvarEpochRewards(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarEpochRewards> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_EPOCH_REWARDS_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarEpochRewardsDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Epoch, Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_EPOCH_SCHEDULE_ADDRESS } from './sysvar';\n\ntype SysvarEpochScheduleSize = 33;\n\n/**\n * The `EpochSchedule` sysvar.\n *\n * Information about epoch duration.\n */\nexport type SysvarEpochSchedule = Readonly<{\n firstNormalEpoch: Epoch;\n firstNormalSlot: Slot;\n leaderScheduleSlotOffset: bigint;\n slotsPerEpoch: bigint;\n warmup: boolean;\n}>;\n\nexport function getSysvarEpochScheduleEncoder(): FixedSizeEncoder<SysvarEpochSchedule, SysvarEpochScheduleSize> {\n return getStructEncoder([\n ['slotsPerEpoch', getU64Encoder()],\n ['leaderScheduleSlotOffset', getU64Encoder()],\n ['warmup', getBooleanEncoder()],\n ['firstNormalEpoch', getU64Encoder()],\n ['firstNormalSlot', getU64Encoder()],\n ]) as FixedSizeEncoder<SysvarEpochSchedule, SysvarEpochScheduleSize>;\n}\n\nexport function getSysvarEpochScheduleDecoder(): FixedSizeDecoder<SysvarEpochSchedule, SysvarEpochScheduleSize> {\n return getStructDecoder([\n ['slotsPerEpoch', getU64Decoder()],\n ['leaderScheduleSlotOffset', getU64Decoder()],\n ['warmup', getBooleanDecoder()],\n ['firstNormalEpoch', getU64Decoder()],\n ['firstNormalSlot', getU64Decoder()],\n ]) as FixedSizeDecoder<SysvarEpochSchedule, SysvarEpochScheduleSize>;\n}\n\nexport function getSysvarEpochScheduleCodec(): FixedSizeCodec<\n SysvarEpochSchedule,\n SysvarEpochSchedule,\n SysvarEpochScheduleSize\n> {\n return combineCodec(getSysvarEpochScheduleEncoder(), getSysvarEpochScheduleDecoder());\n}\n\n/**\n * Fetch the `EpochSchedule` sysvar.\n *\n * Information about epoch duration.\n */\nexport async function fetchSysvarEpochSchedule(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarEpochSchedule> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_EPOCH_SCHEDULE_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarEpochScheduleDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getStructDecoder,\n getStructEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport { getDefaultLamportsDecoder, getDefaultLamportsEncoder, Lamports } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_FEES_ADDRESS } from './sysvar';\n\ntype FeeCalculator = Readonly<{\n lamportsPerSignature: Lamports;\n}>;\n\ntype SysvarFeesSize = 8;\n\n/**\n * The `Fees` sysvar.\n *\n * Current cluster fees.\n */\nexport type SysvarFees = Readonly<{\n feeCalculator: FeeCalculator;\n}>;\n\nexport function getSysvarFeesEncoder(): FixedSizeEncoder<SysvarFees, SysvarFeesSize> {\n return getStructEncoder([\n ['feeCalculator', getStructEncoder([['lamportsPerSignature', getDefaultLamportsEncoder()]])],\n ]) as FixedSizeEncoder<SysvarFees, SysvarFeesSize>;\n}\n\nexport function getSysvarFeesDecoder(): FixedSizeDecoder<SysvarFees, SysvarFeesSize> {\n return getStructDecoder([\n ['feeCalculator', getStructDecoder([['lamportsPerSignature', getDefaultLamportsDecoder()]])],\n ]) as FixedSizeDecoder<SysvarFees, SysvarFeesSize>;\n}\n\nexport function getSysvarFeesCodec(): FixedSizeCodec<SysvarFees, SysvarFees, SysvarFeesSize> {\n return combineCodec(getSysvarFeesEncoder(), getSysvarFeesDecoder());\n}\n\n/**\n * Fetch the `Fees` sysvar.\n *\n * Current cluster fees.\n */\nexport async function fetchSysvarFees(rpc: Rpc<GetAccountInfoApi>, config?: FetchAccountConfig): Promise<SysvarFees> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_FEES_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarFeesDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_LAST_RESTART_SLOT_ADDRESS } from './sysvar';\n\ntype SysvarLastRestartSlotSize = 8;\n\n/**\n * The `LastRestartSlot` sysvar.\n *\n * Information about the last restart slot (hard fork).\n *\n * The `LastRestartSlot` sysvar provides access to the last restart slot kept in the\n * bank fork for the slot on the fork that executes the current transaction.\n * In case there was no fork it returns `0`.\n */\nexport type SysvarLastRestartSlot = Readonly<{\n lastRestartSlot: Slot;\n}>;\n\nexport function getSysvarLastRestartSlotEncoder(): FixedSizeEncoder<SysvarLastRestartSlot, SysvarLastRestartSlotSize> {\n return getStructEncoder([['lastRestartSlot', getU64Encoder()]]) as FixedSizeEncoder<\n SysvarLastRestartSlot,\n SysvarLastRestartSlotSize\n >;\n}\n\nexport function getSysvarLastRestartSlotDecoder(): FixedSizeDecoder<SysvarLastRestartSlot, SysvarLastRestartSlotSize> {\n return getStructDecoder([['lastRestartSlot', getU64Decoder()]]) as FixedSizeDecoder<\n SysvarLastRestartSlot,\n SysvarLastRestartSlotSize\n >;\n}\n\nexport function getSysvarLastRestartSlotCodec(): FixedSizeCodec<\n SysvarLastRestartSlot,\n SysvarLastRestartSlot,\n SysvarLastRestartSlotSize\n> {\n return combineCodec(getSysvarLastRestartSlotEncoder(), getSysvarLastRestartSlotDecoder());\n}\n\n/**\n * Fetch the `LastRestartSlot` sysvar.\n *\n * Information about the last restart slot (hard fork).\n *\n * The `LastRestartSlot` sysvar provides access to the last restart slot kept in the\n * bank fork for the slot on the fork that executes the current transaction.\n * In case there was no fork it returns `0`.\n */\nexport async function fetchSysvarLastRestartSlot(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarLastRestartSlot> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_LAST_RESTART_SLOT_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarLastRestartSlotDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport {\n type Blockhash,\n getBlockhashDecoder,\n getBlockhashEncoder,\n getDefaultLamportsDecoder,\n getDefaultLamportsEncoder,\n type Lamports,\n} from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_RECENT_BLOCKHASHES_ADDRESS } from './sysvar';\n\ntype FeeCalculator = Readonly<{\n lamportsPerSignature: Lamports;\n}>;\ntype Entry = Readonly<{\n blockhash: Blockhash;\n feeCalculator: FeeCalculator;\n}>;\n\n/**\n * The `RecentBlockhashes` sysvar.\n *\n * Information about recent blocks and their fee calculators.\n */\nexport type SysvarRecentBlockhashes = Entry[];\n\nexport function getSysvarRecentBlockhashesEncoder(): VariableSizeEncoder<SysvarRecentBlockhashes> {\n return getArrayEncoder(\n getStructEncoder([\n ['blockhash', getBlockhashEncoder()],\n ['feeCalculator', getStructEncoder([['lamportsPerSignature', getDefaultLamportsEncoder()]])],\n ]),\n );\n}\n\nexport function getSysvarRecentBlockhashesDecoder(): VariableSizeDecoder<SysvarRecentBlockhashes> {\n return getArrayDecoder(\n getStructDecoder([\n ['blockhash', getBlockhashDecoder()],\n ['feeCalculator', getStructDecoder([['lamportsPerSignature', getDefaultLamportsDecoder()]])],\n ]),\n );\n}\n\nexport function getSysvarRecentBlockhashesCodec(): VariableSizeCodec<SysvarRecentBlockhashes> {\n return combineCodec(getSysvarRecentBlockhashesEncoder(), getSysvarRecentBlockhashesDecoder());\n}\n\n/**\n * Fetch the `RecentBlockhashes` sysvar.\n *\n * Information about recent blocks and their fee calculators.\n */\nexport async function fetchSysvarRecentBlockhashes(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarRecentBlockhashes> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_RECENT_BLOCKHASHES_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarRecentBlockhashesDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getF64Decoder,\n getF64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport { getDefaultLamportsDecoder, getDefaultLamportsEncoder, type Lamports } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_RENT_ADDRESS } from './sysvar';\n\ntype SysvarRentSize = 17;\n\n/**\n * The `Rent` sysvar.\n *\n * Configuration for network rent.\n */\nexport type SysvarRent = Readonly<{\n burnPercent: number;\n exemptionThreshold: number;\n lamportsPerByteYear: Lamports;\n}>;\n\nexport function getSysvarRentEncoder(): FixedSizeEncoder<SysvarRent, SysvarRentSize> {\n return getStructEncoder([\n ['lamportsPerByteYear', getDefaultLamportsEncoder()],\n ['exemptionThreshold', getF64Encoder()],\n ['burnPercent', getU8Encoder()],\n ]) as FixedSizeEncoder<SysvarRent, SysvarRentSize>;\n}\n\nexport function getSysvarRentDecoder(): FixedSizeDecoder<SysvarRent, SysvarRentSize> {\n return getStructDecoder([\n ['lamportsPerByteYear', getDefaultLamportsDecoder()],\n ['exemptionThreshold', getF64Decoder()],\n ['burnPercent', getU8Decoder()],\n ]) as FixedSizeDecoder<SysvarRent, SysvarRentSize>;\n}\n\nexport function getSysvarRentCodec(): FixedSizeCodec<SysvarRent, SysvarRent, SysvarRentSize> {\n return combineCodec(getSysvarRentEncoder(), getSysvarRentDecoder());\n}\n\n/**\n * Fetch the `Rent` sysvar.\n *\n * Configuration for network rent.\n */\nexport async function fetchSysvarRent(rpc: Rpc<GetAccountInfoApi>, config?: FetchAccountConfig): Promise<SysvarRent> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_RENT_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarRentDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport { type Blockhash, getBlockhashDecoder, getBlockhashEncoder, type Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_SLOT_HASHES_ADDRESS } from './sysvar';\n\ntype Entry = Readonly<{\n hash: Blockhash;\n slot: Slot;\n}>;\n\n/**\n * The `SlotHashes` sysvar.\n *\n * The most recent hashes of a slot's parent banks.\n */\nexport type SysvarSlotHashes = Entry[];\n\nexport function getSysvarSlotHashesEncoder(): VariableSizeEncoder<SysvarSlotHashes> {\n return getArrayEncoder(\n getStructEncoder([\n ['slot', getU64Encoder()],\n ['hash', getBlockhashEncoder()],\n ]),\n );\n}\n\nexport function getSysvarSlotHashesDecoder(): VariableSizeDecoder<SysvarSlotHashes> {\n return getArrayDecoder(\n getStructDecoder([\n ['slot', getU64Decoder()],\n ['hash', getBlockhashDecoder()],\n ]),\n );\n}\n\nexport function getSysvarSlotHashesCodec(): VariableSizeCodec<SysvarSlotHashes> {\n return combineCodec(getSysvarSlotHashesEncoder(), getSysvarSlotHashesDecoder());\n}\n\n/**\n * Fetch the `SlotHashes` sysvar.\n *\n * The most recent hashes of a slot's parent banks.\n */\nexport async function fetchSysvarSlotHashes(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarSlotHashes> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_SLOT_HASHES_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarSlotHashesDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n createDecoder,\n createEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getArrayCodec,\n getU64Codec,\n getU64Decoder,\n getU64Encoder,\n ReadonlyUint8Array,\n} from '@solana/codecs';\nimport {\n SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS,\n SolanaError,\n} from '@solana/errors';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_SLOT_HISTORY_ADDRESS } from './sysvar';\n\nconst BITVEC_DISCRIMINATOR = 1;\n// Max number of bits in the bitvector.\n// The Solana SDK defines a constant `MAX_ENTRIES` representing the maximum\n// number of bits that can be represented by the bitvector in the `SlotHistory`\n// sysvar. This value is 1024 * 1024 = 1_048_576.\n// See https://github.com/solana-labs/solana/blob/e0203f22dc83cb792fa97f91dbe6e924cbd08af1/sdk/program/src/slot_history.rs#L43\nconst BITVEC_NUM_BITS = 1024 * 1024;\n// The length of the bitvector in blocks.\n// At 64 bits per block, this is 1024 * 1024 / 64 = 16_384.\nconst BITVEC_LENGTH = BITVEC_NUM_BITS / 64;\n\nconst SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE =\n 1 + // Discriminator\n 8 + // bitvector length (u64)\n BITVEC_LENGTH * 8 +\n 8 + // Number of bits (u64)\n 8; // Next slot (u64)\n\nlet memoizedU64Encoder: FixedSizeEncoder<bigint, 8> | undefined;\nlet memoizedU64Decoder: FixedSizeDecoder<bigint, 8> | undefined;\nlet memoizedU64ArrayEncoder: FixedSizeEncoder<bigint[]> | undefined;\nlet memoizedU64ArrayDecoder: FixedSizeDecoder<bigint[]> | undefined;\n\nfunction getMemoizedU64Encoder(): FixedSizeEncoder<bigint, 8> {\n if (!memoizedU64Encoder) memoizedU64Encoder = getU64Encoder();\n return memoizedU64Encoder;\n}\nfunction getMemoizedU64Decoder(): FixedSizeDecoder<bigint, 8> {\n if (!memoizedU64Decoder) memoizedU64Decoder = getU64Decoder();\n return memoizedU64Decoder;\n}\nfunction getMemoizedU64ArrayEncoder(): FixedSizeEncoder<bigint[], typeof BITVEC_LENGTH> {\n if (!memoizedU64ArrayEncoder) memoizedU64ArrayEncoder = getArrayCodec(getU64Codec(), { size: BITVEC_LENGTH });\n return memoizedU64ArrayEncoder;\n}\nfunction getMemoizedU64ArrayDecoder(): FixedSizeDecoder<bigint[], typeof BITVEC_LENGTH> {\n if (!memoizedU64ArrayDecoder) memoizedU64ArrayDecoder = getArrayCodec(getU64Codec(), { size: BITVEC_LENGTH });\n return memoizedU64ArrayDecoder;\n}\n\ntype SysvarSlotHistorySize = typeof SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE;\n\n/**\n * The `SlotHistory` sysvar.\n *\n * A bitvector of slots present over the last epoch.\n */\nexport type SysvarSlotHistory = {\n bits: bigint[];\n nextSlot: Slot;\n};\n\nexport function getSysvarSlotHistoryEncoder(): FixedSizeEncoder<SysvarSlotHistory, SysvarSlotHistorySize> {\n return createEncoder({\n fixedSize: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE,\n write: (value: SysvarSlotHistory, bytes, offset) => {\n // First byte is the bitvector discriminator.\n bytes.set([BITVEC_DISCRIMINATOR], offset);\n offset += 1;\n // Next 8 bytes are the bitvector length.\n getMemoizedU64Encoder().write(BigInt(BITVEC_LENGTH), bytes, offset);\n offset += 8;\n // Next `BITVEC_LENGTH` bytes are the bitvector.\n // Any missing bits are assumed to be 0.\n getMemoizedU64ArrayEncoder().write(value.bits, bytes, offset);\n offset += BITVEC_LENGTH * 8;\n // Next 8 bytes are the number of bits.\n getMemoizedU64Encoder().write(BigInt(BITVEC_NUM_BITS), bytes, offset);\n offset += 8;\n // Next 8 bytes are the next slot.\n getMemoizedU64Encoder().write(value.nextSlot, bytes, offset);\n offset += 8;\n return offset;\n },\n });\n}\n\nexport function getSysvarSlotHistoryDecoder(): FixedSizeDecoder<SysvarSlotHistory, SysvarSlotHistorySize> {\n return createDecoder({\n fixedSize: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE,\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n // Byte length should be exact.\n if (bytes.length != SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH, {\n actual: bytes.length,\n expected: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE,\n });\n }\n // First byte is the bitvector discriminator.\n const discriminator = bytes[offset];\n offset += 1;\n if (discriminator !== BITVEC_DISCRIMINATOR) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE, {\n actual: discriminator,\n expected: BITVEC_DISCRIMINATOR,\n });\n }\n // Next 8 bytes are the bitvector length.\n const bitVecLength = getMemoizedU64Decoder().read(bytes, offset)[0];\n offset += 8;\n if (bitVecLength !== BigInt(BITVEC_LENGTH)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, {\n actual: bitVecLength,\n codecDescription: 'SysvarSlotHistoryCodec',\n expected: BITVEC_LENGTH,\n });\n }\n // Next `BITVEC_LENGTH` bytes are the bitvector.\n const bits = getMemoizedU64ArrayDecoder().read(bytes, offset)[0];\n offset += BITVEC_LENGTH * 8;\n // Next 8 bytes are the number of bits.\n const numBits = getMemoizedU64Decoder().read(bytes, offset)[0];\n offset += 8;\n if (numBits !== BigInt(BITVEC_NUM_BITS)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, {\n actual: numBits,\n codecDescription: 'SysvarSlotHistoryCodec',\n expected: BITVEC_NUM_BITS,\n });\n }\n // Next 8 bytes are the next slot.\n const nextSlot = getMemoizedU64Decoder().read(bytes, offset)[0];\n offset += 8;\n return [\n {\n bits,\n nextSlot,\n },\n offset,\n ];\n },\n });\n}\n\nexport function getSysvarSlotHistoryCodec(): FixedSizeCodec<\n SysvarSlotHistory,\n SysvarSlotHistory,\n SysvarSlotHistorySize\n> {\n return combineCodec(getSysvarSlotHistoryEncoder(), getSysvarSlotHistoryDecoder());\n}\n\n/**\n * Fetch the `SlotHistory` sysvar.\n *\n * A bitvector of slots present over the last epoch.\n */\nexport async function fetchSysvarSlotHistory(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarSlotHistory> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_SLOT_HISTORY_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarSlotHistoryDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport { getDefaultLamportsDecoder, getDefaultLamportsEncoder, type Lamports } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_STAKE_HISTORY_ADDRESS } from './sysvar';\n\ntype Entry = Readonly<{\n activating: Lamports;\n deactivating: Lamports;\n effective: Lamports;\n}>;\n\n/**\n * The `StakeHistory` sysvar.\n *\n * History of stake activations and de-activations.\n */\nexport type SysvarStakeHistory = Entry[];\n\nexport function getSysvarStakeHistoryEncoder(): VariableSizeEncoder<SysvarStakeHistory> {\n return getArrayEncoder(\n getStructEncoder([\n ['effective', getDefaultLamportsEncoder()],\n ['activating', getDefaultLamportsEncoder()],\n ['deactivating', getDefaultLamportsEncoder()],\n ]),\n );\n}\n\nexport function getSysvarStakeHistoryDecoder(): VariableSizeDecoder<SysvarStakeHistory> {\n return getArrayDecoder(\n getStructDecoder([\n ['effective', getDefaultLamportsDecoder()],\n ['activating', getDefaultLamportsDecoder()],\n ['deactivating', getDefaultLamportsDecoder()],\n ]),\n );\n}\n\nexport function getSysvarStakeHistoryCodec(): VariableSizeCodec<SysvarStakeHistory> {\n return combineCodec(getSysvarStakeHistoryEncoder(), getSysvarStakeHistoryDecoder());\n}\n\n/**\n * Fetch the `StakeHistory` sysvar.\n *\n * History of stake activations and de-activations.\n */\nexport async function fetchSysvarStakeHistory(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarStakeHistory> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_STAKE_HISTORY_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarStakeHistoryDecoder());\n return decoded.data;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/sysvar.ts","../src/clock.ts","../src/epoch-rewards.ts","../src/epoch-schedule.ts","../src/fees.ts","../src/last-restart-slot.ts","../src/recent-blockhashes.ts","../src/rent.ts","../src/slot-hashes.ts","../src/slot-history.ts","../src/stake-history.ts"],"names":["getStructEncoder","getU64Encoder","getStructDecoder","getU64Decoder","combineCodec","assertAccountExists","decodeAccount","getDefaultLamportsEncoder","getDefaultLamportsDecoder","getArrayEncoder","getBlockhashEncoder","getArrayDecoder","getBlockhashDecoder"],"mappings":";;;;;;AAYO,IAAM,oBACT,GAAA,8CAAA;AACG,IAAM,4BACT,GAAA,8CAAA;AACG,IAAM,6BACT,GAAA,8CAAA;AACG,IAAM,mBACT,GAAA,8CAAA;AACG,IAAM,2BACT,GAAA,8CAAA;AACG,IAAM,gCACT,GAAA,8CAAA;AACG,IAAM,iCACT,GAAA,8CAAA;AACG,IAAM,mBACT,GAAA,8CAAA;AACG,IAAM,0BACT,GAAA,8CAAA;AACG,IAAM,2BACT,GAAA,8CAAA;AACG,IAAM,4BACT,GAAA,8CAAA;AAqBJ,eAAsB,yBAAA,CAClB,GACA,EAAA,OAAA,EACA,MACsC,EAAA;AACtC,EAAA,OAAO,MAAM,mBAAA,CAA8B,GAAK,EAAA,OAAA,EAAS,MAAM,CAAA,CAAA;AACnE,CAAA;AAQA,eAAsB,4BAAA,CAClB,GACA,EAAA,OAAA,EACA,MACwF,EAAA;AACxF,EAAA,OAAO,MAAM,sBAAA,CAA0D,GAAK,EAAA,OAAA,EAAS,MAAM,CAAA,CAAA;AAC/F,CAAA;;;ACtCO,SAAS,qBAAwE,GAAA;AACpF,EAAA,OAAO,gBAAiB,CAAA;AAAA,IACpB,CAAC,MAAQ,EAAA,aAAA,EAAe,CAAA;AAAA,IACxB,CAAC,qBAAuB,EAAA,aAAA,EAAe,CAAA;AAAA,IACvC,CAAC,OAAS,EAAA,aAAA,EAAe,CAAA;AAAA,IACzB,CAAC,qBAAuB,EAAA,aAAA,EAAe,CAAA;AAAA,IACvC,CAAC,eAAiB,EAAA,aAAA,EAAe,CAAA;AAAA,GACpC,CAAA,CAAA;AACL,CAAA;AAEO,SAAS,qBAAwE,GAAA;AACpF,EAAA,OAAO,gBAAiB,CAAA;AAAA,IACpB,CAAC,MAAQ,EAAA,aAAA,EAAe,CAAA;AAAA,IACxB,CAAC,qBAAuB,EAAA,aAAA,EAAe,CAAA;AAAA,IACvC,CAAC,OAAS,EAAA,aAAA,EAAe,CAAA;AAAA,IACzB,CAAC,qBAAuB,EAAA,aAAA,EAAe,CAAA;AAAA,IACvC,CAAC,eAAiB,EAAA,aAAA,EAAe,CAAA;AAAA,GACpC,CAAA,CAAA;AACL,CAAA;AAEO,SAAS,mBAAiF,GAAA;AAC7F,EAAA,OAAO,YAAa,CAAA,qBAAA,EAAyB,EAAA,qBAAA,EAAuB,CAAA,CAAA;AACxE,CAAA;AAOA,eAAsB,gBAAA,CAAiB,KAA6B,MAAmD,EAAA;AACnH,EAAA,MAAM,OAAU,GAAA,MAAM,yBAA0B,CAAA,GAAA,EAAK,sBAAsB,MAAM,CAAA,CAAA;AACjF,EAAA,mBAAA,CAAoB,OAAO,CAAA,CAAA;AAC3B,EAAA,MAAM,OAAU,GAAA,aAAA,CAAc,OAAS,EAAA,qBAAA,EAAuB,CAAA,CAAA;AAC9D,EAAA,OAAO,OAAQ,CAAA,IAAA,CAAA;AACnB,CAAA;ACjCO,SAAS,4BAA6F,GAAA;AACzG,EAAA,OAAOA,gBAAiB,CAAA;AAAA,IACpB,CAAC,iCAAmCC,EAAAA,aAAAA,EAAe,CAAA;AAAA,IACnD,CAAC,oBAAsBA,EAAAA,aAAAA,EAAe,CAAA;AAAA,IACtC,CAAC,cAAgBA,EAAAA,aAAAA,EAAe,CAAA;AAAA,GACnC,CAAA,CAAA;AACL,CAAA;AAEO,SAAS,4BAA6F,GAAA;AACzG,EAAA,OAAOC,gBAAiB,CAAA;AAAA,IACpB,CAAC,iCAAmCC,EAAAA,aAAAA,EAAe,CAAA;AAAA,IACnD,CAAC,oBAAsBA,EAAAA,aAAAA,EAAe,CAAA;AAAA,IACtC,CAAC,cAAgBA,EAAAA,aAAAA,EAAe,CAAA;AAAA,GACnC,CAAA,CAAA;AACL,CAAA;AAEO,SAAS,0BAId,GAAA;AACE,EAAA,OAAOC,YAAa,CAAA,4BAAA,EAAgC,EAAA,4BAAA,EAA8B,CAAA,CAAA;AACtF,CAAA;AAeA,eAAsB,uBAAA,CAClB,KACA,MAC2B,EAAA;AAC3B,EAAA,MAAM,OAAU,GAAA,MAAM,yBAA0B,CAAA,GAAA,EAAK,8BAA8B,MAAM,CAAA,CAAA;AACzF,EAAAC,oBAAoB,OAAO,CAAA,CAAA;AAC3B,EAAA,MAAM,OAAUC,GAAAA,aAAAA,CAAc,OAAS,EAAA,4BAAA,EAA8B,CAAA,CAAA;AACrE,EAAA,OAAO,OAAQ,CAAA,IAAA,CAAA;AACnB,CAAA;AChDO,SAAS,6BAAgG,GAAA;AAC5G,EAAA,OAAON,gBAAiB,CAAA;AAAA,IACpB,CAAC,eAAiBC,EAAAA,aAAAA,EAAe,CAAA;AAAA,IACjC,CAAC,0BAA4BA,EAAAA,aAAAA,EAAe,CAAA;AAAA,IAC5C,CAAC,QAAU,EAAA,iBAAA,EAAmB,CAAA;AAAA,IAC9B,CAAC,kBAAoBA,EAAAA,aAAAA,EAAe,CAAA;AAAA,IACpC,CAAC,iBAAmBA,EAAAA,aAAAA,EAAe,CAAA;AAAA,GACtC,CAAA,CAAA;AACL,CAAA;AAEO,SAAS,6BAAgG,GAAA;AAC5G,EAAA,OAAOC,gBAAiB,CAAA;AAAA,IACpB,CAAC,eAAiBC,EAAAA,aAAAA,EAAe,CAAA;AAAA,IACjC,CAAC,0BAA4BA,EAAAA,aAAAA,EAAe,CAAA;AAAA,IAC5C,CAAC,QAAU,EAAA,iBAAA,EAAmB,CAAA;AAAA,IAC9B,CAAC,kBAAoBA,EAAAA,aAAAA,EAAe,CAAA;AAAA,IACpC,CAAC,iBAAmBA,EAAAA,aAAAA,EAAe,CAAA;AAAA,GACtC,CAAA,CAAA;AACL,CAAA;AAEO,SAAS,2BAId,GAAA;AACE,EAAA,OAAOC,YAAa,CAAA,6BAAA,EAAiC,EAAA,6BAAA,EAA+B,CAAA,CAAA;AACxF,CAAA;AAOA,eAAsB,wBAAA,CAClB,KACA,MAC4B,EAAA;AAC5B,EAAA,MAAM,OAAU,GAAA,MAAM,yBAA0B,CAAA,GAAA,EAAK,+BAA+B,MAAM,CAAA,CAAA;AAC1F,EAAAC,oBAAoB,OAAO,CAAA,CAAA;AAC3B,EAAA,MAAM,OAAUC,GAAAA,aAAAA,CAAc,OAAS,EAAA,6BAAA,EAA+B,CAAA,CAAA;AACtE,EAAA,OAAO,OAAQ,CAAA,IAAA,CAAA;AACnB,CAAA;ACzCO,SAAS,oBAAqE,GAAA;AACjF,EAAA,OAAON,gBAAiB,CAAA;AAAA,IACpB,CAAC,eAAiBA,EAAAA,gBAAAA,CAAiB,CAAC,CAAC,wBAAwB,yBAA0B,EAAC,CAAC,CAAC,CAAC,CAAA;AAAA,GAC9F,CAAA,CAAA;AACL,CAAA;AAEO,SAAS,oBAAqE,GAAA;AACjF,EAAA,OAAOE,gBAAiB,CAAA;AAAA,IACpB,CAAC,eAAiBA,EAAAA,gBAAAA,CAAiB,CAAC,CAAC,wBAAwB,yBAA0B,EAAC,CAAC,CAAC,CAAC,CAAA;AAAA,GAC9F,CAAA,CAAA;AACL,CAAA;AAEO,SAAS,kBAA6E,GAAA;AACzF,EAAA,OAAOE,YAAa,CAAA,oBAAA,EAAwB,EAAA,oBAAA,EAAsB,CAAA,CAAA;AACtE,CAAA;AAOA,eAAsB,eAAA,CAAgB,KAA6B,MAAkD,EAAA;AACjH,EAAA,MAAM,OAAU,GAAA,MAAM,yBAA0B,CAAA,GAAA,EAAK,qBAAqB,MAAM,CAAA,CAAA;AAChF,EAAAC,oBAAoB,OAAO,CAAA,CAAA;AAC3B,EAAA,MAAM,OAAUC,GAAAA,aAAAA,CAAc,OAAS,EAAA,oBAAA,EAAsB,CAAA,CAAA;AAC7D,EAAA,OAAO,OAAQ,CAAA,IAAA,CAAA;AACnB,CAAA;AC5BO,SAAS,+BAAsG,GAAA;AAClH,EAAA,OAAON,iBAAiB,CAAC,CAAC,mBAAmBC,aAAc,EAAC,CAAC,CAAC,CAAA,CAAA;AAIlE,CAAA;AAEO,SAAS,+BAAsG,GAAA;AAClH,EAAA,OAAOC,iBAAiB,CAAC,CAAC,mBAAmBC,aAAc,EAAC,CAAC,CAAC,CAAA,CAAA;AAIlE,CAAA;AAEO,SAAS,6BAId,GAAA;AACE,EAAA,OAAOC,YAAa,CAAA,+BAAA,EAAmC,EAAA,+BAAA,EAAiC,CAAA,CAAA;AAC5F,CAAA;AAWA,eAAsB,0BAAA,CAClB,KACA,MAC8B,EAAA;AAC9B,EAAA,MAAM,OAAU,GAAA,MAAM,yBAA0B,CAAA,GAAA,EAAK,kCAAkC,MAAM,CAAA,CAAA;AAC7F,EAAAC,oBAAoB,OAAO,CAAA,CAAA;AAC3B,EAAA,MAAM,OAAUC,GAAAA,aAAAA,CAAc,OAAS,EAAA,+BAAA,EAAiC,CAAA,CAAA;AACxE,EAAA,OAAO,OAAQ,CAAA,IAAA,CAAA;AACnB,CAAA;AChCO,SAAS,iCAAkF,GAAA;AAC9F,EAAO,OAAA,eAAA;AAAA,IACHN,gBAAiB,CAAA;AAAA,MACb,CAAC,WAAa,EAAA,mBAAA,EAAqB,CAAA;AAAA,MACnC,CAAC,eAAiBA,EAAAA,gBAAAA,CAAiB,CAAC,CAAC,wBAAwBO,yBAA0B,EAAC,CAAC,CAAC,CAAC,CAAA;AAAA,KAC9F,CAAA;AAAA,GACL,CAAA;AACJ,CAAA;AAEO,SAAS,iCAAkF,GAAA;AAC9F,EAAO,OAAA,eAAA;AAAA,IACHL,gBAAiB,CAAA;AAAA,MACb,CAAC,WAAa,EAAA,mBAAA,EAAqB,CAAA;AAAA,MACnC,CAAC,eAAiBA,EAAAA,gBAAAA,CAAiB,CAAC,CAAC,wBAAwBM,yBAA0B,EAAC,CAAC,CAAC,CAAC,CAAA;AAAA,KAC9F,CAAA;AAAA,GACL,CAAA;AACJ,CAAA;AAEO,SAAS,+BAA8E,GAAA;AAC1F,EAAA,OAAOJ,YAAa,CAAA,iCAAA,EAAqC,EAAA,iCAAA,EAAmC,CAAA,CAAA;AAChG,CAAA;AAOA,eAAsB,4BAAA,CAClB,KACA,MACgC,EAAA;AAChC,EAAA,MAAM,OAAU,GAAA,MAAM,yBAA0B,CAAA,GAAA,EAAK,mCAAmC,MAAM,CAAA,CAAA;AAC9F,EAAAC,oBAAoB,OAAO,CAAA,CAAA;AAC3B,EAAA,MAAM,OAAUC,GAAAA,aAAAA,CAAc,OAAS,EAAA,iCAAA,EAAmC,CAAA,CAAA;AAC1E,EAAA,OAAO,OAAQ,CAAA,IAAA,CAAA;AACnB,CAAA;ACtCO,SAAS,oBAAqE,GAAA;AACjF,EAAA,OAAON,gBAAiB,CAAA;AAAA,IACpB,CAAC,qBAAuBO,EAAAA,yBAAAA,EAA2B,CAAA;AAAA,IACnD,CAAC,oBAAsB,EAAA,aAAA,EAAe,CAAA;AAAA,IACtC,CAAC,aAAe,EAAA,YAAA,EAAc,CAAA;AAAA,GACjC,CAAA,CAAA;AACL,CAAA;AAEO,SAAS,oBAAqE,GAAA;AACjF,EAAA,OAAOL,gBAAiB,CAAA;AAAA,IACpB,CAAC,qBAAuBM,EAAAA,yBAAAA,EAA2B,CAAA;AAAA,IACnD,CAAC,oBAAsB,EAAA,aAAA,EAAe,CAAA;AAAA,IACtC,CAAC,aAAe,EAAA,YAAA,EAAc,CAAA;AAAA,GACjC,CAAA,CAAA;AACL,CAAA;AAEO,SAAS,kBAA6E,GAAA;AACzF,EAAA,OAAOJ,YAAa,CAAA,oBAAA,EAAwB,EAAA,oBAAA,EAAsB,CAAA,CAAA;AACtE,CAAA;AAOA,eAAsB,eAAA,CAAgB,KAA6B,MAAkD,EAAA;AACjH,EAAA,MAAM,OAAU,GAAA,MAAM,yBAA0B,CAAA,GAAA,EAAK,qBAAqB,MAAM,CAAA,CAAA;AAChF,EAAAC,oBAAoB,OAAO,CAAA,CAAA;AAC3B,EAAA,MAAM,OAAUC,GAAAA,aAAAA,CAAc,OAAS,EAAA,oBAAA,EAAsB,CAAA,CAAA;AAC7D,EAAA,OAAO,OAAQ,CAAA,IAAA,CAAA;AACnB,CAAA;ACnCO,SAAS,0BAAoE,GAAA;AAChF,EAAOG,OAAAA,eAAAA;AAAA,IACHT,gBAAiB,CAAA;AAAA,MACb,CAAC,MAAQC,EAAAA,aAAAA,EAAe,CAAA;AAAA,MACxB,CAAC,MAAQS,EAAAA,mBAAAA,EAAqB,CAAA;AAAA,KACjC,CAAA;AAAA,GACL,CAAA;AACJ,CAAA;AAEO,SAAS,0BAAoE,GAAA;AAChF,EAAOC,OAAAA,eAAAA;AAAA,IACHT,gBAAiB,CAAA;AAAA,MACb,CAAC,MAAQC,EAAAA,aAAAA,EAAe,CAAA;AAAA,MACxB,CAAC,MAAQS,EAAAA,mBAAAA,EAAqB,CAAA;AAAA,KACjC,CAAA;AAAA,GACL,CAAA;AACJ,CAAA;AAEO,SAAS,wBAAgE,GAAA;AAC5E,EAAA,OAAOR,YAAa,CAAA,0BAAA,EAA8B,EAAA,0BAAA,EAA4B,CAAA,CAAA;AAClF,CAAA;AAOA,eAAsB,qBAAA,CAClB,KACA,MACyB,EAAA;AACzB,EAAA,MAAM,OAAU,GAAA,MAAM,yBAA0B,CAAA,GAAA,EAAK,4BAA4B,MAAM,CAAA,CAAA;AACvF,EAAAC,oBAAoB,OAAO,CAAA,CAAA;AAC3B,EAAA,MAAM,OAAUC,GAAAA,aAAAA,CAAc,OAAS,EAAA,0BAAA,EAA4B,CAAA,CAAA;AACnE,EAAA,OAAO,OAAQ,CAAA,IAAA,CAAA;AACnB,CAAA;ACxCA,IAAM,oBAAuB,GAAA,CAAA,CAAA;AAM7B,IAAM,kBAAkB,IAAO,GAAA,IAAA,CAAA;AAG/B,IAAM,gBAAgB,eAAkB,GAAA,EAAA,CAAA;AAExC,IAAM,qCACF,GAAA,CAAA;AACA,CAAA;AACA,aAAA,GAAgB,CAChB,GAAA,CAAA;AACA,CAAA,CAAA;AAEJ,IAAI,kBAAA,CAAA;AACJ,IAAI,kBAAA,CAAA;AACJ,IAAI,uBAAA,CAAA;AACJ,IAAI,uBAAA,CAAA;AAEJ,SAAS,qBAAqD,GAAA;AAC1D,EAAI,IAAA,CAAC,kBAAoB,EAAA,kBAAA,GAAqBL,aAAc,EAAA,CAAA;AAC5D,EAAO,OAAA,kBAAA,CAAA;AACX,CAAA;AACA,SAAS,qBAAqD,GAAA;AAC1D,EAAI,IAAA,CAAC,kBAAoB,EAAA,kBAAA,GAAqBE,aAAc,EAAA,CAAA;AAC5D,EAAO,OAAA,kBAAA,CAAA;AACX,CAAA;AACA,SAAS,0BAA+E,GAAA;AACpF,EAAI,IAAA,CAAC,yBAAmD,uBAAA,GAAA,aAAA,CAAc,aAAe,EAAA,EAAE,IAAM,EAAA,aAAA,EAAe,CAAA,CAAA;AAC5G,EAAO,OAAA,uBAAA,CAAA;AACX,CAAA;AACA,SAAS,0BAA+E,GAAA;AACpF,EAAI,IAAA,CAAC,yBAAmD,uBAAA,GAAA,aAAA,CAAc,aAAe,EAAA,EAAE,IAAM,EAAA,aAAA,EAAe,CAAA,CAAA;AAC5G,EAAO,OAAA,uBAAA,CAAA;AACX,CAAA;AAcO,SAAS,2BAA0F,GAAA;AACtG,EAAA,OAAO,aAAc,CAAA;AAAA,IACjB,SAAW,EAAA,qCAAA;AAAA,IACX,KAAO,EAAA,CAAC,KAA0B,EAAA,KAAA,EAAO,MAAW,KAAA;AAEhD,MAAA,KAAA,CAAM,GAAI,CAAA,CAAC,oBAAoB,CAAA,EAAG,MAAM,CAAA,CAAA;AACxC,MAAU,MAAA,IAAA,CAAA,CAAA;AAEV,MAAA,qBAAA,GAAwB,KAAM,CAAA,MAAA,CAAO,aAAa,CAAA,EAAG,OAAO,MAAM,CAAA,CAAA;AAClE,MAAU,MAAA,IAAA,CAAA,CAAA;AAGV,MAAA,0BAAA,EAA6B,CAAA,KAAA,CAAM,KAAM,CAAA,IAAA,EAAM,OAAO,MAAM,CAAA,CAAA;AAC5D,MAAA,MAAA,IAAU,aAAgB,GAAA,CAAA,CAAA;AAE1B,MAAA,qBAAA,GAAwB,KAAM,CAAA,MAAA,CAAO,eAAe,CAAA,EAAG,OAAO,MAAM,CAAA,CAAA;AACpE,MAAU,MAAA,IAAA,CAAA,CAAA;AAEV,MAAA,qBAAA,EAAwB,CAAA,KAAA,CAAM,KAAM,CAAA,QAAA,EAAU,OAAO,MAAM,CAAA,CAAA;AAC3D,MAAU,MAAA,IAAA,CAAA,CAAA;AACV,MAAO,OAAA,MAAA,CAAA;AAAA,KACX;AAAA,GACH,CAAA,CAAA;AACL,CAAA;AAEO,SAAS,2BAA0F,GAAA;AACtG,EAAA,OAAO,aAAc,CAAA;AAAA,IACjB,SAAW,EAAA,qCAAA;AAAA,IACX,IAAA,EAAM,CAAC,KAAA,EAAwC,MAAW,KAAA;AAEtD,MAAI,IAAA,KAAA,CAAM,UAAU,qCAAuC,EAAA;AACvD,QAAM,MAAA,IAAI,YAAY,yCAA2C,EAAA;AAAA,UAC7D,QAAQ,KAAM,CAAA,MAAA;AAAA,UACd,QAAU,EAAA,qCAAA;AAAA,SACb,CAAA,CAAA;AAAA,OACL;AAEA,MAAM,MAAA,aAAA,GAAgB,MAAM,MAAM,CAAA,CAAA;AAClC,MAAU,MAAA,IAAA,CAAA,CAAA;AACV,MAAA,IAAI,kBAAkB,oBAAsB,EAAA;AACxC,QAAM,MAAA,IAAI,YAAY,qDAAuD,EAAA;AAAA,UACzE,MAAQ,EAAA,aAAA;AAAA,UACR,QAAU,EAAA,oBAAA;AAAA,SACb,CAAA,CAAA;AAAA,OACL;AAEA,MAAA,MAAM,eAAe,qBAAsB,EAAA,CAAE,KAAK,KAAO,EAAA,MAAM,EAAE,CAAC,CAAA,CAAA;AAClE,MAAU,MAAA,IAAA,CAAA,CAAA;AACV,MAAI,IAAA,YAAA,KAAiB,MAAO,CAAA,aAAa,CAAG,EAAA;AACxC,QAAM,MAAA,IAAI,YAAY,6CAA+C,EAAA;AAAA,UACjE,MAAQ,EAAA,YAAA;AAAA,UACR,gBAAkB,EAAA,wBAAA;AAAA,UAClB,QAAU,EAAA,aAAA;AAAA,SACb,CAAA,CAAA;AAAA,OACL;AAEA,MAAA,MAAM,OAAO,0BAA2B,EAAA,CAAE,KAAK,KAAO,EAAA,MAAM,EAAE,CAAC,CAAA,CAAA;AAC/D,MAAA,MAAA,IAAU,aAAgB,GAAA,CAAA,CAAA;AAE1B,MAAA,MAAM,UAAU,qBAAsB,EAAA,CAAE,KAAK,KAAO,EAAA,MAAM,EAAE,CAAC,CAAA,CAAA;AAC7D,MAAU,MAAA,IAAA,CAAA,CAAA;AACV,MAAI,IAAA,OAAA,KAAY,MAAO,CAAA,eAAe,CAAG,EAAA;AACrC,QAAM,MAAA,IAAI,YAAY,6CAA+C,EAAA;AAAA,UACjE,MAAQ,EAAA,OAAA;AAAA,UACR,gBAAkB,EAAA,wBAAA;AAAA,UAClB,QAAU,EAAA,eAAA;AAAA,SACb,CAAA,CAAA;AAAA,OACL;AAEA,MAAA,MAAM,WAAW,qBAAsB,EAAA,CAAE,KAAK,KAAO,EAAA,MAAM,EAAE,CAAC,CAAA,CAAA;AAC9D,MAAU,MAAA,IAAA,CAAA,CAAA;AACV,MAAO,OAAA;AAAA,QACH;AAAA,UACI,IAAA;AAAA,UACA,QAAA;AAAA,SACJ;AAAA,QACA,MAAA;AAAA,OACJ,CAAA;AAAA,KACJ;AAAA,GACH,CAAA,CAAA;AACL,CAAA;AAEO,SAAS,yBAId,GAAA;AACE,EAAA,OAAOC,YAAa,CAAA,2BAAA,EAA+B,EAAA,2BAAA,EAA6B,CAAA,CAAA;AACpF,CAAA;AAOA,eAAsB,sBAAA,CAClB,KACA,MAC0B,EAAA;AAC1B,EAAA,MAAM,OAAU,GAAA,MAAM,yBAA0B,CAAA,GAAA,EAAK,6BAA6B,MAAM,CAAA,CAAA;AACxF,EAAAC,oBAAoB,OAAO,CAAA,CAAA;AAC3B,EAAA,MAAM,OAAUC,GAAAA,aAAAA,CAAc,OAAS,EAAA,2BAAA,EAA6B,CAAA,CAAA;AACpE,EAAA,OAAO,OAAQ,CAAA,IAAA,CAAA;AACnB,CAAA;ACnJO,SAAS,4BAAwE,GAAA;AACpF,EAAOG,OAAAA,eAAAA;AAAA,IACHT,gBAAiB,CAAA;AAAA,MACb,CAAC,WAAaO,EAAAA,yBAAAA,EAA2B,CAAA;AAAA,MACzC,CAAC,YAAcA,EAAAA,yBAAAA,EAA2B,CAAA;AAAA,MAC1C,CAAC,cAAgBA,EAAAA,yBAAAA,EAA2B,CAAA;AAAA,KAC/C,CAAA;AAAA,GACL,CAAA;AACJ,CAAA;AAEO,SAAS,4BAAwE,GAAA;AACpF,EAAOI,OAAAA,eAAAA;AAAA,IACHT,gBAAiB,CAAA;AAAA,MACb,CAAC,WAAaM,EAAAA,yBAAAA,EAA2B,CAAA;AAAA,MACzC,CAAC,YAAcA,EAAAA,yBAAAA,EAA2B,CAAA;AAAA,MAC1C,CAAC,cAAgBA,EAAAA,yBAAAA,EAA2B,CAAA;AAAA,KAC/C,CAAA;AAAA,GACL,CAAA;AACJ,CAAA;AAEO,SAAS,0BAAoE,GAAA;AAChF,EAAA,OAAOJ,YAAa,CAAA,4BAAA,EAAgC,EAAA,4BAAA,EAA8B,CAAA,CAAA;AACtF,CAAA;AAOA,eAAsB,uBAAA,CAClB,KACA,MAC2B,EAAA;AAC3B,EAAA,MAAM,OAAU,GAAA,MAAM,yBAA0B,CAAA,GAAA,EAAK,8BAA8B,MAAM,CAAA,CAAA;AACzF,EAAAC,oBAAoB,OAAO,CAAA,CAAA;AAC3B,EAAA,MAAM,OAAUC,GAAAA,aAAAA,CAAc,OAAS,EAAA,4BAAA,EAA8B,CAAA,CAAA;AACrE,EAAA,OAAO,OAAQ,CAAA,IAAA,CAAA;AACnB","file":"index.browser.mjs","sourcesContent":["import {\n type FetchAccountConfig,\n fetchEncodedAccount,\n fetchJsonParsedAccount,\n type MaybeAccount,\n type MaybeEncodedAccount,\n} from '@solana/accounts';\nimport type { Address } from '@solana/addresses';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { JsonParsedSysvarAccount } from '@solana/rpc-parsed-types';\nimport type { Rpc } from '@solana/rpc-spec';\n\nexport const SYSVAR_CLOCK_ADDRESS =\n 'SysvarC1ock11111111111111111111111111111111' as Address<'SysvarC1ock11111111111111111111111111111111'>;\nexport const SYSVAR_EPOCH_REWARDS_ADDRESS =\n 'SysvarEpochRewards1111111111111111111111111' as Address<'SysvarEpochRewards1111111111111111111111111'>;\nexport const SYSVAR_EPOCH_SCHEDULE_ADDRESS =\n 'SysvarEpochSchedu1e111111111111111111111111' as Address<'SysvarEpochSchedu1e111111111111111111111111'>;\nexport const SYSVAR_FEES_ADDRESS =\n 'SysvarFees111111111111111111111111111111111' as Address<'SysvarFees111111111111111111111111111111111'>;\nexport const SYSVAR_INSTRUCTIONS_ADDRESS =\n 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;\nexport const SYSVAR_LAST_RESTART_SLOT_ADDRESS =\n 'SysvarLastRestartS1ot1111111111111111111111' as Address<'SysvarLastRestartS1ot1111111111111111111111'>;\nexport const SYSVAR_RECENT_BLOCKHASHES_ADDRESS =\n 'SysvarRecentB1ockHashes11111111111111111111' as Address<'SysvarRecentB1ockHashes11111111111111111111'>;\nexport const SYSVAR_RENT_ADDRESS =\n 'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\nexport const SYSVAR_SLOT_HASHES_ADDRESS =\n 'SysvarS1otHashes111111111111111111111111111' as Address<'SysvarS1otHashes111111111111111111111111111'>;\nexport const SYSVAR_SLOT_HISTORY_ADDRESS =\n 'SysvarS1otHistory11111111111111111111111111' as Address<'SysvarS1otHistory11111111111111111111111111'>;\nexport const SYSVAR_STAKE_HISTORY_ADDRESS =\n 'SysvarStakeHistory1111111111111111111111111' as Address<'SysvarStakeHistory1111111111111111111111111'>;\n\ntype SysvarAddress =\n | typeof SYSVAR_CLOCK_ADDRESS\n | typeof SYSVAR_EPOCH_REWARDS_ADDRESS\n | typeof SYSVAR_EPOCH_SCHEDULE_ADDRESS\n | typeof SYSVAR_FEES_ADDRESS\n | typeof SYSVAR_INSTRUCTIONS_ADDRESS\n | typeof SYSVAR_LAST_RESTART_SLOT_ADDRESS\n | typeof SYSVAR_RECENT_BLOCKHASHES_ADDRESS\n | typeof SYSVAR_RENT_ADDRESS\n | typeof SYSVAR_SLOT_HASHES_ADDRESS\n | typeof SYSVAR_SLOT_HISTORY_ADDRESS\n | typeof SYSVAR_STAKE_HISTORY_ADDRESS;\n\n/**\n * Fetch an encoded sysvar account.\n *\n * Sysvars are special accounts that contain dynamically-updated data about the\n * network cluster, the blockchain history, and the executing transaction.\n */\nexport async function fetchEncodedSysvarAccount<TAddress extends SysvarAddress>(\n rpc: Rpc<GetAccountInfoApi>,\n address: TAddress,\n config?: FetchAccountConfig,\n): Promise<MaybeEncodedAccount<TAddress>> {\n return await fetchEncodedAccount<TAddress>(rpc, address, config);\n}\n\n/**\n * Fetch a JSON-parsed sysvar account.\n *\n * Sysvars are special accounts that contain dynamically-updated data about the\n * network cluster, the blockchain history, and the executing transaction.\n */\nexport async function fetchJsonParsedSysvarAccount<TAddress extends SysvarAddress>(\n rpc: Rpc<GetAccountInfoApi>,\n address: TAddress,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<JsonParsedSysvarAccount, TAddress> | MaybeEncodedAccount<TAddress>> {\n return await fetchJsonParsedAccount<JsonParsedSysvarAccount, TAddress>(rpc, address, config);\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Epoch, Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_CLOCK_ADDRESS } from './sysvar';\n\ntype UnixTimestamp = bigint;\n\ntype SysvarClockSize = 40;\n\n/**\n * The `Clock` sysvar.\n *\n * Information about the network’s clock, ticks, slots, etc.\n */\nexport type SysvarClock = Readonly<{\n epoch: Epoch;\n epochStartTimestamp: UnixTimestamp;\n leaderScheduleEpoch: Epoch;\n slot: Slot;\n unixTimestamp: UnixTimestamp;\n}>;\n\nexport function getSysvarClockEncoder(): FixedSizeEncoder<SysvarClock, SysvarClockSize> {\n return getStructEncoder([\n ['slot', getU64Encoder()],\n ['epochStartTimestamp', getI64Encoder()],\n ['epoch', getU64Encoder()],\n ['leaderScheduleEpoch', getU64Encoder()],\n ['unixTimestamp', getI64Encoder()],\n ]) as FixedSizeEncoder<SysvarClock, SysvarClockSize>;\n}\n\nexport function getSysvarClockDecoder(): FixedSizeDecoder<SysvarClock, SysvarClockSize> {\n return getStructDecoder([\n ['slot', getU64Decoder()],\n ['epochStartTimestamp', getI64Decoder()],\n ['epoch', getU64Decoder()],\n ['leaderScheduleEpoch', getU64Decoder()],\n ['unixTimestamp', getI64Decoder()],\n ]) as FixedSizeDecoder<SysvarClock, SysvarClockSize>;\n}\n\nexport function getSysvarClockCodec(): FixedSizeCodec<SysvarClock, SysvarClock, SysvarClockSize> {\n return combineCodec(getSysvarClockEncoder(), getSysvarClockDecoder());\n}\n\n/**\n * Fetch the `Clock` sysvar.\n *\n * Information about the network’s clock, ticks, slots, etc.\n */\nexport async function fetchSysvarClock(rpc: Rpc<GetAccountInfoApi>, config?: FetchAccountConfig): Promise<SysvarClock> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_CLOCK_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarClockDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_EPOCH_REWARDS_ADDRESS } from './sysvar';\n\ntype SysvarEpochRewardsSize = 24;\n\n/**\n * The `EpochRewards` sysvar.\n *\n * Tracks the progress of epoch rewards distribution. It includes:\n * - Total rewards for the current epoch, in lamports.\n * - Rewards for the current epoch distributed so far, in lamports.\n * - Distribution completed block height, i.e. distribution of all staking rewards for the current\n * epoch will be completed at this block height.\n *\n * Note that `EpochRewards` only lasts for a handful of blocks at the start of\n * an epoch. When all rewards have been distributed, the sysvar is deleted.\n * See https://github.com/solana-labs/solana/blob/e0203f22dc83cb792fa97f91dbe6e924cbd08af1/docs/src/runtime/sysvars.md?plain=1#L155-L168\n */\nexport type SysvarEpochRewards = Readonly<{\n distributedRewards: bigint;\n distributionCompleteBlockHeight: bigint;\n totalRewards: bigint;\n}>;\n\nexport function getSysvarEpochRewardsEncoder(): FixedSizeEncoder<SysvarEpochRewards, SysvarEpochRewardsSize> {\n return getStructEncoder([\n ['distributionCompleteBlockHeight', getU64Encoder()],\n ['distributedRewards', getU64Encoder()],\n ['totalRewards', getU64Encoder()],\n ]) as FixedSizeEncoder<SysvarEpochRewards, SysvarEpochRewardsSize>;\n}\n\nexport function getSysvarEpochRewardsDecoder(): FixedSizeDecoder<SysvarEpochRewards, SysvarEpochRewardsSize> {\n return getStructDecoder([\n ['distributionCompleteBlockHeight', getU64Decoder()],\n ['distributedRewards', getU64Decoder()],\n ['totalRewards', getU64Decoder()],\n ]) as FixedSizeDecoder<SysvarEpochRewards, SysvarEpochRewardsSize>;\n}\n\nexport function getSysvarEpochRewardsCodec(): FixedSizeCodec<\n SysvarEpochRewards,\n SysvarEpochRewards,\n SysvarEpochRewardsSize\n> {\n return combineCodec(getSysvarEpochRewardsEncoder(), getSysvarEpochRewardsDecoder());\n}\n\n/**\n * Fetch the `EpochRewards` sysvar.\n *\n * Tracks the progress of epoch rewards distribution. It includes:\n * - Total rewards for the current epoch, in lamports.\n * - Rewards for the current epoch distributed so far, in lamports.\n * - Distribution completed block height, i.e. distribution of all staking rewards for the current\n * epoch will be completed at this block height.\n *\n * Note that `EpochRewards` only lasts for a handful of blocks at the start of\n * an epoch. When all rewards have been distributed, the sysvar is deleted.\n * See https://github.com/solana-labs/solana/blob/e0203f22dc83cb792fa97f91dbe6e924cbd08af1/docs/src/runtime/sysvars.md?plain=1#L155-L168\n */\nexport async function fetchSysvarEpochRewards(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarEpochRewards> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_EPOCH_REWARDS_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarEpochRewardsDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Epoch, Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_EPOCH_SCHEDULE_ADDRESS } from './sysvar';\n\ntype SysvarEpochScheduleSize = 33;\n\n/**\n * The `EpochSchedule` sysvar.\n *\n * Information about epoch duration.\n */\nexport type SysvarEpochSchedule = Readonly<{\n firstNormalEpoch: Epoch;\n firstNormalSlot: Slot;\n leaderScheduleSlotOffset: bigint;\n slotsPerEpoch: bigint;\n warmup: boolean;\n}>;\n\nexport function getSysvarEpochScheduleEncoder(): FixedSizeEncoder<SysvarEpochSchedule, SysvarEpochScheduleSize> {\n return getStructEncoder([\n ['slotsPerEpoch', getU64Encoder()],\n ['leaderScheduleSlotOffset', getU64Encoder()],\n ['warmup', getBooleanEncoder()],\n ['firstNormalEpoch', getU64Encoder()],\n ['firstNormalSlot', getU64Encoder()],\n ]) as FixedSizeEncoder<SysvarEpochSchedule, SysvarEpochScheduleSize>;\n}\n\nexport function getSysvarEpochScheduleDecoder(): FixedSizeDecoder<SysvarEpochSchedule, SysvarEpochScheduleSize> {\n return getStructDecoder([\n ['slotsPerEpoch', getU64Decoder()],\n ['leaderScheduleSlotOffset', getU64Decoder()],\n ['warmup', getBooleanDecoder()],\n ['firstNormalEpoch', getU64Decoder()],\n ['firstNormalSlot', getU64Decoder()],\n ]) as FixedSizeDecoder<SysvarEpochSchedule, SysvarEpochScheduleSize>;\n}\n\nexport function getSysvarEpochScheduleCodec(): FixedSizeCodec<\n SysvarEpochSchedule,\n SysvarEpochSchedule,\n SysvarEpochScheduleSize\n> {\n return combineCodec(getSysvarEpochScheduleEncoder(), getSysvarEpochScheduleDecoder());\n}\n\n/**\n * Fetch the `EpochSchedule` sysvar.\n *\n * Information about epoch duration.\n */\nexport async function fetchSysvarEpochSchedule(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarEpochSchedule> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_EPOCH_SCHEDULE_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarEpochScheduleDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getStructDecoder,\n getStructEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport {\n getDefaultLamportsDecoder,\n getDefaultLamportsEncoder,\n LamportsUnsafeBeyond2Pow53Minus1,\n} from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_FEES_ADDRESS } from './sysvar';\n\ntype FeeCalculator = Readonly<{\n lamportsPerSignature: LamportsUnsafeBeyond2Pow53Minus1;\n}>;\n\ntype SysvarFeesSize = 8;\n\n/**\n * The `Fees` sysvar.\n *\n * Current cluster fees.\n */\nexport type SysvarFees = Readonly<{\n feeCalculator: FeeCalculator;\n}>;\n\nexport function getSysvarFeesEncoder(): FixedSizeEncoder<SysvarFees, SysvarFeesSize> {\n return getStructEncoder([\n ['feeCalculator', getStructEncoder([['lamportsPerSignature', getDefaultLamportsEncoder()]])],\n ]) as FixedSizeEncoder<SysvarFees, SysvarFeesSize>;\n}\n\nexport function getSysvarFeesDecoder(): FixedSizeDecoder<SysvarFees, SysvarFeesSize> {\n return getStructDecoder([\n ['feeCalculator', getStructDecoder([['lamportsPerSignature', getDefaultLamportsDecoder()]])],\n ]) as FixedSizeDecoder<SysvarFees, SysvarFeesSize>;\n}\n\nexport function getSysvarFeesCodec(): FixedSizeCodec<SysvarFees, SysvarFees, SysvarFeesSize> {\n return combineCodec(getSysvarFeesEncoder(), getSysvarFeesDecoder());\n}\n\n/**\n * Fetch the `Fees` sysvar.\n *\n * Current cluster fees.\n */\nexport async function fetchSysvarFees(rpc: Rpc<GetAccountInfoApi>, config?: FetchAccountConfig): Promise<SysvarFees> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_FEES_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarFeesDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_LAST_RESTART_SLOT_ADDRESS } from './sysvar';\n\ntype SysvarLastRestartSlotSize = 8;\n\n/**\n * The `LastRestartSlot` sysvar.\n *\n * Information about the last restart slot (hard fork).\n *\n * The `LastRestartSlot` sysvar provides access to the last restart slot kept in the\n * bank fork for the slot on the fork that executes the current transaction.\n * In case there was no fork it returns `0`.\n */\nexport type SysvarLastRestartSlot = Readonly<{\n lastRestartSlot: Slot;\n}>;\n\nexport function getSysvarLastRestartSlotEncoder(): FixedSizeEncoder<SysvarLastRestartSlot, SysvarLastRestartSlotSize> {\n return getStructEncoder([['lastRestartSlot', getU64Encoder()]]) as FixedSizeEncoder<\n SysvarLastRestartSlot,\n SysvarLastRestartSlotSize\n >;\n}\n\nexport function getSysvarLastRestartSlotDecoder(): FixedSizeDecoder<SysvarLastRestartSlot, SysvarLastRestartSlotSize> {\n return getStructDecoder([['lastRestartSlot', getU64Decoder()]]) as FixedSizeDecoder<\n SysvarLastRestartSlot,\n SysvarLastRestartSlotSize\n >;\n}\n\nexport function getSysvarLastRestartSlotCodec(): FixedSizeCodec<\n SysvarLastRestartSlot,\n SysvarLastRestartSlot,\n SysvarLastRestartSlotSize\n> {\n return combineCodec(getSysvarLastRestartSlotEncoder(), getSysvarLastRestartSlotDecoder());\n}\n\n/**\n * Fetch the `LastRestartSlot` sysvar.\n *\n * Information about the last restart slot (hard fork).\n *\n * The `LastRestartSlot` sysvar provides access to the last restart slot kept in the\n * bank fork for the slot on the fork that executes the current transaction.\n * In case there was no fork it returns `0`.\n */\nexport async function fetchSysvarLastRestartSlot(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarLastRestartSlot> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_LAST_RESTART_SLOT_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarLastRestartSlotDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport {\n type Blockhash,\n getBlockhashDecoder,\n getBlockhashEncoder,\n getDefaultLamportsDecoder,\n getDefaultLamportsEncoder,\n type LamportsUnsafeBeyond2Pow53Minus1,\n} from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_RECENT_BLOCKHASHES_ADDRESS } from './sysvar';\n\ntype FeeCalculator = Readonly<{\n lamportsPerSignature: LamportsUnsafeBeyond2Pow53Minus1;\n}>;\ntype Entry = Readonly<{\n blockhash: Blockhash;\n feeCalculator: FeeCalculator;\n}>;\n\n/**\n * The `RecentBlockhashes` sysvar.\n *\n * Information about recent blocks and their fee calculators.\n */\nexport type SysvarRecentBlockhashes = Entry[];\n\nexport function getSysvarRecentBlockhashesEncoder(): VariableSizeEncoder<SysvarRecentBlockhashes> {\n return getArrayEncoder(\n getStructEncoder([\n ['blockhash', getBlockhashEncoder()],\n ['feeCalculator', getStructEncoder([['lamportsPerSignature', getDefaultLamportsEncoder()]])],\n ]),\n );\n}\n\nexport function getSysvarRecentBlockhashesDecoder(): VariableSizeDecoder<SysvarRecentBlockhashes> {\n return getArrayDecoder(\n getStructDecoder([\n ['blockhash', getBlockhashDecoder()],\n ['feeCalculator', getStructDecoder([['lamportsPerSignature', getDefaultLamportsDecoder()]])],\n ]),\n );\n}\n\nexport function getSysvarRecentBlockhashesCodec(): VariableSizeCodec<SysvarRecentBlockhashes> {\n return combineCodec(getSysvarRecentBlockhashesEncoder(), getSysvarRecentBlockhashesDecoder());\n}\n\n/**\n * Fetch the `RecentBlockhashes` sysvar.\n *\n * Information about recent blocks and their fee calculators.\n */\nexport async function fetchSysvarRecentBlockhashes(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarRecentBlockhashes> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_RECENT_BLOCKHASHES_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarRecentBlockhashesDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getF64Decoder,\n getF64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport {\n getDefaultLamportsDecoder,\n getDefaultLamportsEncoder,\n type LamportsUnsafeBeyond2Pow53Minus1,\n} from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_RENT_ADDRESS } from './sysvar';\n\ntype SysvarRentSize = 17;\n\n/**\n * The `Rent` sysvar.\n *\n * Configuration for network rent.\n */\nexport type SysvarRent = Readonly<{\n burnPercent: number;\n exemptionThreshold: number;\n lamportsPerByteYear: LamportsUnsafeBeyond2Pow53Minus1;\n}>;\n\nexport function getSysvarRentEncoder(): FixedSizeEncoder<SysvarRent, SysvarRentSize> {\n return getStructEncoder([\n ['lamportsPerByteYear', getDefaultLamportsEncoder()],\n ['exemptionThreshold', getF64Encoder()],\n ['burnPercent', getU8Encoder()],\n ]) as FixedSizeEncoder<SysvarRent, SysvarRentSize>;\n}\n\nexport function getSysvarRentDecoder(): FixedSizeDecoder<SysvarRent, SysvarRentSize> {\n return getStructDecoder([\n ['lamportsPerByteYear', getDefaultLamportsDecoder()],\n ['exemptionThreshold', getF64Decoder()],\n ['burnPercent', getU8Decoder()],\n ]) as FixedSizeDecoder<SysvarRent, SysvarRentSize>;\n}\n\nexport function getSysvarRentCodec(): FixedSizeCodec<SysvarRent, SysvarRent, SysvarRentSize> {\n return combineCodec(getSysvarRentEncoder(), getSysvarRentDecoder());\n}\n\n/**\n * Fetch the `Rent` sysvar.\n *\n * Configuration for network rent.\n */\nexport async function fetchSysvarRent(rpc: Rpc<GetAccountInfoApi>, config?: FetchAccountConfig): Promise<SysvarRent> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_RENT_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarRentDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport { type Blockhash, getBlockhashDecoder, getBlockhashEncoder, type Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_SLOT_HASHES_ADDRESS } from './sysvar';\n\ntype Entry = Readonly<{\n hash: Blockhash;\n slot: Slot;\n}>;\n\n/**\n * The `SlotHashes` sysvar.\n *\n * The most recent hashes of a slot's parent banks.\n */\nexport type SysvarSlotHashes = Entry[];\n\nexport function getSysvarSlotHashesEncoder(): VariableSizeEncoder<SysvarSlotHashes> {\n return getArrayEncoder(\n getStructEncoder([\n ['slot', getU64Encoder()],\n ['hash', getBlockhashEncoder()],\n ]),\n );\n}\n\nexport function getSysvarSlotHashesDecoder(): VariableSizeDecoder<SysvarSlotHashes> {\n return getArrayDecoder(\n getStructDecoder([\n ['slot', getU64Decoder()],\n ['hash', getBlockhashDecoder()],\n ]),\n );\n}\n\nexport function getSysvarSlotHashesCodec(): VariableSizeCodec<SysvarSlotHashes> {\n return combineCodec(getSysvarSlotHashesEncoder(), getSysvarSlotHashesDecoder());\n}\n\n/**\n * Fetch the `SlotHashes` sysvar.\n *\n * The most recent hashes of a slot's parent banks.\n */\nexport async function fetchSysvarSlotHashes(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarSlotHashes> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_SLOT_HASHES_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarSlotHashesDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n createDecoder,\n createEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getArrayCodec,\n getU64Codec,\n getU64Decoder,\n getU64Encoder,\n ReadonlyUint8Array,\n} from '@solana/codecs';\nimport {\n SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS,\n SolanaError,\n} from '@solana/errors';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_SLOT_HISTORY_ADDRESS } from './sysvar';\n\nconst BITVEC_DISCRIMINATOR = 1;\n// Max number of bits in the bitvector.\n// The Solana SDK defines a constant `MAX_ENTRIES` representing the maximum\n// number of bits that can be represented by the bitvector in the `SlotHistory`\n// sysvar. This value is 1024 * 1024 = 1_048_576.\n// See https://github.com/solana-labs/solana/blob/e0203f22dc83cb792fa97f91dbe6e924cbd08af1/sdk/program/src/slot_history.rs#L43\nconst BITVEC_NUM_BITS = 1024 * 1024;\n// The length of the bitvector in blocks.\n// At 64 bits per block, this is 1024 * 1024 / 64 = 16_384.\nconst BITVEC_LENGTH = BITVEC_NUM_BITS / 64;\n\nconst SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE =\n 1 + // Discriminator\n 8 + // bitvector length (u64)\n BITVEC_LENGTH * 8 +\n 8 + // Number of bits (u64)\n 8; // Next slot (u64)\n\nlet memoizedU64Encoder: FixedSizeEncoder<bigint, 8> | undefined;\nlet memoizedU64Decoder: FixedSizeDecoder<bigint, 8> | undefined;\nlet memoizedU64ArrayEncoder: FixedSizeEncoder<bigint[]> | undefined;\nlet memoizedU64ArrayDecoder: FixedSizeDecoder<bigint[]> | undefined;\n\nfunction getMemoizedU64Encoder(): FixedSizeEncoder<bigint, 8> {\n if (!memoizedU64Encoder) memoizedU64Encoder = getU64Encoder();\n return memoizedU64Encoder;\n}\nfunction getMemoizedU64Decoder(): FixedSizeDecoder<bigint, 8> {\n if (!memoizedU64Decoder) memoizedU64Decoder = getU64Decoder();\n return memoizedU64Decoder;\n}\nfunction getMemoizedU64ArrayEncoder(): FixedSizeEncoder<bigint[], typeof BITVEC_LENGTH> {\n if (!memoizedU64ArrayEncoder) memoizedU64ArrayEncoder = getArrayCodec(getU64Codec(), { size: BITVEC_LENGTH });\n return memoizedU64ArrayEncoder;\n}\nfunction getMemoizedU64ArrayDecoder(): FixedSizeDecoder<bigint[], typeof BITVEC_LENGTH> {\n if (!memoizedU64ArrayDecoder) memoizedU64ArrayDecoder = getArrayCodec(getU64Codec(), { size: BITVEC_LENGTH });\n return memoizedU64ArrayDecoder;\n}\n\ntype SysvarSlotHistorySize = typeof SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE;\n\n/**\n * The `SlotHistory` sysvar.\n *\n * A bitvector of slots present over the last epoch.\n */\nexport type SysvarSlotHistory = {\n bits: bigint[];\n nextSlot: Slot;\n};\n\nexport function getSysvarSlotHistoryEncoder(): FixedSizeEncoder<SysvarSlotHistory, SysvarSlotHistorySize> {\n return createEncoder({\n fixedSize: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE,\n write: (value: SysvarSlotHistory, bytes, offset) => {\n // First byte is the bitvector discriminator.\n bytes.set([BITVEC_DISCRIMINATOR], offset);\n offset += 1;\n // Next 8 bytes are the bitvector length.\n getMemoizedU64Encoder().write(BigInt(BITVEC_LENGTH), bytes, offset);\n offset += 8;\n // Next `BITVEC_LENGTH` bytes are the bitvector.\n // Any missing bits are assumed to be 0.\n getMemoizedU64ArrayEncoder().write(value.bits, bytes, offset);\n offset += BITVEC_LENGTH * 8;\n // Next 8 bytes are the number of bits.\n getMemoizedU64Encoder().write(BigInt(BITVEC_NUM_BITS), bytes, offset);\n offset += 8;\n // Next 8 bytes are the next slot.\n getMemoizedU64Encoder().write(value.nextSlot, bytes, offset);\n offset += 8;\n return offset;\n },\n });\n}\n\nexport function getSysvarSlotHistoryDecoder(): FixedSizeDecoder<SysvarSlotHistory, SysvarSlotHistorySize> {\n return createDecoder({\n fixedSize: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE,\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n // Byte length should be exact.\n if (bytes.length != SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH, {\n actual: bytes.length,\n expected: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE,\n });\n }\n // First byte is the bitvector discriminator.\n const discriminator = bytes[offset];\n offset += 1;\n if (discriminator !== BITVEC_DISCRIMINATOR) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE, {\n actual: discriminator,\n expected: BITVEC_DISCRIMINATOR,\n });\n }\n // Next 8 bytes are the bitvector length.\n const bitVecLength = getMemoizedU64Decoder().read(bytes, offset)[0];\n offset += 8;\n if (bitVecLength !== BigInt(BITVEC_LENGTH)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, {\n actual: bitVecLength,\n codecDescription: 'SysvarSlotHistoryCodec',\n expected: BITVEC_LENGTH,\n });\n }\n // Next `BITVEC_LENGTH` bytes are the bitvector.\n const bits = getMemoizedU64ArrayDecoder().read(bytes, offset)[0];\n offset += BITVEC_LENGTH * 8;\n // Next 8 bytes are the number of bits.\n const numBits = getMemoizedU64Decoder().read(bytes, offset)[0];\n offset += 8;\n if (numBits !== BigInt(BITVEC_NUM_BITS)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, {\n actual: numBits,\n codecDescription: 'SysvarSlotHistoryCodec',\n expected: BITVEC_NUM_BITS,\n });\n }\n // Next 8 bytes are the next slot.\n const nextSlot = getMemoizedU64Decoder().read(bytes, offset)[0];\n offset += 8;\n return [\n {\n bits,\n nextSlot,\n },\n offset,\n ];\n },\n });\n}\n\nexport function getSysvarSlotHistoryCodec(): FixedSizeCodec<\n SysvarSlotHistory,\n SysvarSlotHistory,\n SysvarSlotHistorySize\n> {\n return combineCodec(getSysvarSlotHistoryEncoder(), getSysvarSlotHistoryDecoder());\n}\n\n/**\n * Fetch the `SlotHistory` sysvar.\n *\n * A bitvector of slots present over the last epoch.\n */\nexport async function fetchSysvarSlotHistory(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarSlotHistory> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_SLOT_HISTORY_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarSlotHistoryDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport {\n getDefaultLamportsDecoder,\n getDefaultLamportsEncoder,\n type LamportsUnsafeBeyond2Pow53Minus1,\n} from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_STAKE_HISTORY_ADDRESS } from './sysvar';\n\ntype Entry = Readonly<{\n activating: LamportsUnsafeBeyond2Pow53Minus1;\n deactivating: LamportsUnsafeBeyond2Pow53Minus1;\n effective: LamportsUnsafeBeyond2Pow53Minus1;\n}>;\n\n/**\n * The `StakeHistory` sysvar.\n *\n * History of stake activations and de-activations.\n */\nexport type SysvarStakeHistory = Entry[];\n\nexport function getSysvarStakeHistoryEncoder(): VariableSizeEncoder<SysvarStakeHistory> {\n return getArrayEncoder(\n getStructEncoder([\n ['effective', getDefaultLamportsEncoder()],\n ['activating', getDefaultLamportsEncoder()],\n ['deactivating', getDefaultLamportsEncoder()],\n ]),\n );\n}\n\nexport function getSysvarStakeHistoryDecoder(): VariableSizeDecoder<SysvarStakeHistory> {\n return getArrayDecoder(\n getStructDecoder([\n ['effective', getDefaultLamportsDecoder()],\n ['activating', getDefaultLamportsDecoder()],\n ['deactivating', getDefaultLamportsDecoder()],\n ]),\n );\n}\n\nexport function getSysvarStakeHistoryCodec(): VariableSizeCodec<SysvarStakeHistory> {\n return combineCodec(getSysvarStakeHistoryEncoder(), getSysvarStakeHistoryDecoder());\n}\n\n/**\n * Fetch the `StakeHistory` sysvar.\n *\n * History of stake activations and de-activations.\n */\nexport async function fetchSysvarStakeHistory(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarStakeHistory> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_STAKE_HISTORY_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarStakeHistoryDecoder());\n return decoded.data;\n}\n"]}
1
+ {"version":3,"sources":["../src/sysvar.ts","../src/clock.ts","../src/epoch-rewards.ts","../src/epoch-schedule.ts","../src/fees.ts","../src/last-restart-slot.ts","../src/recent-blockhashes.ts","../src/rent.ts","../src/slot-hashes.ts","../src/slot-history.ts","../src/stake-history.ts"],"names":["getStructEncoder","getU64Encoder","getStructDecoder","getU64Decoder","combineCodec","assertAccountExists","decodeAccount","getDefaultLamportsEncoder","getDefaultLamportsDecoder","getArrayEncoder","getBlockhashEncoder","getArrayDecoder","getBlockhashDecoder"],"mappings":"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","file":"index.browser.mjs","sourcesContent":["import {\n type FetchAccountConfig,\n fetchEncodedAccount,\n fetchJsonParsedAccount,\n type MaybeAccount,\n type MaybeEncodedAccount,\n} from '@solana/accounts';\nimport type { Address } from '@solana/addresses';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { JsonParsedSysvarAccount } from '@solana/rpc-parsed-types';\nimport type { Rpc } from '@solana/rpc-spec';\n\nexport const SYSVAR_CLOCK_ADDRESS =\n 'SysvarC1ock11111111111111111111111111111111' as Address<'SysvarC1ock11111111111111111111111111111111'>;\nexport const SYSVAR_EPOCH_REWARDS_ADDRESS =\n 'SysvarEpochRewards1111111111111111111111111' as Address<'SysvarEpochRewards1111111111111111111111111'>;\nexport const SYSVAR_EPOCH_SCHEDULE_ADDRESS =\n 'SysvarEpochSchedu1e111111111111111111111111' as Address<'SysvarEpochSchedu1e111111111111111111111111'>;\nexport const SYSVAR_FEES_ADDRESS =\n 'SysvarFees111111111111111111111111111111111' as Address<'SysvarFees111111111111111111111111111111111'>;\nexport const SYSVAR_INSTRUCTIONS_ADDRESS =\n 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;\nexport const SYSVAR_LAST_RESTART_SLOT_ADDRESS =\n 'SysvarLastRestartS1ot1111111111111111111111' as Address<'SysvarLastRestartS1ot1111111111111111111111'>;\nexport const SYSVAR_RECENT_BLOCKHASHES_ADDRESS =\n 'SysvarRecentB1ockHashes11111111111111111111' as Address<'SysvarRecentB1ockHashes11111111111111111111'>;\nexport const SYSVAR_RENT_ADDRESS =\n 'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\nexport const SYSVAR_SLOT_HASHES_ADDRESS =\n 'SysvarS1otHashes111111111111111111111111111' as Address<'SysvarS1otHashes111111111111111111111111111'>;\nexport const SYSVAR_SLOT_HISTORY_ADDRESS =\n 'SysvarS1otHistory11111111111111111111111111' as Address<'SysvarS1otHistory11111111111111111111111111'>;\nexport const SYSVAR_STAKE_HISTORY_ADDRESS =\n 'SysvarStakeHistory1111111111111111111111111' as Address<'SysvarStakeHistory1111111111111111111111111'>;\n\ntype SysvarAddress =\n | typeof SYSVAR_CLOCK_ADDRESS\n | typeof SYSVAR_EPOCH_REWARDS_ADDRESS\n | typeof SYSVAR_EPOCH_SCHEDULE_ADDRESS\n | typeof SYSVAR_FEES_ADDRESS\n | typeof SYSVAR_INSTRUCTIONS_ADDRESS\n | typeof SYSVAR_LAST_RESTART_SLOT_ADDRESS\n | typeof SYSVAR_RECENT_BLOCKHASHES_ADDRESS\n | typeof SYSVAR_RENT_ADDRESS\n | typeof SYSVAR_SLOT_HASHES_ADDRESS\n | typeof SYSVAR_SLOT_HISTORY_ADDRESS\n | typeof SYSVAR_STAKE_HISTORY_ADDRESS;\n\n/**\n * Fetch an encoded sysvar account.\n *\n * Sysvars are special accounts that contain dynamically-updated data about the\n * network cluster, the blockchain history, and the executing transaction.\n */\nexport async function fetchEncodedSysvarAccount<TAddress extends SysvarAddress>(\n rpc: Rpc<GetAccountInfoApi>,\n address: TAddress,\n config?: FetchAccountConfig,\n): Promise<MaybeEncodedAccount<TAddress>> {\n return await fetchEncodedAccount<TAddress>(rpc, address, config);\n}\n\n/**\n * Fetch a JSON-parsed sysvar account.\n *\n * Sysvars are special accounts that contain dynamically-updated data about the\n * network cluster, the blockchain history, and the executing transaction.\n */\nexport async function fetchJsonParsedSysvarAccount<TAddress extends SysvarAddress>(\n rpc: Rpc<GetAccountInfoApi>,\n address: TAddress,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<JsonParsedSysvarAccount, TAddress> | MaybeEncodedAccount<TAddress>> {\n return await fetchJsonParsedAccount<JsonParsedSysvarAccount, TAddress>(rpc, address, config);\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Epoch, Slot, UnixTimestamp } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_CLOCK_ADDRESS } from './sysvar';\n\ntype SysvarClockSize = 40;\n\n/**\n * The `Clock` sysvar.\n *\n * Information about the network’s clock, ticks, slots, etc.\n */\nexport type SysvarClock = Readonly<{\n epoch: Epoch;\n epochStartTimestamp: UnixTimestamp;\n leaderScheduleEpoch: Epoch;\n slot: Slot;\n unixTimestamp: UnixTimestamp;\n}>;\n\nexport function getSysvarClockEncoder(): FixedSizeEncoder<SysvarClock, SysvarClockSize> {\n return getStructEncoder([\n ['slot', getU64Encoder()],\n ['epochStartTimestamp', getI64Encoder()],\n ['epoch', getU64Encoder()],\n ['leaderScheduleEpoch', getU64Encoder()],\n ['unixTimestamp', getI64Encoder()],\n ]) as FixedSizeEncoder<SysvarClock, SysvarClockSize>;\n}\n\nexport function getSysvarClockDecoder(): FixedSizeDecoder<SysvarClock, SysvarClockSize> {\n return getStructDecoder([\n ['slot', getU64Decoder()],\n ['epochStartTimestamp', getI64Decoder()],\n ['epoch', getU64Decoder()],\n ['leaderScheduleEpoch', getU64Decoder()],\n ['unixTimestamp', getI64Decoder()],\n ]) as FixedSizeDecoder<SysvarClock, SysvarClockSize>;\n}\n\nexport function getSysvarClockCodec(): FixedSizeCodec<SysvarClock, SysvarClock, SysvarClockSize> {\n return combineCodec(getSysvarClockEncoder(), getSysvarClockDecoder());\n}\n\n/**\n * Fetch the `Clock` sysvar.\n *\n * Information about the network’s clock, ticks, slots, etc.\n */\nexport async function fetchSysvarClock(rpc: Rpc<GetAccountInfoApi>, config?: FetchAccountConfig): Promise<SysvarClock> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_CLOCK_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarClockDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_EPOCH_REWARDS_ADDRESS } from './sysvar';\n\ntype SysvarEpochRewardsSize = 24;\n\n/**\n * The `EpochRewards` sysvar.\n *\n * Tracks the progress of epoch rewards distribution. It includes:\n * - Total rewards for the current epoch, in lamports.\n * - Rewards for the current epoch distributed so far, in lamports.\n * - Distribution completed block height, i.e. distribution of all staking rewards for the current\n * epoch will be completed at this block height.\n *\n * Note that `EpochRewards` only lasts for a handful of blocks at the start of\n * an epoch. When all rewards have been distributed, the sysvar is deleted.\n * See https://github.com/solana-labs/solana/blob/e0203f22dc83cb792fa97f91dbe6e924cbd08af1/docs/src/runtime/sysvars.md?plain=1#L155-L168\n */\nexport type SysvarEpochRewards = Readonly<{\n distributedRewards: bigint;\n distributionCompleteBlockHeight: bigint;\n totalRewards: bigint;\n}>;\n\nexport function getSysvarEpochRewardsEncoder(): FixedSizeEncoder<SysvarEpochRewards, SysvarEpochRewardsSize> {\n return getStructEncoder([\n ['distributionCompleteBlockHeight', getU64Encoder()],\n ['distributedRewards', getU64Encoder()],\n ['totalRewards', getU64Encoder()],\n ]) as FixedSizeEncoder<SysvarEpochRewards, SysvarEpochRewardsSize>;\n}\n\nexport function getSysvarEpochRewardsDecoder(): FixedSizeDecoder<SysvarEpochRewards, SysvarEpochRewardsSize> {\n return getStructDecoder([\n ['distributionCompleteBlockHeight', getU64Decoder()],\n ['distributedRewards', getU64Decoder()],\n ['totalRewards', getU64Decoder()],\n ]) as FixedSizeDecoder<SysvarEpochRewards, SysvarEpochRewardsSize>;\n}\n\nexport function getSysvarEpochRewardsCodec(): FixedSizeCodec<\n SysvarEpochRewards,\n SysvarEpochRewards,\n SysvarEpochRewardsSize\n> {\n return combineCodec(getSysvarEpochRewardsEncoder(), getSysvarEpochRewardsDecoder());\n}\n\n/**\n * Fetch the `EpochRewards` sysvar.\n *\n * Tracks the progress of epoch rewards distribution. It includes:\n * - Total rewards for the current epoch, in lamports.\n * - Rewards for the current epoch distributed so far, in lamports.\n * - Distribution completed block height, i.e. distribution of all staking rewards for the current\n * epoch will be completed at this block height.\n *\n * Note that `EpochRewards` only lasts for a handful of blocks at the start of\n * an epoch. When all rewards have been distributed, the sysvar is deleted.\n * See https://github.com/solana-labs/solana/blob/e0203f22dc83cb792fa97f91dbe6e924cbd08af1/docs/src/runtime/sysvars.md?plain=1#L155-L168\n */\nexport async function fetchSysvarEpochRewards(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarEpochRewards> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_EPOCH_REWARDS_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarEpochRewardsDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Epoch, Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_EPOCH_SCHEDULE_ADDRESS } from './sysvar';\n\ntype SysvarEpochScheduleSize = 33;\n\n/**\n * The `EpochSchedule` sysvar.\n *\n * Information about epoch duration.\n */\nexport type SysvarEpochSchedule = Readonly<{\n firstNormalEpoch: Epoch;\n firstNormalSlot: Slot;\n leaderScheduleSlotOffset: bigint;\n slotsPerEpoch: bigint;\n warmup: boolean;\n}>;\n\nexport function getSysvarEpochScheduleEncoder(): FixedSizeEncoder<SysvarEpochSchedule, SysvarEpochScheduleSize> {\n return getStructEncoder([\n ['slotsPerEpoch', getU64Encoder()],\n ['leaderScheduleSlotOffset', getU64Encoder()],\n ['warmup', getBooleanEncoder()],\n ['firstNormalEpoch', getU64Encoder()],\n ['firstNormalSlot', getU64Encoder()],\n ]) as FixedSizeEncoder<SysvarEpochSchedule, SysvarEpochScheduleSize>;\n}\n\nexport function getSysvarEpochScheduleDecoder(): FixedSizeDecoder<SysvarEpochSchedule, SysvarEpochScheduleSize> {\n return getStructDecoder([\n ['slotsPerEpoch', getU64Decoder()],\n ['leaderScheduleSlotOffset', getU64Decoder()],\n ['warmup', getBooleanDecoder()],\n ['firstNormalEpoch', getU64Decoder()],\n ['firstNormalSlot', getU64Decoder()],\n ]) as FixedSizeDecoder<SysvarEpochSchedule, SysvarEpochScheduleSize>;\n}\n\nexport function getSysvarEpochScheduleCodec(): FixedSizeCodec<\n SysvarEpochSchedule,\n SysvarEpochSchedule,\n SysvarEpochScheduleSize\n> {\n return combineCodec(getSysvarEpochScheduleEncoder(), getSysvarEpochScheduleDecoder());\n}\n\n/**\n * Fetch the `EpochSchedule` sysvar.\n *\n * Information about epoch duration.\n */\nexport async function fetchSysvarEpochSchedule(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarEpochSchedule> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_EPOCH_SCHEDULE_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarEpochScheduleDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getStructDecoder,\n getStructEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport { getDefaultLamportsDecoder, getDefaultLamportsEncoder, Lamports } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_FEES_ADDRESS } from './sysvar';\n\ntype FeeCalculator = Readonly<{\n lamportsPerSignature: Lamports;\n}>;\n\ntype SysvarFeesSize = 8;\n\n/**\n * The `Fees` sysvar.\n *\n * Current cluster fees.\n */\nexport type SysvarFees = Readonly<{\n feeCalculator: FeeCalculator;\n}>;\n\nexport function getSysvarFeesEncoder(): FixedSizeEncoder<SysvarFees, SysvarFeesSize> {\n return getStructEncoder([\n ['feeCalculator', getStructEncoder([['lamportsPerSignature', getDefaultLamportsEncoder()]])],\n ]) as FixedSizeEncoder<SysvarFees, SysvarFeesSize>;\n}\n\nexport function getSysvarFeesDecoder(): FixedSizeDecoder<SysvarFees, SysvarFeesSize> {\n return getStructDecoder([\n ['feeCalculator', getStructDecoder([['lamportsPerSignature', getDefaultLamportsDecoder()]])],\n ]) as FixedSizeDecoder<SysvarFees, SysvarFeesSize>;\n}\n\nexport function getSysvarFeesCodec(): FixedSizeCodec<SysvarFees, SysvarFees, SysvarFeesSize> {\n return combineCodec(getSysvarFeesEncoder(), getSysvarFeesDecoder());\n}\n\n/**\n * Fetch the `Fees` sysvar.\n *\n * Current cluster fees.\n */\nexport async function fetchSysvarFees(rpc: Rpc<GetAccountInfoApi>, config?: FetchAccountConfig): Promise<SysvarFees> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_FEES_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarFeesDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_LAST_RESTART_SLOT_ADDRESS } from './sysvar';\n\ntype SysvarLastRestartSlotSize = 8;\n\n/**\n * The `LastRestartSlot` sysvar.\n *\n * Information about the last restart slot (hard fork).\n *\n * The `LastRestartSlot` sysvar provides access to the last restart slot kept in the\n * bank fork for the slot on the fork that executes the current transaction.\n * In case there was no fork it returns `0`.\n */\nexport type SysvarLastRestartSlot = Readonly<{\n lastRestartSlot: Slot;\n}>;\n\nexport function getSysvarLastRestartSlotEncoder(): FixedSizeEncoder<SysvarLastRestartSlot, SysvarLastRestartSlotSize> {\n return getStructEncoder([['lastRestartSlot', getU64Encoder()]]) as FixedSizeEncoder<\n SysvarLastRestartSlot,\n SysvarLastRestartSlotSize\n >;\n}\n\nexport function getSysvarLastRestartSlotDecoder(): FixedSizeDecoder<SysvarLastRestartSlot, SysvarLastRestartSlotSize> {\n return getStructDecoder([['lastRestartSlot', getU64Decoder()]]) as FixedSizeDecoder<\n SysvarLastRestartSlot,\n SysvarLastRestartSlotSize\n >;\n}\n\nexport function getSysvarLastRestartSlotCodec(): FixedSizeCodec<\n SysvarLastRestartSlot,\n SysvarLastRestartSlot,\n SysvarLastRestartSlotSize\n> {\n return combineCodec(getSysvarLastRestartSlotEncoder(), getSysvarLastRestartSlotDecoder());\n}\n\n/**\n * Fetch the `LastRestartSlot` sysvar.\n *\n * Information about the last restart slot (hard fork).\n *\n * The `LastRestartSlot` sysvar provides access to the last restart slot kept in the\n * bank fork for the slot on the fork that executes the current transaction.\n * In case there was no fork it returns `0`.\n */\nexport async function fetchSysvarLastRestartSlot(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarLastRestartSlot> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_LAST_RESTART_SLOT_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarLastRestartSlotDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport {\n type Blockhash,\n getBlockhashDecoder,\n getBlockhashEncoder,\n getDefaultLamportsDecoder,\n getDefaultLamportsEncoder,\n type Lamports,\n} from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_RECENT_BLOCKHASHES_ADDRESS } from './sysvar';\n\ntype FeeCalculator = Readonly<{\n lamportsPerSignature: Lamports;\n}>;\ntype Entry = Readonly<{\n blockhash: Blockhash;\n feeCalculator: FeeCalculator;\n}>;\n\n/**\n * The `RecentBlockhashes` sysvar.\n *\n * Information about recent blocks and their fee calculators.\n */\nexport type SysvarRecentBlockhashes = Entry[];\n\nexport function getSysvarRecentBlockhashesEncoder(): VariableSizeEncoder<SysvarRecentBlockhashes> {\n return getArrayEncoder(\n getStructEncoder([\n ['blockhash', getBlockhashEncoder()],\n ['feeCalculator', getStructEncoder([['lamportsPerSignature', getDefaultLamportsEncoder()]])],\n ]),\n );\n}\n\nexport function getSysvarRecentBlockhashesDecoder(): VariableSizeDecoder<SysvarRecentBlockhashes> {\n return getArrayDecoder(\n getStructDecoder([\n ['blockhash', getBlockhashDecoder()],\n ['feeCalculator', getStructDecoder([['lamportsPerSignature', getDefaultLamportsDecoder()]])],\n ]),\n );\n}\n\nexport function getSysvarRecentBlockhashesCodec(): VariableSizeCodec<SysvarRecentBlockhashes> {\n return combineCodec(getSysvarRecentBlockhashesEncoder(), getSysvarRecentBlockhashesDecoder());\n}\n\n/**\n * Fetch the `RecentBlockhashes` sysvar.\n *\n * Information about recent blocks and their fee calculators.\n */\nexport async function fetchSysvarRecentBlockhashes(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarRecentBlockhashes> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_RECENT_BLOCKHASHES_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarRecentBlockhashesDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getF64Decoder,\n getF64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport { getDefaultLamportsDecoder, getDefaultLamportsEncoder, type Lamports } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_RENT_ADDRESS } from './sysvar';\n\ntype SysvarRentSize = 17;\n\n/**\n * The `Rent` sysvar.\n *\n * Configuration for network rent.\n */\nexport type SysvarRent = Readonly<{\n burnPercent: number;\n exemptionThreshold: number;\n lamportsPerByteYear: Lamports;\n}>;\n\nexport function getSysvarRentEncoder(): FixedSizeEncoder<SysvarRent, SysvarRentSize> {\n return getStructEncoder([\n ['lamportsPerByteYear', getDefaultLamportsEncoder()],\n ['exemptionThreshold', getF64Encoder()],\n ['burnPercent', getU8Encoder()],\n ]) as FixedSizeEncoder<SysvarRent, SysvarRentSize>;\n}\n\nexport function getSysvarRentDecoder(): FixedSizeDecoder<SysvarRent, SysvarRentSize> {\n return getStructDecoder([\n ['lamportsPerByteYear', getDefaultLamportsDecoder()],\n ['exemptionThreshold', getF64Decoder()],\n ['burnPercent', getU8Decoder()],\n ]) as FixedSizeDecoder<SysvarRent, SysvarRentSize>;\n}\n\nexport function getSysvarRentCodec(): FixedSizeCodec<SysvarRent, SysvarRent, SysvarRentSize> {\n return combineCodec(getSysvarRentEncoder(), getSysvarRentDecoder());\n}\n\n/**\n * Fetch the `Rent` sysvar.\n *\n * Configuration for network rent.\n */\nexport async function fetchSysvarRent(rpc: Rpc<GetAccountInfoApi>, config?: FetchAccountConfig): Promise<SysvarRent> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_RENT_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarRentDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport { type Blockhash, getBlockhashDecoder, getBlockhashEncoder, type Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_SLOT_HASHES_ADDRESS } from './sysvar';\n\ntype Entry = Readonly<{\n hash: Blockhash;\n slot: Slot;\n}>;\n\n/**\n * The `SlotHashes` sysvar.\n *\n * The most recent hashes of a slot's parent banks.\n */\nexport type SysvarSlotHashes = Entry[];\n\nexport function getSysvarSlotHashesEncoder(): VariableSizeEncoder<SysvarSlotHashes> {\n return getArrayEncoder(\n getStructEncoder([\n ['slot', getU64Encoder()],\n ['hash', getBlockhashEncoder()],\n ]),\n );\n}\n\nexport function getSysvarSlotHashesDecoder(): VariableSizeDecoder<SysvarSlotHashes> {\n return getArrayDecoder(\n getStructDecoder([\n ['slot', getU64Decoder()],\n ['hash', getBlockhashDecoder()],\n ]),\n );\n}\n\nexport function getSysvarSlotHashesCodec(): VariableSizeCodec<SysvarSlotHashes> {\n return combineCodec(getSysvarSlotHashesEncoder(), getSysvarSlotHashesDecoder());\n}\n\n/**\n * Fetch the `SlotHashes` sysvar.\n *\n * The most recent hashes of a slot's parent banks.\n */\nexport async function fetchSysvarSlotHashes(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarSlotHashes> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_SLOT_HASHES_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarSlotHashesDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n createDecoder,\n createEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getArrayCodec,\n getU64Codec,\n getU64Decoder,\n getU64Encoder,\n ReadonlyUint8Array,\n} from '@solana/codecs';\nimport {\n SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS,\n SolanaError,\n} from '@solana/errors';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_SLOT_HISTORY_ADDRESS } from './sysvar';\n\nconst BITVEC_DISCRIMINATOR = 1;\n// Max number of bits in the bitvector.\n// The Solana SDK defines a constant `MAX_ENTRIES` representing the maximum\n// number of bits that can be represented by the bitvector in the `SlotHistory`\n// sysvar. This value is 1024 * 1024 = 1_048_576.\n// See https://github.com/solana-labs/solana/blob/e0203f22dc83cb792fa97f91dbe6e924cbd08af1/sdk/program/src/slot_history.rs#L43\nconst BITVEC_NUM_BITS = 1024 * 1024;\n// The length of the bitvector in blocks.\n// At 64 bits per block, this is 1024 * 1024 / 64 = 16_384.\nconst BITVEC_LENGTH = BITVEC_NUM_BITS / 64;\n\nconst SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE =\n 1 + // Discriminator\n 8 + // bitvector length (u64)\n BITVEC_LENGTH * 8 +\n 8 + // Number of bits (u64)\n 8; // Next slot (u64)\n\nlet memoizedU64Encoder: FixedSizeEncoder<bigint, 8> | undefined;\nlet memoizedU64Decoder: FixedSizeDecoder<bigint, 8> | undefined;\nlet memoizedU64ArrayEncoder: FixedSizeEncoder<bigint[]> | undefined;\nlet memoizedU64ArrayDecoder: FixedSizeDecoder<bigint[]> | undefined;\n\nfunction getMemoizedU64Encoder(): FixedSizeEncoder<bigint, 8> {\n if (!memoizedU64Encoder) memoizedU64Encoder = getU64Encoder();\n return memoizedU64Encoder;\n}\nfunction getMemoizedU64Decoder(): FixedSizeDecoder<bigint, 8> {\n if (!memoizedU64Decoder) memoizedU64Decoder = getU64Decoder();\n return memoizedU64Decoder;\n}\nfunction getMemoizedU64ArrayEncoder(): FixedSizeEncoder<bigint[], typeof BITVEC_LENGTH> {\n if (!memoizedU64ArrayEncoder) memoizedU64ArrayEncoder = getArrayCodec(getU64Codec(), { size: BITVEC_LENGTH });\n return memoizedU64ArrayEncoder;\n}\nfunction getMemoizedU64ArrayDecoder(): FixedSizeDecoder<bigint[], typeof BITVEC_LENGTH> {\n if (!memoizedU64ArrayDecoder) memoizedU64ArrayDecoder = getArrayCodec(getU64Codec(), { size: BITVEC_LENGTH });\n return memoizedU64ArrayDecoder;\n}\n\ntype SysvarSlotHistorySize = typeof SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE;\n\n/**\n * The `SlotHistory` sysvar.\n *\n * A bitvector of slots present over the last epoch.\n */\nexport type SysvarSlotHistory = {\n bits: bigint[];\n nextSlot: Slot;\n};\n\nexport function getSysvarSlotHistoryEncoder(): FixedSizeEncoder<SysvarSlotHistory, SysvarSlotHistorySize> {\n return createEncoder({\n fixedSize: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE,\n write: (value: SysvarSlotHistory, bytes, offset) => {\n // First byte is the bitvector discriminator.\n bytes.set([BITVEC_DISCRIMINATOR], offset);\n offset += 1;\n // Next 8 bytes are the bitvector length.\n getMemoizedU64Encoder().write(BigInt(BITVEC_LENGTH), bytes, offset);\n offset += 8;\n // Next `BITVEC_LENGTH` bytes are the bitvector.\n // Any missing bits are assumed to be 0.\n getMemoizedU64ArrayEncoder().write(value.bits, bytes, offset);\n offset += BITVEC_LENGTH * 8;\n // Next 8 bytes are the number of bits.\n getMemoizedU64Encoder().write(BigInt(BITVEC_NUM_BITS), bytes, offset);\n offset += 8;\n // Next 8 bytes are the next slot.\n getMemoizedU64Encoder().write(value.nextSlot, bytes, offset);\n offset += 8;\n return offset;\n },\n });\n}\n\nexport function getSysvarSlotHistoryDecoder(): FixedSizeDecoder<SysvarSlotHistory, SysvarSlotHistorySize> {\n return createDecoder({\n fixedSize: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE,\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n // Byte length should be exact.\n if (bytes.length != SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH, {\n actual: bytes.length,\n expected: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE,\n });\n }\n // First byte is the bitvector discriminator.\n const discriminator = bytes[offset];\n offset += 1;\n if (discriminator !== BITVEC_DISCRIMINATOR) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE, {\n actual: discriminator,\n expected: BITVEC_DISCRIMINATOR,\n });\n }\n // Next 8 bytes are the bitvector length.\n const bitVecLength = getMemoizedU64Decoder().read(bytes, offset)[0];\n offset += 8;\n if (bitVecLength !== BigInt(BITVEC_LENGTH)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, {\n actual: bitVecLength,\n codecDescription: 'SysvarSlotHistoryCodec',\n expected: BITVEC_LENGTH,\n });\n }\n // Next `BITVEC_LENGTH` bytes are the bitvector.\n const bits = getMemoizedU64ArrayDecoder().read(bytes, offset)[0];\n offset += BITVEC_LENGTH * 8;\n // Next 8 bytes are the number of bits.\n const numBits = getMemoizedU64Decoder().read(bytes, offset)[0];\n offset += 8;\n if (numBits !== BigInt(BITVEC_NUM_BITS)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, {\n actual: numBits,\n codecDescription: 'SysvarSlotHistoryCodec',\n expected: BITVEC_NUM_BITS,\n });\n }\n // Next 8 bytes are the next slot.\n const nextSlot = getMemoizedU64Decoder().read(bytes, offset)[0];\n offset += 8;\n return [\n {\n bits,\n nextSlot,\n },\n offset,\n ];\n },\n });\n}\n\nexport function getSysvarSlotHistoryCodec(): FixedSizeCodec<\n SysvarSlotHistory,\n SysvarSlotHistory,\n SysvarSlotHistorySize\n> {\n return combineCodec(getSysvarSlotHistoryEncoder(), getSysvarSlotHistoryDecoder());\n}\n\n/**\n * Fetch the `SlotHistory` sysvar.\n *\n * A bitvector of slots present over the last epoch.\n */\nexport async function fetchSysvarSlotHistory(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarSlotHistory> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_SLOT_HISTORY_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarSlotHistoryDecoder());\n return decoded.data;\n}\n","import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport { getDefaultLamportsDecoder, getDefaultLamportsEncoder, type Lamports } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_STAKE_HISTORY_ADDRESS } from './sysvar';\n\ntype Entry = Readonly<{\n activating: Lamports;\n deactivating: Lamports;\n effective: Lamports;\n}>;\n\n/**\n * The `StakeHistory` sysvar.\n *\n * History of stake activations and de-activations.\n */\nexport type SysvarStakeHistory = Entry[];\n\nexport function getSysvarStakeHistoryEncoder(): VariableSizeEncoder<SysvarStakeHistory> {\n return getArrayEncoder(\n getStructEncoder([\n ['effective', getDefaultLamportsEncoder()],\n ['activating', getDefaultLamportsEncoder()],\n ['deactivating', getDefaultLamportsEncoder()],\n ]),\n );\n}\n\nexport function getSysvarStakeHistoryDecoder(): VariableSizeDecoder<SysvarStakeHistory> {\n return getArrayDecoder(\n getStructDecoder([\n ['effective', getDefaultLamportsDecoder()],\n ['activating', getDefaultLamportsDecoder()],\n ['deactivating', getDefaultLamportsDecoder()],\n ]),\n );\n}\n\nexport function getSysvarStakeHistoryCodec(): VariableSizeCodec<SysvarStakeHistory> {\n return combineCodec(getSysvarStakeHistoryEncoder(), getSysvarStakeHistoryDecoder());\n}\n\n/**\n * Fetch the `StakeHistory` sysvar.\n *\n * History of stake activations and de-activations.\n */\nexport async function fetchSysvarStakeHistory(\n rpc: Rpc<GetAccountInfoApi>,\n config?: FetchAccountConfig,\n): Promise<SysvarStakeHistory> {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_STAKE_HISTORY_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarStakeHistoryDecoder());\n return decoded.data;\n}\n"]}