@ar.io/sdk 4.0.0-solana.8 → 4.0.0
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 +721 -673
- package/lib/esm/cli/cli.js +28 -152
- package/lib/esm/cli/commands/antCommands.js +5 -66
- package/lib/esm/cli/commands/arnsPurchaseCommands.js +7 -28
- package/lib/esm/cli/commands/escrowCommands.js +23 -4
- package/lib/esm/cli/commands/gatewayWriteCommands.js +15 -8
- package/lib/esm/cli/commands/pruneCommands.js +14 -26
- package/lib/esm/cli/commands/readCommands.js +12 -1
- package/lib/esm/cli/options.js +2 -75
- package/lib/esm/cli/utils.js +96 -209
- package/lib/esm/common/ant-registry.js +12 -160
- package/lib/esm/common/ant.js +40 -1208
- package/lib/esm/common/faucet.js +17 -6
- package/lib/esm/common/index.js +0 -4
- package/lib/esm/common/io.js +13 -1441
- package/lib/esm/constants.js +0 -18
- package/lib/esm/solana/ant-readable.js +391 -54
- package/lib/esm/solana/ant-registry-readable.js +15 -0
- package/lib/esm/solana/ant-registry-writeable.js +19 -4
- package/lib/esm/solana/ant-writeable.js +43 -11
- package/lib/esm/solana/ata.js +15 -0
- package/lib/esm/solana/canonical-message.js +45 -9
- package/lib/esm/solana/clusters.js +71 -22
- package/lib/esm/solana/constants.js +21 -5
- package/lib/esm/solana/delegation-math.js +49 -0
- package/lib/esm/solana/deserialize.js +263 -727
- package/lib/esm/solana/escrow.js +145 -103
- package/lib/esm/solana/events.js +20 -199
- package/lib/esm/solana/funding-plan.js +19 -2
- package/lib/esm/solana/index.js +53 -12
- package/lib/esm/solana/instruction.js +15 -0
- package/lib/esm/solana/io-readable.js +510 -58
- package/lib/esm/solana/io-writeable.js +1198 -197
- package/lib/esm/solana/json-rpc.js +20 -4
- package/lib/esm/solana/metadata.js +15 -0
- package/lib/esm/solana/mpl-core.js +55 -5
- package/lib/esm/solana/pda.js +15 -0
- package/lib/esm/solana/predict-prescribed-observers.js +110 -0
- package/lib/esm/solana/retry.js +117 -0
- package/lib/esm/solana/rpc-circuit-breaker.js +258 -0
- package/lib/esm/solana/send.js +258 -3
- package/lib/esm/solana/spawn-ant.js +16 -2
- package/lib/esm/types/ant.js +8 -8
- package/lib/esm/types/io.js +0 -10
- package/lib/esm/utils/ant.js +0 -64
- package/lib/esm/utils/index.js +0 -3
- package/lib/esm/version.js +1 -1
- package/lib/types/cli/commands/antCommands.d.ts +6 -9
- package/lib/types/cli/commands/arnsPurchaseCommands.d.ts +27 -13
- package/lib/types/cli/commands/escrowCommands.d.ts +6 -0
- package/lib/types/cli/commands/gatewayWriteCommands.d.ts +12 -11
- package/lib/types/cli/commands/pruneCommands.d.ts +11 -11
- package/lib/types/cli/commands/readCommands.d.ts +25 -22
- package/lib/types/cli/commands/transfer.d.ts +9 -9
- package/lib/types/cli/options.d.ts +0 -57
- package/lib/types/cli/types.d.ts +6 -14
- package/lib/types/cli/utils.d.ts +34 -32
- package/lib/types/common/ant-registry.d.ts +35 -74
- package/lib/types/common/ant.d.ts +52 -570
- package/lib/types/common/faucet.d.ts +20 -8
- package/lib/types/common/index.d.ts +0 -3
- package/lib/types/common/io.d.ts +56 -288
- package/lib/types/constants.d.ts +0 -17
- package/lib/types/solana/ant-readable.d.ts +65 -6
- package/lib/types/solana/ant-registry-readable.d.ts +17 -2
- package/lib/types/solana/ant-registry-writeable.d.ts +20 -5
- package/lib/types/solana/ant-writeable.d.ts +39 -24
- package/lib/types/solana/ata.d.ts +15 -0
- package/lib/types/solana/canonical-message.d.ts +44 -5
- package/lib/types/solana/clusters.d.ts +68 -21
- package/lib/types/solana/constants.d.ts +16 -0
- package/lib/types/solana/delegation-math.d.ts +25 -0
- package/lib/types/solana/deserialize.d.ts +28 -198
- package/lib/types/solana/escrow.d.ts +128 -51
- package/lib/types/solana/events.d.ts +26 -144
- package/lib/types/solana/funding-plan.d.ts +15 -0
- package/lib/types/solana/index.d.ts +27 -3
- package/lib/types/solana/instruction.d.ts +15 -0
- package/lib/types/solana/io-readable.d.ts +185 -46
- package/lib/types/solana/io-writeable.d.ts +450 -77
- package/lib/types/solana/json-rpc.d.ts +15 -0
- package/lib/types/solana/metadata.d.ts +15 -0
- package/lib/types/solana/mpl-core.d.ts +44 -0
- package/lib/types/solana/predict-prescribed-observers.d.ts +28 -0
- package/lib/types/solana/retry.d.ts +62 -0
- package/lib/types/solana/rpc-circuit-breaker.d.ts +78 -0
- package/lib/types/solana/send.d.ts +80 -2
- package/lib/types/solana/spawn-ant.d.ts +15 -0
- package/lib/types/solana/types.d.ts +15 -0
- package/lib/types/types/ant-registry.d.ts +4 -4
- package/lib/types/types/ant.d.ts +92 -92
- package/lib/types/types/common.d.ts +18 -74
- package/lib/types/types/faucet.d.ts +2 -2
- package/lib/types/types/io.d.ts +189 -158
- package/lib/types/types/token.d.ts +0 -12
- package/lib/types/utils/ant.d.ts +1 -12
- package/lib/types/utils/index.d.ts +0 -3
- package/lib/types/version.d.ts +1 -1
- package/package.json +28 -38
- package/lib/esm/common/ant-versions.js +0 -87
- package/lib/esm/common/arweave.js +0 -21
- package/lib/esm/common/contracts/ao-process.js +0 -218
- package/lib/esm/common/hyperbeam/hb.js +0 -169
- package/lib/esm/common/marketplace.js +0 -669
- package/lib/esm/common/turbo.js +0 -215
- package/lib/esm/node/index.js +0 -20
- package/lib/esm/solana/generated/ant/events/aclEntryAddedEvent.js +0 -21
- package/lib/esm/solana/generated/ant/events/aclEntryRemovedEvent.js +0 -21
- package/lib/esm/solana/generated/ant/events/antMetadataUpdatedEvent.js +0 -21
- package/lib/esm/solana/generated/ant/events/antReconciledEvent.js +0 -21
- package/lib/esm/solana/generated/ant/events/antTransferredEvent.js +0 -21
- package/lib/esm/solana/generated/ant/events/attributesClearedEvent.js +0 -21
- package/lib/esm/solana/generated/ant/events/attributesSyncedEvent.js +0 -21
- package/lib/esm/solana/generated/ant/events/controllerAddedEvent.js +0 -21
- package/lib/esm/solana/generated/ant/events/controllerRemovedEvent.js +0 -21
- package/lib/esm/solana/generated/ant/events/index.js +0 -16
- package/lib/esm/solana/generated/ant/events/recordMetadataPrunedEvent.js +0 -21
- package/lib/esm/solana/generated/ant/events/recordMetadataRemovedEvent.js +0 -21
- package/lib/esm/solana/generated/ant/events/recordMetadataUpdatedEvent.js +0 -21
- package/lib/esm/solana/generated/ant/events/recordRemovedEvent.js +0 -21
- package/lib/esm/solana/generated/ant/events/recordSetEvent.js +0 -21
- package/lib/esm/solana/generated/ant/events/recordTransferredEvent.js +0 -21
- package/lib/esm/solana/generated/ant-escrow/events/escrowCancelledEvent.js +0 -21
- package/lib/esm/solana/generated/ant-escrow/events/escrowClaimedEvent.js +0 -21
- package/lib/esm/solana/generated/ant-escrow/events/escrowDepositedEvent.js +0 -21
- package/lib/esm/solana/generated/ant-escrow/events/escrowRecipientUpdatedEvent.js +0 -21
- package/lib/esm/solana/generated/ant-escrow/events/index.js +0 -5
- package/lib/esm/solana/generated/arns/events/demandFactorUpdatedEvent.js +0 -21
- package/lib/esm/solana/generated/arns/events/index.js +0 -13
- package/lib/esm/solana/generated/arns/events/leaseExtendedEvent.js +0 -21
- package/lib/esm/solana/generated/arns/events/namePurchasedEvent.js +0 -21
- package/lib/esm/solana/generated/arns/events/nameReassignedEvent.js +0 -21
- package/lib/esm/solana/generated/arns/events/nameReleasedEvent.js +0 -21
- package/lib/esm/solana/generated/arns/events/nameReservedEvent.js +0 -21
- package/lib/esm/solana/generated/arns/events/nameUnreservedEvent.js +0 -21
- package/lib/esm/solana/generated/arns/events/nameUpgradedEvent.js +0 -21
- package/lib/esm/solana/generated/arns/events/namesPrunedEvent.js +0 -21
- package/lib/esm/solana/generated/arns/events/reservedNameClaimedEvent.js +0 -21
- package/lib/esm/solana/generated/arns/events/returnedNamePurchasedEvent.js +0 -21
- package/lib/esm/solana/generated/arns/events/undernameIncreasedEvent.js +0 -21
- package/lib/esm/solana/generated/core/events/configUpdatedEvent.js +0 -21
- package/lib/esm/solana/generated/core/events/coreMigrationFinalizedEvent.js +0 -21
- package/lib/esm/solana/generated/core/events/index.js +0 -14
- package/lib/esm/solana/generated/core/events/primaryNameRemovedEvent.js +0 -21
- package/lib/esm/solana/generated/core/events/primaryNameRequestExpiredEvent.js +0 -21
- package/lib/esm/solana/generated/core/events/primaryNameRequestedEvent.js +0 -21
- package/lib/esm/solana/generated/core/events/primaryNameSetEvent.js +0 -21
- package/lib/esm/solana/generated/core/events/supplyFinalizedEvent.js +0 -21
- package/lib/esm/solana/generated/core/events/transferEvent.js +0 -21
- package/lib/esm/solana/generated/core/events/vaultCreatedEvent.js +0 -21
- package/lib/esm/solana/generated/core/events/vaultExtendedEvent.js +0 -21
- package/lib/esm/solana/generated/core/events/vaultIncreasedEvent.js +0 -21
- package/lib/esm/solana/generated/core/events/vaultReleasedEvent.js +0 -21
- package/lib/esm/solana/generated/core/events/vaultRevokedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/allowlistToggledEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/delegateAllowlistedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/delegationClosedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/delegationDecreasedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/delegationEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/epochClosedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/epochCreatedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/epochDistributedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/epochPrescribedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/epochWeightsTalliedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/epochsToggledEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/fundingPlanAppliedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/garMigrationFinalizedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/gatewayFinalizedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/gatewayJoinedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/gatewayLeavingEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/gatewayPrunedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/gatewaySettingsUpdatedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/index.js +0 -31
- package/lib/esm/solana/generated/gar/events/instantWithdrawalEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/observationSubmittedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/observerAddressUpdatedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/operatorStakeIncreasedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/redelegationEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/residueVaultCreatedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/rewardsCompoundedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/stakePaymentEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/withdrawalCancelledEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/withdrawalClaimedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/withdrawalCreatedEvent.js +0 -21
- package/lib/esm/solana/generated/gar/events/withdrawalPaymentEvent.js +0 -21
- package/lib/esm/solana/generated/mpl-core/accounts/assetV1.js +0 -42
- package/lib/esm/solana/generated/mpl-core/accounts/collectionV1.js +0 -42
- package/lib/esm/solana/generated/mpl-core/accounts/hashedAssetV1.js +0 -45
- package/lib/esm/solana/generated/mpl-core/accounts/index.js +0 -12
- package/lib/esm/solana/generated/mpl-core/accounts/pluginHeaderV1.js +0 -45
- package/lib/esm/solana/generated/mpl-core/accounts/pluginRegistryV1.js +0 -42
- package/lib/esm/solana/generated/mpl-core/errors/index.js +0 -8
- package/lib/esm/solana/generated/mpl-core/errors/mplCore.js +0 -136
- package/lib/esm/solana/generated/mpl-core/index.js +0 -8
- package/lib/esm/solana/generated/mpl-core/instructions/addCollectionExternalPluginAdapterV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/addCollectionPluginV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/addExternalPluginAdapterV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/addPluginV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/approveCollectionPluginAuthorityV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/approvePluginAuthorityV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/burnCollectionV1.js +0 -49
- package/lib/esm/solana/generated/mpl-core/instructions/burnV1.js +0 -49
- package/lib/esm/solana/generated/mpl-core/instructions/collect.js +0 -42
- package/lib/esm/solana/generated/mpl-core/instructions/compressV1.js +0 -50
- package/lib/esm/solana/generated/mpl-core/instructions/createCollectionV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/createCollectionV2.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/createV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/createV2.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/decompressV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/executeV1.js +0 -56
- package/lib/esm/solana/generated/mpl-core/instructions/index.js +0 -40
- package/lib/esm/solana/generated/mpl-core/instructions/removeCollectionExternalPluginAdapterV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/removeCollectionPluginV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/removeExternalPluginAdapterV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/removePluginV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/revokeCollectionPluginAuthorityV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/revokePluginAuthorityV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/transferV1.js +0 -49
- package/lib/esm/solana/generated/mpl-core/instructions/updateCollectionExternalPluginAdapterV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/updateCollectionInfoV1.js +0 -45
- package/lib/esm/solana/generated/mpl-core/instructions/updateCollectionPluginV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/updateCollectionV1.js +0 -52
- package/lib/esm/solana/generated/mpl-core/instructions/updateExternalPluginAdapterV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/updatePluginV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/updateV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/updateV2.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/writeCollectionExternalPluginAdapterDataV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/instructions/writeExternalPluginAdapterDataV1.js +0 -53
- package/lib/esm/solana/generated/mpl-core/program-address.js +0 -1
- package/lib/esm/solana/generated/mpl-core/types/addAssetsToGroupV1Args.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/addBlocker.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/addCollectionsToGroupV1Args.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/addGroupsToGroupV1Args.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/agentIdentity.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/agentIdentityInitInfo.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/agentIdentityUpdateInfo.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/appData.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/appDataInitInfo.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/appDataUpdateInfo.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/attribute.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/attributes.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/authority.js +0 -24
- package/lib/esm/solana/generated/mpl-core/types/autograph.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/autographSignature.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/bubblegumV2.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/burnDelegate.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/closeGroupV1Args.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/compressionProof.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/creator.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/dataSection.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/dataSectionInitInfo.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/dataSectionUpdateInfo.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/dataState.js +0 -23
- package/lib/esm/solana/generated/mpl-core/types/edition.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/externalCheckResult.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapter.js +0 -25
- package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterInitInfo.js +0 -25
- package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterKey.js +0 -25
- package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterSchema.js +0 -24
- package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterType.js +0 -28
- package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterUpdateInfo.js +0 -25
- package/lib/esm/solana/generated/mpl-core/types/externalRegistryRecord.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/externalValidationResult.js +0 -24
- package/lib/esm/solana/generated/mpl-core/types/extraAccount.js +0 -25
- package/lib/esm/solana/generated/mpl-core/types/freezeDelegate.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/freezeExecute.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/groups.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/hashablePluginSchema.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/hashedAssetSchema.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/hookableLifecycleEvent.js +0 -26
- package/lib/esm/solana/generated/mpl-core/types/immutableMetadata.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/index.js +0 -89
- package/lib/esm/solana/generated/mpl-core/types/key.js +0 -28
- package/lib/esm/solana/generated/mpl-core/types/lifecycleHook.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/lifecycleHookInitInfo.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/lifecycleHookUpdateInfo.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/linkedAppData.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/linkedAppDataInitInfo.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/linkedAppDataUpdateInfo.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/linkedDataKey.js +0 -25
- package/lib/esm/solana/generated/mpl-core/types/linkedLifecycleHook.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/linkedLifecycleHookInitInfo.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/linkedLifecycleHookUpdateInfo.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/masterEdition.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/oracle.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/oracleInitInfo.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/oracleUpdateInfo.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/oracleValidation.js +0 -25
- package/lib/esm/solana/generated/mpl-core/types/permanentBurnDelegate.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/permanentFreezeDelegate.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/permanentFreezeExecute.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/permanentTransferDelegate.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/plugin.js +0 -25
- package/lib/esm/solana/generated/mpl-core/types/pluginAuthorityPair.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/pluginType.js +0 -40
- package/lib/esm/solana/generated/mpl-core/types/registryRecord.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/relationshipKind.js +0 -25
- package/lib/esm/solana/generated/mpl-core/types/removeAssetsFromGroupV1Args.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/removeCollectionsFromGroupV1Args.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/removeGroupsFromGroupV1Args.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/royalties.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/ruleSet.js +0 -24
- package/lib/esm/solana/generated/mpl-core/types/seed.js +0 -24
- package/lib/esm/solana/generated/mpl-core/types/transferDelegate.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/updateAuthority.js +0 -24
- package/lib/esm/solana/generated/mpl-core/types/updateDelegate.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/updateGroupV1Args.js +0 -17
- package/lib/esm/solana/generated/mpl-core/types/updateType.js +0 -24
- package/lib/esm/solana/generated/mpl-core/types/validationResult.js +0 -25
- package/lib/esm/solana/generated/mpl-core/types/validationResultsOffset.js +0 -24
- package/lib/esm/solana/generated/mpl-core/types/verifiedCreators.js +0 -18
- package/lib/esm/solana/generated/mpl-core/types/verifiedCreatorsSignature.js +0 -17
- package/lib/esm/utils/ao.js +0 -421
- package/lib/esm/utils/arweave.js +0 -271
- package/lib/esm/utils/processes.js +0 -167
- package/lib/esm/web/index.js +0 -20
- package/lib/types/common/ant-versions.d.ts +0 -39
- package/lib/types/common/arweave.d.ts +0 -17
- package/lib/types/common/contracts/ao-process.d.ts +0 -33
- package/lib/types/common/hyperbeam/hb.d.ts +0 -88
- package/lib/types/common/marketplace.d.ts +0 -556
- package/lib/types/common/turbo.d.ts +0 -61
- package/lib/types/node/index.d.ts +0 -20
- package/lib/types/solana/generated/ant/events/aclEntryAddedEvent.d.ts +0 -26
- package/lib/types/solana/generated/ant/events/aclEntryRemovedEvent.d.ts +0 -26
- package/lib/types/solana/generated/ant/events/antMetadataUpdatedEvent.d.ts +0 -28
- package/lib/types/solana/generated/ant/events/antReconciledEvent.d.ts +0 -28
- package/lib/types/solana/generated/ant/events/antTransferredEvent.d.ts +0 -26
- package/lib/types/solana/generated/ant/events/attributesClearedEvent.d.ts +0 -26
- package/lib/types/solana/generated/ant/events/attributesSyncedEvent.d.ts +0 -24
- package/lib/types/solana/generated/ant/events/controllerAddedEvent.d.ts +0 -26
- package/lib/types/solana/generated/ant/events/controllerRemovedEvent.d.ts +0 -26
- package/lib/types/solana/generated/ant/events/index.d.ts +0 -15
- package/lib/types/solana/generated/ant/events/recordMetadataPrunedEvent.d.ts +0 -26
- package/lib/types/solana/generated/ant/events/recordMetadataRemovedEvent.d.ts +0 -26
- package/lib/types/solana/generated/ant/events/recordMetadataUpdatedEvent.d.ts +0 -28
- package/lib/types/solana/generated/ant/events/recordRemovedEvent.d.ts +0 -26
- package/lib/types/solana/generated/ant/events/recordSetEvent.d.ts +0 -34
- package/lib/types/solana/generated/ant/events/recordTransferredEvent.d.ts +0 -30
- package/lib/types/solana/generated/ant-escrow/events/escrowCancelledEvent.d.ts +0 -28
- package/lib/types/solana/generated/ant-escrow/events/escrowClaimedEvent.d.ts +0 -32
- package/lib/types/solana/generated/ant-escrow/events/escrowDepositedEvent.d.ts +0 -36
- package/lib/types/solana/generated/ant-escrow/events/escrowRecipientUpdatedEvent.d.ts +0 -26
- package/lib/types/solana/generated/ant-escrow/events/index.d.ts +0 -4
- package/lib/types/solana/generated/arns/events/demandFactorUpdatedEvent.d.ts +0 -28
- package/lib/types/solana/generated/arns/events/index.d.ts +0 -12
- package/lib/types/solana/generated/arns/events/leaseExtendedEvent.d.ts +0 -32
- package/lib/types/solana/generated/arns/events/namePurchasedEvent.d.ts +0 -34
- package/lib/types/solana/generated/arns/events/nameReassignedEvent.d.ts +0 -28
- package/lib/types/solana/generated/arns/events/nameReleasedEvent.d.ts +0 -24
- package/lib/types/solana/generated/arns/events/nameReservedEvent.d.ts +0 -28
- package/lib/types/solana/generated/arns/events/nameUnreservedEvent.d.ts +0 -24
- package/lib/types/solana/generated/arns/events/nameUpgradedEvent.d.ts +0 -28
- package/lib/types/solana/generated/arns/events/namesPrunedEvent.d.ts +0 -26
- package/lib/types/solana/generated/arns/events/reservedNameClaimedEvent.d.ts +0 -24
- package/lib/types/solana/generated/arns/events/returnedNamePurchasedEvent.d.ts +0 -32
- package/lib/types/solana/generated/arns/events/undernameIncreasedEvent.d.ts +0 -32
- package/lib/types/solana/generated/core/events/configUpdatedEvent.d.ts +0 -26
- package/lib/types/solana/generated/core/events/coreMigrationFinalizedEvent.d.ts +0 -26
- package/lib/types/solana/generated/core/events/index.d.ts +0 -13
- package/lib/types/solana/generated/core/events/primaryNameRemovedEvent.d.ts +0 -26
- package/lib/types/solana/generated/core/events/primaryNameRequestExpiredEvent.d.ts +0 -26
- package/lib/types/solana/generated/core/events/primaryNameRequestedEvent.d.ts +0 -30
- package/lib/types/solana/generated/core/events/primaryNameSetEvent.d.ts +0 -24
- package/lib/types/solana/generated/core/events/supplyFinalizedEvent.d.ts +0 -26
- package/lib/types/solana/generated/core/events/transferEvent.d.ts +0 -26
- package/lib/types/solana/generated/core/events/vaultCreatedEvent.d.ts +0 -28
- package/lib/types/solana/generated/core/events/vaultExtendedEvent.d.ts +0 -26
- package/lib/types/solana/generated/core/events/vaultIncreasedEvent.d.ts +0 -28
- package/lib/types/solana/generated/core/events/vaultReleasedEvent.d.ts +0 -26
- package/lib/types/solana/generated/core/events/vaultRevokedEvent.d.ts +0 -28
- package/lib/types/solana/generated/gar/events/allowlistToggledEvent.d.ts +0 -24
- package/lib/types/solana/generated/gar/events/delegateAllowlistedEvent.d.ts +0 -26
- package/lib/types/solana/generated/gar/events/delegationClosedEvent.d.ts +0 -24
- package/lib/types/solana/generated/gar/events/delegationDecreasedEvent.d.ts +0 -28
- package/lib/types/solana/generated/gar/events/delegationEvent.d.ts +0 -28
- package/lib/types/solana/generated/gar/events/epochClosedEvent.d.ts +0 -24
- package/lib/types/solana/generated/gar/events/epochCreatedEvent.d.ts +0 -26
- package/lib/types/solana/generated/gar/events/epochDistributedEvent.d.ts +0 -26
- package/lib/types/solana/generated/gar/events/epochPrescribedEvent.d.ts +0 -28
- package/lib/types/solana/generated/gar/events/epochWeightsTalliedEvent.d.ts +0 -26
- package/lib/types/solana/generated/gar/events/epochsToggledEvent.d.ts +0 -24
- package/lib/types/solana/generated/gar/events/fundingPlanAppliedEvent.d.ts +0 -28
- package/lib/types/solana/generated/gar/events/garMigrationFinalizedEvent.d.ts +0 -26
- package/lib/types/solana/generated/gar/events/gatewayFinalizedEvent.d.ts +0 -24
- package/lib/types/solana/generated/gar/events/gatewayJoinedEvent.d.ts +0 -26
- package/lib/types/solana/generated/gar/events/gatewayLeavingEvent.d.ts +0 -22
- package/lib/types/solana/generated/gar/events/gatewayPrunedEvent.d.ts +0 -26
- package/lib/types/solana/generated/gar/events/gatewaySettingsUpdatedEvent.d.ts +0 -24
- package/lib/types/solana/generated/gar/events/index.d.ts +0 -30
- package/lib/types/solana/generated/gar/events/instantWithdrawalEvent.d.ts +0 -30
- package/lib/types/solana/generated/gar/events/observationSubmittedEvent.d.ts +0 -28
- package/lib/types/solana/generated/gar/events/observerAddressUpdatedEvent.d.ts +0 -24
- package/lib/types/solana/generated/gar/events/operatorStakeIncreasedEvent.d.ts +0 -26
- package/lib/types/solana/generated/gar/events/redelegationEvent.d.ts +0 -30
- package/lib/types/solana/generated/gar/events/residueVaultCreatedEvent.d.ts +0 -30
- package/lib/types/solana/generated/gar/events/rewardsCompoundedEvent.d.ts +0 -26
- package/lib/types/solana/generated/gar/events/stakePaymentEvent.d.ts +0 -28
- package/lib/types/solana/generated/gar/events/withdrawalCancelledEvent.d.ts +0 -30
- package/lib/types/solana/generated/gar/events/withdrawalClaimedEvent.d.ts +0 -26
- package/lib/types/solana/generated/gar/events/withdrawalCreatedEvent.d.ts +0 -28
- package/lib/types/solana/generated/gar/events/withdrawalPaymentEvent.d.ts +0 -28
- package/lib/types/solana/generated/mpl-core/accounts/assetV1.d.ts +0 -37
- package/lib/types/solana/generated/mpl-core/accounts/collectionV1.d.ts +0 -37
- package/lib/types/solana/generated/mpl-core/accounts/hashedAssetV1.d.ts +0 -30
- package/lib/types/solana/generated/mpl-core/accounts/index.d.ts +0 -12
- package/lib/types/solana/generated/mpl-core/accounts/pluginHeaderV1.d.ts +0 -30
- package/lib/types/solana/generated/mpl-core/accounts/pluginRegistryV1.d.ts +0 -31
- package/lib/types/solana/generated/mpl-core/errors/index.d.ts +0 -8
- package/lib/types/solana/generated/mpl-core/errors/mplCore.d.ts +0 -133
- package/lib/types/solana/generated/mpl-core/index.d.ts +0 -8
- package/lib/types/solana/generated/mpl-core/instructions/addCollectionExternalPluginAdapterV1.d.ts +0 -56
- package/lib/types/solana/generated/mpl-core/instructions/addCollectionPluginV1.d.ts +0 -59
- package/lib/types/solana/generated/mpl-core/instructions/addExternalPluginAdapterV1.d.ts +0 -60
- package/lib/types/solana/generated/mpl-core/instructions/addPluginV1.d.ts +0 -63
- package/lib/types/solana/generated/mpl-core/instructions/approveCollectionPluginAuthorityV1.d.ts +0 -59
- package/lib/types/solana/generated/mpl-core/instructions/approvePluginAuthorityV1.d.ts +0 -63
- package/lib/types/solana/generated/mpl-core/instructions/burnCollectionV1.d.ts +0 -52
- package/lib/types/solana/generated/mpl-core/instructions/burnV1.d.ts +0 -60
- package/lib/types/solana/generated/mpl-core/instructions/collect.d.ts +0 -39
- package/lib/types/solana/generated/mpl-core/instructions/compressV1.d.ts +0 -55
- package/lib/types/solana/generated/mpl-core/instructions/createCollectionV1.d.ts +0 -58
- package/lib/types/solana/generated/mpl-core/instructions/createCollectionV2.d.ts +0 -61
- package/lib/types/solana/generated/mpl-core/instructions/createV1.d.ts +0 -77
- package/lib/types/solana/generated/mpl-core/instructions/createV2.d.ts +0 -80
- package/lib/types/solana/generated/mpl-core/instructions/decompressV1.d.ts +0 -60
- package/lib/types/solana/generated/mpl-core/instructions/executeV1.d.ts +0 -63
- package/lib/types/solana/generated/mpl-core/instructions/index.d.ts +0 -40
- package/lib/types/solana/generated/mpl-core/instructions/removeCollectionExternalPluginAdapterV1.d.ts +0 -56
- package/lib/types/solana/generated/mpl-core/instructions/removeCollectionPluginV1.d.ts +0 -56
- package/lib/types/solana/generated/mpl-core/instructions/removeExternalPluginAdapterV1.d.ts +0 -60
- package/lib/types/solana/generated/mpl-core/instructions/removePluginV1.d.ts +0 -60
- package/lib/types/solana/generated/mpl-core/instructions/revokeCollectionPluginAuthorityV1.d.ts +0 -56
- package/lib/types/solana/generated/mpl-core/instructions/revokePluginAuthorityV1.d.ts +0 -60
- package/lib/types/solana/generated/mpl-core/instructions/transferV1.d.ts +0 -64
- package/lib/types/solana/generated/mpl-core/instructions/updateCollectionExternalPluginAdapterV1.d.ts +0 -59
- package/lib/types/solana/generated/mpl-core/instructions/updateCollectionInfoV1.d.ts +0 -47
- package/lib/types/solana/generated/mpl-core/instructions/updateCollectionPluginV1.d.ts +0 -56
- package/lib/types/solana/generated/mpl-core/instructions/updateCollectionV1.d.ts +0 -62
- package/lib/types/solana/generated/mpl-core/instructions/updateExternalPluginAdapterV1.d.ts +0 -63
- package/lib/types/solana/generated/mpl-core/instructions/updatePluginV1.d.ts +0 -60
- package/lib/types/solana/generated/mpl-core/instructions/updateV1.d.ts +0 -66
- package/lib/types/solana/generated/mpl-core/instructions/updateV2.d.ts +0 -70
- package/lib/types/solana/generated/mpl-core/instructions/writeCollectionExternalPluginAdapterDataV1.d.ts +0 -63
- package/lib/types/solana/generated/mpl-core/instructions/writeExternalPluginAdapterDataV1.d.ts +0 -67
- package/lib/types/solana/generated/mpl-core/program-address.d.ts +0 -7
- package/lib/types/solana/generated/mpl-core/types/addAssetsToGroupV1Args.d.ts +0 -13
- package/lib/types/solana/generated/mpl-core/types/addBlocker.d.ts +0 -13
- package/lib/types/solana/generated/mpl-core/types/addCollectionsToGroupV1Args.d.ts +0 -13
- package/lib/types/solana/generated/mpl-core/types/addGroupsToGroupV1Args.d.ts +0 -15
- package/lib/types/solana/generated/mpl-core/types/agentIdentity.d.ts +0 -15
- package/lib/types/solana/generated/mpl-core/types/agentIdentityInitInfo.d.ts +0 -22
- package/lib/types/solana/generated/mpl-core/types/agentIdentityUpdateInfo.d.ts +0 -20
- package/lib/types/solana/generated/mpl-core/types/appData.d.ts +0 -20
- package/lib/types/solana/generated/mpl-core/types/appDataInitInfo.d.ts +0 -22
- package/lib/types/solana/generated/mpl-core/types/appDataUpdateInfo.d.ts +0 -18
- package/lib/types/solana/generated/mpl-core/types/attribute.d.ts +0 -16
- package/lib/types/solana/generated/mpl-core/types/attributes.d.ts +0 -18
- package/lib/types/solana/generated/mpl-core/types/authority.d.ts +0 -29
- package/lib/types/solana/generated/mpl-core/types/autograph.d.ts +0 -18
- package/lib/types/solana/generated/mpl-core/types/autographSignature.d.ts +0 -16
- package/lib/types/solana/generated/mpl-core/types/bubblegumV2.d.ts +0 -13
- package/lib/types/solana/generated/mpl-core/types/burnDelegate.d.ts +0 -13
- package/lib/types/solana/generated/mpl-core/types/closeGroupV1Args.d.ts +0 -13
- package/lib/types/solana/generated/mpl-core/types/compressionProof.d.ts +0 -28
- package/lib/types/solana/generated/mpl-core/types/creator.d.ts +0 -16
- package/lib/types/solana/generated/mpl-core/types/dataSection.d.ts +0 -20
- package/lib/types/solana/generated/mpl-core/types/dataSectionInitInfo.d.ts +0 -20
- package/lib/types/solana/generated/mpl-core/types/dataSectionUpdateInfo.d.ts +0 -13
- package/lib/types/solana/generated/mpl-core/types/dataState.d.ts +0 -16
- package/lib/types/solana/generated/mpl-core/types/edition.d.ts +0 -15
- package/lib/types/solana/generated/mpl-core/types/externalCheckResult.d.ts +0 -15
- package/lib/types/solana/generated/mpl-core/types/externalPluginAdapter.d.ts +0 -66
- package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterInitInfo.d.ts +0 -66
- package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterKey.d.ts +0 -64
- package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterSchema.d.ts +0 -17
- package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterType.d.ts +0 -21
- package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterUpdateInfo.d.ts +0 -59
- package/lib/types/solana/generated/mpl-core/types/externalRegistryRecord.d.ts +0 -28
- package/lib/types/solana/generated/mpl-core/types/externalValidationResult.d.ts +0 -17
- package/lib/types/solana/generated/mpl-core/types/extraAccount.d.ts +0 -86
- package/lib/types/solana/generated/mpl-core/types/freezeDelegate.d.ts +0 -15
- package/lib/types/solana/generated/mpl-core/types/freezeExecute.d.ts +0 -15
- package/lib/types/solana/generated/mpl-core/types/groups.d.ts +0 -15
- package/lib/types/solana/generated/mpl-core/types/hashablePluginSchema.d.ts +0 -22
- package/lib/types/solana/generated/mpl-core/types/hashedAssetSchema.d.ts +0 -16
- package/lib/types/solana/generated/mpl-core/types/hookableLifecycleEvent.d.ts +0 -19
- package/lib/types/solana/generated/mpl-core/types/immutableMetadata.d.ts +0 -13
- package/lib/types/solana/generated/mpl-core/types/index.d.ts +0 -89
- package/lib/types/solana/generated/mpl-core/types/key.d.ts +0 -21
- package/lib/types/solana/generated/mpl-core/types/lifecycleHook.d.ts +0 -24
- package/lib/types/solana/generated/mpl-core/types/lifecycleHookInitInfo.d.ts +0 -28
- package/lib/types/solana/generated/mpl-core/types/lifecycleHookUpdateInfo.d.ts +0 -22
- package/lib/types/solana/generated/mpl-core/types/linkedAppData.d.ts +0 -20
- package/lib/types/solana/generated/mpl-core/types/linkedAppDataInitInfo.d.ts +0 -22
- package/lib/types/solana/generated/mpl-core/types/linkedAppDataUpdateInfo.d.ts +0 -18
- package/lib/types/solana/generated/mpl-core/types/linkedDataKey.d.ts +0 -31
- package/lib/types/solana/generated/mpl-core/types/linkedLifecycleHook.d.ts +0 -24
- package/lib/types/solana/generated/mpl-core/types/linkedLifecycleHookInitInfo.d.ts +0 -28
- package/lib/types/solana/generated/mpl-core/types/linkedLifecycleHookUpdateInfo.d.ts +0 -22
- package/lib/types/solana/generated/mpl-core/types/masterEdition.d.ts +0 -21
- package/lib/types/solana/generated/mpl-core/types/oracle.d.ts +0 -22
- package/lib/types/solana/generated/mpl-core/types/oracleInitInfo.d.ts +0 -26
- package/lib/types/solana/generated/mpl-core/types/oracleUpdateInfo.d.ts +0 -22
- package/lib/types/solana/generated/mpl-core/types/oracleValidation.d.ts +0 -35
- package/lib/types/solana/generated/mpl-core/types/permanentBurnDelegate.d.ts +0 -13
- package/lib/types/solana/generated/mpl-core/types/permanentFreezeDelegate.d.ts +0 -15
- package/lib/types/solana/generated/mpl-core/types/permanentFreezeExecute.d.ts +0 -15
- package/lib/types/solana/generated/mpl-core/types/permanentTransferDelegate.d.ts +0 -13
- package/lib/types/solana/generated/mpl-core/types/plugin.d.ts +0 -150
- package/lib/types/solana/generated/mpl-core/types/pluginAuthorityPair.d.ts +0 -20
- package/lib/types/solana/generated/mpl-core/types/pluginType.d.ts +0 -33
- package/lib/types/solana/generated/mpl-core/types/registryRecord.d.ts +0 -22
- package/lib/types/solana/generated/mpl-core/types/relationshipKind.d.ts +0 -18
- package/lib/types/solana/generated/mpl-core/types/removeAssetsFromGroupV1Args.d.ts +0 -15
- package/lib/types/solana/generated/mpl-core/types/removeCollectionsFromGroupV1Args.d.ts +0 -15
- package/lib/types/solana/generated/mpl-core/types/removeGroupsFromGroupV1Args.d.ts +0 -15
- package/lib/types/solana/generated/mpl-core/types/royalties.d.ts +0 -22
- package/lib/types/solana/generated/mpl-core/types/ruleSet.d.ts +0 -27
- package/lib/types/solana/generated/mpl-core/types/seed.d.ts +0 -36
- package/lib/types/solana/generated/mpl-core/types/transferDelegate.d.ts +0 -13
- package/lib/types/solana/generated/mpl-core/types/updateAuthority.d.ts +0 -27
- package/lib/types/solana/generated/mpl-core/types/updateDelegate.d.ts +0 -15
- package/lib/types/solana/generated/mpl-core/types/updateGroupV1Args.d.ts +0 -19
- package/lib/types/solana/generated/mpl-core/types/updateType.d.ts +0 -17
- package/lib/types/solana/generated/mpl-core/types/validationResult.d.ts +0 -18
- package/lib/types/solana/generated/mpl-core/types/validationResultsOffset.d.ts +0 -33
- package/lib/types/solana/generated/mpl-core/types/verifiedCreators.d.ts +0 -18
- package/lib/types/solana/generated/mpl-core/types/verifiedCreatorsSignature.d.ts +0 -16
- package/lib/types/utils/ao.d.ts +0 -80
- package/lib/types/utils/arweave.d.ts +0 -79
- package/lib/types/utils/processes.d.ts +0 -39
- package/lib/types/web/index.d.ts +0 -20
package/lib/esm/constants.js
CHANGED
|
@@ -29,22 +29,4 @@ export function arweaveUri(txIdOrName) {
|
|
|
29
29
|
}
|
|
30
30
|
/** FQDN regex that matches the one used in the ArNS contract. */
|
|
31
31
|
export const FQDN_REGEX = new RegExp('^(?:(?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{1,63}$');
|
|
32
|
-
export const ARIO_DEVNET_PROCESS_ID = 'GaQrvEMKBpkjofgnBi_B3IgIDmY_XYelVLB6GcRGrHc';
|
|
33
|
-
// backwards compatibility - TODO: remove in v2.0.0
|
|
34
|
-
export const arioDevnetProcessId = ARIO_DEVNET_PROCESS_ID;
|
|
35
|
-
export const ARIO_TESTNET_PROCESS_ID = 'agYcCFJtrMG6cqMuZfskIkFTGvUPddICmtQSBIoPdiA';
|
|
36
|
-
export const ARIO_MAINNET_PROCESS_ID = 'qNvAoz0TgcH7DMg8BCVn8jF32QH5L6T29VjHxhHqqGE';
|
|
37
|
-
export const ANT_REGISTRY_TESTNET_ID = 'RR0vheYqtsKuJCWh6xj0beE35tjaEug5cejMw9n2aa8';
|
|
38
|
-
export const ANT_REGISTRY_ID = 'i_le_yKKPVstLTDSmkHRqf-wYphMnwB9OhleiTgMkWc';
|
|
39
|
-
export const MARKETPLACE_CONTRACT_ID = 'wPh88ziUF4meLpHfffmgdA6IFtzmXHgdeg-epzBjkao';
|
|
40
32
|
export const MARIO_PER_ARIO = 1_000_000;
|
|
41
|
-
/**
|
|
42
|
-
* @deprecated - use ANT.versions.getLatestANTVersion() to get latest ANT module
|
|
43
|
-
**/
|
|
44
|
-
export const AOS_MODULE_ID = 'nEjlSFA_8narJlVHApbczDPkMc9znSqYtqtf1iOdoxM';
|
|
45
|
-
/**
|
|
46
|
-
* @deprecated - use ANT.versions.getLatestANTVersion() to get latest ANT module
|
|
47
|
-
**/
|
|
48
|
-
export const ANT_LUA_ID = 'sOW9Sdm1yoPRrzerC5iu1nsupp4e6I-HnJyYVHzvzQo';
|
|
49
|
-
export const AO_AUTHORITY = 'fcoN_xJeisVsPXA-trzVAuIiqO3ydLQxM-L4XbrQKzY';
|
|
50
|
-
export const DEFAULT_SCHEDULER_ID = '_GQ33BkPtZrqxA84vM8Zk-N2aO0toNNu_C-l-rawrBA';
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
1
16
|
/**
|
|
2
17
|
* Solana implementation of ANT (Arweave Name Token) read interface.
|
|
3
18
|
*
|
|
@@ -7,21 +22,15 @@
|
|
|
7
22
|
* - AntControllers: list of controller pubkeys
|
|
8
23
|
* - AntRecord: undername records (transactionId, ttl, priority, etc.)
|
|
9
24
|
*/
|
|
10
|
-
import { address, fetchEncodedAccount, } from '@solana/kit';
|
|
25
|
+
import { address, fetchEncodedAccount, fetchEncodedAccounts, } from '@solana/kit';
|
|
11
26
|
import bs58 from 'bs58';
|
|
12
|
-
// AntRecordMetadata discriminator — regenerate via `yarn codegen` after IDL rebase
|
|
13
|
-
// to expose ANT_RECORD_METADATA_DISCRIMINATOR. Until then, compute inline.
|
|
14
27
|
import { createHash as __createHash } from 'crypto';
|
|
15
|
-
import { ANT_RECORD_DISCRIMINATOR } from '@ar.io/solana-contracts/ant';
|
|
28
|
+
import { ANT_RECORD_DISCRIMINATOR, ANT_RECORD_METADATA_DISCRIMINATOR, decodeAntConfig, decodeAntControllers, getAntRecordDecoder, getAntRecordMetadataDecoder, } from '@ar.io/solana-contracts/ant';
|
|
16
29
|
import { Logger } from '../common/logger.js';
|
|
17
30
|
import { SolanaANTRegistryReadable } from './ant-registry-readable.js';
|
|
18
31
|
import { ANT_CONFIG_VERSION, ARIO_ANT_PROGRAM_ID } from './constants.js';
|
|
19
|
-
import { deserializeAntConfig, deserializeAntControllers, deserializeAntRecord, deserializeAntRecordMetadata, } from './deserialize.js';
|
|
20
|
-
const ANT_RECORD_METADATA_DISCRIMINATOR = new Uint8Array(__createHash('sha256')
|
|
21
|
-
.update('account:AntRecordMetadata')
|
|
22
|
-
.digest()
|
|
23
|
-
.subarray(0, 8));
|
|
24
32
|
import { getAntConfigPDA, getAntControllersPDA, getAntRecordMetadataPDA, getAntRecordPDA, } from './pda.js';
|
|
33
|
+
import { withRetry } from './retry.js';
|
|
25
34
|
/**
|
|
26
35
|
* Solana-backed read-only client for a single ANT (Arweave Name Token).
|
|
27
36
|
*
|
|
@@ -102,9 +111,9 @@ export class SolanaANTReadable {
|
|
|
102
111
|
});
|
|
103
112
|
}
|
|
104
113
|
async getAccount(pda) {
|
|
105
|
-
return fetchEncodedAccount(this.rpc, pda, {
|
|
114
|
+
return withRetry(() => fetchEncodedAccount(this.rpc, pda, {
|
|
106
115
|
commitment: this.commitment,
|
|
107
|
-
});
|
|
116
|
+
}));
|
|
108
117
|
}
|
|
109
118
|
// =========================================
|
|
110
119
|
// Config reads
|
|
@@ -115,7 +124,17 @@ export class SolanaANTReadable {
|
|
|
115
124
|
if (!account.exists) {
|
|
116
125
|
throw new Error(`ANT config not found for ${this.processId}`);
|
|
117
126
|
}
|
|
118
|
-
|
|
127
|
+
const decoded = decodeAntConfig(account).data;
|
|
128
|
+
return {
|
|
129
|
+
mint: decoded.mint,
|
|
130
|
+
name: decoded.name,
|
|
131
|
+
ticker: decoded.ticker,
|
|
132
|
+
logo: decoded.logo,
|
|
133
|
+
description: decoded.description,
|
|
134
|
+
keywords: decoded.keywords,
|
|
135
|
+
owner: decoded.lastKnownOwner,
|
|
136
|
+
version: decoded.version.major,
|
|
137
|
+
};
|
|
119
138
|
}
|
|
120
139
|
async fetchControllers() {
|
|
121
140
|
const [pda] = await getAntControllersPDA(this.mint, this.antProgram);
|
|
@@ -123,7 +142,43 @@ export class SolanaANTReadable {
|
|
|
123
142
|
if (!account.exists) {
|
|
124
143
|
return { mint: this.processId, controllers: [] };
|
|
125
144
|
}
|
|
126
|
-
|
|
145
|
+
const decoded = decodeAntControllers(account).data;
|
|
146
|
+
return {
|
|
147
|
+
mint: decoded.mint,
|
|
148
|
+
controllers: decoded.controllers.map((c) => c),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Fetch AntConfig + AntControllers in a single `getMultipleAccounts` round
|
|
153
|
+
* trip (instead of two single-account reads). Used by `getState` to shave one
|
|
154
|
+
* RPC per ANT — meaningful when a UI loads many ANTs.
|
|
155
|
+
*/
|
|
156
|
+
async _fetchConfigAndControllers() {
|
|
157
|
+
const [[configPda], [controllersPda]] = await Promise.all([
|
|
158
|
+
getAntConfigPDA(this.mint, this.antProgram),
|
|
159
|
+
getAntControllersPDA(this.mint, this.antProgram),
|
|
160
|
+
]);
|
|
161
|
+
const [configAccount, controllersAccount] = await withRetry(() => fetchEncodedAccounts(this.rpc, [configPda, controllersPda], {
|
|
162
|
+
commitment: this.commitment,
|
|
163
|
+
}));
|
|
164
|
+
if (!configAccount.exists) {
|
|
165
|
+
throw new Error(`ANT config not found for ${this.processId}`);
|
|
166
|
+
}
|
|
167
|
+
const decodedConfig = decodeAntConfig(configAccount).data;
|
|
168
|
+
const config = {
|
|
169
|
+
mint: decodedConfig.mint,
|
|
170
|
+
name: decodedConfig.name,
|
|
171
|
+
ticker: decodedConfig.ticker,
|
|
172
|
+
logo: decodedConfig.logo,
|
|
173
|
+
description: decodedConfig.description,
|
|
174
|
+
keywords: decodedConfig.keywords,
|
|
175
|
+
owner: decodedConfig.lastKnownOwner,
|
|
176
|
+
version: decodedConfig.version.major,
|
|
177
|
+
};
|
|
178
|
+
const controllers = controllersAccount.exists
|
|
179
|
+
? decodeAntControllers(controllersAccount).data.controllers.map((c) => c)
|
|
180
|
+
: [];
|
|
181
|
+
return { config, controllers };
|
|
127
182
|
}
|
|
128
183
|
async getOwner(_opts) {
|
|
129
184
|
const config = await this.fetchConfig();
|
|
@@ -163,30 +218,47 @@ export class SolanaANTReadable {
|
|
|
163
218
|
getAntRecordPDA(this.mint, undername, this.antProgram),
|
|
164
219
|
getAntRecordMetadataPDA(this.mint, undername, this.antProgram),
|
|
165
220
|
]);
|
|
166
|
-
const [recordAccount, metaAccount] = await
|
|
167
|
-
this.
|
|
168
|
-
|
|
169
|
-
]);
|
|
221
|
+
const [recordAccount, metaAccount] = await withRetry(() => fetchEncodedAccounts(this.rpc, [recordPda, metaPda], {
|
|
222
|
+
commitment: this.commitment,
|
|
223
|
+
}));
|
|
170
224
|
if (!recordAccount.exists)
|
|
171
225
|
return undefined;
|
|
172
|
-
const
|
|
226
|
+
const recordDecoder = getAntRecordDecoder();
|
|
227
|
+
const metaDecoder = getAntRecordMetadataDecoder();
|
|
228
|
+
const record = recordDecoder.decode(new Uint8Array(recordAccount.data));
|
|
173
229
|
const meta = metaAccount.exists
|
|
174
|
-
?
|
|
175
|
-
:
|
|
230
|
+
? metaDecoder.decode(new Uint8Array(metaAccount.data))
|
|
231
|
+
: undefined;
|
|
176
232
|
return {
|
|
177
|
-
transactionId: record.
|
|
233
|
+
transactionId: record.target,
|
|
178
234
|
targetProtocol: record.targetProtocol,
|
|
179
235
|
ttlSeconds: record.ttlSeconds,
|
|
180
|
-
priority: record.priority
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
236
|
+
priority: record.priority?.__option === 'Some'
|
|
237
|
+
? record.priority.value
|
|
238
|
+
: undefined,
|
|
239
|
+
owner: record.owner?.__option === 'Some'
|
|
240
|
+
? record.owner.value
|
|
241
|
+
: undefined,
|
|
242
|
+
displayName: meta?.displayName?.__option === 'Some'
|
|
243
|
+
? meta.displayName.value
|
|
244
|
+
: undefined,
|
|
245
|
+
logo: meta?.recordLogo?.__option === 'Some'
|
|
246
|
+
? meta.recordLogo.value
|
|
247
|
+
: undefined,
|
|
248
|
+
description: meta?.recordDescription?.__option === 'Some'
|
|
249
|
+
? meta.recordDescription.value
|
|
250
|
+
: undefined,
|
|
251
|
+
keywords: meta?.recordKeywords?.__option === 'Some'
|
|
252
|
+
? meta.recordKeywords.value
|
|
253
|
+
: undefined,
|
|
186
254
|
};
|
|
187
255
|
}
|
|
188
|
-
async getRecords(
|
|
189
|
-
// Fetch all AntRecord
|
|
256
|
+
async getRecords(opts) {
|
|
257
|
+
// Fetch all AntRecord accounts for this mint. AntRecordMetadata
|
|
258
|
+
// (displayName/logo/description/keywords) is a SECOND program scan and is
|
|
259
|
+
// only needed in detail/edit views, so skip it unless `includeMetadata` is
|
|
260
|
+
// set — halving the per-ANT request cost on list reads. See AntReadOptions.
|
|
261
|
+
const includeMetadata = opts?.includeMetadata === true;
|
|
190
262
|
const gpaFilter = (discriminator) => [
|
|
191
263
|
{
|
|
192
264
|
memcmp: {
|
|
@@ -204,21 +276,25 @@ export class SolanaANTReadable {
|
|
|
204
276
|
},
|
|
205
277
|
];
|
|
206
278
|
const [recordAccounts, metaAccounts] = (await Promise.all([
|
|
207
|
-
this.rpc
|
|
279
|
+
withRetry(() => this.rpc
|
|
208
280
|
.getProgramAccounts(this.antProgram, {
|
|
209
281
|
commitment: this.commitment,
|
|
210
282
|
encoding: 'base64',
|
|
211
283
|
filters: gpaFilter(bs58.encode(ANT_RECORD_DISCRIMINATOR)),
|
|
212
284
|
})
|
|
213
|
-
.send(),
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
285
|
+
.send()),
|
|
286
|
+
includeMetadata
|
|
287
|
+
? withRetry(() => this.rpc
|
|
288
|
+
.getProgramAccounts(this.antProgram, {
|
|
289
|
+
commitment: this.commitment,
|
|
290
|
+
encoding: 'base64',
|
|
291
|
+
filters: gpaFilter(bs58.encode(ANT_RECORD_METADATA_DISCRIMINATOR)),
|
|
292
|
+
})
|
|
293
|
+
.send())
|
|
294
|
+
: Promise.resolve([]),
|
|
221
295
|
]));
|
|
296
|
+
const recordDecoder = getAntRecordDecoder();
|
|
297
|
+
const metaDecoder = getAntRecordMetadataDecoder();
|
|
222
298
|
// Index metadata by undername hash for O(1) lookup.
|
|
223
299
|
// AntRecordMetadata has undername_hash at offset 40 (8 disc + 32 mint).
|
|
224
300
|
const metaByHash = new Map();
|
|
@@ -226,7 +302,7 @@ export class SolanaANTReadable {
|
|
|
226
302
|
try {
|
|
227
303
|
const buf = Buffer.from(account.data[0], 'base64');
|
|
228
304
|
const hash = buf.subarray(40, 72).toString('hex');
|
|
229
|
-
metaByHash.set(hash,
|
|
305
|
+
metaByHash.set(hash, metaDecoder.decode(new Uint8Array(buf)));
|
|
230
306
|
}
|
|
231
307
|
catch {
|
|
232
308
|
// Skip malformed
|
|
@@ -237,21 +313,33 @@ export class SolanaANTReadable {
|
|
|
237
313
|
for (const { account } of recordAccounts) {
|
|
238
314
|
try {
|
|
239
315
|
const buf = Buffer.from(account.data[0], 'base64');
|
|
240
|
-
const record =
|
|
316
|
+
const record = recordDecoder.decode(new Uint8Array(buf));
|
|
241
317
|
const hash = __createHash('sha256')
|
|
242
318
|
.update(record.undername.toLowerCase())
|
|
243
319
|
.digest('hex');
|
|
244
|
-
const meta = metaByHash.get(hash)
|
|
320
|
+
const meta = metaByHash.get(hash);
|
|
245
321
|
result[record.undername] = {
|
|
246
|
-
transactionId: record.
|
|
322
|
+
transactionId: record.target,
|
|
247
323
|
targetProtocol: record.targetProtocol,
|
|
248
324
|
ttlSeconds: record.ttlSeconds,
|
|
249
|
-
priority: record.priority
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
325
|
+
priority: record.priority?.__option === 'Some'
|
|
326
|
+
? record.priority.value
|
|
327
|
+
: undefined,
|
|
328
|
+
owner: record.owner?.__option === 'Some'
|
|
329
|
+
? record.owner.value
|
|
330
|
+
: undefined,
|
|
331
|
+
displayName: meta?.displayName?.__option === 'Some'
|
|
332
|
+
? meta.displayName.value
|
|
333
|
+
: undefined,
|
|
334
|
+
logo: meta?.recordLogo?.__option === 'Some'
|
|
335
|
+
? meta.recordLogo.value
|
|
336
|
+
: undefined,
|
|
337
|
+
description: meta?.recordDescription?.__option === 'Some'
|
|
338
|
+
? meta.recordDescription.value
|
|
339
|
+
: undefined,
|
|
340
|
+
keywords: meta?.recordKeywords?.__option === 'Some'
|
|
341
|
+
? meta.recordKeywords.value
|
|
342
|
+
: undefined,
|
|
255
343
|
index: index++,
|
|
256
344
|
};
|
|
257
345
|
}
|
|
@@ -261,6 +349,256 @@ export class SolanaANTReadable {
|
|
|
261
349
|
}
|
|
262
350
|
return result;
|
|
263
351
|
}
|
|
352
|
+
/**
|
|
353
|
+
* Bulk-load lightweight {@link ANTSummary} state for many ANTs in a handful
|
|
354
|
+
* of `getMultipleAccounts` calls instead of `N × getState`. For each mint it
|
|
355
|
+
* batches AntConfig + AntControllers + the apex (`@`) AntRecord — everything a
|
|
356
|
+
* portfolio/names table needs. Full undername records are NOT loaded here;
|
|
357
|
+
* fetch them lazily per-ANT via {@link getRecords}/{@link getState} when a
|
|
358
|
+
* name is opened.
|
|
359
|
+
*
|
|
360
|
+
* Requests: ~`ceil(3N / 100)` calls for N mints (10 → 1, 250 → 8), versus
|
|
361
|
+
* ~`4N` with per-ANT `getState`. Assumes every mint is deployed under this
|
|
362
|
+
* instance's `antProgram` (true for the standard AR.IO ANT program).
|
|
363
|
+
*
|
|
364
|
+
* Mints whose AntConfig doesn't exist are omitted from the result.
|
|
365
|
+
*/
|
|
366
|
+
async getANTSummaries(mints) {
|
|
367
|
+
const unique = Array.from(new Set(mints));
|
|
368
|
+
if (unique.length === 0)
|
|
369
|
+
return {};
|
|
370
|
+
// Derive config + controllers + apex('@') record PDAs for every mint.
|
|
371
|
+
const triples = await Promise.all(unique.map(async (m) => {
|
|
372
|
+
const mintAddr = address(m);
|
|
373
|
+
const [[configPda], [controllersPda], [apexPda]] = await Promise.all([
|
|
374
|
+
getAntConfigPDA(mintAddr, this.antProgram),
|
|
375
|
+
getAntControllersPDA(mintAddr, this.antProgram),
|
|
376
|
+
getAntRecordPDA(mintAddr, '@', this.antProgram),
|
|
377
|
+
]);
|
|
378
|
+
return { mint: m, configPda, controllersPda, apexPda };
|
|
379
|
+
}));
|
|
380
|
+
// Batch-fetch all PDAs (3 per mint) — getMultipleAccounts caps at 100.
|
|
381
|
+
const allPdas = triples.flatMap((t) => [
|
|
382
|
+
t.configPda,
|
|
383
|
+
t.controllersPda,
|
|
384
|
+
t.apexPda,
|
|
385
|
+
]);
|
|
386
|
+
const accounts = [];
|
|
387
|
+
for (let i = 0; i < allPdas.length; i += 100) {
|
|
388
|
+
const chunk = allPdas.slice(i, i + 100);
|
|
389
|
+
const res = await withRetry(() => fetchEncodedAccounts(this.rpc, chunk, { commitment: this.commitment }));
|
|
390
|
+
accounts.push(...res);
|
|
391
|
+
}
|
|
392
|
+
const recordDecoder = getAntRecordDecoder();
|
|
393
|
+
const result = {};
|
|
394
|
+
for (let i = 0; i < triples.length; i++) {
|
|
395
|
+
const { mint } = triples[i];
|
|
396
|
+
const configAccount = accounts[i * 3];
|
|
397
|
+
const controllersAccount = accounts[i * 3 + 1];
|
|
398
|
+
const apexAccount = accounts[i * 3 + 2];
|
|
399
|
+
if (!configAccount?.exists)
|
|
400
|
+
continue;
|
|
401
|
+
const config = decodeAntConfig(configAccount).data;
|
|
402
|
+
const controllers = controllersAccount?.exists
|
|
403
|
+
? decodeAntControllers(controllersAccount).data.controllers.map((c) => c)
|
|
404
|
+
: [];
|
|
405
|
+
let apexRecord;
|
|
406
|
+
if (apexAccount?.exists) {
|
|
407
|
+
const rec = recordDecoder.decode(new Uint8Array(apexAccount.data));
|
|
408
|
+
apexRecord = {
|
|
409
|
+
transactionId: rec.target,
|
|
410
|
+
targetProtocol: rec.targetProtocol,
|
|
411
|
+
ttlSeconds: rec.ttlSeconds,
|
|
412
|
+
priority: rec.priority?.__option === 'Some' ? rec.priority.value : undefined,
|
|
413
|
+
owner: rec.owner?.__option === 'Some'
|
|
414
|
+
? rec.owner.value
|
|
415
|
+
: undefined,
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
result[mint] = {
|
|
419
|
+
processId: mint,
|
|
420
|
+
name: config.name,
|
|
421
|
+
ticker: config.ticker,
|
|
422
|
+
logo: config.logo,
|
|
423
|
+
description: config.description,
|
|
424
|
+
keywords: config.keywords,
|
|
425
|
+
owner: config.lastKnownOwner,
|
|
426
|
+
controllers,
|
|
427
|
+
apexRecord,
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
return result;
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Bulk-load FULL {@link ANTState} (including all undername records) for many
|
|
434
|
+
* ANTs in a handful of calls instead of `N × getState`:
|
|
435
|
+
* - AntConfig + AntControllers for every mint via `getMultipleAccounts`
|
|
436
|
+
* (chunked at 100), and
|
|
437
|
+
* - ALL undername records via a SINGLE program-wide `getProgramAccounts`
|
|
438
|
+
* scan grouped by mint (offset 8), instead of one mint-filtered scan per
|
|
439
|
+
* ANT.
|
|
440
|
+
*
|
|
441
|
+
* Requests: ~`ceil(2N / 100) + 1` (+1 when `includeMetadata`) regardless of
|
|
442
|
+
* N — e.g. 10 ANTs → 2 calls, 250 → ~6 — versus ~`2N` with per-ANT
|
|
443
|
+
* `getState`. The records scan reads every ANT's records program-wide (cheap
|
|
444
|
+
* per account, one round trip); prefer per-ANT {@link getState} when you only
|
|
445
|
+
* need one ANT. Mints with no AntConfig are omitted.
|
|
446
|
+
*/
|
|
447
|
+
async getANTStates(mints, opts) {
|
|
448
|
+
const unique = Array.from(new Set(mints));
|
|
449
|
+
if (unique.length === 0)
|
|
450
|
+
return {};
|
|
451
|
+
// Config + controllers PDAs for every mint, batched (100 accounts/call).
|
|
452
|
+
const pairs = await Promise.all(unique.map(async (m) => {
|
|
453
|
+
const mintAddr = address(m);
|
|
454
|
+
const [[configPda], [controllersPda]] = await Promise.all([
|
|
455
|
+
getAntConfigPDA(mintAddr, this.antProgram),
|
|
456
|
+
getAntControllersPDA(mintAddr, this.antProgram),
|
|
457
|
+
]);
|
|
458
|
+
return { mint: m, configPda, controllersPda };
|
|
459
|
+
}));
|
|
460
|
+
const allPdas = pairs.flatMap((p) => [p.configPda, p.controllersPda]);
|
|
461
|
+
const accounts = [];
|
|
462
|
+
for (let i = 0; i < allPdas.length; i += 100) {
|
|
463
|
+
const res = await withRetry(() => fetchEncodedAccounts(this.rpc, allPdas.slice(i, i + 100), {
|
|
464
|
+
commitment: this.commitment,
|
|
465
|
+
}));
|
|
466
|
+
accounts.push(...res);
|
|
467
|
+
}
|
|
468
|
+
const recordsByMint = await this._recordsByMint(opts?.includeMetadata === true);
|
|
469
|
+
const result = {};
|
|
470
|
+
for (let i = 0; i < pairs.length; i++) {
|
|
471
|
+
const { mint } = pairs[i];
|
|
472
|
+
const configAccount = accounts[i * 2];
|
|
473
|
+
const controllersAccount = accounts[i * 2 + 1];
|
|
474
|
+
if (!configAccount?.exists)
|
|
475
|
+
continue;
|
|
476
|
+
const config = decodeAntConfig(configAccount).data;
|
|
477
|
+
const controllers = controllersAccount?.exists
|
|
478
|
+
? decodeAntControllers(controllersAccount).data.controllers.map((c) => c)
|
|
479
|
+
: [];
|
|
480
|
+
const sorted = recordsByMint.get(mint) ?? {};
|
|
481
|
+
const plainRecords = {};
|
|
482
|
+
for (const [key, val] of Object.entries(sorted)) {
|
|
483
|
+
const { index: _, ...rec } = val;
|
|
484
|
+
plainRecords[key] = rec;
|
|
485
|
+
}
|
|
486
|
+
const owner = config.lastKnownOwner;
|
|
487
|
+
result[mint] = {
|
|
488
|
+
Name: config.name,
|
|
489
|
+
Ticker: config.ticker,
|
|
490
|
+
Description: config.description,
|
|
491
|
+
Keywords: config.keywords,
|
|
492
|
+
Denomination: 0,
|
|
493
|
+
Owner: owner,
|
|
494
|
+
Controllers: controllers,
|
|
495
|
+
Records: plainRecords,
|
|
496
|
+
Balances: { [owner]: 1 },
|
|
497
|
+
Logo: config.logo,
|
|
498
|
+
TotalSupply: 1,
|
|
499
|
+
Initialized: true,
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
return result;
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Group every AntRecord (+ optional metadata) in the program by mint via a
|
|
506
|
+
* single `getProgramAccounts` scan (the mint sits at offset 8). Used by
|
|
507
|
+
* {@link getANTStates} to load all ANTs' undername records in one round trip
|
|
508
|
+
* instead of one mint-filtered scan per ANT.
|
|
509
|
+
*/
|
|
510
|
+
async _recordsByMint(includeMetadata) {
|
|
511
|
+
const discFilter = (discriminator) => [
|
|
512
|
+
{
|
|
513
|
+
memcmp: {
|
|
514
|
+
offset: 0n,
|
|
515
|
+
bytes: discriminator,
|
|
516
|
+
encoding: 'base58',
|
|
517
|
+
},
|
|
518
|
+
},
|
|
519
|
+
];
|
|
520
|
+
const [recordAccounts, metaAccounts] = (await Promise.all([
|
|
521
|
+
withRetry(() => this.rpc
|
|
522
|
+
.getProgramAccounts(this.antProgram, {
|
|
523
|
+
commitment: this.commitment,
|
|
524
|
+
encoding: 'base64',
|
|
525
|
+
filters: discFilter(bs58.encode(ANT_RECORD_DISCRIMINATOR)),
|
|
526
|
+
})
|
|
527
|
+
.send()),
|
|
528
|
+
includeMetadata
|
|
529
|
+
? withRetry(() => this.rpc
|
|
530
|
+
.getProgramAccounts(this.antProgram, {
|
|
531
|
+
commitment: this.commitment,
|
|
532
|
+
encoding: 'base64',
|
|
533
|
+
filters: discFilter(bs58.encode(ANT_RECORD_METADATA_DISCRIMINATOR)),
|
|
534
|
+
})
|
|
535
|
+
.send())
|
|
536
|
+
: Promise.resolve([]),
|
|
537
|
+
]));
|
|
538
|
+
const recordDecoder = getAntRecordDecoder();
|
|
539
|
+
const metaDecoder = getAntRecordMetadataDecoder();
|
|
540
|
+
// Metadata keyed by `${mint}:${undernameHash}` (mint at 8, hash at 40).
|
|
541
|
+
const metaByKey = new Map();
|
|
542
|
+
for (const { account } of metaAccounts) {
|
|
543
|
+
try {
|
|
544
|
+
const buf = Buffer.from(account.data[0], 'base64');
|
|
545
|
+
const mint = bs58.encode(buf.subarray(8, 40));
|
|
546
|
+
const hash = buf.subarray(40, 72).toString('hex');
|
|
547
|
+
metaByKey.set(`${mint}:${hash}`, metaDecoder.decode(new Uint8Array(buf)));
|
|
548
|
+
}
|
|
549
|
+
catch {
|
|
550
|
+
// Skip malformed
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
const byMint = new Map();
|
|
554
|
+
const indexByMint = new Map();
|
|
555
|
+
for (const { account } of recordAccounts) {
|
|
556
|
+
try {
|
|
557
|
+
const buf = Buffer.from(account.data[0], 'base64');
|
|
558
|
+
const mint = bs58.encode(buf.subarray(8, 40));
|
|
559
|
+
const record = recordDecoder.decode(new Uint8Array(buf));
|
|
560
|
+
const hash = __createHash('sha256')
|
|
561
|
+
.update(record.undername.toLowerCase())
|
|
562
|
+
.digest('hex');
|
|
563
|
+
const meta = metaByKey.get(`${mint}:${hash}`);
|
|
564
|
+
const idx = indexByMint.get(mint) ?? 0;
|
|
565
|
+
let bucket = byMint.get(mint);
|
|
566
|
+
if (!bucket) {
|
|
567
|
+
bucket = {};
|
|
568
|
+
byMint.set(mint, bucket);
|
|
569
|
+
}
|
|
570
|
+
bucket[record.undername] = {
|
|
571
|
+
transactionId: record.target,
|
|
572
|
+
targetProtocol: record.targetProtocol,
|
|
573
|
+
ttlSeconds: record.ttlSeconds,
|
|
574
|
+
priority: record.priority?.__option === 'Some'
|
|
575
|
+
? record.priority.value
|
|
576
|
+
: undefined,
|
|
577
|
+
owner: record.owner?.__option === 'Some'
|
|
578
|
+
? record.owner.value
|
|
579
|
+
: undefined,
|
|
580
|
+
displayName: meta?.displayName?.__option === 'Some'
|
|
581
|
+
? meta.displayName.value
|
|
582
|
+
: undefined,
|
|
583
|
+
logo: meta?.recordLogo?.__option === 'Some'
|
|
584
|
+
? meta.recordLogo.value
|
|
585
|
+
: undefined,
|
|
586
|
+
description: meta?.recordDescription?.__option === 'Some'
|
|
587
|
+
? meta.recordDescription.value
|
|
588
|
+
: undefined,
|
|
589
|
+
keywords: meta?.recordKeywords?.__option === 'Some'
|
|
590
|
+
? meta.recordKeywords.value
|
|
591
|
+
: undefined,
|
|
592
|
+
index: idx,
|
|
593
|
+
};
|
|
594
|
+
indexByMint.set(mint, idx + 1);
|
|
595
|
+
}
|
|
596
|
+
catch {
|
|
597
|
+
// Skip malformed
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
return byMint;
|
|
601
|
+
}
|
|
264
602
|
// =========================================
|
|
265
603
|
// Balance reads (NFT model — owner has balance 1)
|
|
266
604
|
// =========================================
|
|
@@ -275,11 +613,10 @@ export class SolanaANTReadable {
|
|
|
275
613
|
// =========================================
|
|
276
614
|
// State / Info composites
|
|
277
615
|
// =========================================
|
|
278
|
-
async getState(
|
|
279
|
-
const [config,
|
|
280
|
-
this.
|
|
281
|
-
this.
|
|
282
|
-
this.getRecords(),
|
|
616
|
+
async getState(opts) {
|
|
617
|
+
const [{ config, controllers }, records] = await Promise.all([
|
|
618
|
+
this._fetchConfigAndControllers(),
|
|
619
|
+
this.getRecords(opts),
|
|
283
620
|
]);
|
|
284
621
|
// Convert SortedANTRecords to ANTRecords (strip index)
|
|
285
622
|
const plainRecords = {};
|
|
@@ -294,7 +631,7 @@ export class SolanaANTReadable {
|
|
|
294
631
|
Keywords: config.keywords,
|
|
295
632
|
Denomination: 0,
|
|
296
633
|
Owner: config.owner,
|
|
297
|
-
Controllers:
|
|
634
|
+
Controllers: controllers,
|
|
298
635
|
Records: plainRecords,
|
|
299
636
|
Balances: { [config.owner]: 1 },
|
|
300
637
|
Logo: config.logo,
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
1
16
|
/**
|
|
2
17
|
* Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
|
|
3
18
|
*
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
1
16
|
/**
|
|
2
17
|
* Solana implementation of the ANT Registry write interface.
|
|
3
18
|
*
|
|
@@ -38,7 +53,7 @@
|
|
|
38
53
|
* registry's signer) acts as the rent payer for everything bundled here.
|
|
39
54
|
*/
|
|
40
55
|
import { address, } from '@solana/kit';
|
|
41
|
-
import { getAddAclPageInstruction, getCloseAclConfigInstruction, getCloseAclPageInstruction, getRecordAclControllerInstructionAsync,
|
|
56
|
+
import { getAddAclPageInstruction, getCloseAclConfigInstruction, getCloseAclPageInstruction, getRecordAclControllerInstructionAsync, getRecordAclOwnerInstructionAsync, getRegisterAclConfigInstruction, getRemoveAclControllerInstructionAsync, getRemoveAclOwnerInstructionAsync, } from '@ar.io/solana-contracts/ant';
|
|
42
57
|
import { SolanaANTRegistryReadable, } from './ant-registry-readable.js';
|
|
43
58
|
import { ACL_ROLE_CONTROLLER, ACL_ROLE_OWNER, MAX_ACL_PAGE_ENTRIES, } from './constants.js';
|
|
44
59
|
import { deserializeAclConfig, deserializeAclPage } from './deserialize.js';
|
|
@@ -63,7 +78,7 @@ export class SolanaANTRegistryWriteable extends SolanaANTRegistryReadable {
|
|
|
63
78
|
* `AclConfig` is created lazily the first time a user becomes an owner
|
|
64
79
|
* or controller (via `register_acl_config`, which `planAclMaintenance`
|
|
65
80
|
* emits automatically). This method exists only to satisfy the
|
|
66
|
-
* cross-backend `
|
|
81
|
+
* cross-backend `ANTRegistryWrite` interface.
|
|
67
82
|
*/
|
|
68
83
|
async register(_params) {
|
|
69
84
|
return { id: '' };
|
|
@@ -189,7 +204,7 @@ export class SolanaANTRegistryWriteable extends SolanaANTRegistryReadable {
|
|
|
189
204
|
const [aclConfig] = await getAclConfigPDA(params.user, this.antProgram);
|
|
190
205
|
const [aclPage] = await getAclPagePDA(params.user, params.pageIdx, this.antProgram);
|
|
191
206
|
if (params.role === 'owner') {
|
|
192
|
-
return
|
|
207
|
+
return getRecordAclOwnerInstructionAsync({ asset: params.asset, aclConfig, aclPage, payer: this.signer }, { programAddress: this.antProgram });
|
|
193
208
|
}
|
|
194
209
|
return getRecordAclControllerInstructionAsync({ asset: params.asset, aclConfig, aclPage, payer: this.signer }, { programAddress: this.antProgram });
|
|
195
210
|
}
|
|
@@ -198,7 +213,7 @@ export class SolanaANTRegistryWriteable extends SolanaANTRegistryReadable {
|
|
|
198
213
|
const [aclConfig] = await getAclConfigPDA(params.user, this.antProgram);
|
|
199
214
|
const [aclPage] = await getAclPagePDA(params.user, params.pageIdx, this.antProgram);
|
|
200
215
|
if (params.role === 'owner') {
|
|
201
|
-
return
|
|
216
|
+
return getRemoveAclOwnerInstructionAsync({ asset: params.asset, aclConfig, aclPage, payer: this.signer }, { programAddress: this.antProgram });
|
|
202
217
|
}
|
|
203
218
|
return getRemoveAclControllerInstructionAsync({ asset: params.asset, aclConfig, aclPage, payer: this.signer }, { programAddress: this.antProgram });
|
|
204
219
|
}
|