@ar.io/sdk 3.24.0 → 4.0.0-solana.10
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 +143 -23
- package/lib/esm/cli/cli.js +200 -40
- package/lib/esm/cli/commands/antCommands.js +40 -14
- package/lib/esm/cli/commands/arnsPurchaseCommands.js +46 -7
- package/lib/esm/cli/commands/escrowCommands.js +208 -0
- package/lib/esm/cli/commands/gatewayWriteCommands.js +132 -22
- package/lib/esm/cli/commands/pruneCommands.js +166 -0
- package/lib/esm/cli/commands/readCommands.js +10 -2
- package/lib/esm/cli/commands/transfer.js +6 -6
- package/lib/esm/cli/options.js +141 -2
- package/lib/esm/cli/utils.js +280 -39
- package/lib/esm/common/ant-registry.js +25 -3
- package/lib/esm/common/ant.js +50 -5
- package/lib/esm/common/contracts/ao-process.js +4 -6
- package/lib/esm/common/io.js +41 -0
- package/lib/esm/common/marketplace.js +24 -79
- package/lib/esm/constants.js +13 -1
- package/lib/esm/solana/ant-readable.js +387 -0
- package/lib/esm/solana/ant-registry-readable.js +118 -0
- package/lib/esm/solana/ant-registry-writeable.js +457 -0
- package/lib/esm/solana/ant-writeable.js +352 -0
- package/lib/esm/solana/ata.js +55 -0
- package/lib/esm/solana/canonical-message.js +92 -0
- package/lib/esm/solana/clusters.js +62 -0
- package/lib/esm/solana/constants.js +130 -0
- package/lib/esm/solana/delegation-math.js +63 -0
- package/lib/esm/solana/deserialize.js +1182 -0
- package/lib/esm/solana/escrow.js +797 -0
- package/lib/esm/solana/events.js +210 -0
- package/lib/esm/solana/funding-plan.js +682 -0
- package/lib/esm/solana/generated/ant/events/aclEntryAddedEvent.js +21 -0
- package/lib/esm/solana/generated/ant/events/aclEntryRemovedEvent.js +21 -0
- package/lib/esm/solana/generated/ant/events/antMetadataUpdatedEvent.js +21 -0
- package/lib/esm/solana/generated/ant/events/antReconciledEvent.js +21 -0
- package/lib/esm/solana/generated/ant/events/antTransferredEvent.js +21 -0
- package/lib/esm/solana/generated/ant/events/attributesClearedEvent.js +21 -0
- package/lib/esm/solana/generated/ant/events/attributesSyncedEvent.js +21 -0
- package/lib/esm/solana/generated/ant/events/controllerAddedEvent.js +21 -0
- package/lib/esm/solana/generated/ant/events/controllerRemovedEvent.js +21 -0
- package/lib/esm/solana/generated/ant/events/index.js +16 -0
- package/lib/esm/solana/generated/ant/events/recordMetadataPrunedEvent.js +21 -0
- package/lib/esm/solana/generated/ant/events/recordMetadataRemovedEvent.js +21 -0
- package/lib/esm/solana/generated/ant/events/recordMetadataUpdatedEvent.js +21 -0
- package/lib/esm/solana/generated/ant/events/recordRemovedEvent.js +21 -0
- package/lib/esm/solana/generated/ant/events/recordSetEvent.js +21 -0
- package/lib/esm/solana/generated/ant/events/recordTransferredEvent.js +21 -0
- package/lib/esm/solana/generated/ant-escrow/events/escrowCancelledEvent.js +21 -0
- package/lib/esm/solana/generated/ant-escrow/events/escrowClaimedEvent.js +21 -0
- package/lib/esm/solana/generated/ant-escrow/events/escrowDepositedEvent.js +21 -0
- package/lib/esm/solana/generated/ant-escrow/events/escrowRecipientUpdatedEvent.js +21 -0
- package/lib/esm/solana/generated/ant-escrow/events/index.js +5 -0
- package/lib/esm/solana/generated/arns/events/demandFactorUpdatedEvent.js +21 -0
- package/lib/esm/solana/generated/arns/events/index.js +13 -0
- package/lib/esm/solana/generated/arns/events/leaseExtendedEvent.js +21 -0
- package/lib/esm/solana/generated/arns/events/namePurchasedEvent.js +21 -0
- package/lib/esm/solana/generated/arns/events/nameReassignedEvent.js +21 -0
- package/lib/esm/solana/generated/arns/events/nameReleasedEvent.js +21 -0
- package/lib/esm/solana/generated/arns/events/nameReservedEvent.js +21 -0
- package/lib/esm/solana/generated/arns/events/nameUnreservedEvent.js +21 -0
- package/lib/esm/solana/generated/arns/events/nameUpgradedEvent.js +21 -0
- package/lib/esm/solana/generated/arns/events/namesPrunedEvent.js +21 -0
- package/lib/esm/solana/generated/arns/events/reservedNameClaimedEvent.js +21 -0
- package/lib/esm/solana/generated/arns/events/returnedNamePurchasedEvent.js +21 -0
- package/lib/esm/solana/generated/arns/events/undernameIncreasedEvent.js +21 -0
- package/lib/esm/solana/generated/core/events/configUpdatedEvent.js +21 -0
- package/lib/esm/solana/generated/core/events/coreMigrationFinalizedEvent.js +21 -0
- package/lib/esm/solana/generated/core/events/index.js +14 -0
- package/lib/esm/solana/generated/core/events/primaryNameRemovedEvent.js +21 -0
- package/lib/esm/solana/generated/core/events/primaryNameRequestExpiredEvent.js +21 -0
- package/lib/esm/solana/generated/core/events/primaryNameRequestedEvent.js +21 -0
- package/lib/esm/solana/generated/core/events/primaryNameSetEvent.js +21 -0
- package/lib/esm/solana/generated/core/events/supplyFinalizedEvent.js +21 -0
- package/lib/esm/solana/generated/core/events/transferEvent.js +21 -0
- package/lib/esm/solana/generated/core/events/vaultCreatedEvent.js +21 -0
- package/lib/esm/solana/generated/core/events/vaultExtendedEvent.js +21 -0
- package/lib/esm/solana/generated/core/events/vaultIncreasedEvent.js +21 -0
- package/lib/esm/solana/generated/core/events/vaultReleasedEvent.js +21 -0
- package/lib/esm/solana/generated/core/events/vaultRevokedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/allowlistToggledEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/delegateAllowlistedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/delegationClosedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/delegationDecreasedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/delegationEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/epochClosedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/epochCreatedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/epochDistributedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/epochPrescribedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/epochWeightsTalliedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/epochsToggledEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/fundingPlanAppliedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/garMigrationFinalizedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/gatewayFinalizedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/gatewayJoinedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/gatewayLeavingEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/gatewayPrunedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/gatewaySettingsUpdatedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/index.js +31 -0
- package/lib/esm/solana/generated/gar/events/instantWithdrawalEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/observationSubmittedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/observerAddressUpdatedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/operatorStakeIncreasedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/redelegationEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/residueVaultCreatedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/rewardsCompoundedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/stakePaymentEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/withdrawalCancelledEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/withdrawalClaimedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/withdrawalCreatedEvent.js +21 -0
- package/lib/esm/solana/generated/gar/events/withdrawalPaymentEvent.js +21 -0
- package/lib/esm/solana/generated/mpl-core/accounts/assetV1.js +42 -0
- package/lib/esm/solana/generated/mpl-core/accounts/collectionV1.js +42 -0
- package/lib/esm/solana/generated/mpl-core/accounts/hashedAssetV1.js +45 -0
- package/lib/esm/solana/generated/mpl-core/accounts/index.js +12 -0
- package/lib/esm/solana/generated/mpl-core/accounts/pluginHeaderV1.js +45 -0
- package/lib/esm/solana/generated/mpl-core/accounts/pluginRegistryV1.js +42 -0
- package/lib/esm/solana/generated/mpl-core/errors/index.js +8 -0
- package/lib/esm/solana/generated/mpl-core/errors/mplCore.js +136 -0
- package/lib/esm/solana/generated/mpl-core/index.js +8 -0
- package/lib/esm/solana/generated/mpl-core/instructions/addCollectionExternalPluginAdapterV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/addCollectionPluginV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/addExternalPluginAdapterV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/addPluginV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/approveCollectionPluginAuthorityV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/approvePluginAuthorityV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/burnCollectionV1.js +49 -0
- package/lib/esm/solana/generated/mpl-core/instructions/burnV1.js +49 -0
- package/lib/esm/solana/generated/mpl-core/instructions/collect.js +42 -0
- package/lib/esm/solana/generated/mpl-core/instructions/compressV1.js +50 -0
- package/lib/esm/solana/generated/mpl-core/instructions/createCollectionV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/createCollectionV2.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/createV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/createV2.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/decompressV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/executeV1.js +56 -0
- package/lib/esm/solana/generated/mpl-core/instructions/index.js +40 -0
- package/lib/esm/solana/generated/mpl-core/instructions/removeCollectionExternalPluginAdapterV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/removeCollectionPluginV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/removeExternalPluginAdapterV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/removePluginV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/revokeCollectionPluginAuthorityV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/revokePluginAuthorityV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/transferV1.js +49 -0
- package/lib/esm/solana/generated/mpl-core/instructions/updateCollectionExternalPluginAdapterV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/updateCollectionInfoV1.js +45 -0
- package/lib/esm/solana/generated/mpl-core/instructions/updateCollectionPluginV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/updateCollectionV1.js +52 -0
- package/lib/esm/solana/generated/mpl-core/instructions/updateExternalPluginAdapterV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/updatePluginV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/updateV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/updateV2.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/writeCollectionExternalPluginAdapterDataV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/instructions/writeExternalPluginAdapterDataV1.js +53 -0
- package/lib/esm/solana/generated/mpl-core/program-address.js +1 -0
- package/lib/esm/solana/generated/mpl-core/types/addAssetsToGroupV1Args.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/addBlocker.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/addCollectionsToGroupV1Args.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/addGroupsToGroupV1Args.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/agentIdentity.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/agentIdentityInitInfo.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/agentIdentityUpdateInfo.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/appData.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/appDataInitInfo.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/appDataUpdateInfo.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/attribute.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/attributes.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/authority.js +24 -0
- package/lib/esm/solana/generated/mpl-core/types/autograph.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/autographSignature.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/bubblegumV2.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/burnDelegate.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/closeGroupV1Args.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/compressionProof.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/creator.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/dataSection.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/dataSectionInitInfo.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/dataSectionUpdateInfo.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/dataState.js +23 -0
- package/lib/esm/solana/generated/mpl-core/types/edition.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/externalCheckResult.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapter.js +25 -0
- package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterInitInfo.js +25 -0
- package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterKey.js +25 -0
- package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterSchema.js +24 -0
- package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterType.js +28 -0
- package/lib/esm/solana/generated/mpl-core/types/externalPluginAdapterUpdateInfo.js +25 -0
- package/lib/esm/solana/generated/mpl-core/types/externalRegistryRecord.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/externalValidationResult.js +24 -0
- package/lib/esm/solana/generated/mpl-core/types/extraAccount.js +25 -0
- package/lib/esm/solana/generated/mpl-core/types/freezeDelegate.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/freezeExecute.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/groups.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/hashablePluginSchema.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/hashedAssetSchema.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/hookableLifecycleEvent.js +26 -0
- package/lib/esm/solana/generated/mpl-core/types/immutableMetadata.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/index.js +89 -0
- package/lib/esm/solana/generated/mpl-core/types/key.js +28 -0
- package/lib/esm/solana/generated/mpl-core/types/lifecycleHook.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/lifecycleHookInitInfo.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/lifecycleHookUpdateInfo.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/linkedAppData.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/linkedAppDataInitInfo.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/linkedAppDataUpdateInfo.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/linkedDataKey.js +25 -0
- package/lib/esm/solana/generated/mpl-core/types/linkedLifecycleHook.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/linkedLifecycleHookInitInfo.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/linkedLifecycleHookUpdateInfo.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/masterEdition.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/oracle.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/oracleInitInfo.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/oracleUpdateInfo.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/oracleValidation.js +25 -0
- package/lib/esm/solana/generated/mpl-core/types/permanentBurnDelegate.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/permanentFreezeDelegate.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/permanentFreezeExecute.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/permanentTransferDelegate.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/plugin.js +25 -0
- package/lib/esm/solana/generated/mpl-core/types/pluginAuthorityPair.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/pluginType.js +40 -0
- package/lib/esm/solana/generated/mpl-core/types/registryRecord.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/relationshipKind.js +25 -0
- package/lib/esm/solana/generated/mpl-core/types/removeAssetsFromGroupV1Args.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/removeCollectionsFromGroupV1Args.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/removeGroupsFromGroupV1Args.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/royalties.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/ruleSet.js +24 -0
- package/lib/esm/solana/generated/mpl-core/types/seed.js +24 -0
- package/lib/esm/solana/generated/mpl-core/types/transferDelegate.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/updateAuthority.js +24 -0
- package/lib/esm/solana/generated/mpl-core/types/updateDelegate.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/updateGroupV1Args.js +17 -0
- package/lib/esm/solana/generated/mpl-core/types/updateType.js +24 -0
- package/lib/esm/solana/generated/mpl-core/types/validationResult.js +25 -0
- package/lib/esm/solana/generated/mpl-core/types/validationResultsOffset.js +24 -0
- package/lib/esm/solana/generated/mpl-core/types/verifiedCreators.js +18 -0
- package/lib/esm/solana/generated/mpl-core/types/verifiedCreatorsSignature.js +17 -0
- package/lib/esm/solana/index.js +85 -0
- package/lib/esm/solana/instruction.js +24 -0
- package/lib/esm/solana/io-readable.js +1752 -0
- package/lib/esm/solana/io-writeable.js +2215 -0
- package/lib/esm/solana/json-rpc.js +74 -0
- package/lib/esm/solana/metadata.js +66 -0
- package/lib/esm/solana/mpl-core.js +142 -0
- package/lib/esm/solana/pda.js +317 -0
- package/lib/esm/solana/send.js +117 -0
- package/lib/esm/solana/spawn-ant.js +210 -0
- package/lib/esm/solana/types.js +1 -0
- package/lib/esm/types/ant.js +19 -7
- package/lib/esm/types/io.js +8 -1
- package/lib/esm/utils/ant.js +1 -0
- package/lib/esm/utils/ao.js +1 -0
- package/lib/esm/version.js +1 -1
- package/lib/types/cli/commands/antCommands.d.ts +2 -7
- package/lib/types/cli/commands/arnsPurchaseCommands.d.ts +12 -0
- package/lib/types/cli/commands/escrowCommands.d.ts +62 -0
- package/lib/types/cli/commands/pruneCommands.d.ts +31 -0
- package/lib/types/cli/commands/readCommands.d.ts +2 -0
- package/lib/types/cli/options.d.ts +112 -0
- package/lib/types/cli/types.d.ts +6 -0
- package/lib/types/cli/utils.d.ts +43 -5
- package/lib/types/common/ant-registry.d.ts +41 -0
- package/lib/types/common/ant.d.ts +35 -2
- package/lib/types/common/contracts/ao-process.d.ts +2 -16
- package/lib/types/common/io.d.ts +42 -2
- package/lib/types/common/marketplace.d.ts +2 -14
- package/lib/types/constants.d.ts +11 -1
- package/lib/types/solana/ant-readable.d.ts +121 -0
- package/lib/types/solana/ant-registry-readable.d.ts +90 -0
- package/lib/types/solana/ant-registry-writeable.d.ts +234 -0
- package/lib/types/solana/ant-writeable.d.ts +162 -0
- package/lib/types/solana/ata.d.ts +29 -0
- package/lib/types/solana/canonical-message.d.ts +82 -0
- package/lib/types/solana/clusters.d.ts +62 -0
- package/lib/types/solana/constants.d.ts +103 -0
- package/lib/types/solana/delegation-math.d.ts +20 -0
- package/lib/types/solana/deserialize.d.ts +440 -0
- package/lib/types/solana/escrow.d.ts +403 -0
- package/lib/types/solana/events.d.ts +156 -0
- package/lib/types/solana/funding-plan.d.ts +210 -0
- package/lib/types/solana/generated/ant/events/aclEntryAddedEvent.d.ts +26 -0
- package/lib/types/solana/generated/ant/events/aclEntryRemovedEvent.d.ts +26 -0
- package/lib/types/solana/generated/ant/events/antMetadataUpdatedEvent.d.ts +28 -0
- package/lib/types/solana/generated/ant/events/antReconciledEvent.d.ts +28 -0
- package/lib/types/solana/generated/ant/events/antTransferredEvent.d.ts +26 -0
- package/lib/types/solana/generated/ant/events/attributesClearedEvent.d.ts +26 -0
- package/lib/types/solana/generated/ant/events/attributesSyncedEvent.d.ts +24 -0
- package/lib/types/solana/generated/ant/events/controllerAddedEvent.d.ts +26 -0
- package/lib/types/solana/generated/ant/events/controllerRemovedEvent.d.ts +26 -0
- package/lib/types/solana/generated/ant/events/index.d.ts +15 -0
- package/lib/types/solana/generated/ant/events/recordMetadataPrunedEvent.d.ts +26 -0
- package/lib/types/solana/generated/ant/events/recordMetadataRemovedEvent.d.ts +26 -0
- package/lib/types/solana/generated/ant/events/recordMetadataUpdatedEvent.d.ts +28 -0
- package/lib/types/solana/generated/ant/events/recordRemovedEvent.d.ts +26 -0
- package/lib/types/solana/generated/ant/events/recordSetEvent.d.ts +34 -0
- package/lib/types/solana/generated/ant/events/recordTransferredEvent.d.ts +30 -0
- package/lib/types/solana/generated/ant-escrow/events/escrowCancelledEvent.d.ts +28 -0
- package/lib/types/solana/generated/ant-escrow/events/escrowClaimedEvent.d.ts +32 -0
- package/lib/types/solana/generated/ant-escrow/events/escrowDepositedEvent.d.ts +36 -0
- package/lib/types/solana/generated/ant-escrow/events/escrowRecipientUpdatedEvent.d.ts +26 -0
- package/lib/types/solana/generated/ant-escrow/events/index.d.ts +4 -0
- package/lib/types/solana/generated/arns/events/demandFactorUpdatedEvent.d.ts +28 -0
- package/lib/types/solana/generated/arns/events/index.d.ts +12 -0
- package/lib/types/solana/generated/arns/events/leaseExtendedEvent.d.ts +32 -0
- package/lib/types/solana/generated/arns/events/namePurchasedEvent.d.ts +34 -0
- package/lib/types/solana/generated/arns/events/nameReassignedEvent.d.ts +28 -0
- package/lib/types/solana/generated/arns/events/nameReleasedEvent.d.ts +24 -0
- package/lib/types/solana/generated/arns/events/nameReservedEvent.d.ts +28 -0
- package/lib/types/solana/generated/arns/events/nameUnreservedEvent.d.ts +24 -0
- package/lib/types/solana/generated/arns/events/nameUpgradedEvent.d.ts +28 -0
- package/lib/types/solana/generated/arns/events/namesPrunedEvent.d.ts +26 -0
- package/lib/types/solana/generated/arns/events/reservedNameClaimedEvent.d.ts +24 -0
- package/lib/types/solana/generated/arns/events/returnedNamePurchasedEvent.d.ts +32 -0
- package/lib/types/solana/generated/arns/events/undernameIncreasedEvent.d.ts +32 -0
- package/lib/types/solana/generated/core/events/configUpdatedEvent.d.ts +26 -0
- package/lib/types/solana/generated/core/events/coreMigrationFinalizedEvent.d.ts +26 -0
- package/lib/types/solana/generated/core/events/index.d.ts +13 -0
- package/lib/types/solana/generated/core/events/primaryNameRemovedEvent.d.ts +26 -0
- package/lib/types/solana/generated/core/events/primaryNameRequestExpiredEvent.d.ts +26 -0
- package/lib/types/solana/generated/core/events/primaryNameRequestedEvent.d.ts +30 -0
- package/lib/types/solana/generated/core/events/primaryNameSetEvent.d.ts +24 -0
- package/lib/types/solana/generated/core/events/supplyFinalizedEvent.d.ts +26 -0
- package/lib/types/solana/generated/core/events/transferEvent.d.ts +26 -0
- package/lib/types/solana/generated/core/events/vaultCreatedEvent.d.ts +28 -0
- package/lib/types/solana/generated/core/events/vaultExtendedEvent.d.ts +26 -0
- package/lib/types/solana/generated/core/events/vaultIncreasedEvent.d.ts +28 -0
- package/lib/types/solana/generated/core/events/vaultReleasedEvent.d.ts +26 -0
- package/lib/types/solana/generated/core/events/vaultRevokedEvent.d.ts +28 -0
- package/lib/types/solana/generated/gar/events/allowlistToggledEvent.d.ts +24 -0
- package/lib/types/solana/generated/gar/events/delegateAllowlistedEvent.d.ts +26 -0
- package/lib/types/solana/generated/gar/events/delegationClosedEvent.d.ts +24 -0
- package/lib/types/solana/generated/gar/events/delegationDecreasedEvent.d.ts +28 -0
- package/lib/types/solana/generated/gar/events/delegationEvent.d.ts +28 -0
- package/lib/types/solana/generated/gar/events/epochClosedEvent.d.ts +24 -0
- package/lib/types/solana/generated/gar/events/epochCreatedEvent.d.ts +26 -0
- package/lib/types/solana/generated/gar/events/epochDistributedEvent.d.ts +26 -0
- package/lib/types/solana/generated/gar/events/epochPrescribedEvent.d.ts +28 -0
- package/lib/types/solana/generated/gar/events/epochWeightsTalliedEvent.d.ts +26 -0
- package/lib/types/solana/generated/gar/events/epochsToggledEvent.d.ts +24 -0
- package/lib/types/solana/generated/gar/events/fundingPlanAppliedEvent.d.ts +28 -0
- package/lib/types/solana/generated/gar/events/garMigrationFinalizedEvent.d.ts +26 -0
- package/lib/types/solana/generated/gar/events/gatewayFinalizedEvent.d.ts +24 -0
- package/lib/types/solana/generated/gar/events/gatewayJoinedEvent.d.ts +26 -0
- package/lib/types/solana/generated/gar/events/gatewayLeavingEvent.d.ts +22 -0
- package/lib/types/solana/generated/gar/events/gatewayPrunedEvent.d.ts +26 -0
- package/lib/types/solana/generated/gar/events/gatewaySettingsUpdatedEvent.d.ts +24 -0
- package/lib/types/solana/generated/gar/events/index.d.ts +30 -0
- package/lib/types/solana/generated/gar/events/instantWithdrawalEvent.d.ts +30 -0
- package/lib/types/solana/generated/gar/events/observationSubmittedEvent.d.ts +28 -0
- package/lib/types/solana/generated/gar/events/observerAddressUpdatedEvent.d.ts +24 -0
- package/lib/types/solana/generated/gar/events/operatorStakeIncreasedEvent.d.ts +26 -0
- package/lib/types/solana/generated/gar/events/redelegationEvent.d.ts +30 -0
- package/lib/types/solana/generated/gar/events/residueVaultCreatedEvent.d.ts +30 -0
- package/lib/types/solana/generated/gar/events/rewardsCompoundedEvent.d.ts +26 -0
- package/lib/types/solana/generated/gar/events/stakePaymentEvent.d.ts +28 -0
- package/lib/types/solana/generated/gar/events/withdrawalCancelledEvent.d.ts +30 -0
- package/lib/types/solana/generated/gar/events/withdrawalClaimedEvent.d.ts +26 -0
- package/lib/types/solana/generated/gar/events/withdrawalCreatedEvent.d.ts +28 -0
- package/lib/types/solana/generated/gar/events/withdrawalPaymentEvent.d.ts +28 -0
- package/lib/types/solana/generated/mpl-core/accounts/assetV1.d.ts +37 -0
- package/lib/types/solana/generated/mpl-core/accounts/collectionV1.d.ts +37 -0
- package/lib/types/solana/generated/mpl-core/accounts/hashedAssetV1.d.ts +30 -0
- package/lib/types/solana/generated/mpl-core/accounts/index.d.ts +12 -0
- package/lib/types/solana/generated/mpl-core/accounts/pluginHeaderV1.d.ts +30 -0
- package/lib/types/solana/generated/mpl-core/accounts/pluginRegistryV1.d.ts +31 -0
- package/lib/types/solana/generated/mpl-core/errors/index.d.ts +8 -0
- package/lib/types/solana/generated/mpl-core/errors/mplCore.d.ts +133 -0
- package/lib/types/solana/generated/mpl-core/index.d.ts +8 -0
- package/lib/types/solana/generated/mpl-core/instructions/addCollectionExternalPluginAdapterV1.d.ts +56 -0
- package/lib/types/solana/generated/mpl-core/instructions/addCollectionPluginV1.d.ts +59 -0
- package/lib/types/solana/generated/mpl-core/instructions/addExternalPluginAdapterV1.d.ts +60 -0
- package/lib/types/solana/generated/mpl-core/instructions/addPluginV1.d.ts +63 -0
- package/lib/types/solana/generated/mpl-core/instructions/approveCollectionPluginAuthorityV1.d.ts +59 -0
- package/lib/types/solana/generated/mpl-core/instructions/approvePluginAuthorityV1.d.ts +63 -0
- package/lib/types/solana/generated/mpl-core/instructions/burnCollectionV1.d.ts +52 -0
- package/lib/types/solana/generated/mpl-core/instructions/burnV1.d.ts +60 -0
- package/lib/types/solana/generated/mpl-core/instructions/collect.d.ts +39 -0
- package/lib/types/solana/generated/mpl-core/instructions/compressV1.d.ts +55 -0
- package/lib/types/solana/generated/mpl-core/instructions/createCollectionV1.d.ts +58 -0
- package/lib/types/solana/generated/mpl-core/instructions/createCollectionV2.d.ts +61 -0
- package/lib/types/solana/generated/mpl-core/instructions/createV1.d.ts +77 -0
- package/lib/types/solana/generated/mpl-core/instructions/createV2.d.ts +80 -0
- package/lib/types/solana/generated/mpl-core/instructions/decompressV1.d.ts +60 -0
- package/lib/types/solana/generated/mpl-core/instructions/executeV1.d.ts +63 -0
- package/lib/types/solana/generated/mpl-core/instructions/index.d.ts +40 -0
- package/lib/types/solana/generated/mpl-core/instructions/removeCollectionExternalPluginAdapterV1.d.ts +56 -0
- package/lib/types/solana/generated/mpl-core/instructions/removeCollectionPluginV1.d.ts +56 -0
- package/lib/types/solana/generated/mpl-core/instructions/removeExternalPluginAdapterV1.d.ts +60 -0
- package/lib/types/solana/generated/mpl-core/instructions/removePluginV1.d.ts +60 -0
- package/lib/types/solana/generated/mpl-core/instructions/revokeCollectionPluginAuthorityV1.d.ts +56 -0
- package/lib/types/solana/generated/mpl-core/instructions/revokePluginAuthorityV1.d.ts +60 -0
- package/lib/types/solana/generated/mpl-core/instructions/transferV1.d.ts +64 -0
- package/lib/types/solana/generated/mpl-core/instructions/updateCollectionExternalPluginAdapterV1.d.ts +59 -0
- package/lib/types/solana/generated/mpl-core/instructions/updateCollectionInfoV1.d.ts +47 -0
- package/lib/types/solana/generated/mpl-core/instructions/updateCollectionPluginV1.d.ts +56 -0
- package/lib/types/solana/generated/mpl-core/instructions/updateCollectionV1.d.ts +62 -0
- package/lib/types/solana/generated/mpl-core/instructions/updateExternalPluginAdapterV1.d.ts +63 -0
- package/lib/types/solana/generated/mpl-core/instructions/updatePluginV1.d.ts +60 -0
- package/lib/types/solana/generated/mpl-core/instructions/updateV1.d.ts +66 -0
- package/lib/types/solana/generated/mpl-core/instructions/updateV2.d.ts +70 -0
- package/lib/types/solana/generated/mpl-core/instructions/writeCollectionExternalPluginAdapterDataV1.d.ts +63 -0
- package/lib/types/solana/generated/mpl-core/instructions/writeExternalPluginAdapterDataV1.d.ts +67 -0
- package/lib/types/solana/generated/mpl-core/program-address.d.ts +7 -0
- package/lib/types/solana/generated/mpl-core/types/addAssetsToGroupV1Args.d.ts +13 -0
- package/lib/types/solana/generated/mpl-core/types/addBlocker.d.ts +13 -0
- package/lib/types/solana/generated/mpl-core/types/addCollectionsToGroupV1Args.d.ts +13 -0
- package/lib/types/solana/generated/mpl-core/types/addGroupsToGroupV1Args.d.ts +15 -0
- package/lib/types/solana/generated/mpl-core/types/agentIdentity.d.ts +15 -0
- package/lib/types/solana/generated/mpl-core/types/agentIdentityInitInfo.d.ts +22 -0
- package/lib/types/solana/generated/mpl-core/types/agentIdentityUpdateInfo.d.ts +20 -0
- package/lib/types/solana/generated/mpl-core/types/appData.d.ts +20 -0
- package/lib/types/solana/generated/mpl-core/types/appDataInitInfo.d.ts +22 -0
- package/lib/types/solana/generated/mpl-core/types/appDataUpdateInfo.d.ts +18 -0
- package/lib/types/solana/generated/mpl-core/types/attribute.d.ts +16 -0
- package/lib/types/solana/generated/mpl-core/types/attributes.d.ts +18 -0
- package/lib/types/solana/generated/mpl-core/types/authority.d.ts +29 -0
- package/lib/types/solana/generated/mpl-core/types/autograph.d.ts +18 -0
- package/lib/types/solana/generated/mpl-core/types/autographSignature.d.ts +16 -0
- package/lib/types/solana/generated/mpl-core/types/bubblegumV2.d.ts +13 -0
- package/lib/types/solana/generated/mpl-core/types/burnDelegate.d.ts +13 -0
- package/lib/types/solana/generated/mpl-core/types/closeGroupV1Args.d.ts +13 -0
- package/lib/types/solana/generated/mpl-core/types/compressionProof.d.ts +28 -0
- package/lib/types/solana/generated/mpl-core/types/creator.d.ts +16 -0
- package/lib/types/solana/generated/mpl-core/types/dataSection.d.ts +20 -0
- package/lib/types/solana/generated/mpl-core/types/dataSectionInitInfo.d.ts +20 -0
- package/lib/types/solana/generated/mpl-core/types/dataSectionUpdateInfo.d.ts +13 -0
- package/lib/types/solana/generated/mpl-core/types/dataState.d.ts +16 -0
- package/lib/types/solana/generated/mpl-core/types/edition.d.ts +15 -0
- package/lib/types/solana/generated/mpl-core/types/externalCheckResult.d.ts +15 -0
- package/lib/types/solana/generated/mpl-core/types/externalPluginAdapter.d.ts +66 -0
- package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterInitInfo.d.ts +66 -0
- package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterKey.d.ts +64 -0
- package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterSchema.d.ts +17 -0
- package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterType.d.ts +21 -0
- package/lib/types/solana/generated/mpl-core/types/externalPluginAdapterUpdateInfo.d.ts +59 -0
- package/lib/types/solana/generated/mpl-core/types/externalRegistryRecord.d.ts +28 -0
- package/lib/types/solana/generated/mpl-core/types/externalValidationResult.d.ts +17 -0
- package/lib/types/solana/generated/mpl-core/types/extraAccount.d.ts +86 -0
- package/lib/types/solana/generated/mpl-core/types/freezeDelegate.d.ts +15 -0
- package/lib/types/solana/generated/mpl-core/types/freezeExecute.d.ts +15 -0
- package/lib/types/solana/generated/mpl-core/types/groups.d.ts +15 -0
- package/lib/types/solana/generated/mpl-core/types/hashablePluginSchema.d.ts +22 -0
- package/lib/types/solana/generated/mpl-core/types/hashedAssetSchema.d.ts +16 -0
- package/lib/types/solana/generated/mpl-core/types/hookableLifecycleEvent.d.ts +19 -0
- package/lib/types/solana/generated/mpl-core/types/immutableMetadata.d.ts +13 -0
- package/lib/types/solana/generated/mpl-core/types/index.d.ts +89 -0
- package/lib/types/solana/generated/mpl-core/types/key.d.ts +21 -0
- package/lib/types/solana/generated/mpl-core/types/lifecycleHook.d.ts +24 -0
- package/lib/types/solana/generated/mpl-core/types/lifecycleHookInitInfo.d.ts +28 -0
- package/lib/types/solana/generated/mpl-core/types/lifecycleHookUpdateInfo.d.ts +22 -0
- package/lib/types/solana/generated/mpl-core/types/linkedAppData.d.ts +20 -0
- package/lib/types/solana/generated/mpl-core/types/linkedAppDataInitInfo.d.ts +22 -0
- package/lib/types/solana/generated/mpl-core/types/linkedAppDataUpdateInfo.d.ts +18 -0
- package/lib/types/solana/generated/mpl-core/types/linkedDataKey.d.ts +31 -0
- package/lib/types/solana/generated/mpl-core/types/linkedLifecycleHook.d.ts +24 -0
- package/lib/types/solana/generated/mpl-core/types/linkedLifecycleHookInitInfo.d.ts +28 -0
- package/lib/types/solana/generated/mpl-core/types/linkedLifecycleHookUpdateInfo.d.ts +22 -0
- package/lib/types/solana/generated/mpl-core/types/masterEdition.d.ts +21 -0
- package/lib/types/solana/generated/mpl-core/types/oracle.d.ts +22 -0
- package/lib/types/solana/generated/mpl-core/types/oracleInitInfo.d.ts +26 -0
- package/lib/types/solana/generated/mpl-core/types/oracleUpdateInfo.d.ts +22 -0
- package/lib/types/solana/generated/mpl-core/types/oracleValidation.d.ts +35 -0
- package/lib/types/solana/generated/mpl-core/types/permanentBurnDelegate.d.ts +13 -0
- package/lib/types/solana/generated/mpl-core/types/permanentFreezeDelegate.d.ts +15 -0
- package/lib/types/solana/generated/mpl-core/types/permanentFreezeExecute.d.ts +15 -0
- package/lib/types/solana/generated/mpl-core/types/permanentTransferDelegate.d.ts +13 -0
- package/lib/types/solana/generated/mpl-core/types/plugin.d.ts +150 -0
- package/lib/types/solana/generated/mpl-core/types/pluginAuthorityPair.d.ts +20 -0
- package/lib/types/solana/generated/mpl-core/types/pluginType.d.ts +33 -0
- package/lib/types/solana/generated/mpl-core/types/registryRecord.d.ts +22 -0
- package/lib/types/solana/generated/mpl-core/types/relationshipKind.d.ts +18 -0
- package/lib/types/solana/generated/mpl-core/types/removeAssetsFromGroupV1Args.d.ts +15 -0
- package/lib/types/solana/generated/mpl-core/types/removeCollectionsFromGroupV1Args.d.ts +15 -0
- package/lib/types/solana/generated/mpl-core/types/removeGroupsFromGroupV1Args.d.ts +15 -0
- package/lib/types/solana/generated/mpl-core/types/royalties.d.ts +22 -0
- package/lib/types/solana/generated/mpl-core/types/ruleSet.d.ts +27 -0
- package/lib/types/solana/generated/mpl-core/types/seed.d.ts +36 -0
- package/lib/types/solana/generated/mpl-core/types/transferDelegate.d.ts +13 -0
- package/lib/types/solana/generated/mpl-core/types/updateAuthority.d.ts +27 -0
- package/lib/types/solana/generated/mpl-core/types/updateDelegate.d.ts +15 -0
- package/lib/types/solana/generated/mpl-core/types/updateGroupV1Args.d.ts +19 -0
- package/lib/types/solana/generated/mpl-core/types/updateType.d.ts +17 -0
- package/lib/types/solana/generated/mpl-core/types/validationResult.d.ts +18 -0
- package/lib/types/solana/generated/mpl-core/types/validationResultsOffset.d.ts +33 -0
- package/lib/types/solana/generated/mpl-core/types/verifiedCreators.d.ts +18 -0
- package/lib/types/solana/generated/mpl-core/types/verifiedCreatorsSignature.d.ts +16 -0
- package/lib/types/solana/index.d.ts +63 -0
- package/lib/types/solana/instruction.d.ts +24 -0
- package/lib/types/solana/io-readable.d.ts +360 -0
- package/lib/types/solana/io-writeable.d.ts +533 -0
- package/lib/types/solana/json-rpc.d.ts +32 -0
- package/lib/types/solana/metadata.d.ts +69 -0
- package/lib/types/solana/mpl-core.d.ts +76 -0
- package/lib/types/solana/pda.d.ts +95 -0
- package/lib/types/solana/send.d.ts +16 -0
- package/lib/types/solana/spawn-ant.d.ts +130 -0
- package/lib/types/solana/types.d.ts +67 -0
- package/lib/types/types/ant-registry.d.ts +39 -0
- package/lib/types/types/ant.d.ts +22 -4
- package/lib/types/types/io.d.ts +56 -1
- package/lib/types/version.d.ts +1 -1
- package/package.json +33 -16
- package/lib/cjs/cli/cli.js +0 -822
- package/lib/cjs/cli/commands/antCommands.js +0 -113
- package/lib/cjs/cli/commands/arnsPurchaseCommands.js +0 -212
- package/lib/cjs/cli/commands/gatewayWriteCommands.js +0 -210
- package/lib/cjs/cli/commands/readCommands.js +0 -215
- package/lib/cjs/cli/commands/transfer.js +0 -159
- package/lib/cjs/cli/options.js +0 -470
- package/lib/cjs/cli/types.js +0 -2
- package/lib/cjs/cli/utils.js +0 -639
- package/lib/cjs/common/ant-registry.js +0 -155
- package/lib/cjs/common/ant-versions.js +0 -93
- package/lib/cjs/common/ant.js +0 -1182
- package/lib/cjs/common/arweave.js +0 -27
- package/lib/cjs/common/contracts/ao-process.js +0 -224
- package/lib/cjs/common/error.js +0 -64
- package/lib/cjs/common/faucet.js +0 -150
- package/lib/cjs/common/hyperbeam/hb.js +0 -173
- package/lib/cjs/common/index.js +0 -42
- package/lib/cjs/common/io.js +0 -1423
- package/lib/cjs/common/logger.js +0 -83
- package/lib/cjs/common/loggers/winston.js +0 -68
- package/lib/cjs/common/marketplace.js +0 -731
- package/lib/cjs/common/turbo.js +0 -223
- package/lib/cjs/constants.js +0 -41
- package/lib/cjs/node/index.js +0 -39
- package/lib/cjs/package.json +0 -1
- package/lib/cjs/types/ant-registry.js +0 -2
- package/lib/cjs/types/ant.js +0 -168
- package/lib/cjs/types/common.js +0 -2
- package/lib/cjs/types/faucet.js +0 -2
- package/lib/cjs/types/index.js +0 -37
- package/lib/cjs/types/io.js +0 -51
- package/lib/cjs/types/token.js +0 -116
- package/lib/cjs/utils/ant.js +0 -108
- package/lib/cjs/utils/ao.js +0 -432
- package/lib/cjs/utils/arweave.js +0 -285
- package/lib/cjs/utils/base64.js +0 -62
- package/lib/cjs/utils/hash.js +0 -56
- package/lib/cjs/utils/index.js +0 -38
- package/lib/cjs/utils/json.js +0 -26
- package/lib/cjs/utils/processes.js +0 -173
- package/lib/cjs/utils/random.js +0 -30
- package/lib/cjs/utils/schema.js +0 -15
- package/lib/cjs/utils/url.js +0 -37
- package/lib/cjs/version.js +0 -20
- package/lib/cjs/web/index.js +0 -41
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solana implementation of ANT (Arweave Name Token) read interface.
|
|
3
|
+
*
|
|
4
|
+
* Reads ANT state from Metaplex Core NFT + PDA accounts on Solana.
|
|
5
|
+
* Each ANT is a Metaplex Core NFT with extended state in PDAs:
|
|
6
|
+
* - AntConfig: name, ticker, logo, description, keywords, owner
|
|
7
|
+
* - AntControllers: list of controller pubkeys
|
|
8
|
+
* - AntRecord: undername records (transactionId, ttl, priority, etc.)
|
|
9
|
+
*/
|
|
10
|
+
import { address, fetchEncodedAccount, } from '@solana/kit';
|
|
11
|
+
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
|
+
import { createHash as __createHash } from 'crypto';
|
|
15
|
+
import { ANT_RECORD_DISCRIMINATOR } from '@ar.io/solana-contracts/ant';
|
|
16
|
+
import { Logger } from '../common/logger.js';
|
|
17
|
+
import { SolanaANTRegistryReadable } from './ant-registry-readable.js';
|
|
18
|
+
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
|
+
import { getAntConfigPDA, getAntControllersPDA, getAntRecordMetadataPDA, getAntRecordPDA, } from './pda.js';
|
|
25
|
+
/**
|
|
26
|
+
* Solana-backed read-only client for a single ANT (Arweave Name Token).
|
|
27
|
+
*
|
|
28
|
+
* Usage:
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { createSolanaRpc } from '@solana/kit';
|
|
31
|
+
* import { SolanaANTReadable } from '@ar.io/sdk/solana';
|
|
32
|
+
*
|
|
33
|
+
* const rpc = createSolanaRpc('https://api.mainnet-beta.solana.com');
|
|
34
|
+
* const ant = new SolanaANTReadable({
|
|
35
|
+
* rpc,
|
|
36
|
+
* processId: 'MetaplexCoreAssetAddress...',
|
|
37
|
+
* });
|
|
38
|
+
*
|
|
39
|
+
* const owner = await ant.getOwner();
|
|
40
|
+
* const record = await ant.getRecord({ undername: '@' });
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export class SolanaANTReadable {
|
|
44
|
+
processId;
|
|
45
|
+
rpc;
|
|
46
|
+
commitment;
|
|
47
|
+
logger;
|
|
48
|
+
antProgram;
|
|
49
|
+
mint;
|
|
50
|
+
/**
|
|
51
|
+
* Composed registry instance — the source of truth for the per-user
|
|
52
|
+
* paginated ACL (ADR-012). Sharing one instance across the read and
|
|
53
|
+
* write classes keeps program id / commitment / RPC configuration
|
|
54
|
+
* coherent for both `accessControlList` reads and the maintenance
|
|
55
|
+
* planner used during writes.
|
|
56
|
+
*/
|
|
57
|
+
registry;
|
|
58
|
+
constructor(config) {
|
|
59
|
+
this.processId = config.processId;
|
|
60
|
+
this.rpc = config.rpc;
|
|
61
|
+
this.commitment = config.commitment ?? 'confirmed';
|
|
62
|
+
this.logger = config.logger ?? Logger.default;
|
|
63
|
+
this.antProgram = config.antProgramId ?? ARIO_ANT_PROGRAM_ID;
|
|
64
|
+
this.mint = address(config.processId);
|
|
65
|
+
this.registry =
|
|
66
|
+
config.registry ??
|
|
67
|
+
new SolanaANTRegistryReadable({
|
|
68
|
+
rpc: this.rpc,
|
|
69
|
+
commitment: this.commitment,
|
|
70
|
+
logger: this.logger,
|
|
71
|
+
antProgramId: this.antProgram,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Build a `SolanaANTReadable` whose program id is read from the
|
|
76
|
+
* asset's `ANT Program` Attributes-plugin entry (ADR-016 / BD-100).
|
|
77
|
+
*
|
|
78
|
+
* Falls back to the canonical `ARIO_ANT_PROGRAM_ID` when the asset
|
|
79
|
+
* has no plugin section, no `ANT Program` trait, or any layer of the
|
|
80
|
+
* walk fails to decode — matching the on-chain leniency in
|
|
81
|
+
* `programs/ario-core/src/mpl_core.rs::read_ant_program`. This is the
|
|
82
|
+
* factory resolution paths should reach for: it does the asset fetch
|
|
83
|
+
* once, hands the resulting program id to the constructor, and
|
|
84
|
+
* shares one `SolanaANTRegistryReadable` instance with the new ANT.
|
|
85
|
+
*
|
|
86
|
+
* Use the plain constructor when the program id is already known
|
|
87
|
+
* (e.g. inside a freshly-spawned ANT flow where you've just minted
|
|
88
|
+
* the asset and know the program you targeted).
|
|
89
|
+
*/
|
|
90
|
+
static async fromAsset(config) {
|
|
91
|
+
const { fetchAntProgramFromAsset } = await import('./mpl-core.js');
|
|
92
|
+
const mint = address(config.processId);
|
|
93
|
+
const fromAsset = await fetchAntProgramFromAsset(config.rpc, mint, {
|
|
94
|
+
commitment: config.commitment ?? 'confirmed',
|
|
95
|
+
});
|
|
96
|
+
return new SolanaANTReadable({
|
|
97
|
+
rpc: config.rpc,
|
|
98
|
+
processId: config.processId,
|
|
99
|
+
commitment: config.commitment,
|
|
100
|
+
logger: config.logger,
|
|
101
|
+
antProgramId: fromAsset ?? ARIO_ANT_PROGRAM_ID,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
async getAccount(pda) {
|
|
105
|
+
return fetchEncodedAccount(this.rpc, pda, {
|
|
106
|
+
commitment: this.commitment,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
// =========================================
|
|
110
|
+
// Config reads
|
|
111
|
+
// =========================================
|
|
112
|
+
async fetchConfig() {
|
|
113
|
+
const [pda] = await getAntConfigPDA(this.mint, this.antProgram);
|
|
114
|
+
const account = await this.getAccount(pda);
|
|
115
|
+
if (!account.exists) {
|
|
116
|
+
throw new Error(`ANT config not found for ${this.processId}`);
|
|
117
|
+
}
|
|
118
|
+
return deserializeAntConfig(Buffer.from(account.data));
|
|
119
|
+
}
|
|
120
|
+
async fetchControllers() {
|
|
121
|
+
const [pda] = await getAntControllersPDA(this.mint, this.antProgram);
|
|
122
|
+
const account = await this.getAccount(pda);
|
|
123
|
+
if (!account.exists) {
|
|
124
|
+
return { mint: this.processId, controllers: [] };
|
|
125
|
+
}
|
|
126
|
+
return deserializeAntControllers(Buffer.from(account.data));
|
|
127
|
+
}
|
|
128
|
+
async getOwner(_opts) {
|
|
129
|
+
const config = await this.fetchConfig();
|
|
130
|
+
return config.owner;
|
|
131
|
+
}
|
|
132
|
+
/** Get the on-chain schema version of this ANT's config. */
|
|
133
|
+
async getConfigVersion() {
|
|
134
|
+
const config = await this.fetchConfig();
|
|
135
|
+
return config.version;
|
|
136
|
+
}
|
|
137
|
+
/** Check if this ANT needs a schema migration to the latest version. */
|
|
138
|
+
async needsMigration() {
|
|
139
|
+
const version = await this.getConfigVersion();
|
|
140
|
+
return version < ANT_CONFIG_VERSION;
|
|
141
|
+
}
|
|
142
|
+
async getName(_opts) {
|
|
143
|
+
const config = await this.fetchConfig();
|
|
144
|
+
return config.name;
|
|
145
|
+
}
|
|
146
|
+
async getTicker(_opts) {
|
|
147
|
+
const config = await this.fetchConfig();
|
|
148
|
+
return config.ticker;
|
|
149
|
+
}
|
|
150
|
+
async getLogo(_opts) {
|
|
151
|
+
const config = await this.fetchConfig();
|
|
152
|
+
return config.logo;
|
|
153
|
+
}
|
|
154
|
+
async getControllers() {
|
|
155
|
+
const data = await this.fetchControllers();
|
|
156
|
+
return data.controllers;
|
|
157
|
+
}
|
|
158
|
+
// =========================================
|
|
159
|
+
// Record reads
|
|
160
|
+
// =========================================
|
|
161
|
+
async getRecord({ undername }, _opts) {
|
|
162
|
+
const [[recordPda], [metaPda]] = await Promise.all([
|
|
163
|
+
getAntRecordPDA(this.mint, undername, this.antProgram),
|
|
164
|
+
getAntRecordMetadataPDA(this.mint, undername, this.antProgram),
|
|
165
|
+
]);
|
|
166
|
+
const [recordAccount, metaAccount] = await Promise.all([
|
|
167
|
+
this.getAccount(recordPda),
|
|
168
|
+
this.getAccount(metaPda),
|
|
169
|
+
]);
|
|
170
|
+
if (!recordAccount.exists)
|
|
171
|
+
return undefined;
|
|
172
|
+
const record = deserializeAntRecord(Buffer.from(recordAccount.data));
|
|
173
|
+
const meta = metaAccount.exists
|
|
174
|
+
? deserializeAntRecordMetadata(Buffer.from(metaAccount.data))
|
|
175
|
+
: {};
|
|
176
|
+
return {
|
|
177
|
+
transactionId: record.transactionId,
|
|
178
|
+
targetProtocol: record.targetProtocol,
|
|
179
|
+
ttlSeconds: record.ttlSeconds,
|
|
180
|
+
priority: record.priority,
|
|
181
|
+
owner: record.owner,
|
|
182
|
+
displayName: meta.displayName,
|
|
183
|
+
logo: meta.logo,
|
|
184
|
+
description: meta.description,
|
|
185
|
+
keywords: meta.keywords,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
async getRecords(_opts) {
|
|
189
|
+
// Fetch all AntRecord + AntRecordMetadata accounts for this mint in parallel.
|
|
190
|
+
const gpaFilter = (discriminator) => [
|
|
191
|
+
{
|
|
192
|
+
memcmp: {
|
|
193
|
+
offset: 0n,
|
|
194
|
+
bytes: discriminator,
|
|
195
|
+
encoding: 'base58',
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
memcmp: {
|
|
200
|
+
offset: 8n,
|
|
201
|
+
bytes: this.mint,
|
|
202
|
+
encoding: 'base58',
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
];
|
|
206
|
+
const [recordAccounts, metaAccounts] = (await Promise.all([
|
|
207
|
+
this.rpc
|
|
208
|
+
.getProgramAccounts(this.antProgram, {
|
|
209
|
+
commitment: this.commitment,
|
|
210
|
+
encoding: 'base64',
|
|
211
|
+
filters: gpaFilter(bs58.encode(ANT_RECORD_DISCRIMINATOR)),
|
|
212
|
+
})
|
|
213
|
+
.send(),
|
|
214
|
+
this.rpc
|
|
215
|
+
.getProgramAccounts(this.antProgram, {
|
|
216
|
+
commitment: this.commitment,
|
|
217
|
+
encoding: 'base64',
|
|
218
|
+
filters: gpaFilter(bs58.encode(ANT_RECORD_METADATA_DISCRIMINATOR)),
|
|
219
|
+
})
|
|
220
|
+
.send(),
|
|
221
|
+
]));
|
|
222
|
+
// Index metadata by undername hash for O(1) lookup.
|
|
223
|
+
// AntRecordMetadata has undername_hash at offset 40 (8 disc + 32 mint).
|
|
224
|
+
const metaByHash = new Map();
|
|
225
|
+
for (const { account } of metaAccounts) {
|
|
226
|
+
try {
|
|
227
|
+
const buf = Buffer.from(account.data[0], 'base64');
|
|
228
|
+
const hash = buf.subarray(40, 72).toString('hex');
|
|
229
|
+
metaByHash.set(hash, deserializeAntRecordMetadata(buf));
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
// Skip malformed
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
const result = {};
|
|
236
|
+
let index = 0;
|
|
237
|
+
for (const { account } of recordAccounts) {
|
|
238
|
+
try {
|
|
239
|
+
const buf = Buffer.from(account.data[0], 'base64');
|
|
240
|
+
const record = deserializeAntRecord(buf);
|
|
241
|
+
const hash = __createHash('sha256')
|
|
242
|
+
.update(record.undername.toLowerCase())
|
|
243
|
+
.digest('hex');
|
|
244
|
+
const meta = metaByHash.get(hash) ?? {};
|
|
245
|
+
result[record.undername] = {
|
|
246
|
+
transactionId: record.transactionId,
|
|
247
|
+
targetProtocol: record.targetProtocol,
|
|
248
|
+
ttlSeconds: record.ttlSeconds,
|
|
249
|
+
priority: record.priority,
|
|
250
|
+
owner: record.owner,
|
|
251
|
+
displayName: meta.displayName,
|
|
252
|
+
logo: meta.logo,
|
|
253
|
+
description: meta.description,
|
|
254
|
+
keywords: meta.keywords,
|
|
255
|
+
index: index++,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
// Skip malformed
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return result;
|
|
263
|
+
}
|
|
264
|
+
// =========================================
|
|
265
|
+
// Balance reads (NFT model — owner has balance 1)
|
|
266
|
+
// =========================================
|
|
267
|
+
async getBalance({ address: queryAddress }, _opts) {
|
|
268
|
+
const config = await this.fetchConfig();
|
|
269
|
+
return config.owner === queryAddress ? 1 : 0;
|
|
270
|
+
}
|
|
271
|
+
async getBalances(_opts) {
|
|
272
|
+
const config = await this.fetchConfig();
|
|
273
|
+
return { [config.owner]: 1 };
|
|
274
|
+
}
|
|
275
|
+
// =========================================
|
|
276
|
+
// State / Info composites
|
|
277
|
+
// =========================================
|
|
278
|
+
async getState(_opts) {
|
|
279
|
+
const [config, controllersData, records] = await Promise.all([
|
|
280
|
+
this.fetchConfig(),
|
|
281
|
+
this.fetchControllers(),
|
|
282
|
+
this.getRecords(),
|
|
283
|
+
]);
|
|
284
|
+
// Convert SortedANTRecords to ANTRecords (strip index)
|
|
285
|
+
const plainRecords = {};
|
|
286
|
+
for (const [key, val] of Object.entries(records)) {
|
|
287
|
+
const { index: _, ...record } = val;
|
|
288
|
+
plainRecords[key] = record;
|
|
289
|
+
}
|
|
290
|
+
return {
|
|
291
|
+
Name: config.name,
|
|
292
|
+
Ticker: config.ticker,
|
|
293
|
+
Description: config.description,
|
|
294
|
+
Keywords: config.keywords,
|
|
295
|
+
Denomination: 0,
|
|
296
|
+
Owner: config.owner,
|
|
297
|
+
Controllers: controllersData.controllers,
|
|
298
|
+
Records: plainRecords,
|
|
299
|
+
Balances: { [config.owner]: 1 },
|
|
300
|
+
Logo: config.logo,
|
|
301
|
+
TotalSupply: 1,
|
|
302
|
+
Initialized: true,
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
async getInfo(_opts) {
|
|
306
|
+
const config = await this.fetchConfig();
|
|
307
|
+
return {
|
|
308
|
+
Name: config.name,
|
|
309
|
+
Owner: config.owner,
|
|
310
|
+
Ticker: config.ticker,
|
|
311
|
+
'Total-Supply': '1',
|
|
312
|
+
Description: config.description,
|
|
313
|
+
Keywords: config.keywords,
|
|
314
|
+
Logo: config.logo,
|
|
315
|
+
Denomination: '0',
|
|
316
|
+
Handlers: [
|
|
317
|
+
'balance',
|
|
318
|
+
'balances',
|
|
319
|
+
'totalSupply',
|
|
320
|
+
'info',
|
|
321
|
+
'controllers',
|
|
322
|
+
'record',
|
|
323
|
+
'records',
|
|
324
|
+
'state',
|
|
325
|
+
'transfer',
|
|
326
|
+
'addController',
|
|
327
|
+
'removeController',
|
|
328
|
+
'setRecord',
|
|
329
|
+
'removeRecord',
|
|
330
|
+
'setName',
|
|
331
|
+
'setTicker',
|
|
332
|
+
'setDescription',
|
|
333
|
+
'setKeywords',
|
|
334
|
+
'setLogo',
|
|
335
|
+
'initializeState',
|
|
336
|
+
'releaseName',
|
|
337
|
+
'reassignName',
|
|
338
|
+
'approvePrimaryName',
|
|
339
|
+
'removePrimaryNames',
|
|
340
|
+
'transferRecordOwnership',
|
|
341
|
+
'_eval',
|
|
342
|
+
'_default',
|
|
343
|
+
],
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
async getHandlers() {
|
|
347
|
+
// Solana ANT supports all standard handlers
|
|
348
|
+
return [
|
|
349
|
+
'balance',
|
|
350
|
+
'balances',
|
|
351
|
+
'totalSupply',
|
|
352
|
+
'info',
|
|
353
|
+
'controllers',
|
|
354
|
+
'record',
|
|
355
|
+
'records',
|
|
356
|
+
'state',
|
|
357
|
+
'transfer',
|
|
358
|
+
'addController',
|
|
359
|
+
'removeController',
|
|
360
|
+
'setRecord',
|
|
361
|
+
'removeRecord',
|
|
362
|
+
'setName',
|
|
363
|
+
'setTicker',
|
|
364
|
+
'setDescription',
|
|
365
|
+
'setKeywords',
|
|
366
|
+
'setLogo',
|
|
367
|
+
'initializeState',
|
|
368
|
+
'releaseName',
|
|
369
|
+
'reassignName',
|
|
370
|
+
'approvePrimaryName',
|
|
371
|
+
'removePrimaryNames',
|
|
372
|
+
'transferRecordOwnership',
|
|
373
|
+
'_eval',
|
|
374
|
+
'_default',
|
|
375
|
+
];
|
|
376
|
+
}
|
|
377
|
+
async getModuleId(_opts) {
|
|
378
|
+
// Solana programs don't have module IDs — return the program address
|
|
379
|
+
return this.antProgram;
|
|
380
|
+
}
|
|
381
|
+
async getVersion(_opts) {
|
|
382
|
+
return '1.0.0-solana';
|
|
383
|
+
}
|
|
384
|
+
async isLatestVersion(_opts) {
|
|
385
|
+
return true;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
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
|
+
/**
|
|
11
|
+
* Solana implementation of the ANT Registry read interface.
|
|
12
|
+
*
|
|
13
|
+
* Backed by the per-user paginated ACL (ADR-012): a head `AclConfig` PDA
|
|
14
|
+
* and N content-addressable `AclPage` PDAs, each holding up to
|
|
15
|
+
* `MAX_ACL_PAGE_ENTRIES` `(asset, role)` tuples. Frontends can fetch a
|
|
16
|
+
* user's ANTs in two RPC calls — one `getAccountInfo` for `AclConfig` plus
|
|
17
|
+
* one `getMultipleAccountsInfo` for every page — instead of a
|
|
18
|
+
* `getProgramAccounts` scan, a DAS provider, or a foundation-hosted
|
|
19
|
+
* indexer.
|
|
20
|
+
*
|
|
21
|
+
* Usage:
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { createSolanaRpc } from '@solana/kit';
|
|
24
|
+
* import { ANTRegistry } from '@ar.io/sdk';
|
|
25
|
+
*
|
|
26
|
+
* const registry = ANTRegistry.init({
|
|
27
|
+
* backend: 'solana',
|
|
28
|
+
* rpc: createSolanaRpc('https://api.mainnet-beta.solana.com'),
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* const { Owned, Controlled } = await registry.accessControlList({
|
|
32
|
+
* address: 'SomeSolanaWalletAddress...',
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* When a user has no on-chain `AclConfig` (never registered / not yet
|
|
37
|
+
* populated), both lists return empty. The write path (SDK ANT write
|
|
38
|
+
* methods + migration tooling) is responsible for keeping the ACL in sync
|
|
39
|
+
* as owners / controllers change.
|
|
40
|
+
*/
|
|
41
|
+
import { address } from '@solana/kit';
|
|
42
|
+
import { Logger } from '../common/logger.js';
|
|
43
|
+
import { ACL_ROLE_CONTROLLER, ACL_ROLE_OWNER, ARIO_ANT_PROGRAM_ID, } from './constants.js';
|
|
44
|
+
import { deserializeAclConfig, deserializeAclPage } from './deserialize.js';
|
|
45
|
+
import { getAccountInfoLegacy, getMultipleAccountsInfoLegacy, } from './json-rpc.js';
|
|
46
|
+
import { getAclConfigPDA, getAclPagePDA } from './pda.js';
|
|
47
|
+
export class SolanaANTRegistryReadable {
|
|
48
|
+
rpc;
|
|
49
|
+
commitment;
|
|
50
|
+
/** Deployed `ario-ant` program id this registry talks to. */
|
|
51
|
+
antProgram;
|
|
52
|
+
logger;
|
|
53
|
+
constructor(config) {
|
|
54
|
+
this.rpc = config.rpc;
|
|
55
|
+
this.commitment = config.commitment ?? 'confirmed';
|
|
56
|
+
this.antProgram = config.antProgramId ?? ARIO_ANT_PROGRAM_ID;
|
|
57
|
+
this.logger = config.logger ?? Logger.default;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Read a user's `AclConfig` head plus every `AclPage` and return owned +
|
|
61
|
+
* controlled ANT mint lists. Returns empty lists if the head PDA does not
|
|
62
|
+
* exist yet.
|
|
63
|
+
*
|
|
64
|
+
* **Note:** This is an eventually-consistent secondary index, not a
|
|
65
|
+
* canonical source of truth. Marketplace transfers update NFT ownership
|
|
66
|
+
* on-chain immediately but the ACL is only updated when someone calls
|
|
67
|
+
* `record_acl_owner` / `remove_acl_owner`. For real-time accuracy on a
|
|
68
|
+
* specific ANT, check the Metaplex Core asset owner directly.
|
|
69
|
+
*/
|
|
70
|
+
async accessControlList({ address: addr, }) {
|
|
71
|
+
const userAddr = address(addr);
|
|
72
|
+
const [configPda] = await getAclConfigPDA(userAddr, this.antProgram);
|
|
73
|
+
this.logger.debug?.('Fetching AclConfig PDA', {
|
|
74
|
+
address: addr,
|
|
75
|
+
pda: configPda,
|
|
76
|
+
});
|
|
77
|
+
const configAccount = await getAccountInfoLegacy(this.rpc, configPda, this.commitment);
|
|
78
|
+
if (!configAccount) {
|
|
79
|
+
this.logger.debug?.('AclConfig not found — returning empty lists', {
|
|
80
|
+
address: addr,
|
|
81
|
+
});
|
|
82
|
+
return { Owned: [], Controlled: [] };
|
|
83
|
+
}
|
|
84
|
+
const config = deserializeAclConfig(configAccount.data);
|
|
85
|
+
if (config.pageCount === 0n) {
|
|
86
|
+
return { Owned: [], Controlled: [] };
|
|
87
|
+
}
|
|
88
|
+
// Derive every page PDA up-front, then load them in a single
|
|
89
|
+
// `getMultipleAccountsInfo` round trip.
|
|
90
|
+
const pageAddrs = [];
|
|
91
|
+
for (let i = 0n; i < config.pageCount; i++) {
|
|
92
|
+
const [pagePda] = await getAclPagePDA(userAddr, i, this.antProgram);
|
|
93
|
+
pageAddrs.push(pagePda);
|
|
94
|
+
}
|
|
95
|
+
const pageAccounts = await getMultipleAccountsInfoLegacy(this.rpc, pageAddrs, this.commitment);
|
|
96
|
+
const owned = [];
|
|
97
|
+
const controlled = [];
|
|
98
|
+
for (const acct of pageAccounts) {
|
|
99
|
+
if (!acct)
|
|
100
|
+
continue;
|
|
101
|
+
const page = deserializeAclPage(acct.data);
|
|
102
|
+
for (const entry of page.entries) {
|
|
103
|
+
if (entry.role === ACL_ROLE_OWNER)
|
|
104
|
+
owned.push(entry.asset);
|
|
105
|
+
else if (entry.role === ACL_ROLE_CONTROLLER)
|
|
106
|
+
controlled.push(entry.asset);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return { Owned: owned, Controlled: controlled };
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Cleaner alias for `accessControlList` — matches the AO backend so
|
|
113
|
+
* consumers can switch backends without renaming calls.
|
|
114
|
+
*/
|
|
115
|
+
async getAntsForAddress({ address, }) {
|
|
116
|
+
return this.accessControlList({ address });
|
|
117
|
+
}
|
|
118
|
+
}
|