@ledgerhq/device-signer-kit-solana 1.10.0 → 1.12.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 +5 -14
- package/lib/cjs/api/SignerSolanaBuilder.js +1 -1
- package/lib/cjs/api/SignerSolanaBuilder.js.map +3 -3
- package/lib/cjs/api/app-binder/ProvisionTransactionCheckDeviceActionTypes.js +2 -0
- package/lib/cjs/api/app-binder/ProvisionTransactionCheckDeviceActionTypes.js.map +7 -0
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionFactory.js +2 -0
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionFactory.js.map +7 -0
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
- package/lib/cjs/api/index.js +1 -1
- package/lib/cjs/api/index.js.map +3 -3
- package/lib/cjs/api/model/Transaction.js.map +1 -1
- package/lib/cjs/api/model/TransactionResolutionContext.js +1 -1
- package/lib/cjs/api/model/TransactionResolutionContext.js.map +2 -2
- package/lib/cjs/internal/DefaultSignerSolana.js +1 -1
- package/lib/cjs/internal/DefaultSignerSolana.js.map +3 -3
- package/lib/cjs/internal/app-binder/SolanaAppBinder.js +1 -1
- package/lib/cjs/internal/app-binder/SolanaAppBinder.js.map +2 -2
- package/lib/cjs/internal/app-binder/SolanaApplicationResolver.js +1 -1
- package/lib/cjs/internal/app-binder/SolanaApplicationResolver.js.map +3 -3
- package/lib/cjs/internal/app-binder/SolanaApplicationResolver.test.js +1 -1
- package/lib/cjs/internal/app-binder/SolanaApplicationResolver.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/clear-sign/requirements/RequirementAccumulator.js +1 -1
- package/lib/cjs/internal/app-binder/clear-sign/requirements/RequirementAccumulator.js.map +3 -3
- package/lib/cjs/internal/app-binder/clear-sign/requirements/RequirementAccumulator.test.js +1 -1
- package/lib/cjs/internal/app-binder/clear-sign/requirements/RequirementAccumulator.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/clear-sign/requirements/__tests__/fixtures/calBuilders.js +1 -1
- package/lib/cjs/internal/app-binder/clear-sign/requirements/__tests__/fixtures/calBuilders.js.map +2 -2
- package/lib/cjs/internal/app-binder/clear-sign/requirements/buildRequirements.js +1 -1
- package/lib/cjs/internal/app-binder/clear-sign/requirements/buildRequirements.js.map +3 -3
- package/lib/cjs/internal/app-binder/clear-sign/requirements/buildRequirements.test.js +1 -1
- package/lib/cjs/internal/app-binder/clear-sign/requirements/buildRequirements.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/clear-sign/requirements/fromCal.js +1 -1
- package/lib/cjs/internal/app-binder/clear-sign/requirements/fromCal.js.map +2 -2
- package/lib/cjs/internal/app-binder/clear-sign/requirements/fromCal.test.js +1 -1
- package/lib/cjs/internal/app-binder/clear-sign/requirements/fromCal.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/clear-sign/requirements/model.js.map +1 -1
- package/lib/cjs/internal/app-binder/clear-sign/requirements/records.js +1 -1
- package/lib/cjs/internal/app-binder/clear-sign/requirements/records.js.map +3 -3
- package/lib/cjs/internal/app-binder/clear-sign/requirements/rules/altResolutionRule.js +1 -1
- package/lib/cjs/internal/app-binder/clear-sign/requirements/rules/altResolutionRule.js.map +3 -3
- package/lib/cjs/internal/app-binder/clear-sign/requirements/rules/altResolutionRule.test.js +1 -1
- package/lib/cjs/internal/app-binder/clear-sign/requirements/rules/altResolutionRule.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/clear-sign/requirements/rules/tokenRule.js +1 -1
- package/lib/cjs/internal/app-binder/clear-sign/requirements/rules/tokenRule.js.map +3 -3
- package/lib/cjs/internal/app-binder/clear-sign/requirements/rules/tokenRule.test.js +1 -1
- package/lib/cjs/internal/app-binder/clear-sign/requirements/rules/tokenRule.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.js +1 -1
- package/lib/cjs/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.js.map +2 -2
- package/lib/cjs/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.test.js +1 -1
- package/lib/cjs/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideAltResolutionCommand.js.map +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideEnumVariantCommand.js.map +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideInstructionInfoCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideInstructionSubstructureCommand.js.map +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTokenAccountStateCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/utils/Errors.js +1 -1
- package/lib/cjs/internal/app-binder/command/utils/Errors.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/utils/apduChunking.js +1 -1
- package/lib/cjs/internal/app-binder/command/utils/apduChunking.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/utils/apduChunking.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/utils/apduChunking.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/ProvisionBasicClearSignDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/ProvisionBasicClearSignDeviceAction.js.map +2 -2
- package/lib/cjs/internal/app-binder/device-action/ProvisionGenericClearSignDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/ProvisionGenericClearSignDeviceAction.js.map +2 -2
- package/lib/cjs/internal/app-binder/device-action/ProvisionTransactionCheckDeviceAction.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/ProvisionTransactionCheckDeviceAction.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/ProvisionTransactionCheckDeviceAction.test.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/ProvisionTransactionCheckDeviceAction.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceActionFactory.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceActionFactory.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceActionFactory.test.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceActionFactory.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/services/DefaultSolanaTransactionSerializer.js +2 -0
- package/lib/cjs/internal/app-binder/services/DefaultSolanaTransactionSerializer.js.map +7 -0
- package/lib/cjs/internal/app-binder/services/DefaultSolanaTransactionSerializer.test.js +2 -0
- package/lib/cjs/internal/app-binder/services/DefaultSolanaTransactionSerializer.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/services/SolanaTransactionSerializer.js +2 -0
- package/lib/cjs/internal/app-binder/services/SolanaTransactionSerializer.js.map +7 -0
- package/lib/cjs/internal/app-binder/services/TransactionInputNormaliser.js +2 -0
- package/lib/cjs/internal/app-binder/services/TransactionInputNormaliser.js.map +7 -0
- package/lib/cjs/internal/app-binder/services/TransactionInputNormaliser.test.js +2 -0
- package/lib/cjs/internal/app-binder/services/TransactionInputNormaliser.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/services/TransactionInspector.js +1 -1
- package/lib/cjs/internal/app-binder/services/TransactionInspector.js.map +3 -3
- package/lib/cjs/internal/app-binder/services/TransactionInspector.test.js +1 -1
- package/lib/cjs/internal/app-binder/services/TransactionInspector.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildBasicClearSignContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildBasicClearSignContextTask.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/BuildGenericClearSignContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildGenericClearSignContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildGenericClearSignContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildGenericClearSignContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideGenericClearSignContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideGenericClearSignContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideGenericClearSignContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideGenericClearSignContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideTransactionCheckTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideTransactionCheckTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideTransactionCheckTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideTransactionCheckTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/context-providers/provideAltResolutionContext.js +1 -1
- package/lib/cjs/internal/app-binder/task/context-providers/provideAltResolutionContext.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/context-providers/provideAltResolutionContext.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/context-providers/provideAltResolutionContext.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/context-providers/provideBasicTrustedNameContext.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/context-providers/provideEnumVariantContext.js +1 -1
- package/lib/cjs/internal/app-binder/task/context-providers/provideEnumVariantContext.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/context-providers/provideEnumVariantContext.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/context-providers/provideEnumVariantContext.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/context-providers/provideInstructionInfoContext.js +1 -1
- package/lib/cjs/internal/app-binder/task/context-providers/provideInstructionInfoContext.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/context-providers/provideInstructionInfoContext.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/context-providers/provideInstructionInfoContext.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/context-providers/provideLifiContext.js +1 -1
- package/lib/cjs/internal/app-binder/task/context-providers/provideLifiContext.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/context-providers/provideLifiContext.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/context-providers/provideLifiContext.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/context-providers/provideTokenAccountStateContext.js +1 -1
- package/lib/cjs/internal/app-binder/task/context-providers/provideTokenAccountStateContext.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/context-providers/provideTokenAccountStateContext.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/context-providers/provideTokenAccountStateContext.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/context-providers/provideTrustedNameContext.js +1 -1
- package/lib/cjs/internal/app-binder/task/context-providers/provideTrustedNameContext.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/context-providers/provideTrustedNameContext.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/context-providers/provideTrustedNameContext.test.js.map +3 -3
- package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.js +1 -1
- package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.js.map +3 -3
- package/lib/cjs/package.json +3 -3
- package/lib/esm/api/SignerSolanaBuilder.js +1 -1
- package/lib/esm/api/SignerSolanaBuilder.js.map +3 -3
- package/lib/esm/api/app-binder/ProvisionTransactionCheckDeviceActionTypes.js +1 -0
- package/lib/esm/api/app-binder/ProvisionTransactionCheckDeviceActionTypes.js.map +7 -0
- package/lib/esm/api/app-binder/SignTransactionDeviceActionFactory.js +2 -0
- package/lib/esm/api/app-binder/SignTransactionDeviceActionFactory.js.map +7 -0
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
- package/lib/esm/api/index.js +1 -1
- package/lib/esm/api/index.js.map +3 -3
- package/lib/esm/api/model/TransactionResolutionContext.js.map +2 -2
- package/lib/esm/internal/DefaultSignerSolana.js +1 -1
- package/lib/esm/internal/DefaultSignerSolana.js.map +3 -3
- package/lib/esm/internal/app-binder/SolanaAppBinder.js +1 -1
- package/lib/esm/internal/app-binder/SolanaAppBinder.js.map +2 -2
- package/lib/esm/internal/app-binder/SolanaApplicationResolver.js +1 -1
- package/lib/esm/internal/app-binder/SolanaApplicationResolver.js.map +3 -3
- package/lib/esm/internal/app-binder/SolanaApplicationResolver.test.js +1 -1
- package/lib/esm/internal/app-binder/SolanaApplicationResolver.test.js.map +3 -3
- package/lib/esm/internal/app-binder/clear-sign/requirements/RequirementAccumulator.js +1 -1
- package/lib/esm/internal/app-binder/clear-sign/requirements/RequirementAccumulator.js.map +3 -3
- package/lib/esm/internal/app-binder/clear-sign/requirements/RequirementAccumulator.test.js +1 -1
- package/lib/esm/internal/app-binder/clear-sign/requirements/RequirementAccumulator.test.js.map +2 -2
- package/lib/esm/internal/app-binder/clear-sign/requirements/__tests__/fixtures/calBuilders.js +1 -1
- package/lib/esm/internal/app-binder/clear-sign/requirements/__tests__/fixtures/calBuilders.js.map +2 -2
- package/lib/esm/internal/app-binder/clear-sign/requirements/buildRequirements.js +1 -1
- package/lib/esm/internal/app-binder/clear-sign/requirements/buildRequirements.js.map +3 -3
- package/lib/esm/internal/app-binder/clear-sign/requirements/buildRequirements.test.js +1 -1
- package/lib/esm/internal/app-binder/clear-sign/requirements/buildRequirements.test.js.map +2 -2
- package/lib/esm/internal/app-binder/clear-sign/requirements/fromCal.js +1 -1
- package/lib/esm/internal/app-binder/clear-sign/requirements/fromCal.js.map +2 -2
- package/lib/esm/internal/app-binder/clear-sign/requirements/fromCal.test.js +1 -1
- package/lib/esm/internal/app-binder/clear-sign/requirements/fromCal.test.js.map +2 -2
- package/lib/esm/internal/app-binder/clear-sign/requirements/records.js +1 -1
- package/lib/esm/internal/app-binder/clear-sign/requirements/records.js.map +3 -3
- package/lib/esm/internal/app-binder/clear-sign/requirements/rules/altResolutionRule.js +1 -1
- package/lib/esm/internal/app-binder/clear-sign/requirements/rules/altResolutionRule.js.map +3 -3
- package/lib/esm/internal/app-binder/clear-sign/requirements/rules/altResolutionRule.test.js +1 -1
- package/lib/esm/internal/app-binder/clear-sign/requirements/rules/altResolutionRule.test.js.map +3 -3
- package/lib/esm/internal/app-binder/clear-sign/requirements/rules/tokenRule.js +1 -1
- package/lib/esm/internal/app-binder/clear-sign/requirements/rules/tokenRule.js.map +3 -3
- package/lib/esm/internal/app-binder/clear-sign/requirements/rules/tokenRule.test.js +1 -1
- package/lib/esm/internal/app-binder/clear-sign/requirements/rules/tokenRule.test.js.map +2 -2
- package/lib/esm/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.js +1 -1
- package/lib/esm/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.js.map +3 -3
- package/lib/esm/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.test.js +1 -1
- package/lib/esm/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideAltResolutionCommand.js.map +1 -1
- package/lib/esm/internal/app-binder/command/ProvideEnumVariantCommand.js.map +1 -1
- package/lib/esm/internal/app-binder/command/ProvideInstructionInfoCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideInstructionSubstructureCommand.js.map +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTokenAccountStateCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/utils/Errors.js +1 -1
- package/lib/esm/internal/app-binder/command/utils/Errors.js.map +3 -3
- package/lib/esm/internal/app-binder/command/utils/apduChunking.js +1 -1
- package/lib/esm/internal/app-binder/command/utils/apduChunking.js.map +3 -3
- package/lib/esm/internal/app-binder/command/utils/apduChunking.test.js +1 -1
- package/lib/esm/internal/app-binder/command/utils/apduChunking.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/ProvisionBasicClearSignDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/ProvisionBasicClearSignDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/ProvisionGenericClearSignDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/ProvisionGenericClearSignDeviceAction.js.map +2 -2
- package/lib/esm/internal/app-binder/device-action/ProvisionTransactionCheckDeviceAction.js +2 -0
- package/lib/esm/internal/app-binder/device-action/ProvisionTransactionCheckDeviceAction.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/ProvisionTransactionCheckDeviceAction.test.js +2 -0
- package/lib/esm/internal/app-binder/device-action/ProvisionTransactionCheckDeviceAction.test.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceActionFactory.js +2 -0
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceActionFactory.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceActionFactory.test.js +2 -0
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceActionFactory.test.js.map +7 -0
- package/lib/esm/internal/app-binder/services/DefaultSolanaTransactionSerializer.js +2 -0
- package/lib/esm/internal/app-binder/services/DefaultSolanaTransactionSerializer.js.map +7 -0
- package/lib/esm/internal/app-binder/services/DefaultSolanaTransactionSerializer.test.js +2 -0
- package/lib/esm/internal/app-binder/services/DefaultSolanaTransactionSerializer.test.js.map +7 -0
- package/lib/esm/internal/app-binder/services/SolanaTransactionSerializer.js +1 -0
- package/lib/esm/internal/app-binder/services/SolanaTransactionSerializer.js.map +7 -0
- package/lib/esm/internal/app-binder/services/TransactionInputNormaliser.js +2 -0
- package/lib/esm/internal/app-binder/services/TransactionInputNormaliser.js.map +7 -0
- package/lib/esm/internal/app-binder/services/TransactionInputNormaliser.test.js +2 -0
- package/lib/esm/internal/app-binder/services/TransactionInputNormaliser.test.js.map +7 -0
- package/lib/esm/internal/app-binder/services/TransactionInspector.js +1 -1
- package/lib/esm/internal/app-binder/services/TransactionInspector.js.map +3 -3
- package/lib/esm/internal/app-binder/services/TransactionInspector.test.js +1 -1
- package/lib/esm/internal/app-binder/services/TransactionInspector.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildBasicClearSignContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildBasicClearSignContextTask.js.map +2 -2
- package/lib/esm/internal/app-binder/task/BuildGenericClearSignContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildGenericClearSignContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildGenericClearSignContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildGenericClearSignContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideGenericClearSignContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideGenericClearSignContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideGenericClearSignContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideGenericClearSignContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideTransactionCheckTask.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideTransactionCheckTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideTransactionCheckTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideTransactionCheckTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/context-providers/provideAltResolutionContext.js +1 -1
- package/lib/esm/internal/app-binder/task/context-providers/provideAltResolutionContext.js.map +3 -3
- package/lib/esm/internal/app-binder/task/context-providers/provideAltResolutionContext.test.js +1 -1
- package/lib/esm/internal/app-binder/task/context-providers/provideAltResolutionContext.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/context-providers/provideBasicTrustedNameContext.js.map +2 -2
- package/lib/esm/internal/app-binder/task/context-providers/provideEnumVariantContext.js +1 -1
- package/lib/esm/internal/app-binder/task/context-providers/provideEnumVariantContext.js.map +3 -3
- package/lib/esm/internal/app-binder/task/context-providers/provideEnumVariantContext.test.js +1 -1
- package/lib/esm/internal/app-binder/task/context-providers/provideEnumVariantContext.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/context-providers/provideInstructionInfoContext.js +1 -1
- package/lib/esm/internal/app-binder/task/context-providers/provideInstructionInfoContext.js.map +3 -3
- package/lib/esm/internal/app-binder/task/context-providers/provideInstructionInfoContext.test.js +1 -1
- package/lib/esm/internal/app-binder/task/context-providers/provideInstructionInfoContext.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/context-providers/provideLifiContext.js +1 -1
- package/lib/esm/internal/app-binder/task/context-providers/provideLifiContext.js.map +3 -3
- package/lib/esm/internal/app-binder/task/context-providers/provideLifiContext.test.js +1 -1
- package/lib/esm/internal/app-binder/task/context-providers/provideLifiContext.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/context-providers/provideTokenAccountStateContext.js +1 -1
- package/lib/esm/internal/app-binder/task/context-providers/provideTokenAccountStateContext.js.map +3 -3
- package/lib/esm/internal/app-binder/task/context-providers/provideTokenAccountStateContext.test.js +1 -1
- package/lib/esm/internal/app-binder/task/context-providers/provideTokenAccountStateContext.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/context-providers/provideTrustedNameContext.js +1 -1
- package/lib/esm/internal/app-binder/task/context-providers/provideTrustedNameContext.js.map +3 -3
- package/lib/esm/internal/app-binder/task/context-providers/provideTrustedNameContext.test.js +1 -1
- package/lib/esm/internal/app-binder/task/context-providers/provideTrustedNameContext.test.js.map +3 -3
- package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.js +1 -1
- package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.js.map +3 -3
- package/lib/esm/package.json +3 -3
- package/lib/types/api/SignerSolanaBuilder.d.ts +4 -1
- package/lib/types/api/SignerSolanaBuilder.d.ts.map +1 -1
- package/lib/types/api/app-binder/ProvisionTransactionCheckDeviceActionTypes.d.ts +27 -0
- package/lib/types/api/app-binder/ProvisionTransactionCheckDeviceActionTypes.d.ts.map +1 -0
- package/lib/types/api/app-binder/SignTransactionDeviceActionFactory.d.ts +2 -0
- package/lib/types/api/app-binder/SignTransactionDeviceActionFactory.d.ts.map +1 -0
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +4 -0
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/index.d.ts +4 -1
- package/lib/types/api/index.d.ts.map +1 -1
- package/lib/types/api/model/Transaction.d.ts +7 -0
- package/lib/types/api/model/Transaction.d.ts.map +1 -1
- package/lib/types/api/model/TransactionResolutionContext.d.ts +2 -1
- package/lib/types/api/model/TransactionResolutionContext.d.ts.map +1 -1
- package/lib/types/internal/DefaultSignerSolana.d.ts +17 -17
- package/lib/types/internal/DefaultSignerSolana.d.ts.map +1 -1
- package/lib/types/internal/app-binder/SolanaAppBinder.d.ts +2 -0
- package/lib/types/internal/app-binder/SolanaAppBinder.d.ts.map +1 -1
- package/lib/types/internal/app-binder/SolanaApplicationResolver.d.ts +6 -2
- package/lib/types/internal/app-binder/SolanaApplicationResolver.d.ts.map +1 -1
- package/lib/types/internal/app-binder/clear-sign/requirements/RequirementAccumulator.d.ts +6 -0
- package/lib/types/internal/app-binder/clear-sign/requirements/RequirementAccumulator.d.ts.map +1 -1
- package/lib/types/internal/app-binder/clear-sign/requirements/buildRequirements.d.ts.map +1 -1
- package/lib/types/internal/app-binder/clear-sign/requirements/fromCal.d.ts.map +1 -1
- package/lib/types/internal/app-binder/clear-sign/requirements/model.d.ts +19 -0
- package/lib/types/internal/app-binder/clear-sign/requirements/model.d.ts.map +1 -1
- package/lib/types/internal/app-binder/clear-sign/requirements/records.d.ts +7 -0
- package/lib/types/internal/app-binder/clear-sign/requirements/records.d.ts.map +1 -1
- package/lib/types/internal/app-binder/clear-sign/requirements/rules/altResolutionRule.d.ts +16 -4
- package/lib/types/internal/app-binder/clear-sign/requirements/rules/altResolutionRule.d.ts.map +1 -1
- package/lib/types/internal/app-binder/clear-sign/requirements/rules/tokenRule.d.ts +5 -4
- package/lib/types/internal/app-binder/clear-sign/requirements/rules/tokenRule.d.ts.map +1 -1
- package/lib/types/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.d.ts +6 -1
- package/lib/types/internal/app-binder/clear-sign/requirements/rules/trustedNameRule.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideAltResolutionCommand.d.ts +2 -2
- package/lib/types/internal/app-binder/command/ProvideEnumVariantCommand.d.ts +2 -2
- package/lib/types/internal/app-binder/command/ProvideInstructionInfoCommand.d.ts +3 -4
- package/lib/types/internal/app-binder/command/ProvideInstructionInfoCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideInstructionSubstructureCommand.d.ts +3 -3
- package/lib/types/internal/app-binder/command/ProvideTokenAccountStateCommand.d.ts +1 -2
- package/lib/types/internal/app-binder/command/ProvideTokenAccountStateCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts +32 -0
- package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/utils/Errors.d.ts +0 -10
- package/lib/types/internal/app-binder/command/utils/Errors.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/utils/apduChunking.d.ts +0 -14
- package/lib/types/internal/app-binder/command/utils/apduChunking.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/ProvisionBasicClearSignDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/ProvisionGenericClearSignDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/ProvisionTransactionCheckDeviceAction.d.ts +22 -0
- package/lib/types/internal/app-binder/device-action/ProvisionTransactionCheckDeviceAction.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/ProvisionTransactionCheckDeviceAction.test.d.ts +2 -0
- package/lib/types/internal/app-binder/device-action/ProvisionTransactionCheckDeviceAction.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts +2 -11
- package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/SignTransactionDeviceActionFactory.d.ts +9 -0
- package/lib/types/internal/app-binder/device-action/SignTransactionDeviceActionFactory.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/SignTransactionDeviceActionFactory.test.d.ts +2 -0
- package/lib/types/internal/app-binder/device-action/SignTransactionDeviceActionFactory.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/services/DefaultSolanaTransactionSerializer.d.ts +11 -0
- package/lib/types/internal/app-binder/services/DefaultSolanaTransactionSerializer.d.ts.map +1 -0
- package/lib/types/internal/app-binder/services/DefaultSolanaTransactionSerializer.test.d.ts +2 -0
- package/lib/types/internal/app-binder/services/DefaultSolanaTransactionSerializer.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/services/SolanaTransactionSerializer.d.ts +4 -0
- package/lib/types/internal/app-binder/services/SolanaTransactionSerializer.d.ts.map +1 -0
- package/lib/types/internal/app-binder/services/TransactionInputNormaliser.d.ts +16 -0
- package/lib/types/internal/app-binder/services/TransactionInputNormaliser.d.ts.map +1 -0
- package/lib/types/internal/app-binder/services/TransactionInputNormaliser.test.d.ts +2 -0
- package/lib/types/internal/app-binder/services/TransactionInputNormaliser.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/services/TransactionInspector.d.ts +1 -0
- package/lib/types/internal/app-binder/services/TransactionInspector.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildBasicClearSignContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildGenericClearSignContextTask.d.ts +7 -2
- package/lib/types/internal/app-binder/task/BuildGenericClearSignContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ProvideGenericClearSignContextTask.d.ts +20 -0
- package/lib/types/internal/app-binder/task/ProvideGenericClearSignContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionCheckTask.d.ts +4 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionCheckTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/context-providers/provideAltResolutionContext.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/context-providers/provideBasicTrustedNameContext.d.ts +2 -3
- package/lib/types/internal/app-binder/task/context-providers/provideBasicTrustedNameContext.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/context-providers/provideEnumVariantContext.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/context-providers/provideInstructionInfoContext.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/context-providers/provideLifiContext.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/context-providers/provideTokenAccountStateContext.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/context-providers/provideTrustedNameContext.d.ts +6 -4
- package/lib/types/internal/app-binder/task/context-providers/provideTrustedNameContext.d.ts.map +1 -1
- package/lib/types/internal/use-cases/transaction/SignTransactionUseCase.d.ts +2 -1
- package/lib/types/internal/use-cases/transaction/SignTransactionUseCase.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -118,7 +118,7 @@ const { observable, cancel } = signerSolana.signTransaction(
|
|
|
118
118
|
See [Ledger’s guide](https://www.ledger.com/blog/understanding-crypto-addresses-and-derivation-paths) for more information.
|
|
119
119
|
|
|
120
120
|
- **transaction** `Uint8Array`
|
|
121
|
-
|
|
121
|
+
Serialized transaction bytes. Accepts both raw message bytes (`tx.serializeMessage()`) and the full wire-format transaction (`tx.serialize()`). When the full wire-format is provided, co-signer signatures are forwarded to Transaction Check automatically.
|
|
122
122
|
|
|
123
123
|
**Optional**
|
|
124
124
|
|
|
@@ -134,20 +134,11 @@ const { observable, cancel } = signerSolana.signTransaction(
|
|
|
134
134
|
- **fetchBlockhash** `() => Promise<Uint8Array>` _(optional)_
|
|
135
135
|
Custom callback to supply the fresh 32-byte blockhash for delayed signing instead of fetching via `solanaRPCURL`. When provided, `solanaRPCURL` is not required for the delayed path.
|
|
136
136
|
|
|
137
|
-
- **transactionResolutionContext** `object`
|
|
138
|
-
|
|
137
|
+
- **transactionResolutionContext** `object` _(optional)_
|
|
138
|
+
Provides additional context for clear signing.
|
|
139
139
|
|
|
140
|
-
- **
|
|
141
|
-
SPL token
|
|
142
|
-
|
|
143
|
-
- **createATA** `object`
|
|
144
|
-
Information about creating an associated token account (ATA).
|
|
145
|
-
|
|
146
|
-
- **address** `string` – Address (owner) of the ATA.
|
|
147
|
-
- **mintAddress** `string` – Mint address of the ATA.
|
|
148
|
-
|
|
149
|
-
- **tokenInternalId** `string`
|
|
150
|
-
Ledger internal token ID
|
|
140
|
+
- **mintAddress** `string`
|
|
141
|
+
Mint address of the SPL token, used for SPL basic clear signing. If omitted, the signer will attempt to resolve the token metadata automatically, if resolution fails, a degraded UI is shown on the device (`???` instead of the token symbol).
|
|
151
142
|
|
|
152
143
|
- **skipOpenApp** `boolean`
|
|
153
144
|
If `true`, skips opening the Solana app on the device.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var m=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},C=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of u(e))!g.call(t,i)&&i!==n&&a(t,i,{get:()=>e[i],enumerable:!(o=l(e,i))||o.enumerable});return t};var _=t=>C(a({},"__esModule",{value:!0}),t);var S={};m(S,{SignerSolanaBuilder:()=>c});module.exports=_(S);var s=require("@ledgerhq/context-module"),r=require("../internal/DefaultSignerSolana");class c{_dmk;_sessionId;_customContextModule;_originToken;_solanaRPCURL;_disabledFeatures;constructor({dmk:e,sessionId:n,originToken:o,solanaRPCURL:i,disabledFeatures:d}){this._dmk=e,this._sessionId=n,this._originToken=o,this._solanaRPCURL=i,this._disabledFeatures=d}withContextModule(e){return this._customContextModule=e,this}build(){return new r.DefaultSignerSolana({dmk:this._dmk,sessionId:this._sessionId,solanaRPCURL:this._solanaRPCURL,disabledFeatures:this._disabledFeatures,contextModule:this._customContextModule??new s.ContextModuleBuilder({originToken:this._originToken,loggerFactory:e=>this._dmk.getLoggerFactory()(["ContextModule",e])}).setChain(s.ContextModuleChainID.Solana).build()})}}0&&(module.exports={SignerSolanaBuilder});
|
|
2
2
|
//# sourceMappingURL=SignerSolanaBuilder.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/api/SignerSolanaBuilder.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ContextModule,\n ContextModuleBuilder,\n ContextModuleChainID,\n} from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { DefaultSignerSolana } from \"@internal/DefaultSignerSolana\";\n\ntype SignerSolanaBuilderConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n originToken?: string;\n solanaRPCURL?: string;\n};\n\n/**\n * Builder for the `SignerSolana` class.\n *\n * @example\n * ```\n * const signer = new SignerSolanaBuilder({ dmk, sessionId })\n * .build();\n * ```\n */\nexport class SignerSolanaBuilder {\n private _dmk: DeviceManagementKit;\n private _sessionId: DeviceSessionId;\n private _customContextModule: ContextModule | undefined;\n private _originToken: string | undefined;\n private readonly _solanaRPCURL: string | undefined;\n\n constructor({\n dmk,\n sessionId,\n originToken,\n solanaRPCURL,\n }: SignerSolanaBuilderConstructorArgs) {\n this._dmk = dmk;\n this._sessionId = sessionId;\n this._originToken = originToken;\n this._solanaRPCURL = solanaRPCURL;\n }\n\n /**\n * Override the default context module\n *\n * @param contextModule\n * @returns this\n */\n withContextModule(contextModule: ContextModule) {\n this._customContextModule = contextModule;\n return this;\n }\n\n /**\n * Build the solana signer\n *\n * @returns the solana signer\n */\n public build() {\n return new DefaultSignerSolana({\n dmk: this._dmk,\n sessionId: this._sessionId,\n solanaRPCURL: this._solanaRPCURL,\n contextModule:\n this._customContextModule ??\n new ContextModuleBuilder({\n originToken: this._originToken,\n loggerFactory: (tag: string) =>\n this._dmk.getLoggerFactory()([\"ContextModule\", tag]),\n })\n .setChain(ContextModuleChainID.Solana)\n .build(),\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAIO,
|
|
6
|
-
"names": ["SignerSolanaBuilder_exports", "__export", "SignerSolanaBuilder", "__toCommonJS", "import_context_module", "import_DefaultSignerSolana", "dmk", "sessionId", "originToken", "solanaRPCURL", "contextModule", "tag"]
|
|
4
|
+
"sourcesContent": ["import {\n type ContextModule,\n ContextModuleBuilder,\n ContextModuleChainID,\n} from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type SolanaSignerFeaturesNames } from \"@internal/app-binder/SolanaApplicationResolver\";\nimport { DefaultSignerSolana } from \"@internal/DefaultSignerSolana\";\n\ntype SignerSolanaBuilderConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n originToken?: string;\n solanaRPCURL?: string;\n disabledFeatures?: ReadonlyArray<SolanaSignerFeaturesNames>;\n};\n\n/**\n * Builder for the `SignerSolana` class.\n *\n * @example\n * ```\n * const signer = new SignerSolanaBuilder({ dmk, sessionId })\n * .build();\n * ```\n */\nexport class SignerSolanaBuilder {\n private _dmk: DeviceManagementKit;\n private _sessionId: DeviceSessionId;\n private _customContextModule: ContextModule | undefined;\n private _originToken: string | undefined;\n private readonly _solanaRPCURL: string | undefined;\n private readonly _disabledFeatures:\n | ReadonlyArray<SolanaSignerFeaturesNames>\n | undefined;\n\n constructor({\n dmk,\n sessionId,\n originToken,\n solanaRPCURL,\n disabledFeatures,\n }: SignerSolanaBuilderConstructorArgs) {\n this._dmk = dmk;\n this._sessionId = sessionId;\n this._originToken = originToken;\n this._solanaRPCURL = solanaRPCURL;\n this._disabledFeatures = disabledFeatures;\n }\n\n /**\n * Override the default context module\n *\n * @param contextModule\n * @returns this\n */\n withContextModule(contextModule: ContextModule) {\n this._customContextModule = contextModule;\n return this;\n }\n\n /**\n * Build the solana signer\n *\n * @returns the solana signer\n */\n public build() {\n return new DefaultSignerSolana({\n dmk: this._dmk,\n sessionId: this._sessionId,\n solanaRPCURL: this._solanaRPCURL,\n disabledFeatures: this._disabledFeatures,\n contextModule:\n this._customContextModule ??\n new ContextModuleBuilder({\n originToken: this._originToken,\n loggerFactory: (tag: string) =>\n this._dmk.getLoggerFactory()([\"ContextModule\", tag]),\n })\n .setChain(ContextModuleChainID.Solana)\n .build(),\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAIO,oCAOPC,EAAoC,yCAmB7B,MAAMH,CAAoB,CACvB,KACA,WACA,qBACA,aACS,cACA,kBAIjB,YAAY,CACV,IAAAI,EACA,UAAAC,EACA,YAAAC,EACA,aAAAC,EACA,iBAAAC,CACF,EAAuC,CACrC,KAAK,KAAOJ,EACZ,KAAK,WAAaC,EAClB,KAAK,aAAeC,EACpB,KAAK,cAAgBC,EACrB,KAAK,kBAAoBC,CAC3B,CAQA,kBAAkBC,EAA8B,CAC9C,YAAK,qBAAuBA,EACrB,IACT,CAOO,OAAQ,CACb,OAAO,IAAI,sBAAoB,CAC7B,IAAK,KAAK,KACV,UAAW,KAAK,WAChB,aAAc,KAAK,cACnB,iBAAkB,KAAK,kBACvB,cACE,KAAK,sBACL,IAAI,uBAAqB,CACvB,YAAa,KAAK,aAClB,cAAgBC,GACd,KAAK,KAAK,iBAAiB,EAAE,CAAC,gBAAiBA,CAAG,CAAC,CACvD,CAAC,EACE,SAAS,uBAAqB,MAAM,EACpC,MAAM,CACb,CAAC,CACH,CACF",
|
|
6
|
+
"names": ["SignerSolanaBuilder_exports", "__export", "SignerSolanaBuilder", "__toCommonJS", "import_context_module", "import_DefaultSignerSolana", "dmk", "sessionId", "originToken", "solanaRPCURL", "disabledFeatures", "contextModule", "tag"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var r=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var s=(n,e,i,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of p(e))!l.call(n,o)&&o!==i&&r(n,o,{get:()=>e[o],enumerable:!(t=a(e,o))||t.enumerable});return n};var d=n=>s(r({},"__esModule",{value:!0}),n);var c={};module.exports=d(c);
|
|
2
|
+
//# sourceMappingURL=ProvisionTransactionCheckDeviceActionTypes.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/api/app-binder/ProvisionTransactionCheckDeviceActionTypes.ts"],
|
|
4
|
+
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\n\nimport {\n type SignTransactionDAIntermediateValue,\n type SignTransactionDASimpleIntermediateValue,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type AppConfiguration } from \"@api/model/AppConfiguration\";\n\nexport type ProvisionTransactionCheckDAInput = {\n readonly derivationPath: string;\n readonly transaction: Uint8Array;\n readonly contextModule: ContextModule;\n // Supplied at invoke time (depends on parent's runtime state)\n readonly appConfig?: AppConfiguration;\n readonly isBlockhashRefreshNeeded?: boolean;\n readonly serializedForTxCheck?: Uint8Array;\n};\n\n/**\n * Best-effort: the machine provisions the tx-check descriptor but never\n * signs; any failure is swallowed, so the output is always `Right`.\n */\nexport type ProvisionTransactionCheckDAOutput = void;\n\nexport type ProvisionTransactionCheckDAError = never;\n\n/**\n * Emits the full union so the opt-in-result step's `result` field is\n * preserved when the parent forwards child snapshots.\n */\nexport type ProvisionTransactionCheckDAIntermediateValue =\n SignTransactionDAIntermediateValue;\n\nexport type ProvisionTransactionCheckDAInternalState = {\n // Starts from input.appConfig; updated with transactionChecksEnabled after opt-in.\n readonly appConfig: AppConfiguration | null;\n};\n\nexport type ProvisionTransactionCheckDASimpleIntermediateValue =\n SignTransactionDASimpleIntermediateValue;\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
+
"names": ["ProvisionTransactionCheckDeviceActionTypes_exports", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var r=Object.defineProperty;var e=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var m=(c,o)=>{for(var n in o)r(c,n,{get:o[n],enumerable:!0})},p=(c,o,n,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let i of f(o))!g.call(c,i)&&i!==n&&r(c,i,{get:()=>o[i],enumerable:!(t=e(o,i))||t.enumerable});return c};var s=c=>p(r({},"__esModule",{value:!0}),c);var v={};m(v,{SignTransactionDeviceActionFactory:()=>a.SignTransactionDeviceActionFactory});module.exports=s(v);var a=require("../../internal/app-binder/device-action/SignTransactionDeviceActionFactory");0&&(module.exports={SignTransactionDeviceActionFactory});
|
|
2
|
+
//# sourceMappingURL=SignTransactionDeviceActionFactory.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/api/app-binder/SignTransactionDeviceActionFactory.ts"],
|
|
4
|
+
"sourcesContent": ["export { SignTransactionDeviceActionFactory } from \"@internal/app-binder/device-action/SignTransactionDeviceActionFactory\";\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8FAAAE,EAAAF,GAAA,IAAAG,EAAmD",
|
|
6
|
+
"names": ["SignTransactionDeviceActionFactory_exports", "__export", "__toCommonJS", "import_SignTransactionDeviceActionFactory"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var o=Object.defineProperty;var
|
|
1
|
+
"use strict";var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var S=(n,e)=>{for(var r in e)o(n,r,{get:e[r],enumerable:!0})},l=(n,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of s(e))!p.call(n,t)&&t!==r&&o(n,t,{get:()=>e[t],enumerable:!(a=i(e,t))||a.enumerable});return n};var A=n=>l(o({},"__esModule",{value:!0}),n);var g={};S(g,{signTransactionDAStateSteps:()=>c});module.exports=A(g);const c=Object.freeze({OPEN_APP:"signer.sol.steps.openApp",GET_APP_CONFIG:"signer.sol.steps.getAppConfig",TRANSACTION_CHECKS_OPT_IN:"signer.sol.steps.transactionChecksOptIn",TRANSACTION_CHECKS_OPT_IN_RESULT:"signer.sol.steps.transactionChecksOptInResult",TRANSACTION_CHECKS_PROVIDE:"signer.sol.steps.transactionChecksProvide",INSPECT_TRANSACTION:"signer.sol.steps.inspectTransaction",GET_PUB_KEY:"signer.sol.steps.getPubKey",BUILD_BASIC_CLEAR_SIGN_CONTEXT:"signer.sol.steps.buildBasicClearSignContext",PROVIDE_BASIC_CLEAR_SIGN_CONTEXT:"signer.sol.steps.provideBasicClearSignContext",BUILD_GENERIC_CLEAR_SIGN_CONTEXT:"signer.sol.steps.buildGenericClearSignContext",PROVIDE_GENERIC_CLEAR_SIGN_CONTEXT:"signer.sol.steps.provideGenericClearSignContext",FINALIZE_GENERIC_CLEAR_SIGN:"signer.sol.steps.finalizeGenericClearSign",PROMPT_UI_DISPLAY:"signer.sol.steps.promptUiDisplay",SIGN_TRANSACTION:"signer.sol.steps.signTransaction",DELAYED_SIGN:"signer.sol.steps.delayedSign"});0&&(module.exports={signTransactionDAStateSteps});
|
|
2
2
|
//# sourceMappingURL=SignTransactionDeviceActionTypes.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/api/app-binder/SignTransactionDeviceActionTypes.ts"],
|
|
4
|
-
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type ExecuteDeviceActionReturnType,\n type OpenAppDAError,\n type OpenAppDARequiredInteraction,\n type SendCommandInAppDAError,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type AppConfiguration } from \"@api/model/AppConfiguration\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { type SolanaTransactionOptionalConfig } from \"@api/model/SolanaTransactionOptionalConfig\";\nimport { type Transaction } from \"@api/model/Transaction\";\nimport { type SolanaAppErrorCodes } from \"@internal/app-binder/command/utils/SolanaApplicationErrors\";\nimport { type BlockhashService } from \"@internal/app-binder/services/BlockhashService\";\n\nimport { type SignClearSignDAStateStep } from \"./SignClearSignDeviceActionTypes\";\n\nexport const signTransactionDAStateSteps = Object.freeze({\n OPEN_APP: \"signer.sol.steps.openApp\",\n GET_APP_CONFIG: \"signer.sol.steps.getAppConfig\",\n TRANSACTION_CHECKS_OPT_IN: \"signer.sol.steps.transactionChecksOptIn\",\n TRANSACTION_CHECKS_OPT_IN_RESULT:\n \"signer.sol.steps.transactionChecksOptInResult\",\n TRANSACTION_CHECKS_PROVIDE: \"signer.sol.steps.transactionChecksProvide\",\n INSPECT_TRANSACTION: \"signer.sol.steps.inspectTransaction\",\n GET_PUB_KEY: \"signer.sol.steps.getPubKey\",\n BUILD_BASIC_CLEAR_SIGN_CONTEXT: \"signer.sol.steps.buildBasicClearSignContext\",\n PROVIDE_BASIC_CLEAR_SIGN_CONTEXT:\n \"signer.sol.steps.provideBasicClearSignContext\",\n BUILD_GENERIC_CLEAR_SIGN_CONTEXT:\n \"signer.sol.steps.buildGenericClearSignContext\",\n PROVIDE_GENERIC_CLEAR_SIGN_CONTEXT:\n \"signer.sol.steps.provideGenericClearSignContext\",\n FINALIZE_GENERIC_CLEAR_SIGN: \"signer.sol.steps.finalizeGenericClearSign\",\n PROMPT_UI_DISPLAY: \"signer.sol.steps.promptUiDisplay\",\n SIGN_TRANSACTION: \"signer.sol.steps.signTransaction\",\n DELAYED_SIGN: \"signer.sol.steps.delayedSign\",\n} as const);\n\n/**\n * Which clear-signing path produced the signature.\n * `full` = device ran the merge engine\n * `srfc39-only` = partial CAL coverage, device auto-rendered per-instruction without merge\n * `none` = blind/legacy fallback (no instruction recognised or capability absent).\n */\nexport type ClearSignMode = \"full\" | \"srfc39-only\" | \"none\";\n\nexport type SignTransactionDAStateStep =\n | (typeof signTransactionDAStateSteps)[keyof typeof signTransactionDAStateSteps]\n | SignClearSignDAStateStep;\n\nexport type SignTransactionDAOutput = Signature;\n\nexport type SignTransactionDAInput = {\n readonly derivationPath: string;\n readonly transaction: Transaction;\n readonly contextModule: ContextModule;\n readonly transactionOptions?: SolanaTransactionOptionalConfig;\n readonly solanaRPCURL?: string;\n readonly blockhashService?: BlockhashService;\n};\n\nexport type SignTransactionDAError =\n | OpenAppDAError\n | SendCommandInAppDAError<SolanaAppErrorCodes>;\n\ntype SignTransactionDARequiredInteraction =\n | UserInteractionRequired\n | OpenAppDARequiredInteraction;\n\n/**\n * The intermediate value shared by every sign-transaction step except the\n * TRANSACTION_CHECKS_OPT_IN_RESULT branch (which carries an extra `result`). The\n * clear-sign child machines emit exactly this shape, so the parent can fold\n * their snapshots into its own intermediate value without a cast.\n */\nexport type SignTransactionDASimpleIntermediateValue = {\n requiredUserInteraction: SignTransactionDARequiredInteraction;\n step: Exclude<\n SignTransactionDAStateStep,\n typeof signTransactionDAStateSteps.TRANSACTION_CHECKS_OPT_IN_RESULT\n >;\n};\n\nexport type SignTransactionDAIntermediateValue =\n | SignTransactionDASimpleIntermediateValue\n | {\n requiredUserInteraction: UserInteractionRequired.None;\n step: typeof signTransactionDAStateSteps.TRANSACTION_CHECKS_OPT_IN_RESULT;\n result: boolean;\n };\n\nexport type SignTransactionDAInternalState = {\n readonly error: SignTransactionDAError | null;\n readonly signature: Signature | null;\n readonly appConfig: AppConfiguration | null;\n // Set when the generic clear-sign path streamed + FINALIZE-validated the\n // descriptors, so the terminal sign runs the generic PROMPT UI DISPLAY flow\n // instead of the legacy preview.\n readonly clearSignPrepared: boolean;\n};\n\nexport type SignTransactionDAReturnType = ExecuteDeviceActionReturnType<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n>;\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,IAAA,eAAAC,EAAAH,
|
|
4
|
+
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type ExecuteDeviceActionReturnType,\n type OpenAppDAError,\n type OpenAppDARequiredInteraction,\n type SendCommandInAppDAError,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type AppConfiguration } from \"@api/model/AppConfiguration\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { type SolanaTransactionOptionalConfig } from \"@api/model/SolanaTransactionOptionalConfig\";\nimport { type Transaction } from \"@api/model/Transaction\";\nimport { type SolanaAppErrorCodes } from \"@internal/app-binder/command/utils/SolanaApplicationErrors\";\nimport { type BlockhashService } from \"@internal/app-binder/services/BlockhashService\";\nimport { type SolanaSignerFeaturesNames } from \"@internal/app-binder/SolanaApplicationResolver\";\n\nimport { type SignClearSignDAStateStep } from \"./SignClearSignDeviceActionTypes\";\n\nexport const signTransactionDAStateSteps = Object.freeze({\n OPEN_APP: \"signer.sol.steps.openApp\",\n GET_APP_CONFIG: \"signer.sol.steps.getAppConfig\",\n TRANSACTION_CHECKS_OPT_IN: \"signer.sol.steps.transactionChecksOptIn\",\n TRANSACTION_CHECKS_OPT_IN_RESULT:\n \"signer.sol.steps.transactionChecksOptInResult\",\n TRANSACTION_CHECKS_PROVIDE: \"signer.sol.steps.transactionChecksProvide\",\n INSPECT_TRANSACTION: \"signer.sol.steps.inspectTransaction\",\n GET_PUB_KEY: \"signer.sol.steps.getPubKey\",\n BUILD_BASIC_CLEAR_SIGN_CONTEXT: \"signer.sol.steps.buildBasicClearSignContext\",\n PROVIDE_BASIC_CLEAR_SIGN_CONTEXT:\n \"signer.sol.steps.provideBasicClearSignContext\",\n BUILD_GENERIC_CLEAR_SIGN_CONTEXT:\n \"signer.sol.steps.buildGenericClearSignContext\",\n PROVIDE_GENERIC_CLEAR_SIGN_CONTEXT:\n \"signer.sol.steps.provideGenericClearSignContext\",\n FINALIZE_GENERIC_CLEAR_SIGN: \"signer.sol.steps.finalizeGenericClearSign\",\n PROMPT_UI_DISPLAY: \"signer.sol.steps.promptUiDisplay\",\n SIGN_TRANSACTION: \"signer.sol.steps.signTransaction\",\n DELAYED_SIGN: \"signer.sol.steps.delayedSign\",\n} as const);\n\n/**\n * Which clear-signing path produced the signature.\n * `full` = device ran the merge engine\n * `srfc39-only` = partial CAL coverage, device auto-rendered per-instruction without merge\n * `none` = blind/legacy fallback (no instruction recognised or capability absent).\n */\nexport type ClearSignMode = \"full\" | \"srfc39-only\" | \"none\";\n\nexport type SignTransactionDAStateStep =\n | (typeof signTransactionDAStateSteps)[keyof typeof signTransactionDAStateSteps]\n | SignClearSignDAStateStep;\n\nexport type SignTransactionDAOutput = Signature;\n\nexport type SignTransactionDAInput = {\n readonly derivationPath: string;\n readonly transaction: Transaction;\n readonly contextModule: ContextModule;\n readonly transactionOptions?: SolanaTransactionOptionalConfig;\n readonly solanaRPCURL?: string;\n readonly blockhashService?: BlockhashService;\n readonly disabledFeatures?: ReadonlyArray<SolanaSignerFeaturesNames>;\n};\n\nexport type SignTransactionDAError =\n | OpenAppDAError\n | SendCommandInAppDAError<SolanaAppErrorCodes>;\n\ntype SignTransactionDARequiredInteraction =\n | UserInteractionRequired\n | OpenAppDARequiredInteraction;\n\n/**\n * The intermediate value shared by every sign-transaction step except the\n * TRANSACTION_CHECKS_OPT_IN_RESULT branch (which carries an extra `result`). The\n * clear-sign child machines emit exactly this shape, so the parent can fold\n * their snapshots into its own intermediate value without a cast.\n */\nexport type SignTransactionDASimpleIntermediateValue = {\n requiredUserInteraction: SignTransactionDARequiredInteraction;\n step: Exclude<\n SignTransactionDAStateStep,\n typeof signTransactionDAStateSteps.TRANSACTION_CHECKS_OPT_IN_RESULT\n >;\n};\n\nexport type SignTransactionDAIntermediateValue =\n | SignTransactionDASimpleIntermediateValue\n | {\n requiredUserInteraction: UserInteractionRequired.None;\n step: typeof signTransactionDAStateSteps.TRANSACTION_CHECKS_OPT_IN_RESULT;\n result: boolean;\n };\n\nexport type SignTransactionDAInternalState = {\n readonly error: SignTransactionDAError | null;\n readonly signature: Signature | null;\n readonly appConfig: AppConfiguration | null;\n // Updated by NormalizeTransaction; starts as the raw input and is replaced\n // with the extracted message bytes once the actor completes. serializedForTxCheck\n // is only set when the input was tx.serialize().\n readonly messageBytes: Uint8Array;\n readonly serializedForTxCheck: Uint8Array | undefined;\n // Set when the generic clear-sign path streamed + FINALIZE-validated the\n // descriptors, so the terminal sign runs the generic PROMPT UI DISPLAY flow\n // instead of the legacy preview.\n readonly clearSignPrepared: boolean;\n};\n\nexport type SignTransactionDAReturnType = ExecuteDeviceActionReturnType<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n>;\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,IAAA,eAAAC,EAAAH,GAmBO,MAAME,EAA8B,OAAO,OAAO,CACvD,SAAU,2BACV,eAAgB,gCAChB,0BAA2B,0CAC3B,iCACE,gDACF,2BAA4B,4CAC5B,oBAAqB,sCACrB,YAAa,6BACb,+BAAgC,8CAChC,iCACE,gDACF,iCACE,gDACF,mCACE,kDACF,4BAA6B,4CAC7B,kBAAmB,mCACnB,iBAAkB,mCAClB,aAAc,8BAChB,CAAU",
|
|
6
6
|
"names": ["SignTransactionDeviceActionTypes_exports", "__export", "signTransactionDAStateSteps", "__toCommonJS"]
|
|
7
7
|
}
|
package/lib/cjs/api/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var a=Object.defineProperty;var
|
|
1
|
+
"use strict";var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var f=(t,e)=>{for(var r in e)a(t,r,{get:e[r],enumerable:!0})},D=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of y(e))!u.call(t,o)&&o!==r&&a(t,o,{get:()=>e[o],enumerable:!(i=l(e,o))||i.enumerable});return t};var x=t=>D(a({},"__esModule",{value:!0}),t);var T={};f(T,{GetAddressDeviceActionFactory:()=>p.GetAddressDeviceActionFactory,GetPubKeyCommand:()=>c.GetPubKeyCommand,SignMessageDeviceActionFactory:()=>s.SignMessageDeviceActionFactory,SignMessageVersion:()=>g.SignMessageVersion,SignTransactionDeviceAction:()=>d.SignTransactionDeviceAction,SignTransactionDeviceActionFactory:()=>m.SignTransactionDeviceActionFactory,SignerSolanaBuilder:()=>S.SignerSolanaBuilder,SolanaAppCommandError:()=>n.SolanaAppCommandError,isSolanaAppError:()=>n.isSolanaAppError,signTransactionDAStateSteps:()=>A.signTransactionDAStateSteps});module.exports=x(T);var p=require("./app-binder/GetAddressDeviceActionFactory"),s=require("./app-binder/SignMessageDeviceActionFactory"),m=require("./app-binder/SignTransactionDeviceActionFactory"),A=require("./app-binder/SignTransactionDeviceActionTypes"),g=require("./model/MessageOptions"),n=require("./model/SolanaAppErrors"),S=require("./SignerSolanaBuilder"),c=require("../internal/app-binder/command/GetPubKeyCommand"),d=require("../internal/app-binder/device-action/SignTransactionDeviceAction");0&&(module.exports={GetAddressDeviceActionFactory,GetPubKeyCommand,SignMessageDeviceActionFactory,SignMessageVersion,SignTransactionDeviceAction,SignTransactionDeviceActionFactory,SignerSolanaBuilder,SolanaAppCommandError,isSolanaAppError,signTransactionDAStateSteps});
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/cjs/api/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/api/index.ts"],
|
|
4
|
-
"sourcesContent": ["export { GetAddressDeviceActionFactory } from \"@api/app-binder/GetAddressDeviceActionFactory\";\nexport type {\n GetAddressDAError,\n GetAddressDAIntermediateValue,\n GetAddressDAOutput,\n GetAddressDAReturnType,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nexport type {\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue,\n GetAppConfigurationDAOutput,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nexport { SignMessageDeviceActionFactory } from \"@api/app-binder/SignMessageDeviceActionFactory\";\nexport type {\n SignMessageDAError,\n SignMessageDAIntermediateValue,\n SignMessageDAOutput,\n SignMessageTaskError,\n} from \"@api/app-binder/SignMessageDeviceActionTypes\";\nexport
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,
|
|
6
|
-
"names": ["api_exports", "__export", "__toCommonJS", "import_GetAddressDeviceActionFactory", "import_SignMessageDeviceActionFactory", "import_MessageOptions", "import_SolanaAppErrors", "import_SignerSolanaBuilder", "import_GetPubKeyCommand"]
|
|
4
|
+
"sourcesContent": ["export { GetAddressDeviceActionFactory } from \"@api/app-binder/GetAddressDeviceActionFactory\";\nexport type {\n GetAddressDAError,\n GetAddressDAIntermediateValue,\n GetAddressDAOutput,\n GetAddressDAReturnType,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nexport type {\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue,\n GetAppConfigurationDAOutput,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nexport { SignMessageDeviceActionFactory } from \"@api/app-binder/SignMessageDeviceActionFactory\";\nexport type {\n SignMessageDAError,\n SignMessageDAIntermediateValue,\n SignMessageDAOutput,\n SignMessageTaskError,\n} from \"@api/app-binder/SignMessageDeviceActionTypes\";\nexport { SignTransactionDeviceActionFactory } from \"@api/app-binder/SignTransactionDeviceActionFactory\";\nexport {\n type ClearSignMode,\n type SignTransactionDAError,\n type SignTransactionDAInput,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAOutput,\n type SignTransactionDAReturnType,\n type SignTransactionDAStateStep,\n signTransactionDAStateSteps,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nexport type { MessageOptions } from \"@api/model/MessageOptions\";\nexport { SignMessageVersion } from \"@api/model/MessageOptions\";\nexport type { Signature } from \"@api/model/Signature\";\nexport {\n isSolanaAppError,\n SolanaAppCommandError,\n} from \"@api/model/SolanaAppErrors\";\nexport type { SolanaTransactionOptionalConfig } from \"@api/model/SolanaTransactionOptionalConfig\";\nexport type { Transaction } from \"@api/model/Transaction\";\nexport type {\n TransactionResolutionContext,\n UserInputType,\n} from \"@api/model/TransactionResolutionContext\";\nexport type { SignerSolana } from \"@api/SignerSolana\";\nexport { SignerSolanaBuilder } from \"@api/SignerSolanaBuilder\";\nexport {\n GetPubKeyCommand,\n type GetPubKeyCommandArgs,\n type GetPubKeyCommandResponse,\n} from \"@internal/app-binder/command/GetPubKeyCommand\";\nexport type { SolanaAppErrorCodes } from \"@internal/app-binder/command/utils/SolanaApplicationErrors\";\nexport { SignTransactionDeviceAction } from \"@internal/app-binder/device-action/SignTransactionDeviceAction\";\nexport type { SolanaSignerFeaturesNames } from \"@internal/app-binder/SolanaApplicationResolver\";\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4jBAAAE,EAAAF,GAAA,IAAAG,EAA8C,yDAY9CC,EAA+C,0DAO/CC,EAAmD,8DACnDC,EASO,4DAEPC,EAAmC,qCAEnCC,EAGO,sCAQPC,EAAoC,oCACpCC,EAIO,yDAEPC,EAA4C",
|
|
6
|
+
"names": ["api_exports", "__export", "__toCommonJS", "import_GetAddressDeviceActionFactory", "import_SignMessageDeviceActionFactory", "import_SignTransactionDeviceActionFactory", "import_SignTransactionDeviceActionTypes", "import_MessageOptions", "import_SolanaAppErrors", "import_SignerSolanaBuilder", "import_GetPubKeyCommand", "import_SignTransactionDeviceAction"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/api/model/Transaction.ts"],
|
|
4
|
-
"sourcesContent": ["
|
|
4
|
+
"sourcesContent": ["/**\n * Serialized Solana transaction bytes. Accepts both raw message bytes\n * (`tx.serializeMessage()`) and the full wire-format transaction\n * (`tx.serialize()`). When the full wire-format is provided, co-signer\n * signatures are forwarded to Transaction Check automatically and the\n * message bytes are extracted before being sent to the device.\n */\nexport type Transaction = Uint8Array;\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["Transaction_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var r=Object.defineProperty;var
|
|
1
|
+
"use strict";var r=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var g=(e,t)=>{for(var n in t)r(e,n,{get:t[n],enumerable:!0})},l=(e,t,n,d)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of a(t))!A.call(e,s)&&s!==n&&r(e,s,{get:()=>t[s],enumerable:!(d=o(t,s))||d.enumerable});return e};var m=e=>l(r({},"__esModule",{value:!0}),e);var p={};g(p,{UserInputType:()=>i});module.exports=m(p);var i=(n=>(n.SOL="sol",n.ATA="ata",n))(i||{});0&&(module.exports={UserInputType});
|
|
2
2
|
//# sourceMappingURL=TransactionResolutionContext.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/api/model/TransactionResolutionContext.ts"],
|
|
4
|
-
"sourcesContent": ["export type TransactionResolutionContext = {\n tokenAddress?: string;\n createATA?: {\n address: string;\n mintAddress: string;\n };\n
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,
|
|
4
|
+
"sourcesContent": ["export type TransactionResolutionContext = {\n tokenAddress?: string;\n mintAddress?: string;\n tokenInternalId?: string;\n createATA?: {\n address: string;\n mintAddress: string;\n };\n templateId?: string;\n userInputType?: UserInputType;\n};\n\nexport enum UserInputType {\n SOL = \"sol\",\n ATA = \"ata\",\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GAYO,IAAKE,OACVA,EAAA,IAAM,MACNA,EAAA,IAAM,MAFIA,OAAA",
|
|
6
6
|
"names": ["TransactionResolutionContext_exports", "__export", "UserInputType", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var i=Object.defineProperty;var
|
|
1
|
+
"use strict";var i=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var d=(n,e)=>{for(var t in e)i(n,t,{get:e[t],enumerable:!0})},y=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of m(e))!u.call(n,s)&&s!==t&&i(n,s,{get:()=>e[s],enumerable:!(r=g(e,s))||r.enumerable});return n};var f=n=>y(i({},"__esModule",{value:!0}),n);var S={};d(S,{DefaultSignerSolana:()=>c});module.exports=f(S);var a=require("./use-cases/di/useCasesTypes"),o=require("./di");class c{_container;_disabledFeatures;constructor({dmk:e,sessionId:t,contextModule:r,solanaRPCURL:s,disabledFeatures:p}){this._container=(0,o.makeContainer)({dmk:e,sessionId:t,contextModule:r,solanaRPCURL:s}),this._disabledFeatures=p}signTransaction(e,t,r){return this._container.get(a.useCasesTypes.SignTransactionUseCase).execute(e,t,r,this._disabledFeatures)}signMessage(e,t,r){return this._container.get(a.useCasesTypes.SignMessageUseCase).execute(e,t,r)}getAddress(e,t){return this._container.get(a.useCasesTypes.GetAddressUseCase).execute(e,t)}getAppConfiguration(){return this._container.get(a.useCasesTypes.GetAppConfigurationUseCase).execute()}}0&&(module.exports={DefaultSignerSolana});
|
|
2
2
|
//# sourceMappingURL=DefaultSignerSolana.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/internal/DefaultSignerSolana.ts"],
|
|
4
|
-
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { type SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOption\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type SolanaTransactionOptionalConfig } from \"@api/model/SolanaTransactionOptionalConfig\";\nimport { type Transaction } from \"@api/model/Transaction\";\nimport { type SignerSolana } from \"@api/SignerSolana\";\n\nimport { type GetAddressUseCase } from \"./use-cases/address/GetAddressUseCase\";\nimport { type GetAppConfigurationUseCase } from \"./use-cases/app-configuration/GetAppConfigurationUseCase\";\nimport { useCasesTypes } from \"./use-cases/di/useCasesTypes\";\nimport { type SignMessageUseCase } from \"./use-cases/message/SignMessageUseCase\";\nimport { type SignTransactionUseCase } from \"./use-cases/transaction/SignTransactionUseCase\";\nimport { makeContainer } from \"./di\";\n\nexport type DefaultSignerSolanaConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n contextModule: ContextModule;\n solanaRPCURL?: string;\n};\n\nexport class DefaultSignerSolana implements SignerSolana {\n private _container: Container;\n\n constructor({\n dmk,\n sessionId,\n contextModule,\n solanaRPCURL,\n }: DefaultSignerSolanaConstructorArgs) {\n this._container = makeContainer({\n dmk,\n sessionId,\n contextModule,\n solanaRPCURL,\n });\n }\n\n /**\n * Securely sign a Solana or SPL transaction using **clear signing** on Ledger devices.\n *\n * ### Parameters\n *\n * **Required**\n * - **derivationPath** `string`\n * The derivation path used in the transaction (e.g. `\"44'/501'/0'/0'\"`).\n *\n * - **transaction** `Uint8Array`\n * The serialised transaction to sign.\n *\n * **Optional**\n * - **solanaTransactionOptionalConfig** `SolanaTransactionOptionalConfig`\n * Provides additional context for transaction signing. The\n * `transactionResolutionContext` is not required \u2014 the signer will attempt\n * to resolve metadata from the transaction itself. Explicitly providing it\n * is recommended when the information is available, as it removes ambiguity\n * and ensures accurate clear-signing details on the device.\n *\n * - **solanaRPCURL** `string`\n * Solana RPC endpoint for fetching a fresh blockhash when\n * `delayed: true`. If the signer was built with\n * `SignerSolanaBuilder({ solanaRPCURL })`, the value here overrides\n * that default for this call only.\n *\n * - **delayed** `boolean`\n * When `true`, uses the device\u2019s two-step signing flow (preview then\n * delayed sign) so review time does not race the blockhash. Requires a\n * Solana app version that supports delayed signing, and either a\n * resolved RPC URL (builder and/or **solanaRPCURL** above) or\n * **fetchBlockhash**. Otherwise the signer falls back to legacy signing.\n *\n * - **fetchBlockhash** `() => Promise<Uint8Array>`\n * Optional. When `delayed: true`, use this instead of the default RPC\n * `getLatestBlockhash` (e.g. custom commitment or RPC). Must return the\n * 32-byte recent blockhash. If provided, an RPC URL is not required for\n * the delayed path.\n *\n * - **transactionResolutionContext** `object`\n * Lets you explicitly pass `tokenAddress` and ATA details, bypassing\n * extraction from the transaction itself.\n *\n * - **tokenAddress** `string`\n * SPL token address being transferred.\n *\n * - **createATA** `object`\n * Information about creating an associated token account (ATA).\n *\n * - **address** `string` \u2013 Address (owner) of the ATA.\n * - **mintAddress** `string` \u2013 Mint address of the ATA.\n *\n * - **tokenInternalId** `string`\n * Ledger internal token ID.\n *\n * - **skipOpenApp** `boolean`\n * If `true`, skips opening the Solana app on the device.\n *\n * ### Returns\n *\n * `{ observable, cancel }` where:\n * - `observable` emits `DeviceActionState<Uint8Array, SignTransactionDAError, IntermediateValue>` updates.\n * On **Completed**, `output` is a `Uint8Array` containing the 64-byte Ed25519 signature.\n * - `cancel` aborts the action on the Ledger device.\n *\n * @example\n * ```ts\n * const { observable } = signer.signTransaction(\"44'/501'/0'/0'\", serializedTx, {\n * transactionResolutionContext: { tokenAddress: \"EPjFWdd5...\" },\n * });\n * observable.subscribe({\n * next: (state) => {\n * if (state.status === DeviceActionStatus.Completed) {\n * console.log(\"Signature:\", state.output); // Uint8Array\n * }\n * },\n * });\n * ```\n */\n signTransaction(\n derivationPath: string,\n transaction: Transaction,\n solanaTransactionOptionalConfig?: SolanaTransactionOptionalConfig,\n ): SignTransactionDAReturnType {\n return this._container\n .get<SignTransactionUseCase>(useCasesTypes.SignTransactionUseCase)\n .execute(derivationPath, transaction, solanaTransactionOptionalConfig);\n }\n\n /**\n * Sign a Solana off-chain message on the device.\n *\n * Supports multiple signing modes via `SignMessageVersion`:\n * - **V0** (default) \u2014 original header with `appDomain`, up to 65 515 bytes.\n * Falls back to Legacy on `6a81`.\n * - **V1** \u2014 simplified header per sRFC 38, up to 65 535 bytes. No `appDomain`\n * field; use `signers` to bind the message to a specific application instead.\n * Falls back to V0 then Legacy on `6a81`. Requires Solana device app version 1.14+.\n * - **Legacy** \u2014 compact header for backward compatibility with old Solana app firmware.\n * - **Raw** \u2014 pass-through: sends a caller-formatted `Uint8Array` payload\n * as-is, no header wrapping.\n *\n * ### Parameters\n *\n * **Required**\n * - **derivationPath** `string`\n * The derivation path used for signing (e.g. `\"44'/501'/0'\"`).\n *\n * - **message** `string | Uint8Array`\n * The message to sign. Pass a `string` for V0/V1/Legacy (UTF-8 encoded\n * automatically). Pass a `Uint8Array` for Raw mode when you have an\n * already-formatted binary payload.\n *\n * **Optional**\n * - **options** `MessageOptions`\n * - **skipOpenApp** `boolean`\n * If `true`, skips opening the Solana app on the device.\n * - **version** `SignMessageVersion`\n * Off-chain message signing mode. Defaults to `SignMessageVersion.V0`.\n * - **appDomain** `string`\n * V0 only: application domain included in the header (padded/truncated to 32 bytes).\n * Ignored for V1, Legacy, and Raw.\n * - **signers** `Uint8Array[]`\n * V1 only: additional required signers included in the off-chain message header\n * alongside the user's key. Per sRFC 38, this is the recommended replacement for\n * the V0 `appDomain` field \u2014 pass the dApp's public key here to bind the message\n * to a specific application. Signers are sorted and deduplicated automatically.\n * Each entry must be a 32-byte Ed25519 public key. At most 254 additional signers\n * are supported (1 slot reserved for the user's key). Invalid length or exceeding\n * the limit returns an error before any device communication.\n * Ignored for V0, Legacy, and Raw.\n *\n * ### Returns\n *\n * `{ observable, cancel }` where:\n * - `observable` emits `DeviceActionState<{ signature: string }, SignMessageDAError, IntermediateValue>` updates.\n * On **Completed**, `output.signature` is a base58-encoded string \u2014 a full\n * envelope (V0/V1/Legacy) or the plain Ed25519 signature (Raw).\n * - `cancel` aborts the action on the Ledger device.\n *\n * @example\n * ```ts\n * // V0 with app domain\n * const { observable } = signer.signMessage(\"44'/501'/0'\", \"Hello World\", {\n * version: SignMessageVersion.V0,\n * appDomain: \"my-app.com\",\n * });\n *\n * // V1 with additional required signer (replaces appDomain per sRFC 38)\n * const { observable } = signer.signMessage(\"44'/501'/0'\", \"Hello World\", {\n * version: SignMessageVersion.V1,\n * signers: [dAppPubkeyBytes],\n * });\n *\n * observable.subscribe({\n * next: (state) => {\n * if (state.status === DeviceActionStatus.Completed) {\n * console.log(\"Signature:\", state.output.signature); // base58 string\n * }\n * },\n * });\n * ```\n */\n signMessage(\n derivationPath: string,\n message: string | Uint8Array,\n options?: MessageOptions,\n ): SignMessageDAReturnType {\n return this._container\n .get<SignMessageUseCase>(useCasesTypes.SignMessageUseCase)\n .execute(derivationPath, message, options);\n }\n\n /**\n * Derive and optionally display a Solana address on the device.\n *\n * ### Parameters\n *\n * **Required**\n * - **derivationPath** `string`\n * The derivation path of the account to retrieve the address from\n * (e.g. `\"44'/501'/0'\"`).\n *\n * **Optional**\n * - **options** `AddressOptions`\n * - **checkOnDevice** `boolean`\n * If `true`, prompts the user to verify the address on the device.\n * - **skipOpenApp** `boolean`\n * If `true`, skips opening the Solana app on the device.\n *\n * ### Returns\n *\n * `{ observable, cancel }` where:\n * - `observable` emits `DeviceActionState<string, GetAddressDAError, IntermediateValue>` updates.\n * On **Completed**, `output` is the base58-encoded Solana address.\n * - `cancel` aborts the action on the Ledger device.\n *\n * @example\n * ```ts\n * const { observable } = signer.getAddress(\"44'/501'/0'\", { checkOnDevice: true });\n * observable.subscribe({\n * next: (state) => {\n * if (state.status === DeviceActionStatus.Completed) {\n * console.log(\"Address:\", state.output); // base58 string\n * }\n * },\n * });\n * ```\n */\n getAddress(\n derivationPath: string,\n options?: AddressOptions,\n ): GetAddressDAReturnType {\n return this._container\n .get<GetAddressUseCase>(useCasesTypes.GetAddressUseCase)\n .execute(derivationPath, options);\n }\n\n /**\n * Query the Solana app version and settings on the connected device.\n *\n * ### Parameters\n *\n * This method does not require any parameters.\n *\n * ### Returns\n *\n * `{ observable, cancel }` where:\n * - `observable` emits `DeviceActionState<AppConfiguration, GetAppConfigurationDAError, IntermediateValue>` updates.\n * On **Completed**, `output` contains:\n * - `blindSigningEnabled` `boolean` \u2014 whether blind signing is enabled.\n * - `pubKeyDisplayMode` `PublicKeyDisplayMode` \u2014 how the public key is displayed.\n * - `version` `string` \u2014 the Solana app version (e.g. `\"1.14.0\"`).\n * - `cancel` aborts the action on the Ledger device.\n *\n * @example\n * ```ts\n * const { observable } = signer.getAppConfiguration();\n * observable.subscribe({\n * next: (state) => {\n * if (state.status === DeviceActionStatus.Completed) {\n * console.log(`Solana app v${state.output.version}`);\n * }\n * },\n * });\n * ```\n */\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this._container\n .get<GetAppConfigurationUseCase>(useCasesTypes.GetAppConfigurationUseCase)\n .execute();\n }\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,IAAA,eAAAC,EAAAH,
|
|
6
|
-
"names": ["DefaultSignerSolana_exports", "__export", "DefaultSignerSolana", "__toCommonJS", "import_useCasesTypes", "import_di", "dmk", "sessionId", "contextModule", "solanaRPCURL", "derivationPath", "transaction", "solanaTransactionOptionalConfig", "message", "options"]
|
|
4
|
+
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { type SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOption\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type SolanaTransactionOptionalConfig } from \"@api/model/SolanaTransactionOptionalConfig\";\nimport { type Transaction } from \"@api/model/Transaction\";\nimport { type SignerSolana } from \"@api/SignerSolana\";\n\nimport { type SolanaSignerFeaturesNames } from \"./app-binder/SolanaApplicationResolver\";\nimport { type GetAddressUseCase } from \"./use-cases/address/GetAddressUseCase\";\nimport { type GetAppConfigurationUseCase } from \"./use-cases/app-configuration/GetAppConfigurationUseCase\";\nimport { useCasesTypes } from \"./use-cases/di/useCasesTypes\";\nimport { type SignMessageUseCase } from \"./use-cases/message/SignMessageUseCase\";\nimport { type SignTransactionUseCase } from \"./use-cases/transaction/SignTransactionUseCase\";\nimport { makeContainer } from \"./di\";\n\nexport type DefaultSignerSolanaConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n contextModule: ContextModule;\n solanaRPCURL?: string;\n disabledFeatures?: ReadonlyArray<SolanaSignerFeaturesNames>;\n};\n\nexport class DefaultSignerSolana implements SignerSolana {\n private _container: Container;\n private _disabledFeatures:\n | ReadonlyArray<SolanaSignerFeaturesNames>\n | undefined;\n\n constructor({\n dmk,\n sessionId,\n contextModule,\n solanaRPCURL,\n disabledFeatures,\n }: DefaultSignerSolanaConstructorArgs) {\n this._container = makeContainer({\n dmk,\n sessionId,\n contextModule,\n solanaRPCURL,\n });\n this._disabledFeatures = disabledFeatures;\n }\n\n /**\n * Securely sign a Solana or SPL transaction using **clear signing** on Ledger devices.\n *\n * ### Parameters\n *\n * **Required**\n * - **derivationPath** `string`\n * The derivation path used in the transaction (e.g. `\"44'/501'/0'/0'\"`).\n *\n * - **transaction** `Uint8Array`\n * The serialised transaction to sign. Accepts both raw message bytes\n * (`tx.serializeMessage()`) and the full wire-format transaction\n * (`tx.serialize()`). When the full wire-format is provided, co-signer\n * signatures are forwarded to Transaction Check automatically.\n *\n * **Optional**\n * - **solanaTransactionOptionalConfig** `SolanaTransactionOptionalConfig`\n * Provides additional context for transaction signing. The\n * `transactionResolutionContext` is not required \u2014 the signer will attempt\n * to resolve metadata from the transaction itself. Explicitly providing it\n * is recommended when the information is available, as it removes ambiguity\n * and ensures accurate clear-signing details on the device.\n *\n * - **solanaRPCURL** `string`\n * Solana RPC endpoint for fetching a fresh blockhash when\n * `delayed: true`. If the signer was built with\n * `SignerSolanaBuilder({ solanaRPCURL })`, the value here overrides\n * that default for this call only.\n *\n * - **delayed** `boolean`\n * When `true`, uses the device\u2019s two-step signing flow (preview then\n * delayed sign) so review time does not race the blockhash. Requires a\n * Solana app version that supports delayed signing, and either a\n * resolved RPC URL (builder and/or **solanaRPCURL** above) or\n * **fetchBlockhash**. Otherwise the signer falls back to legacy signing.\n *\n * - **fetchBlockhash** `() => Promise<Uint8Array>`\n * Optional. When `delayed: true`, use this instead of the default RPC\n * `getLatestBlockhash` (e.g. custom commitment or RPC). Must return the\n * 32-byte recent blockhash. If provided, an RPC URL is not required for\n * the delayed path.\n *\n * - **transactionResolutionContext** `object` *(optional)*\n * Provides additional context for clear signing.\n *\n * - **mintAddress** `string`\n * Mint address of the SPL token, used for SPL basic clear signing.\n * If omitted, the signer will attempt to resolve the token metadata\n * automatically, if resolution fails,\n * a degraded UI is shown on the device (`???` instead of the token\n * symbol).\n *\n * - **skipOpenApp** `boolean`\n * If `true`, skips opening the Solana app on the device.\n *\n * ### Returns\n *\n * `{ observable, cancel }` where:\n * - `observable` emits `DeviceActionState<Uint8Array, SignTransactionDAError, IntermediateValue>` updates.\n * On **Completed**, `output` is a `Uint8Array` containing the 64-byte Ed25519 signature.\n * - `cancel` aborts the action on the Ledger device.\n *\n * @example\n * ```ts\n * const { observable } = signer.signTransaction(\"44'/501'/0'/0'\", serializedTx, {\n * transactionResolutionContext: { mintAddress: \"EPjFWdd5...\" },\n * });\n * observable.subscribe({\n * next: (state) => {\n * if (state.status === DeviceActionStatus.Completed) {\n * console.log(\"Signature:\", state.output); // Uint8Array\n * }\n * },\n * });\n * ```\n */\n signTransaction(\n derivationPath: string,\n transaction: Transaction,\n solanaTransactionOptionalConfig?: SolanaTransactionOptionalConfig,\n ): SignTransactionDAReturnType {\n return this._container\n .get<SignTransactionUseCase>(useCasesTypes.SignTransactionUseCase)\n .execute(\n derivationPath,\n transaction,\n solanaTransactionOptionalConfig,\n this._disabledFeatures,\n );\n }\n\n /**\n * Sign a Solana off-chain message on the device.\n *\n * Supports multiple signing modes via `SignMessageVersion`:\n * - **V0** (default) \u2014 original header with `appDomain`, up to 65 515 bytes.\n * Falls back to Legacy on `6a81`.\n * - **V1** \u2014 simplified header per sRFC 38, up to 65 535 bytes. No `appDomain`\n * field; use `signers` to bind the message to a specific application instead.\n * Falls back to V0 then Legacy on `6a81`. Requires Solana device app version 1.14+.\n * - **Legacy** \u2014 compact header for backward compatibility with old Solana app firmware.\n * - **Raw** \u2014 pass-through: sends a caller-formatted `Uint8Array` payload\n * as-is, no header wrapping.\n *\n * ### Parameters\n *\n * **Required**\n * - **derivationPath** `string`\n * The derivation path used for signing (e.g. `\"44'/501'/0'\"`).\n *\n * - **message** `string | Uint8Array`\n * The message to sign. Pass a `string` for V0/V1/Legacy (UTF-8 encoded\n * automatically). Pass a `Uint8Array` for Raw mode when you have an\n * already-formatted binary payload.\n *\n * **Optional**\n * - **options** `MessageOptions`\n * - **skipOpenApp** `boolean`\n * If `true`, skips opening the Solana app on the device.\n * - **version** `SignMessageVersion`\n * Off-chain message signing mode. Defaults to `SignMessageVersion.V0`.\n * - **appDomain** `string`\n * V0 only: application domain included in the header (padded/truncated to 32 bytes).\n * Ignored for V1, Legacy, and Raw.\n * - **signers** `Uint8Array[]`\n * V1 only: additional required signers included in the off-chain message header\n * alongside the user's key. Per sRFC 38, this is the recommended replacement for\n * the V0 `appDomain` field \u2014 pass the dApp's public key here to bind the message\n * to a specific application. Signers are sorted and deduplicated automatically.\n * Each entry must be a 32-byte Ed25519 public key. At most 254 additional signers\n * are supported (1 slot reserved for the user's key). Invalid length or exceeding\n * the limit returns an error before any device communication.\n * Ignored for V0, Legacy, and Raw.\n *\n * ### Returns\n *\n * `{ observable, cancel }` where:\n * - `observable` emits `DeviceActionState<{ signature: string }, SignMessageDAError, IntermediateValue>` updates.\n * On **Completed**, `output.signature` is a base58-encoded string \u2014 a full\n * envelope (V0/V1/Legacy) or the plain Ed25519 signature (Raw).\n * - `cancel` aborts the action on the Ledger device.\n *\n * @example\n * ```ts\n * // V0 with app domain\n * const { observable } = signer.signMessage(\"44'/501'/0'\", \"Hello World\", {\n * version: SignMessageVersion.V0,\n * appDomain: \"my-app.com\",\n * });\n *\n * // V1 with additional required signer (replaces appDomain per sRFC 38)\n * const { observable } = signer.signMessage(\"44'/501'/0'\", \"Hello World\", {\n * version: SignMessageVersion.V1,\n * signers: [dAppPubkeyBytes],\n * });\n *\n * observable.subscribe({\n * next: (state) => {\n * if (state.status === DeviceActionStatus.Completed) {\n * console.log(\"Signature:\", state.output.signature); // base58 string\n * }\n * },\n * });\n * ```\n */\n signMessage(\n derivationPath: string,\n message: string | Uint8Array,\n options?: MessageOptions,\n ): SignMessageDAReturnType {\n return this._container\n .get<SignMessageUseCase>(useCasesTypes.SignMessageUseCase)\n .execute(derivationPath, message, options);\n }\n\n /**\n * Derive and optionally display a Solana address on the device.\n *\n * ### Parameters\n *\n * **Required**\n * - **derivationPath** `string`\n * The derivation path of the account to retrieve the address from\n * (e.g. `\"44'/501'/0'\"`).\n *\n * **Optional**\n * - **options** `AddressOptions`\n * - **checkOnDevice** `boolean`\n * If `true`, prompts the user to verify the address on the device.\n * - **skipOpenApp** `boolean`\n * If `true`, skips opening the Solana app on the device.\n *\n * ### Returns\n *\n * `{ observable, cancel }` where:\n * - `observable` emits `DeviceActionState<string, GetAddressDAError, IntermediateValue>` updates.\n * On **Completed**, `output` is the base58-encoded Solana address.\n * - `cancel` aborts the action on the Ledger device.\n *\n * @example\n * ```ts\n * const { observable } = signer.getAddress(\"44'/501'/0'\", { checkOnDevice: true });\n * observable.subscribe({\n * next: (state) => {\n * if (state.status === DeviceActionStatus.Completed) {\n * console.log(\"Address:\", state.output); // base58 string\n * }\n * },\n * });\n * ```\n */\n getAddress(\n derivationPath: string,\n options?: AddressOptions,\n ): GetAddressDAReturnType {\n return this._container\n .get<GetAddressUseCase>(useCasesTypes.GetAddressUseCase)\n .execute(derivationPath, options);\n }\n\n /**\n * Query the Solana app version and settings on the connected device.\n *\n * ### Parameters\n *\n * This method does not require any parameters.\n *\n * ### Returns\n *\n * `{ observable, cancel }` where:\n * - `observable` emits `DeviceActionState<AppConfiguration, GetAppConfigurationDAError, IntermediateValue>` updates.\n * On **Completed**, `output` contains:\n * - `blindSigningEnabled` `boolean` \u2014 whether blind signing is enabled.\n * - `pubKeyDisplayMode` `PublicKeyDisplayMode` \u2014 how the public key is displayed.\n * - `version` `string` \u2014 the Solana app version (e.g. `\"1.14.0\"`).\n * - `cancel` aborts the action on the Ledger device.\n *\n * @example\n * ```ts\n * const { observable } = signer.getAppConfiguration();\n * observable.subscribe({\n * next: (state) => {\n * if (state.status === DeviceActionStatus.Completed) {\n * console.log(`Solana app v${state.output.version}`);\n * }\n * },\n * });\n * ```\n */\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this._container\n .get<GetAppConfigurationUseCase>(useCasesTypes.GetAppConfigurationUseCase)\n .execute();\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,IAAA,eAAAC,EAAAH,GAoBA,IAAAI,EAA8B,wCAG9BC,EAA8B,gBAUvB,MAAMH,CAA4C,CAC/C,WACA,kBAIR,YAAY,CACV,IAAAI,EACA,UAAAC,EACA,cAAAC,EACA,aAAAC,EACA,iBAAAC,CACF,EAAuC,CACrC,KAAK,cAAa,iBAAc,CAC9B,IAAAJ,EACA,UAAAC,EACA,cAAAC,EACA,aAAAC,CACF,CAAC,EACD,KAAK,kBAAoBC,CAC3B,CA8EA,gBACEC,EACAC,EACAC,EAC6B,CAC7B,OAAO,KAAK,WACT,IAA4B,gBAAc,sBAAsB,EAChE,QACCF,EACAC,EACAC,EACA,KAAK,iBACP,CACJ,CA4EA,YACEF,EACAG,EACAC,EACyB,CACzB,OAAO,KAAK,WACT,IAAwB,gBAAc,kBAAkB,EACxD,QAAQJ,EAAgBG,EAASC,CAAO,CAC7C,CAsCA,WACEJ,EACAI,EACwB,CACxB,OAAO,KAAK,WACT,IAAuB,gBAAc,iBAAiB,EACtD,QAAQJ,EAAgBI,CAAO,CACpC,CA+BA,qBAAuD,CACrD,OAAO,KAAK,WACT,IAAgC,gBAAc,0BAA0B,EACxE,QAAQ,CACb,CACF",
|
|
6
|
+
"names": ["DefaultSignerSolana_exports", "__export", "DefaultSignerSolana", "__toCommonJS", "import_useCasesTypes", "import_di", "dmk", "sessionId", "contextModule", "solanaRPCURL", "disabledFeatures", "derivationPath", "transaction", "solanaTransactionOptionalConfig", "message", "options"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var d=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var T=(t,e)=>{for(var n in e)d(t,n,{get:e[n],enumerable:!0})},C=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of D(e))!S.call(t,i)&&i!==n&&d(t,i,{get:()=>e[i],enumerable:!(o=v(e,i))||o.enumerable});return t};var P=t=>C(d({},"__esModule",{value:!0}),t),h=(t,e,n,o)=>{for(var i=o>1?void 0:o?v(e,n):e,c=t.length-1,m;c>=0;c--)(m=t[c])&&(i=(o?m(e,n,i):m(i))||i);return o&&i&&d(e,n,i),i},s=(t,e)=>(n,o)=>e(n,o,t);var R={};T(R,{SolanaAppBinder:()=>p});module.exports=P(R);var g=require("@ledgerhq/device-management-kit"),r=require("inversify"),a=require("../externalTypes"),u=require("./command/GetAppConfigurationCommand"),l=require("./device-action/GetAddressDeviceActionFactory"),A=require("./device-action/SignMessageDeviceActionFactory"),f=require("./device-action/SignTransactionDeviceAction"),k=require("./di/appBinderTypes"),y=require("./constants");let p=class{constructor(e,n,o,i,c,m){this.dmk=e;this.sessionId=n;this.contextModule=o;this.dmkLoggerFactory=i;this.solanaRPCURL=c;this.blockhashService=m}getAddress(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:(0,l.GetAddressDeviceActionFactory)({derivationPath:e.derivationPath,checkOnDevice:e.checkOnDevice,skipOpenApp:e.skipOpenApp,logger:this.dmkLoggerFactory("GetPubKeyCommand")})})}signTransaction(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new f.SignTransactionDeviceAction({input:{derivationPath:e.derivationPath,transaction:e.transaction,transactionOptions:e.solanaTransactionOptionalConfig,contextModule:this.contextModule,solanaRPCURL:this.solanaRPCURL,blockhashService:this.blockhashService,disabledFeatures:e.disabledFeatures},loggerFactory:this.dmkLoggerFactory})})}signMessage(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:(0,A.SignMessageDeviceActionFactory)({derivationPath:e.derivationPath,message:e.message,skipOpenApp:e.skipOpenApp,version:e.version,appDomain:e.appDomain,signers:e.signers,logger:this.dmkLoggerFactory("SendSignMessageTask")})})}getAppConfiguration(){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new g.SendCommandInAppDeviceAction({input:{command:new u.GetAppConfigurationCommand,appName:y.APP_NAME,requiredUserInteraction:g.UserInteractionRequired.None,skipOpenApp:!1},logger:this.dmkLoggerFactory("GetAppConfigurationCommand")})})}};p=h([(0,r.injectable)(),s(0,(0,r.inject)(a.externalTypes.Dmk)),s(1,(0,r.inject)(a.externalTypes.SessionId)),s(2,(0,r.inject)(a.externalTypes.ContextModule)),s(3,(0,r.inject)(a.externalTypes.DmkLoggerFactory)),s(4,(0,r.inject)(a.externalTypes.SolanaRPCURL)),s(5,(0,r.inject)(k.appBinderTypes.BlockhashService))],p);0&&(module.exports={SolanaAppBinder});
|
|
2
2
|
//# sourceMappingURL=SolanaAppBinder.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/app-binder/SolanaAppBinder.ts"],
|
|
4
|
-
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n DeviceManagementKit,\n type DeviceSessionId,\n LoggerPublisherService,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignMessageVersion } from \"@api/model/MessageOptions\";\nimport { SolanaTransactionOptionalConfig } from \"@api/model/SolanaTransactionOptionalConfig\";\nimport { Transaction } from \"@api/model/Transaction\";\nimport { externalTypes } from \"@internal/externalTypes\";\n\nimport { GetAppConfigurationCommand } from \"./command/GetAppConfigurationCommand\";\nimport { GetAddressDeviceActionFactory } from \"./device-action/GetAddressDeviceActionFactory\";\nimport { SignMessageDeviceActionFactory } from \"./device-action/SignMessageDeviceActionFactory\";\nimport { SignTransactionDeviceAction } from \"./device-action/SignTransactionDeviceAction\";\nimport { appBinderTypes } from \"./di/appBinderTypes\";\nimport { BlockhashService } from \"./services/BlockhashService\";\nimport { APP_NAME } from \"./constants\";\n\n@injectable()\nexport class SolanaAppBinder {\n constructor(\n @inject(externalTypes.Dmk) private dmk: DeviceManagementKit,\n @inject(externalTypes.SessionId) private sessionId: DeviceSessionId,\n @inject(externalTypes.ContextModule) private contextModule: ContextModule,\n @inject(externalTypes.DmkLoggerFactory)\n private dmkLoggerFactory: (tag: string) => LoggerPublisherService,\n @inject(externalTypes.SolanaRPCURL)\n private solanaRPCURL: string | undefined,\n @inject(appBinderTypes.BlockhashService)\n private blockhashService: BlockhashService,\n ) {}\n\n getAddress(args: {\n derivationPath: string;\n checkOnDevice: boolean;\n skipOpenApp: boolean;\n }): GetAddressDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: GetAddressDeviceActionFactory({\n derivationPath: args.derivationPath,\n checkOnDevice: args.checkOnDevice,\n skipOpenApp: args.skipOpenApp,\n logger: this.dmkLoggerFactory(\"GetPubKeyCommand\"),\n }),\n });\n }\n\n signTransaction(args: {\n derivationPath: string;\n transaction: Transaction;\n solanaTransactionOptionalConfig?: SolanaTransactionOptionalConfig;\n }): SignTransactionDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SignTransactionDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n transaction: args.transaction,\n transactionOptions: args.solanaTransactionOptionalConfig,\n contextModule: this.contextModule,\n solanaRPCURL: this.solanaRPCURL,\n blockhashService: this.blockhashService,\n },\n loggerFactory: this.dmkLoggerFactory,\n }),\n });\n }\n\n signMessage(args: {\n derivationPath: string;\n message: string | Uint8Array;\n skipOpenApp: boolean;\n version?: SignMessageVersion;\n appDomain?: string;\n signers?: Uint8Array[];\n }): SignMessageDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: SignMessageDeviceActionFactory({\n derivationPath: args.derivationPath,\n message: args.message,\n skipOpenApp: args.skipOpenApp,\n version: args.version,\n appDomain: args.appDomain,\n signers: args.signers,\n logger: this.dmkLoggerFactory(\"SendSignMessageTask\"),\n }),\n });\n }\n\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: this.dmkLoggerFactory(\"GetAppConfigurationCommand\"),\n }),\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAMO,2CACPC,EAAmC,
|
|
4
|
+
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n DeviceManagementKit,\n type DeviceSessionId,\n LoggerPublisherService,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignMessageVersion } from \"@api/model/MessageOptions\";\nimport { SolanaTransactionOptionalConfig } from \"@api/model/SolanaTransactionOptionalConfig\";\nimport { Transaction } from \"@api/model/Transaction\";\nimport { type SolanaSignerFeaturesNames } from \"@internal/app-binder/SolanaApplicationResolver\";\nimport { externalTypes } from \"@internal/externalTypes\";\n\nimport { GetAppConfigurationCommand } from \"./command/GetAppConfigurationCommand\";\nimport { GetAddressDeviceActionFactory } from \"./device-action/GetAddressDeviceActionFactory\";\nimport { SignMessageDeviceActionFactory } from \"./device-action/SignMessageDeviceActionFactory\";\nimport { SignTransactionDeviceAction } from \"./device-action/SignTransactionDeviceAction\";\nimport { appBinderTypes } from \"./di/appBinderTypes\";\nimport { BlockhashService } from \"./services/BlockhashService\";\nimport { APP_NAME } from \"./constants\";\n\n@injectable()\nexport class SolanaAppBinder {\n constructor(\n @inject(externalTypes.Dmk) private dmk: DeviceManagementKit,\n @inject(externalTypes.SessionId) private sessionId: DeviceSessionId,\n @inject(externalTypes.ContextModule) private contextModule: ContextModule,\n @inject(externalTypes.DmkLoggerFactory)\n private dmkLoggerFactory: (tag: string) => LoggerPublisherService,\n @inject(externalTypes.SolanaRPCURL)\n private solanaRPCURL: string | undefined,\n @inject(appBinderTypes.BlockhashService)\n private blockhashService: BlockhashService,\n ) {}\n\n getAddress(args: {\n derivationPath: string;\n checkOnDevice: boolean;\n skipOpenApp: boolean;\n }): GetAddressDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: GetAddressDeviceActionFactory({\n derivationPath: args.derivationPath,\n checkOnDevice: args.checkOnDevice,\n skipOpenApp: args.skipOpenApp,\n logger: this.dmkLoggerFactory(\"GetPubKeyCommand\"),\n }),\n });\n }\n\n signTransaction(args: {\n derivationPath: string;\n transaction: Transaction;\n solanaTransactionOptionalConfig?: SolanaTransactionOptionalConfig;\n disabledFeatures?: ReadonlyArray<SolanaSignerFeaturesNames>;\n }): SignTransactionDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SignTransactionDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n transaction: args.transaction,\n transactionOptions: args.solanaTransactionOptionalConfig,\n contextModule: this.contextModule,\n solanaRPCURL: this.solanaRPCURL,\n blockhashService: this.blockhashService,\n disabledFeatures: args.disabledFeatures,\n },\n loggerFactory: this.dmkLoggerFactory,\n }),\n });\n }\n\n signMessage(args: {\n derivationPath: string;\n message: string | Uint8Array;\n skipOpenApp: boolean;\n version?: SignMessageVersion;\n appDomain?: string;\n signers?: Uint8Array[];\n }): SignMessageDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: SignMessageDeviceActionFactory({\n derivationPath: args.derivationPath,\n message: args.message,\n skipOpenApp: args.skipOpenApp,\n version: args.version,\n appDomain: args.appDomain,\n signers: args.signers,\n logger: this.dmkLoggerFactory(\"SendSignMessageTask\"),\n }),\n });\n }\n\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: this.dmkLoggerFactory(\"GetAppConfigurationCommand\"),\n }),\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAMO,2CACPC,EAAmC,qBAUnCC,EAA8B,mCAE9BC,EAA2C,gDAC3CC,EAA8C,yDAC9CC,EAA+C,0DAC/CC,EAA4C,uDAC5CC,EAA+B,+BAE/BC,EAAyB,uBAGlB,IAAMC,EAAN,KAAsB,CAC3B,YACqCC,EACMC,EACIC,EAErCC,EAEAC,EAEAC,EACR,CATmC,SAAAL,EACM,eAAAC,EACI,mBAAAC,EAErC,sBAAAC,EAEA,kBAAAC,EAEA,sBAAAC,CACP,CAEH,WAAWC,EAIgB,CACzB,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,gBAAc,iCAA8B,CAC1C,eAAgBA,EAAK,eACrB,cAAeA,EAAK,cACpB,YAAaA,EAAK,YAClB,OAAQ,KAAK,iBAAiB,kBAAkB,CAClD,CAAC,CACH,CAAC,CACH,CAEA,gBAAgBA,EAKgB,CAC9B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,8BAA4B,CAC5C,MAAO,CACL,eAAgBA,EAAK,eACrB,YAAaA,EAAK,YAClB,mBAAoBA,EAAK,gCACzB,cAAe,KAAK,cACpB,aAAc,KAAK,aACnB,iBAAkB,KAAK,iBACvB,iBAAkBA,EAAK,gBACzB,EACA,cAAe,KAAK,gBACtB,CAAC,CACH,CAAC,CACH,CAEA,YAAYA,EAOgB,CAC1B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,gBAAc,kCAA+B,CAC3C,eAAgBA,EAAK,eACrB,QAASA,EAAK,QACd,YAAaA,EAAK,YAClB,QAASA,EAAK,QACd,UAAWA,EAAK,UAChB,QAASA,EAAK,QACd,OAAQ,KAAK,iBAAiB,qBAAqB,CACrD,CAAC,CACH,CAAC,CACH,CAEA,qBAAuD,CACrD,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,+BAA6B,CAC7C,MAAO,CACL,QAAS,IAAI,6BACb,QAAS,WACT,wBAAyB,0BAAwB,KACjD,YAAa,EACf,EACA,OAAQ,KAAK,iBAAiB,4BAA4B,CAC5D,CAAC,CACH,CAAC,CACH,CACF,EAxFaP,EAANQ,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,gBAAc,GAAG,GACxBA,EAAA,eAAO,gBAAc,SAAS,GAC9BA,EAAA,eAAO,gBAAc,aAAa,GAClCA,EAAA,eAAO,gBAAc,gBAAgB,GAErCA,EAAA,eAAO,gBAAc,YAAY,GAEjCA,EAAA,eAAO,iBAAe,gBAAgB,IAT9BT",
|
|
6
6
|
"names": ["SolanaAppBinder_exports", "__export", "SolanaAppBinder", "__toCommonJS", "import_device_management_kit", "import_inversify", "import_externalTypes", "import_GetAppConfigurationCommand", "import_GetAddressDeviceActionFactory", "import_SignMessageDeviceActionFactory", "import_SignTransactionDeviceAction", "import_appBinderTypes", "import_constants", "SolanaAppBinder", "dmk", "sessionId", "contextModule", "dmkLoggerFactory", "solanaRPCURL", "blockhashService", "args", "__decorateClass", "__decorateParam"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var p=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var m=(n,e)=>{for(var s in e)p(n,s,{get:e[s],enumerable:!0})},R=(n,e,s,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of x(e))!I.call(n,t)&&t!==s&&p(n,t,{get:()=>e[t],enumerable:!(i=E(e,t))||i.enumerable});return n};var g=n=>R(p({},"__esModule",{value:!0}),n);var C={};m(C,{SOLANA_MIN_DELAYED_SIGNING_VERSION:()=>S,SOLANA_MIN_GENERIC_CLEAR_SIGN_VERSION:()=>A,SOLANA_MIN_SPL_VERSION:()=>l,SOLANA_MIN_TRANSACTION_CHECKS_VERSION:()=>c,SOLANA_SIGNER_FEATURES:()=>N,SolanaApplicationResolver:()=>d,isSolanaSignerFeatureSupported:()=>v});module.exports=g(C);var o=require("@ledgerhq/device-management-kit"),a=require("./constants");const O="10.0.0",r="0.0.1",l="1.9.2",S="1.14.0",c="1.16.0",A=O,N={spl:{minVersion:l,excludedModels:[o.DeviceModelId.NANO_S],excludedApps:[]},transactionChecks:{minVersion:c,excludedModels:[o.DeviceModelId.NANO_S,o.DeviceModelId.NANO_SP,o.DeviceModelId.NANO_X],excludedApps:["Exchange"]},delayedSigning:{minVersion:S,excludedModels:[],excludedApps:[]},genericClearSign:{minVersion:A,excludedModels:[o.DeviceModelId.NANO_S],excludedApps:["Exchange"]}};function v(n,e,s,i){if(i?.has(e))return!1;const{minVersion:t,excludedModels:_,excludedApps:u}=N[e];return new o.ApplicationChecker(n.getDeviceSessionState(),s,new d).withMinVersionInclusive(t).excludeDeviceModels(..._).excludeApps(...u).check()}class d{resolve(e,s){if(e.sessionStateType===o.DeviceSessionStateType.Connected)return{isCompatible:!1,version:r};const i=e.currentApp?.name;return!i||i!==a.APP_NAME&&i!=="Exchange"?{isCompatible:!1,version:r}:{isCompatible:!0,version:s.version}}}0&&(module.exports={SOLANA_MIN_DELAYED_SIGNING_VERSION,SOLANA_MIN_GENERIC_CLEAR_SIGN_VERSION,SOLANA_MIN_SPL_VERSION,SOLANA_MIN_TRANSACTION_CHECKS_VERSION,SOLANA_SIGNER_FEATURES,SolanaApplicationResolver,isSolanaSignerFeatureSupported});
|
|
2
2
|
//# sourceMappingURL=SolanaApplicationResolver.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/app-binder/SolanaApplicationResolver.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type AppConfig,\n ApplicationChecker,\n type ApplicationResolver,\n DeviceModelId,\n type DeviceSessionState,\n DeviceSessionStateType,\n type InternalApi,\n type ResolvedApp,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type AppConfiguration } from \"@api/model/AppConfiguration\";\n\nimport { APP_NAME } from \"./constants\";\n\nconst UNRELEASED_MIN_VERSION = \"10.0.0\";\nconst DEFAULT_VERSION = \"0.0.1\";\nexport const SOLANA_MIN_SPL_VERSION = \"1.9.2\";\nexport const SOLANA_MIN_DELAYED_SIGNING_VERSION = \"1.14.0\";\n\nexport const SOLANA_MIN_TRANSACTION_CHECKS_VERSION = \"1.16.0\";\nexport const SOLANA_MIN_GENERIC_CLEAR_SIGN_VERSION = UNRELEASED_MIN_VERSION;\n\nexport const
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,
|
|
6
|
-
"names": ["SolanaApplicationResolver_exports", "__export", "
|
|
4
|
+
"sourcesContent": ["import {\n type AppConfig,\n ApplicationChecker,\n type ApplicationResolver,\n DeviceModelId,\n type DeviceSessionState,\n DeviceSessionStateType,\n type InternalApi,\n type ResolvedApp,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type AppConfiguration } from \"@api/model/AppConfiguration\";\n\nimport { APP_NAME } from \"./constants\";\n\nconst UNRELEASED_MIN_VERSION = \"10.0.0\";\nconst DEFAULT_VERSION = \"0.0.1\";\nexport const SOLANA_MIN_SPL_VERSION = \"1.9.2\";\nexport const SOLANA_MIN_DELAYED_SIGNING_VERSION = \"1.14.0\";\n\nexport const SOLANA_MIN_TRANSACTION_CHECKS_VERSION = \"1.16.0\";\nexport const SOLANA_MIN_GENERIC_CLEAR_SIGN_VERSION = UNRELEASED_MIN_VERSION;\n\nexport const SOLANA_SIGNER_FEATURES = {\n spl: {\n minVersion: SOLANA_MIN_SPL_VERSION,\n excludedModels: [DeviceModelId.NANO_S],\n excludedApps: [] as string[],\n },\n transactionChecks: {\n minVersion: SOLANA_MIN_TRANSACTION_CHECKS_VERSION,\n excludedModels: [\n DeviceModelId.NANO_S,\n DeviceModelId.NANO_SP,\n DeviceModelId.NANO_X,\n ],\n excludedApps: [\"Exchange\"],\n },\n delayedSigning: {\n minVersion: SOLANA_MIN_DELAYED_SIGNING_VERSION,\n excludedModels: [] as DeviceModelId[],\n excludedApps: [] as string[],\n },\n genericClearSign: {\n minVersion: SOLANA_MIN_GENERIC_CLEAR_SIGN_VERSION,\n excludedModels: [DeviceModelId.NANO_S],\n excludedApps: [\"Exchange\"],\n },\n} as const;\n\nexport type SolanaSignerFeaturesNames = keyof typeof SOLANA_SIGNER_FEATURES;\n\n/**\n * Whether the connected Solana app supports a given feature, applying its\n * minimum version plus device-model / orchestrating-app exclusions.\n *\n * Pass `disabledFeatures` to force-disable specific features regardless of\n * firmware version (e.g. for testing or temporary kill-switches).\n */\nexport function isSolanaSignerFeatureSupported(\n internalApi: InternalApi,\n feature: SolanaSignerFeaturesNames,\n appConfig: AppConfiguration,\n disabledFeatures?: ReadonlySet<SolanaSignerFeaturesNames>,\n): boolean {\n if (disabledFeatures?.has(feature)) {\n return false;\n }\n const { minVersion, excludedModels, excludedApps } =\n SOLANA_SIGNER_FEATURES[feature];\n return new ApplicationChecker(\n internalApi.getDeviceSessionState(),\n appConfig,\n new SolanaApplicationResolver(),\n )\n .withMinVersionInclusive(minVersion)\n .excludeDeviceModels(...excludedModels)\n .excludeApps(...excludedApps)\n .check();\n}\n\nexport class SolanaApplicationResolver implements ApplicationResolver {\n resolve(deviceState: DeviceSessionState, appConfig: AppConfig): ResolvedApp {\n if (deviceState.sessionStateType === DeviceSessionStateType.Connected) {\n return { isCompatible: false, version: DEFAULT_VERSION };\n }\n\n const appName = deviceState.currentApp?.name;\n\n if (!appName || (appName !== APP_NAME && appName !== \"Exchange\")) {\n return { isCompatible: false, version: DEFAULT_VERSION };\n }\n\n // appConfig.version is authoritative: it comes from GetAppConfiguration\n // executed against the signer app, so it reflects the actual on-device version\n // whether Solana is opened directly or via Exchange orchestration.\n return { isCompatible: true, version: appConfig.version };\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wCAAAE,EAAA,0CAAAC,EAAA,2BAAAC,EAAA,0CAAAC,EAAA,2BAAAC,EAAA,8BAAAC,EAAA,mCAAAC,IAAA,eAAAC,EAAAT,GAAA,IAAAU,EASO,2CAIPC,EAAyB,uBAEzB,MAAMC,EAAyB,SACzBC,EAAkB,QACXT,EAAyB,QACzBF,EAAqC,SAErCG,EAAwC,SACxCF,EAAwCS,EAExCN,EAAyB,CACpC,IAAK,CACH,WAAYF,EACZ,eAAgB,CAAC,gBAAc,MAAM,EACrC,aAAc,CAAC,CACjB,EACA,kBAAmB,CACjB,WAAYC,EACZ,eAAgB,CACd,gBAAc,OACd,gBAAc,QACd,gBAAc,MAChB,EACA,aAAc,CAAC,UAAU,CAC3B,EACA,eAAgB,CACd,WAAYH,EACZ,eAAgB,CAAC,EACjB,aAAc,CAAC,CACjB,EACA,iBAAkB,CAChB,WAAYC,EACZ,eAAgB,CAAC,gBAAc,MAAM,EACrC,aAAc,CAAC,UAAU,CAC3B,CACF,EAWO,SAASK,EACdM,EACAC,EACAC,EACAC,EACS,CACT,GAAIA,GAAkB,IAAIF,CAAO,EAC/B,MAAO,GAET,KAAM,CAAE,WAAAG,EAAY,eAAAC,EAAgB,aAAAC,CAAa,EAC/Cd,EAAuBS,CAAO,EAChC,OAAO,IAAI,qBACTD,EAAY,sBAAsB,EAClCE,EACA,IAAIT,CACN,EACG,wBAAwBW,CAAU,EAClC,oBAAoB,GAAGC,CAAc,EACrC,YAAY,GAAGC,CAAY,EAC3B,MAAM,CACX,CAEO,MAAMb,CAAyD,CACpE,QAAQc,EAAiCL,EAAmC,CAC1E,GAAIK,EAAY,mBAAqB,yBAAuB,UAC1D,MAAO,CAAE,aAAc,GAAO,QAASR,CAAgB,EAGzD,MAAMS,EAAUD,EAAY,YAAY,KAExC,MAAI,CAACC,GAAYA,IAAY,YAAYA,IAAY,WAC5C,CAAE,aAAc,GAAO,QAAST,CAAgB,EAMlD,CAAE,aAAc,GAAM,QAASG,EAAU,OAAQ,CAC1D,CACF",
|
|
6
|
+
"names": ["SolanaApplicationResolver_exports", "__export", "SOLANA_MIN_DELAYED_SIGNING_VERSION", "SOLANA_MIN_GENERIC_CLEAR_SIGN_VERSION", "SOLANA_MIN_SPL_VERSION", "SOLANA_MIN_TRANSACTION_CHECKS_VERSION", "SOLANA_SIGNER_FEATURES", "SolanaApplicationResolver", "isSolanaSignerFeatureSupported", "__toCommonJS", "import_device_management_kit", "import_constants", "UNRELEASED_MIN_VERSION", "DEFAULT_VERSION", "internalApi", "feature", "appConfig", "disabledFeatures", "minVersion", "excludedModels", "excludedApps", "deviceState", "appName"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var o=require("@ledgerhq/device-management-kit"),r=require("../../api/model/PublicKeyDisplayMode"),s=require("./SolanaApplicationResolver");function a(e){return{version:e,blindSigningEnabled:!1}}function l(e,t,n=o.DeviceModelId.FLEX){return{sessionStateType:o.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:o.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:e,version:t},deviceModelId:n,isSecureConnectionAllowed:!1}}function p(){return{sessionStateType:o.DeviceSessionStateType.Connected,deviceStatus:o.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Solana",version:"1.0.0"},deviceModelId:o.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}}describe("SolanaApplicationResolver",()=>{const e=new s.SolanaApplicationResolver;it("should resolve as incompatible when device is Connected",()=>{const t=p(),n=a("1.0.0"),i=e.resolve(t,n);expect(i).toStrictEqual({isCompatible:!1,version:"0.0.1"})}),it("should resolve as compatible with appConfig.version when app is Solana",()=>{const t=l("Solana","1.4.0"),n=a("1.0.0"),i=e.resolve(t,n);expect(i).toStrictEqual({isCompatible:!0,version:"1.0.0"})}),it("should resolve as incompatible when app is not Solana",()=>{const t=l("Ethereum","1.0.0"),n=a("1.0.0"),i=e.resolve(t,n);expect(i).toStrictEqual({isCompatible:!1,version:"0.0.1"})})});describe("isSolanaSignerFeatureSupported",()=>{const e={blindSigningEnabled:!1,pubKeyDisplayMode:r.PublicKeyDisplayMode.LONG,version:"99.0.0"},t={};it("returns false immediately when the feature is in disabledFeatures",()=>{const n=(0,s.isSolanaSignerFeatureSupported)(t,"spl",e,new Set(["spl"]));expect(n).toBe(!1)})});
|
|
2
2
|
//# sourceMappingURL=SolanaApplicationResolver.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/app-binder/SolanaApplicationResolver.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type AppConfig,\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n} from \"@ledgerhq/device-management-kit\";\n\nimport {
|
|
5
|
-
"mappings": "aAAA,IAAAA,
|
|
6
|
-
"names": ["import_device_management_kit", "import_SolanaApplicationResolver", "createAppConfig", "version", "createReadyState", "appName", "appVersion", "modelId", "createConnectedState", "resolver", "state", "config", "result"]
|
|
4
|
+
"sourcesContent": ["import {\n type AppConfig,\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n type InternalApi,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type AppConfiguration } from \"@api/model/AppConfiguration\";\nimport { PublicKeyDisplayMode } from \"@api/model/PublicKeyDisplayMode\";\n\nimport {\n isSolanaSignerFeatureSupported,\n SolanaApplicationResolver,\n} from \"./SolanaApplicationResolver\";\n\nfunction createAppConfig(version: string): AppConfig {\n return {\n version,\n blindSigningEnabled: false,\n };\n}\n\nfunction createReadyState(\n appName: string,\n appVersion: string,\n modelId: DeviceModelId = DeviceModelId.FLEX,\n) {\n return {\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: appName, version: appVersion },\n deviceModelId: modelId,\n isSecureConnectionAllowed: false,\n };\n}\n\nfunction createConnectedState() {\n return {\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Solana\", version: \"1.0.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n };\n}\n\ndescribe(\"SolanaApplicationResolver\", () => {\n const resolver = new SolanaApplicationResolver();\n\n it(\"should resolve as incompatible when device is Connected\", () => {\n const state = createConnectedState();\n const config = createAppConfig(\"1.0.0\");\n const result = resolver.resolve(state, config);\n expect(result).toStrictEqual({\n isCompatible: false,\n version: \"0.0.1\",\n });\n });\n\n it(\"should resolve as compatible with appConfig.version when app is Solana\", () => {\n const state = createReadyState(\"Solana\", \"1.4.0\");\n const config = createAppConfig(\"1.0.0\");\n const result = resolver.resolve(state, config);\n expect(result).toStrictEqual({\n isCompatible: true,\n version: \"1.0.0\",\n });\n });\n\n it(\"should resolve as incompatible when app is not Solana\", () => {\n const state = createReadyState(\"Ethereum\", \"1.0.0\");\n const config = createAppConfig(\"1.0.0\");\n const result = resolver.resolve(state, config);\n expect(result).toStrictEqual({\n isCompatible: false,\n version: \"0.0.1\",\n });\n });\n});\n\ndescribe(\"isSolanaSignerFeatureSupported\", () => {\n const appConfig: AppConfiguration = {\n blindSigningEnabled: false,\n pubKeyDisplayMode: PublicKeyDisplayMode.LONG,\n version: \"99.0.0\",\n };\n // getDeviceSessionState is never reached when the feature is force-disabled.\n const mockApi = {} as unknown as InternalApi;\n\n it(\"returns false immediately when the feature is in disabledFeatures\", () => {\n const result = isSolanaSignerFeatureSupported(\n mockApi,\n \"spl\",\n appConfig,\n new Set([\"spl\"]),\n );\n expect(result).toBe(false);\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAMO,2CAGPC,EAAqC,2CAErCC,EAGO,uCAEP,SAASC,EAAgBC,EAA4B,CACnD,MAAO,CACL,QAAAA,EACA,oBAAqB,EACvB,CACF,CAEA,SAASC,EACPC,EACAC,EACAC,EAAyB,gBAAc,KACvC,CACA,MAAO,CACL,iBAAkB,yBAAuB,0BACzC,aAAc,eAAa,UAC3B,cAAe,CAAC,EAChB,WAAY,CAAE,KAAMF,EAAS,QAASC,CAAW,EACjD,cAAeC,EACf,0BAA2B,EAC7B,CACF,CAEA,SAASC,GAAuB,CAC9B,MAAO,CACL,iBAAkB,yBAAuB,UACzC,aAAc,eAAa,UAC3B,cAAe,CAAC,EAChB,WAAY,CAAE,KAAM,SAAU,QAAS,OAAQ,EAC/C,cAAe,gBAAc,KAC7B,0BAA2B,EAC7B,CACF,CAEA,SAAS,4BAA6B,IAAM,CAC1C,MAAMC,EAAW,IAAI,4BAErB,GAAG,0DAA2D,IAAM,CAClE,MAAMC,EAAQF,EAAqB,EAC7BG,EAAST,EAAgB,OAAO,EAChCU,EAASH,EAAS,QAAQC,EAAOC,CAAM,EAC7C,OAAOC,CAAM,EAAE,cAAc,CAC3B,aAAc,GACd,QAAS,OACX,CAAC,CACH,CAAC,EAED,GAAG,yEAA0E,IAAM,CACjF,MAAMF,EAAQN,EAAiB,SAAU,OAAO,EAC1CO,EAAST,EAAgB,OAAO,EAChCU,EAASH,EAAS,QAAQC,EAAOC,CAAM,EAC7C,OAAOC,CAAM,EAAE,cAAc,CAC3B,aAAc,GACd,QAAS,OACX,CAAC,CACH,CAAC,EAED,GAAG,wDAAyD,IAAM,CAChE,MAAMF,EAAQN,EAAiB,WAAY,OAAO,EAC5CO,EAAST,EAAgB,OAAO,EAChCU,EAASH,EAAS,QAAQC,EAAOC,CAAM,EAC7C,OAAOC,CAAM,EAAE,cAAc,CAC3B,aAAc,GACd,QAAS,OACX,CAAC,CACH,CAAC,CACH,CAAC,EAED,SAAS,iCAAkC,IAAM,CAC/C,MAAMC,EAA8B,CAClC,oBAAqB,GACrB,kBAAmB,uBAAqB,KACxC,QAAS,QACX,EAEMC,EAAU,CAAC,EAEjB,GAAG,oEAAqE,IAAM,CAC5E,MAAMF,KAAS,kCACbE,EACA,MACAD,EACA,IAAI,IAAI,CAAC,KAAK,CAAC,CACjB,EACA,OAAOD,CAAM,EAAE,KAAK,EAAK,CAC3B,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_device_management_kit", "import_PublicKeyDisplayMode", "import_SolanaApplicationResolver", "createAppConfig", "version", "createReadyState", "appName", "appVersion", "modelId", "createConnectedState", "resolver", "state", "config", "result", "appConfig", "mockApi"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var a=Object.defineProperty;var
|
|
1
|
+
"use strict";var a=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var m=(s,t)=>{for(var e in t)a(s,e,{get:t[e],enumerable:!0})},A=(s,t,e,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of l(t))!d.call(s,n)&&n!==e&&a(s,n,{get:()=>t[n],enumerable:!(o=u(t,n))||o.enumerable});return s};var v=s=>A(a({},"__esModule",{value:!0}),s);var h={};m(h,{RequirementAccumulator:()=>f});module.exports=v(h);class f{instructionInfos=new i;enumVariants=new i;tokenInfos=new i;tokenAccountStates=new i;altResolutions=new i;trustedNames=new i;tokenAmountRefs=new i;tokenAmountAltRefs=new i;mintAltRefs=new i;addInstructionInfo(t,e){this.instructionInfos.add(`${t}:${e}`,{programId:t,discriminator:e})}addEnumVariant(t,e,o){this.enumVariants.add(`${t}:${e}:${o}`,{programId:t,enumId:e,variantIndex:o})}addTokenInfo(t){this.tokenInfos.add(t,t)}addTokenAccountState(t){this.tokenAccountStates.add(t,t)}addAltResolution(t,e){this.altResolutions.add(`${t}:${e}`,{altAddress:t,entryIndex:e})}addTrustedName(t){this.trustedNames.add(t,t)}addTokenAmountRef(t){this.tokenAmountRefs.add(t,t)}addTokenAmountAltRef(t,e){this.tokenAmountAltRefs.add(`${t}:${e}`,{altAddress:t,entryIndex:e})}addMintAltRef(t,e){this.mintAltRefs.add(`${t}:${e}`,{altAddress:t,entryIndex:e})}build(){const t=({altAddress:n,entryIndex:r})=>`${n}:${r}`,e=new Set(this.tokenAmountAltRefs.values().map(t)),o=new Set(this.mintAltRefs.values().map(t));return{instructionInfos:this.instructionInfos.values(),enumVariants:this.enumVariants.values(),tokenInfos:this.tokenInfos.values(),tokenAccountStates:this.tokenAccountStates.values(),altResolutions:this.altResolutions.values().filter(n=>!o.has(t(n))&&!e.has(t(n))),trustedNames:this.trustedNames.values(),tokenAmountRefs:this.tokenAmountRefs.values(),tokenAmountAltRefs:this.tokenAmountAltRefs.values(),mintAltRefs:this.mintAltRefs.values().filter(n=>!e.has(t(n)))}}}class i{seen=new Set;items=[];add(t,e){this.seen.has(t)||(this.seen.add(t),this.items.push(e))}values(){return[...this.items]}}0&&(module.exports={RequirementAccumulator});
|
|
2
2
|
//# sourceMappingURL=RequirementAccumulator.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/app-binder/clear-sign/requirements/RequirementAccumulator.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type AltEntryKey,\n type DescriptorRequirements,\n type EnumVariantKey,\n type ProgramDiscriminator,\n} from \"./model\";\n\n/**\n * Collects requirements while deduplicating by each descriptor's key and\n * preserving first-seen order, so the output is deterministic.\n */\nexport class RequirementAccumulator {\n private readonly instructionInfos = new OrderedSet<ProgramDiscriminator>();\n private readonly enumVariants = new OrderedSet<EnumVariantKey>();\n private readonly tokenInfos = new OrderedSet<string>();\n private readonly tokenAccountStates = new OrderedSet<string>();\n private readonly altResolutions = new OrderedSet<AltEntryKey>();\n private readonly trustedNames = new OrderedSet<string>();\n\n addInstructionInfo(programId: string, discriminator: string): void {\n this.instructionInfos.add(`${programId}:${discriminator}`, {\n programId,\n discriminator,\n });\n }\n\n addEnumVariant(\n programId: string,\n enumId: string,\n variantIndex: number,\n ): void {\n this.enumVariants.add(`${programId}:${enumId}:${variantIndex}`, {\n programId,\n enumId,\n variantIndex,\n });\n }\n\n addTokenInfo(mint: string): void {\n this.tokenInfos.add(mint, mint);\n }\n\n addTokenAccountState(account: string): void {\n this.tokenAccountStates.add(account, account);\n }\n\n addAltResolution(altAddress: string, entryIndex: number): void {\n this.altResolutions.add(`${altAddress}:${entryIndex}`, {\n altAddress,\n entryIndex,\n });\n }\n\n addTrustedName(address: string): void {\n this.trustedNames.add(address, address);\n }\n\n build(): DescriptorRequirements {\n return {\n instructionInfos: this.instructionInfos.values(),\n enumVariants: this.enumVariants.values(),\n tokenInfos: this.tokenInfos.values(),\n tokenAccountStates: this.tokenAccountStates.values(),\n altResolutions: this.altResolutions.values(),\n trustedNames: this.trustedNames.values(),\n };\n }\n}\n\nclass OrderedSet<T> {\n private readonly seen = new Set<string>();\n private readonly items: T[] = [];\n\n add(key: string, item: T): void {\n if (this.seen.has(key)) return;\n this.seen.add(key);\n this.items.push(item);\n }\n\n values(): T[] {\n return [...this.items];\n }\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAWO,MAAME,CAAuB,CACjB,iBAAmB,IAAIE,EACvB,aAAe,IAAIA,EACnB,WAAa,IAAIA,EACjB,mBAAqB,IAAIA,EACzB,eAAiB,IAAIA,EACrB,aAAe,IAAIA,
|
|
6
|
-
"names": ["RequirementAccumulator_exports", "__export", "RequirementAccumulator", "__toCommonJS", "OrderedSet", "programId", "discriminator", "enumId", "variantIndex", "mint", "account", "altAddress", "entryIndex", "address", "key", "item"]
|
|
4
|
+
"sourcesContent": ["import {\n type AltEntryKey,\n type DescriptorRequirements,\n type EnumVariantKey,\n type ProgramDiscriminator,\n} from \"./model\";\n\n/**\n * Collects requirements while deduplicating by each descriptor's key and\n * preserving first-seen order, so the output is deterministic.\n */\nexport class RequirementAccumulator {\n private readonly instructionInfos = new OrderedSet<ProgramDiscriminator>();\n private readonly enumVariants = new OrderedSet<EnumVariantKey>();\n private readonly tokenInfos = new OrderedSet<string>();\n private readonly tokenAccountStates = new OrderedSet<string>();\n private readonly altResolutions = new OrderedSet<AltEntryKey>();\n private readonly trustedNames = new OrderedSet<string>();\n private readonly tokenAmountRefs = new OrderedSet<string>();\n private readonly tokenAmountAltRefs = new OrderedSet<AltEntryKey>();\n private readonly mintAltRefs = new OrderedSet<AltEntryKey>();\n\n addInstructionInfo(programId: string, discriminator: string): void {\n this.instructionInfos.add(`${programId}:${discriminator}`, {\n programId,\n discriminator,\n });\n }\n\n addEnumVariant(\n programId: string,\n enumId: string,\n variantIndex: number,\n ): void {\n this.enumVariants.add(`${programId}:${enumId}:${variantIndex}`, {\n programId,\n enumId,\n variantIndex,\n });\n }\n\n addTokenInfo(mint: string): void {\n this.tokenInfos.add(mint, mint);\n }\n\n addTokenAccountState(account: string): void {\n this.tokenAccountStates.add(account, account);\n }\n\n addAltResolution(altAddress: string, entryIndex: number): void {\n this.altResolutions.add(`${altAddress}:${entryIndex}`, {\n altAddress,\n entryIndex,\n });\n }\n\n addTrustedName(address: string): void {\n this.trustedNames.add(address, address);\n }\n\n addTokenAmountRef(address: string): void {\n this.tokenAmountRefs.add(address, address);\n }\n\n addTokenAmountAltRef(altAddress: string, entryIndex: number): void {\n this.tokenAmountAltRefs.add(`${altAddress}:${entryIndex}`, {\n altAddress,\n entryIndex,\n });\n }\n\n addMintAltRef(altAddress: string, entryIndex: number): void {\n this.mintAltRefs.add(`${altAddress}:${entryIndex}`, {\n altAddress,\n entryIndex,\n });\n }\n\n build(): DescriptorRequirements {\n // Priority across the three ALT loops: tokenAmountAltRefs > mintAltRefs >\n // altResolutions. Each higher-priority bucket does everything the lower one\n // does plus more (TOKEN_INFO / TOKEN_ACCOUNT_STATE fallback). Strip\n // lower-priority entries here so the provide phase never sees duplicates and\n // always runs the most complete behaviour for each (altAddress, entryIndex).\n const altKey = ({ altAddress, entryIndex }: AltEntryKey) =>\n `${altAddress}:${entryIndex}`;\n const tokenAmountKeys = new Set(\n this.tokenAmountAltRefs.values().map(altKey),\n );\n const mintKeys = new Set(this.mintAltRefs.values().map(altKey));\n\n return {\n instructionInfos: this.instructionInfos.values(),\n enumVariants: this.enumVariants.values(),\n tokenInfos: this.tokenInfos.values(),\n tokenAccountStates: this.tokenAccountStates.values(),\n altResolutions: this.altResolutions\n .values()\n .filter(\n (k) => !mintKeys.has(altKey(k)) && !tokenAmountKeys.has(altKey(k)),\n ),\n trustedNames: this.trustedNames.values(),\n tokenAmountRefs: this.tokenAmountRefs.values(),\n tokenAmountAltRefs: this.tokenAmountAltRefs.values(),\n mintAltRefs: this.mintAltRefs\n .values()\n .filter((k) => !tokenAmountKeys.has(altKey(k))),\n };\n }\n}\n\nclass OrderedSet<T> {\n private readonly seen = new Set<string>();\n private readonly items: T[] = [];\n\n add(key: string, item: T): void {\n if (this.seen.has(key)) return;\n this.seen.add(key);\n this.items.push(item);\n }\n\n values(): T[] {\n return [...this.items];\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAWO,MAAME,CAAuB,CACjB,iBAAmB,IAAIE,EACvB,aAAe,IAAIA,EACnB,WAAa,IAAIA,EACjB,mBAAqB,IAAIA,EACzB,eAAiB,IAAIA,EACrB,aAAe,IAAIA,EACnB,gBAAkB,IAAIA,EACtB,mBAAqB,IAAIA,EACzB,YAAc,IAAIA,EAEnC,mBAAmBC,EAAmBC,EAA6B,CACjE,KAAK,iBAAiB,IAAI,GAAGD,CAAS,IAAIC,CAAa,GAAI,CACzD,UAAAD,EACA,cAAAC,CACF,CAAC,CACH,CAEA,eACED,EACAE,EACAC,EACM,CACN,KAAK,aAAa,IAAI,GAAGH,CAAS,IAAIE,CAAM,IAAIC,CAAY,GAAI,CAC9D,UAAAH,EACA,OAAAE,EACA,aAAAC,CACF,CAAC,CACH,CAEA,aAAaC,EAAoB,CAC/B,KAAK,WAAW,IAAIA,EAAMA,CAAI,CAChC,CAEA,qBAAqBC,EAAuB,CAC1C,KAAK,mBAAmB,IAAIA,EAASA,CAAO,CAC9C,CAEA,iBAAiBC,EAAoBC,EAA0B,CAC7D,KAAK,eAAe,IAAI,GAAGD,CAAU,IAAIC,CAAU,GAAI,CACrD,WAAAD,EACA,WAAAC,CACF,CAAC,CACH,CAEA,eAAeC,EAAuB,CACpC,KAAK,aAAa,IAAIA,EAASA,CAAO,CACxC,CAEA,kBAAkBA,EAAuB,CACvC,KAAK,gBAAgB,IAAIA,EAASA,CAAO,CAC3C,CAEA,qBAAqBF,EAAoBC,EAA0B,CACjE,KAAK,mBAAmB,IAAI,GAAGD,CAAU,IAAIC,CAAU,GAAI,CACzD,WAAAD,EACA,WAAAC,CACF,CAAC,CACH,CAEA,cAAcD,EAAoBC,EAA0B,CAC1D,KAAK,YAAY,IAAI,GAAGD,CAAU,IAAIC,CAAU,GAAI,CAClD,WAAAD,EACA,WAAAC,CACF,CAAC,CACH,CAEA,OAAgC,CAM9B,MAAME,EAAS,CAAC,CAAE,WAAAH,EAAY,WAAAC,CAAW,IACvC,GAAGD,CAAU,IAAIC,CAAU,GACvBG,EAAkB,IAAI,IAC1B,KAAK,mBAAmB,OAAO,EAAE,IAAID,CAAM,CAC7C,EACME,EAAW,IAAI,IAAI,KAAK,YAAY,OAAO,EAAE,IAAIF,CAAM,CAAC,EAE9D,MAAO,CACL,iBAAkB,KAAK,iBAAiB,OAAO,EAC/C,aAAc,KAAK,aAAa,OAAO,EACvC,WAAY,KAAK,WAAW,OAAO,EACnC,mBAAoB,KAAK,mBAAmB,OAAO,EACnD,eAAgB,KAAK,eAClB,OAAO,EACP,OACEG,GAAM,CAACD,EAAS,IAAIF,EAAOG,CAAC,CAAC,GAAK,CAACF,EAAgB,IAAID,EAAOG,CAAC,CAAC,CACnE,EACF,aAAc,KAAK,aAAa,OAAO,EACvC,gBAAiB,KAAK,gBAAgB,OAAO,EAC7C,mBAAoB,KAAK,mBAAmB,OAAO,EACnD,YAAa,KAAK,YACf,OAAO,EACP,OAAQA,GAAM,CAACF,EAAgB,IAAID,EAAOG,CAAC,CAAC,CAAC,CAClD,CACF,CACF,CAEA,MAAMb,CAAc,CACD,KAAO,IAAI,IACX,MAAa,CAAC,EAE/B,IAAIc,EAAaC,EAAe,CAC1B,KAAK,KAAK,IAAID,CAAG,IACrB,KAAK,KAAK,IAAIA,CAAG,EACjB,KAAK,MAAM,KAAKC,CAAI,EACtB,CAEA,QAAc,CACZ,MAAO,CAAC,GAAG,KAAK,KAAK,CACvB,CACF",
|
|
6
|
+
"names": ["RequirementAccumulator_exports", "__export", "RequirementAccumulator", "__toCommonJS", "OrderedSet", "programId", "discriminator", "enumId", "variantIndex", "mint", "account", "altAddress", "entryIndex", "address", "altKey", "tokenAmountKeys", "mintKeys", "k", "key", "item"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var n=require("./RequirementAccumulator");describe("RequirementAccumulator",()=>{it("deduplicates each descriptor type by its key",()=>{const t=new n.RequirementAccumulator;t.addInstructionInfo("P","00"),t.addInstructionInfo("P","00"),t.addEnumVariant("P","e",1),t.addEnumVariant("P","e",1),t.addTokenInfo("mint"),t.addTokenInfo("mint"),t.addTokenAccountState("ata"),t.addTokenAccountState("ata"),t.addAltResolution("ALT",2),t.addAltResolution("ALT",2),t.addTrustedName("name"),t.addTrustedName("name");const e=t.build();expect(e.instructionInfos).toHaveLength(1),expect(e.enumVariants).toHaveLength(1),expect(e.tokenInfos).toEqual(["mint"]),expect(e.tokenAccountStates).toEqual(["ata"]),expect(e.altResolutions).toEqual([{altAddress:"ALT",entryIndex:2}]),expect(e.trustedNames).toEqual(["name"])}),it("preserves first-seen insertion order",()=>{const t=new n.RequirementAccumulator;t.addTokenInfo("c"),t.addTokenInfo("a"),t.addTokenInfo("b"),t.addTokenInfo("a"),expect(t.build().tokenInfos).toEqual(["c","a","b"])}),it("treats different keys of the same type as distinct",()=>{const t=new n.RequirementAccumulator;t.addAltResolution("ALT",1),t.addAltResolution("ALT",2),t.addEnumVariant("P","e",1),t.addEnumVariant("P","e",2),expect(t.build().altResolutions).toHaveLength(2),expect(t.build().enumVariants).toHaveLength(2)}),it("returns an empty set when nothing was added",()=>{expect(new n.RequirementAccumulator().build()).toEqual({instructionInfos:[],enumVariants:[],tokenInfos:[],tokenAccountStates:[],altResolutions:[],trustedNames:[]})})});
|
|
1
|
+
"use strict";var n=require("./RequirementAccumulator");describe("RequirementAccumulator",()=>{it("deduplicates each descriptor type by its key",()=>{const t=new n.RequirementAccumulator;t.addInstructionInfo("P","00"),t.addInstructionInfo("P","00"),t.addEnumVariant("P","e",1),t.addEnumVariant("P","e",1),t.addTokenInfo("mint"),t.addTokenInfo("mint"),t.addTokenAccountState("ata"),t.addTokenAccountState("ata"),t.addAltResolution("ALT",2),t.addAltResolution("ALT",2),t.addTrustedName("name"),t.addTrustedName("name");const e=t.build();expect(e.instructionInfos).toHaveLength(1),expect(e.enumVariants).toHaveLength(1),expect(e.tokenInfos).toEqual(["mint"]),expect(e.tokenAccountStates).toEqual(["ata"]),expect(e.altResolutions).toEqual([{altAddress:"ALT",entryIndex:2}]),expect(e.trustedNames).toEqual(["name"])}),it("preserves first-seen insertion order",()=>{const t=new n.RequirementAccumulator;t.addTokenInfo("c"),t.addTokenInfo("a"),t.addTokenInfo("b"),t.addTokenInfo("a"),expect(t.build().tokenInfos).toEqual(["c","a","b"])}),it("treats different keys of the same type as distinct",()=>{const t=new n.RequirementAccumulator;t.addAltResolution("ALT",1),t.addAltResolution("ALT",2),t.addEnumVariant("P","e",1),t.addEnumVariant("P","e",2),expect(t.build().altResolutions).toHaveLength(2),expect(t.build().enumVariants).toHaveLength(2)}),it("build() applies cross-bucket priority dedup: tokenAmountAltRefs > mintAltRefs > altResolutions",()=>{const t=new n.RequirementAccumulator;t.addAltResolution("ALT",1),t.addMintAltRef("ALT",1),t.addTokenAmountAltRef("ALT",1),t.addAltResolution("ALT",2),t.addMintAltRef("ALT",2),t.addAltResolution("ALT",3);const e=t.build();expect(e.tokenAmountAltRefs).toEqual([{altAddress:"ALT",entryIndex:1}]),expect(e.mintAltRefs).toEqual([{altAddress:"ALT",entryIndex:2}]),expect(e.altResolutions).toEqual([{altAddress:"ALT",entryIndex:3}])}),it("returns an empty set when nothing was added",()=>{expect(new n.RequirementAccumulator().build()).toEqual({instructionInfos:[],enumVariants:[],tokenInfos:[],tokenAccountStates:[],altResolutions:[],trustedNames:[],tokenAmountRefs:[],tokenAmountAltRefs:[],mintAltRefs:[]})})});
|
|
2
2
|
//# sourceMappingURL=RequirementAccumulator.test.js.map
|
package/lib/cjs/internal/app-binder/clear-sign/requirements/RequirementAccumulator.test.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/app-binder/clear-sign/requirements/RequirementAccumulator.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { RequirementAccumulator } from \"./RequirementAccumulator\";\n\ndescribe(\"RequirementAccumulator\", () => {\n it(\"deduplicates each descriptor type by its key\", () => {\n const accumulator = new RequirementAccumulator();\n accumulator.addInstructionInfo(\"P\", \"00\");\n accumulator.addInstructionInfo(\"P\", \"00\");\n accumulator.addEnumVariant(\"P\", \"e\", 1);\n accumulator.addEnumVariant(\"P\", \"e\", 1);\n accumulator.addTokenInfo(\"mint\");\n accumulator.addTokenInfo(\"mint\");\n accumulator.addTokenAccountState(\"ata\");\n accumulator.addTokenAccountState(\"ata\");\n accumulator.addAltResolution(\"ALT\", 2);\n accumulator.addAltResolution(\"ALT\", 2);\n accumulator.addTrustedName(\"name\");\n accumulator.addTrustedName(\"name\");\n\n const result = accumulator.build();\n expect(result.instructionInfos).toHaveLength(1);\n expect(result.enumVariants).toHaveLength(1);\n expect(result.tokenInfos).toEqual([\"mint\"]);\n expect(result.tokenAccountStates).toEqual([\"ata\"]);\n expect(result.altResolutions).toEqual([\n { altAddress: \"ALT\", entryIndex: 2 },\n ]);\n expect(result.trustedNames).toEqual([\"name\"]);\n });\n\n it(\"preserves first-seen insertion order\", () => {\n const accumulator = new RequirementAccumulator();\n accumulator.addTokenInfo(\"c\");\n accumulator.addTokenInfo(\"a\");\n accumulator.addTokenInfo(\"b\");\n accumulator.addTokenInfo(\"a\");\n expect(accumulator.build().tokenInfos).toEqual([\"c\", \"a\", \"b\"]);\n });\n\n it(\"treats different keys of the same type as distinct\", () => {\n const accumulator = new RequirementAccumulator();\n accumulator.addAltResolution(\"ALT\", 1);\n accumulator.addAltResolution(\"ALT\", 2);\n accumulator.addEnumVariant(\"P\", \"e\", 1);\n accumulator.addEnumVariant(\"P\", \"e\", 2);\n expect(accumulator.build().altResolutions).toHaveLength(2);\n expect(accumulator.build().enumVariants).toHaveLength(2);\n });\n\n it(\"returns an empty set when nothing was added\", () => {\n expect(new RequirementAccumulator().build()).toEqual({\n instructionInfos: [],\n enumVariants: [],\n tokenInfos: [],\n tokenAccountStates: [],\n altResolutions: [],\n trustedNames: [],\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "aAAA,IAAAA,EAAuC,oCAEvC,SAAS,yBAA0B,IAAM,CACvC,GAAG,+CAAgD,IAAM,CACvD,MAAMC,EAAc,IAAI,yBACxBA,EAAY,mBAAmB,IAAK,IAAI,EACxCA,EAAY,mBAAmB,IAAK,IAAI,EACxCA,EAAY,eAAe,IAAK,IAAK,CAAC,EACtCA,EAAY,eAAe,IAAK,IAAK,CAAC,EACtCA,EAAY,aAAa,MAAM,EAC/BA,EAAY,aAAa,MAAM,EAC/BA,EAAY,qBAAqB,KAAK,EACtCA,EAAY,qBAAqB,KAAK,EACtCA,EAAY,iBAAiB,MAAO,CAAC,EACrCA,EAAY,iBAAiB,MAAO,CAAC,EACrCA,EAAY,eAAe,MAAM,EACjCA,EAAY,eAAe,MAAM,EAEjC,MAAMC,EAASD,EAAY,MAAM,EACjC,OAAOC,EAAO,gBAAgB,EAAE,aAAa,CAAC,EAC9C,OAAOA,EAAO,YAAY,EAAE,aAAa,CAAC,EAC1C,OAAOA,EAAO,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC1C,OAAOA,EAAO,kBAAkB,EAAE,QAAQ,CAAC,KAAK,CAAC,EACjD,OAAOA,EAAO,cAAc,EAAE,QAAQ,CACpC,CAAE,WAAY,MAAO,WAAY,CAAE,CACrC,CAAC,EACD,OAAOA,EAAO,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,CAC9C,CAAC,EAED,GAAG,uCAAwC,IAAM,CAC/C,MAAMD,EAAc,IAAI,yBACxBA,EAAY,aAAa,GAAG,EAC5BA,EAAY,aAAa,GAAG,EAC5BA,EAAY,aAAa,GAAG,EAC5BA,EAAY,aAAa,GAAG,EAC5B,OAAOA,EAAY,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAK,IAAK,GAAG,CAAC,CAChE,CAAC,EAED,GAAG,qDAAsD,IAAM,CAC7D,MAAMA,EAAc,IAAI,yBACxBA,EAAY,iBAAiB,MAAO,CAAC,EACrCA,EAAY,iBAAiB,MAAO,CAAC,EACrCA,EAAY,eAAe,IAAK,IAAK,CAAC,EACtCA,EAAY,eAAe,IAAK,IAAK,CAAC,EACtC,OAAOA,EAAY,MAAM,EAAE,cAAc,EAAE,aAAa,CAAC,EACzD,OAAOA,EAAY,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,CACzD,CAAC,EAED,GAAG,8CAA+C,IAAM,CACtD,OAAO,IAAI,yBAAuB,EAAE,MAAM,CAAC,EAAE,QAAQ,CACnD,iBAAkB,CAAC,EACnB,aAAc,CAAC,EACf,WAAY,CAAC,EACb,mBAAoB,CAAC,EACrB,eAAgB,CAAC,EACjB,aAAc,CAAC,
|
|
4
|
+
"sourcesContent": ["import { RequirementAccumulator } from \"./RequirementAccumulator\";\n\ndescribe(\"RequirementAccumulator\", () => {\n it(\"deduplicates each descriptor type by its key\", () => {\n const accumulator = new RequirementAccumulator();\n accumulator.addInstructionInfo(\"P\", \"00\");\n accumulator.addInstructionInfo(\"P\", \"00\");\n accumulator.addEnumVariant(\"P\", \"e\", 1);\n accumulator.addEnumVariant(\"P\", \"e\", 1);\n accumulator.addTokenInfo(\"mint\");\n accumulator.addTokenInfo(\"mint\");\n accumulator.addTokenAccountState(\"ata\");\n accumulator.addTokenAccountState(\"ata\");\n accumulator.addAltResolution(\"ALT\", 2);\n accumulator.addAltResolution(\"ALT\", 2);\n accumulator.addTrustedName(\"name\");\n accumulator.addTrustedName(\"name\");\n\n const result = accumulator.build();\n expect(result.instructionInfos).toHaveLength(1);\n expect(result.enumVariants).toHaveLength(1);\n expect(result.tokenInfos).toEqual([\"mint\"]);\n expect(result.tokenAccountStates).toEqual([\"ata\"]);\n expect(result.altResolutions).toEqual([\n { altAddress: \"ALT\", entryIndex: 2 },\n ]);\n expect(result.trustedNames).toEqual([\"name\"]);\n });\n\n it(\"preserves first-seen insertion order\", () => {\n const accumulator = new RequirementAccumulator();\n accumulator.addTokenInfo(\"c\");\n accumulator.addTokenInfo(\"a\");\n accumulator.addTokenInfo(\"b\");\n accumulator.addTokenInfo(\"a\");\n expect(accumulator.build().tokenInfos).toEqual([\"c\", \"a\", \"b\"]);\n });\n\n it(\"treats different keys of the same type as distinct\", () => {\n const accumulator = new RequirementAccumulator();\n accumulator.addAltResolution(\"ALT\", 1);\n accumulator.addAltResolution(\"ALT\", 2);\n accumulator.addEnumVariant(\"P\", \"e\", 1);\n accumulator.addEnumVariant(\"P\", \"e\", 2);\n expect(accumulator.build().altResolutions).toHaveLength(2);\n expect(accumulator.build().enumVariants).toHaveLength(2);\n });\n\n it(\"build() applies cross-bucket priority dedup: tokenAmountAltRefs > mintAltRefs > altResolutions\", () => {\n const accumulator = new RequirementAccumulator();\n\n // (ALT, 1) added to all three buckets.\n accumulator.addAltResolution(\"ALT\", 1);\n accumulator.addMintAltRef(\"ALT\", 1);\n accumulator.addTokenAmountAltRef(\"ALT\", 1);\n\n // (ALT, 2) added to mintAltRefs and altResolutions.\n accumulator.addAltResolution(\"ALT\", 2);\n accumulator.addMintAltRef(\"ALT\", 2);\n\n // (ALT, 3) only in altResolutions.\n accumulator.addAltResolution(\"ALT\", 3);\n\n const result = accumulator.build();\n\n // tokenAmountAltRefs wins for (ALT,1) \u2192 stripped from altResolutions and mintAltRefs.\n // mintAltRefs wins for (ALT,2) \u2192 stripped from altResolutions.\n // (ALT,3) has no higher-priority entry \u2192 stays in altResolutions.\n expect(result.tokenAmountAltRefs).toEqual([\n { altAddress: \"ALT\", entryIndex: 1 },\n ]);\n expect(result.mintAltRefs).toEqual([{ altAddress: \"ALT\", entryIndex: 2 }]);\n expect(result.altResolutions).toEqual([\n { altAddress: \"ALT\", entryIndex: 3 },\n ]);\n });\n\n it(\"returns an empty set when nothing was added\", () => {\n expect(new RequirementAccumulator().build()).toEqual({\n instructionInfos: [],\n enumVariants: [],\n tokenInfos: [],\n tokenAccountStates: [],\n altResolutions: [],\n trustedNames: [],\n tokenAmountRefs: [],\n tokenAmountAltRefs: [],\n mintAltRefs: [],\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAAuC,oCAEvC,SAAS,yBAA0B,IAAM,CACvC,GAAG,+CAAgD,IAAM,CACvD,MAAMC,EAAc,IAAI,yBACxBA,EAAY,mBAAmB,IAAK,IAAI,EACxCA,EAAY,mBAAmB,IAAK,IAAI,EACxCA,EAAY,eAAe,IAAK,IAAK,CAAC,EACtCA,EAAY,eAAe,IAAK,IAAK,CAAC,EACtCA,EAAY,aAAa,MAAM,EAC/BA,EAAY,aAAa,MAAM,EAC/BA,EAAY,qBAAqB,KAAK,EACtCA,EAAY,qBAAqB,KAAK,EACtCA,EAAY,iBAAiB,MAAO,CAAC,EACrCA,EAAY,iBAAiB,MAAO,CAAC,EACrCA,EAAY,eAAe,MAAM,EACjCA,EAAY,eAAe,MAAM,EAEjC,MAAMC,EAASD,EAAY,MAAM,EACjC,OAAOC,EAAO,gBAAgB,EAAE,aAAa,CAAC,EAC9C,OAAOA,EAAO,YAAY,EAAE,aAAa,CAAC,EAC1C,OAAOA,EAAO,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC1C,OAAOA,EAAO,kBAAkB,EAAE,QAAQ,CAAC,KAAK,CAAC,EACjD,OAAOA,EAAO,cAAc,EAAE,QAAQ,CACpC,CAAE,WAAY,MAAO,WAAY,CAAE,CACrC,CAAC,EACD,OAAOA,EAAO,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,CAC9C,CAAC,EAED,GAAG,uCAAwC,IAAM,CAC/C,MAAMD,EAAc,IAAI,yBACxBA,EAAY,aAAa,GAAG,EAC5BA,EAAY,aAAa,GAAG,EAC5BA,EAAY,aAAa,GAAG,EAC5BA,EAAY,aAAa,GAAG,EAC5B,OAAOA,EAAY,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAK,IAAK,GAAG,CAAC,CAChE,CAAC,EAED,GAAG,qDAAsD,IAAM,CAC7D,MAAMA,EAAc,IAAI,yBACxBA,EAAY,iBAAiB,MAAO,CAAC,EACrCA,EAAY,iBAAiB,MAAO,CAAC,EACrCA,EAAY,eAAe,IAAK,IAAK,CAAC,EACtCA,EAAY,eAAe,IAAK,IAAK,CAAC,EACtC,OAAOA,EAAY,MAAM,EAAE,cAAc,EAAE,aAAa,CAAC,EACzD,OAAOA,EAAY,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,CACzD,CAAC,EAED,GAAG,iGAAkG,IAAM,CACzG,MAAMA,EAAc,IAAI,yBAGxBA,EAAY,iBAAiB,MAAO,CAAC,EACrCA,EAAY,cAAc,MAAO,CAAC,EAClCA,EAAY,qBAAqB,MAAO,CAAC,EAGzCA,EAAY,iBAAiB,MAAO,CAAC,EACrCA,EAAY,cAAc,MAAO,CAAC,EAGlCA,EAAY,iBAAiB,MAAO,CAAC,EAErC,MAAMC,EAASD,EAAY,MAAM,EAKjC,OAAOC,EAAO,kBAAkB,EAAE,QAAQ,CACxC,CAAE,WAAY,MAAO,WAAY,CAAE,CACrC,CAAC,EACD,OAAOA,EAAO,WAAW,EAAE,QAAQ,CAAC,CAAE,WAAY,MAAO,WAAY,CAAE,CAAC,CAAC,EACzE,OAAOA,EAAO,cAAc,EAAE,QAAQ,CACpC,CAAE,WAAY,MAAO,WAAY,CAAE,CACrC,CAAC,CACH,CAAC,EAED,GAAG,8CAA+C,IAAM,CACtD,OAAO,IAAI,yBAAuB,EAAE,MAAM,CAAC,EAAE,QAAQ,CACnD,iBAAkB,CAAC,EACnB,aAAc,CAAC,EACf,WAAY,CAAC,EACb,mBAAoB,CAAC,EACrB,eAAgB,CAAC,EACjB,aAAc,CAAC,EACf,gBAAiB,CAAC,EAClB,mBAAoB,CAAC,EACrB,YAAa,CAAC,CAChB,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["import_RequirementAccumulator", "accumulator", "result"]
|
|
7
7
|
}
|