@usesigil/kit 0.15.0 → 0.17.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 +56 -0
- package/dist/advanced-analytics.d.ts +3 -2
- package/dist/advanced-analytics.d.ts.map +1 -1
- package/dist/advanced-analytics.js +9 -42
- package/dist/advanced-analytics.js.map +1 -1
- package/dist/agent-bootstrap.d.ts +117 -0
- package/dist/agent-bootstrap.d.ts.map +1 -0
- package/dist/agent-bootstrap.js +211 -0
- package/dist/agent-bootstrap.js.map +1 -0
- package/dist/agent-errors.d.ts +20 -4
- package/dist/agent-errors.d.ts.map +1 -1
- package/dist/agent-errors.js +947 -377
- package/dist/agent-errors.js.map +1 -1
- package/dist/audit-log.d.ts +101 -0
- package/dist/audit-log.d.ts.map +1 -0
- package/dist/audit-log.js +145 -0
- package/dist/audit-log.js.map +1 -0
- package/dist/build-unsigned.d.ts +152 -0
- package/dist/build-unsigned.d.ts.map +1 -0
- package/dist/build-unsigned.js +152 -0
- package/dist/build-unsigned.js.map +1 -0
- package/dist/caip2-network.d.ts +171 -0
- package/dist/caip2-network.d.ts.map +1 -0
- package/dist/caip2-network.js +202 -0
- package/dist/caip2-network.js.map +1 -0
- package/dist/canonical-encode.d.ts +59 -0
- package/dist/canonical-encode.d.ts.map +1 -0
- package/dist/canonical-encode.js +141 -0
- package/dist/canonical-encode.js.map +1 -0
- package/dist/cosign-helper.d.ts +264 -0
- package/dist/cosign-helper.d.ts.map +1 -0
- package/dist/cosign-helper.js +147 -0
- package/dist/cosign-helper.js.map +1 -0
- package/dist/create-vault.d.ts +102 -1
- package/dist/create-vault.d.ts.map +1 -1
- package/dist/create-vault.js +108 -9
- package/dist/create-vault.js.map +1 -1
- package/dist/dashboard/close-vault.d.ts +110 -0
- package/dist/dashboard/close-vault.d.ts.map +1 -0
- package/dist/dashboard/close-vault.js +165 -0
- package/dist/dashboard/close-vault.js.map +1 -0
- package/dist/dashboard/errors.d.ts +37 -0
- package/dist/dashboard/errors.d.ts.map +1 -1
- package/dist/dashboard/errors.js +81 -1
- package/dist/dashboard/errors.js.map +1 -1
- package/dist/dashboard/from-json.d.ts.map +1 -1
- package/dist/dashboard/from-json.js +1 -2
- package/dist/dashboard/from-json.js.map +1 -1
- package/dist/dashboard/index.d.ts +204 -31
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +290 -49
- package/dist/dashboard/index.js.map +1 -1
- package/dist/dashboard/mutations.d.ts +160 -10
- package/dist/dashboard/mutations.d.ts.map +1 -1
- package/dist/dashboard/mutations.js +584 -66
- package/dist/dashboard/mutations.js.map +1 -1
- package/dist/dashboard/post-assertion-validation.d.ts +88 -0
- package/dist/dashboard/post-assertion-validation.d.ts.map +1 -0
- package/dist/dashboard/post-assertion-validation.js +312 -0
- package/dist/dashboard/post-assertion-validation.js.map +1 -0
- package/dist/dashboard/reads.d.ts +92 -1
- package/dist/dashboard/reads.d.ts.map +1 -1
- package/dist/dashboard/reads.js +244 -26
- package/dist/dashboard/reads.js.map +1 -1
- package/dist/dashboard/types.d.ts +172 -21
- package/dist/dashboard/types.d.ts.map +1 -1
- package/dist/errors/agent-errors.generated.d.ts +21 -0
- package/dist/errors/agent-errors.generated.d.ts.map +1 -0
- package/dist/errors/agent-errors.generated.js +133 -0
- package/dist/errors/agent-errors.generated.js.map +1 -0
- package/dist/errors/codes.d.ts +21 -2
- package/dist/errors/codes.d.ts.map +1 -1
- package/dist/errors/codes.js +20 -1
- package/dist/errors/codes.js.map +1 -1
- package/dist/errors/context.d.ts +9 -1
- package/dist/errors/context.d.ts.map +1 -1
- package/dist/event-analytics.d.ts +1 -3
- package/dist/event-analytics.d.ts.map +1 -1
- package/dist/event-analytics.js +28 -81
- package/dist/event-analytics.js.map +1 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +23 -13
- package/dist/events.js.map +1 -1
- package/dist/generated/accounts/agentSpendOverlay.d.ts +60 -0
- package/dist/generated/accounts/agentSpendOverlay.d.ts.map +1 -1
- package/dist/generated/accounts/agentSpendOverlay.js +6 -2
- package/dist/generated/accounts/agentSpendOverlay.js.map +1 -1
- package/dist/generated/accounts/agentVault.d.ts +168 -4
- package/dist/generated/accounts/agentVault.d.ts.map +1 -1
- package/dist/generated/accounts/agentVault.js +11 -3
- package/dist/generated/accounts/agentVault.js.map +1 -1
- package/dist/generated/accounts/auditLogRejected.d.ts +66 -0
- package/dist/generated/accounts/auditLogRejected.d.ts.map +1 -0
- package/dist/generated/accounts/auditLogRejected.js +68 -0
- package/dist/generated/accounts/auditLogRejected.js.map +1 -0
- package/dist/generated/accounts/auditLogSuccess.d.ts +78 -0
- package/dist/generated/accounts/auditLogSuccess.d.ts.map +1 -0
- package/dist/generated/accounts/auditLogSuccess.js +68 -0
- package/dist/generated/accounts/auditLogSuccess.js.map +1 -0
- package/dist/generated/accounts/index.d.ts +4 -4
- package/dist/generated/accounts/index.d.ts.map +1 -1
- package/dist/generated/accounts/index.js +4 -4
- package/dist/generated/accounts/index.js.map +1 -1
- package/dist/generated/accounts/pendingAgentGrant.d.ts +199 -0
- package/dist/generated/accounts/pendingAgentGrant.d.ts.map +1 -0
- package/dist/generated/accounts/pendingAgentGrant.js +75 -0
- package/dist/generated/accounts/pendingAgentGrant.js.map +1 -0
- package/dist/generated/accounts/pendingAgentPermissionsUpdate.d.ts +76 -0
- package/dist/generated/accounts/pendingAgentPermissionsUpdate.d.ts.map +1 -1
- package/dist/generated/accounts/pendingAgentPermissionsUpdate.js +9 -1
- package/dist/generated/accounts/pendingAgentPermissionsUpdate.js.map +1 -1
- package/dist/generated/accounts/pendingOwnershipTransfer.d.ts +131 -0
- package/dist/generated/accounts/pendingOwnershipTransfer.d.ts.map +1 -0
- package/dist/generated/accounts/pendingOwnershipTransfer.js +76 -0
- package/dist/generated/accounts/pendingOwnershipTransfer.js.map +1 -0
- package/dist/generated/accounts/pendingPolicyUpdate.d.ts +220 -4
- package/dist/generated/accounts/pendingPolicyUpdate.d.ts.map +1 -1
- package/dist/generated/accounts/pendingPolicyUpdate.js +25 -5
- package/dist/generated/accounts/pendingPolicyUpdate.js.map +1 -1
- package/dist/generated/accounts/policyConfig.d.ts +495 -34
- package/dist/generated/accounts/policyConfig.d.ts.map +1 -1
- package/dist/generated/accounts/policyConfig.js +34 -7
- package/dist/generated/accounts/policyConfig.js.map +1 -1
- package/dist/generated/accounts/postExecutionAssertions.d.ts +2 -2
- package/dist/generated/accounts/postExecutionAssertions.d.ts.map +1 -1
- package/dist/generated/accounts/postExecutionAssertions.js +3 -3
- package/dist/generated/accounts/sessionAuthority.d.ts +154 -12
- package/dist/generated/accounts/sessionAuthority.d.ts.map +1 -1
- package/dist/generated/accounts/sessionAuthority.js +12 -10
- package/dist/generated/accounts/sessionAuthority.js.map +1 -1
- package/dist/generated/accounts/spendTracker.d.ts +83 -3
- package/dist/generated/accounts/spendTracker.d.ts.map +1 -1
- package/dist/generated/accounts/spendTracker.js +14 -2
- package/dist/generated/accounts/spendTracker.js.map +1 -1
- package/dist/generated/errors/sigil.d.ts +160 -100
- package/dist/generated/errors/sigil.d.ts.map +1 -1
- package/dist/generated/errors/sigil.js +214 -124
- package/dist/generated/errors/sigil.js.map +1 -1
- package/dist/generated/event-discriminators.d.ts.map +1 -1
- package/dist/generated/event-discriminators.js +11 -13
- package/dist/generated/event-discriminators.js.map +1 -1
- package/dist/generated/instructions/acceptOwnershipTransfer.d.ts +142 -0
- package/dist/generated/instructions/acceptOwnershipTransfer.d.ts.map +1 -0
- package/dist/generated/instructions/acceptOwnershipTransfer.js +171 -0
- package/dist/generated/instructions/acceptOwnershipTransfer.js.map +1 -0
- package/dist/generated/instructions/acceptOwnershipTransferMultisig.d.ts +142 -0
- package/dist/generated/instructions/acceptOwnershipTransferMultisig.d.ts.map +1 -0
- package/dist/generated/instructions/acceptOwnershipTransferMultisig.js +171 -0
- package/dist/generated/instructions/acceptOwnershipTransferMultisig.js.map +1 -0
- package/dist/generated/instructions/applyAgentGrant.d.ts +100 -0
- package/dist/generated/instructions/applyAgentGrant.d.ts.map +1 -0
- package/dist/generated/instructions/{applyConstraintsUpdate.js → applyAgentGrant.js} +66 -42
- package/dist/generated/instructions/applyAgentGrant.js.map +1 -0
- package/dist/generated/instructions/applyAgentPermissionsUpdate.d.ts +31 -8
- package/dist/generated/instructions/applyAgentPermissionsUpdate.d.ts.map +1 -1
- package/dist/generated/instructions/applyAgentPermissionsUpdate.js +38 -2
- package/dist/generated/instructions/applyAgentPermissionsUpdate.js.map +1 -1
- package/dist/generated/instructions/applyPendingPolicy.d.ts +18 -7
- package/dist/generated/instructions/applyPendingPolicy.d.ts.map +1 -1
- package/dist/generated/instructions/applyPendingPolicy.js +38 -2
- package/dist/generated/instructions/applyPendingPolicy.js.map +1 -1
- package/dist/generated/instructions/cancelAgentGrant.d.ts +106 -0
- package/dist/generated/instructions/cancelAgentGrant.d.ts.map +1 -0
- package/dist/generated/instructions/{allocatePendingConstraintsPda.js → cancelAgentGrant.js} +54 -42
- package/dist/generated/instructions/cancelAgentGrant.js.map +1 -0
- package/dist/generated/instructions/cancelOwnershipTransfer.d.ts +121 -0
- package/dist/generated/instructions/cancelOwnershipTransfer.d.ts.map +1 -0
- package/dist/generated/instructions/{queueCloseConstraints.js → cancelOwnershipTransfer.js} +58 -44
- package/dist/generated/instructions/cancelOwnershipTransfer.js.map +1 -0
- package/dist/generated/instructions/closePostAssertions.d.ts +6 -1
- package/dist/generated/instructions/closePostAssertions.d.ts.map +1 -1
- package/dist/generated/instructions/closePostAssertions.js +11 -3
- package/dist/generated/instructions/closePostAssertions.js.map +1 -1
- package/dist/generated/instructions/closeVault.d.ts +40 -8
- package/dist/generated/instructions/closeVault.d.ts.map +1 -1
- package/dist/generated/instructions/closeVault.js +40 -2
- package/dist/generated/instructions/closeVault.js.map +1 -1
- package/dist/generated/instructions/createPostAssertions.d.ts +4 -0
- package/dist/generated/instructions/createPostAssertions.d.ts.map +1 -1
- package/dist/generated/instructions/createPostAssertions.js +2 -0
- package/dist/generated/instructions/createPostAssertions.js.map +1 -1
- package/dist/generated/instructions/depositFunds.d.ts +21 -10
- package/dist/generated/instructions/depositFunds.d.ts.map +1 -1
- package/dist/generated/instructions/depositFunds.js +37 -2
- package/dist/generated/instructions/depositFunds.js.map +1 -1
- package/dist/generated/instructions/finalizeSession.d.ts +49 -7
- package/dist/generated/instructions/finalizeSession.d.ts.map +1 -1
- package/dist/generated/instructions/finalizeSession.js +59 -2
- package/dist/generated/instructions/finalizeSession.js.map +1 -1
- package/dist/generated/instructions/freezeVault.d.ts +39 -5
- package/dist/generated/instructions/freezeVault.d.ts.map +1 -1
- package/dist/generated/instructions/freezeVault.js +77 -5
- package/dist/generated/instructions/freezeVault.js.map +1 -1
- package/dist/generated/instructions/index.d.ts +10 -14
- package/dist/generated/instructions/index.d.ts.map +1 -1
- package/dist/generated/instructions/index.js +10 -14
- package/dist/generated/instructions/index.js.map +1 -1
- package/dist/generated/instructions/initializeVault.d.ts +79 -13
- package/dist/generated/instructions/initializeVault.d.ts.map +1 -1
- package/dist/generated/instructions/initializeVault.js +57 -5
- package/dist/generated/instructions/initializeVault.js.map +1 -1
- package/dist/generated/instructions/initiateOwnershipTransfer.d.ts +106 -0
- package/dist/generated/instructions/initiateOwnershipTransfer.d.ts.map +1 -0
- package/dist/generated/instructions/initiateOwnershipTransfer.js +181 -0
- package/dist/generated/instructions/initiateOwnershipTransfer.js.map +1 -0
- package/dist/generated/instructions/pauseAgent.d.ts +49 -5
- package/dist/generated/instructions/pauseAgent.d.ts.map +1 -1
- package/dist/generated/instructions/pauseAgent.js +80 -5
- package/dist/generated/instructions/pauseAgent.js.map +1 -1
- package/dist/generated/instructions/promoteGraylistDestination.d.ts +56 -0
- package/dist/generated/instructions/promoteGraylistDestination.d.ts.map +1 -0
- package/dist/generated/instructions/{createInstructionConstraints.js → promoteGraylistDestination.js} +23 -40
- package/dist/generated/instructions/promoteGraylistDestination.js.map +1 -0
- package/dist/generated/instructions/queueAgentGrant.d.ts +113 -0
- package/dist/generated/instructions/queueAgentGrant.d.ts.map +1 -0
- package/dist/generated/instructions/queueAgentGrant.js +181 -0
- package/dist/generated/instructions/queueAgentGrant.js.map +1 -0
- package/dist/generated/instructions/queueAgentPermissionsUpdate.d.ts +8 -0
- package/dist/generated/instructions/queueAgentPermissionsUpdate.d.ts.map +1 -1
- package/dist/generated/instructions/queueAgentPermissionsUpdate.js +4 -0
- package/dist/generated/instructions/queueAgentPermissionsUpdate.js.map +1 -1
- package/dist/generated/instructions/queuePolicyUpdate.d.ts +40 -8
- package/dist/generated/instructions/queuePolicyUpdate.d.ts.map +1 -1
- package/dist/generated/instructions/queuePolicyUpdate.js +21 -5
- package/dist/generated/instructions/queuePolicyUpdate.js.map +1 -1
- package/dist/generated/instructions/reactivateVault.d.ts +71 -5
- package/dist/generated/instructions/reactivateVault.d.ts.map +1 -1
- package/dist/generated/instructions/reactivateVault.js +80 -5
- package/dist/generated/instructions/reactivateVault.js.map +1 -1
- package/dist/generated/instructions/recordAgentViolation.d.ts +89 -0
- package/dist/generated/instructions/recordAgentViolation.d.ts.map +1 -0
- package/dist/generated/instructions/recordAgentViolation.js +152 -0
- package/dist/generated/instructions/recordAgentViolation.js.map +1 -0
- package/dist/generated/instructions/registerAgent.d.ts +84 -6
- package/dist/generated/instructions/registerAgent.d.ts.map +1 -1
- package/dist/generated/instructions/registerAgent.js +81 -4
- package/dist/generated/instructions/registerAgent.js.map +1 -1
- package/dist/generated/instructions/revokeAgent.d.ts +49 -6
- package/dist/generated/instructions/revokeAgent.d.ts.map +1 -1
- package/dist/generated/instructions/revokeAgent.js +81 -4
- package/dist/generated/instructions/revokeAgent.js.map +1 -1
- package/dist/generated/instructions/setObserveOnly.d.ts +56 -0
- package/dist/generated/instructions/setObserveOnly.d.ts.map +1 -0
- package/dist/generated/instructions/setObserveOnly.js +111 -0
- package/dist/generated/instructions/setObserveOnly.js.map +1 -0
- package/dist/generated/instructions/unpauseAgent.d.ts +46 -5
- package/dist/generated/instructions/unpauseAgent.d.ts.map +1 -1
- package/dist/generated/instructions/unpauseAgent.js +80 -5
- package/dist/generated/instructions/unpauseAgent.js.map +1 -1
- package/dist/generated/instructions/validateAndAuthorize.d.ts +29 -0
- package/dist/generated/instructions/validateAndAuthorize.d.ts.map +1 -1
- package/dist/generated/instructions/validateAndAuthorize.js +4 -0
- package/dist/generated/instructions/validateAndAuthorize.js.map +1 -1
- package/dist/generated/instructions/withdrawFunds.d.ts +53 -11
- package/dist/generated/instructions/withdrawFunds.d.ts.map +1 -1
- package/dist/generated/instructions/withdrawFunds.js +51 -2
- package/dist/generated/instructions/withdrawFunds.js.map +1 -1
- package/dist/generated/programs/sigil.d.ts +79 -95
- package/dist/generated/programs/sigil.d.ts.map +1 -1
- package/dist/generated/programs/sigil.js +139 -187
- package/dist/generated/programs/sigil.js.map +1 -1
- package/dist/generated/types/actionAuthorized.d.ts +0 -2
- package/dist/generated/types/actionAuthorized.d.ts.map +1 -1
- package/dist/generated/types/actionAuthorized.js +0 -2
- package/dist/generated/types/actionAuthorized.js.map +1 -1
- package/dist/generated/types/agentAutoRevoked.d.ts +31 -0
- package/dist/generated/types/agentAutoRevoked.d.ts.map +1 -0
- package/dist/generated/types/{pdaAllocated.js → agentAutoRevoked.js} +12 -10
- package/dist/generated/types/agentAutoRevoked.js.map +1 -0
- package/dist/generated/types/agentEntry.d.ts +48 -0
- package/dist/generated/types/agentEntry.d.ts.map +1 -1
- package/dist/generated/types/agentEntry.js +4 -2
- package/dist/generated/types/agentEntry.js.map +1 -1
- package/dist/generated/types/agentGrantApplied.d.ts +38 -0
- package/dist/generated/types/agentGrantApplied.d.ts.map +1 -0
- package/dist/generated/types/agentGrantApplied.js +34 -0
- package/dist/generated/types/agentGrantApplied.js.map +1 -0
- package/dist/generated/types/agentGrantCancelled.d.ts +33 -0
- package/dist/generated/types/agentGrantCancelled.d.ts.map +1 -0
- package/dist/generated/types/agentGrantCancelled.js +28 -0
- package/dist/generated/types/agentGrantCancelled.js.map +1 -0
- package/dist/generated/types/agentGrantQueued.d.ts +38 -0
- package/dist/generated/types/agentGrantQueued.d.ts.map +1 -0
- package/dist/generated/types/agentGrantQueued.js +32 -0
- package/dist/generated/types/agentGrantQueued.js.map +1 -0
- package/dist/generated/types/auditEntry.d.ts +120 -0
- package/dist/generated/types/auditEntry.d.ts.map +1 -0
- package/dist/generated/types/auditEntry.js +34 -0
- package/dist/generated/types/auditEntry.js.map +1 -0
- package/dist/generated/types/destinationGraylistEntry.d.ts +32 -0
- package/dist/generated/types/destinationGraylistEntry.d.ts.map +1 -0
- package/dist/generated/types/destinationGraylistEntry.js +24 -0
- package/dist/generated/types/destinationGraylistEntry.js.map +1 -0
- package/dist/generated/types/graylistEntered.d.ts +31 -0
- package/dist/generated/types/graylistEntered.d.ts.map +1 -0
- package/dist/generated/types/graylistEntered.js +30 -0
- package/dist/generated/types/graylistEntered.js.map +1 -0
- package/dist/generated/types/graylistPromoted.d.ts +29 -0
- package/dist/generated/types/graylistPromoted.d.ts.map +1 -0
- package/dist/generated/types/graylistPromoted.js +28 -0
- package/dist/generated/types/graylistPromoted.js.map +1 -0
- package/dist/generated/types/index.d.ts +13 -21
- package/dist/generated/types/index.d.ts.map +1 -1
- package/dist/generated/types/index.js +13 -21
- package/dist/generated/types/index.js.map +1 -1
- package/dist/generated/types/observeOnlyChanged.d.ts +33 -0
- package/dist/generated/types/observeOnlyChanged.d.ts.map +1 -0
- package/dist/generated/types/observeOnlyChanged.js +32 -0
- package/dist/generated/types/observeOnlyChanged.js.map +1 -0
- package/dist/generated/types/ownershipTransferAccepted.d.ts +32 -0
- package/dist/generated/types/ownershipTransferAccepted.d.ts.map +1 -0
- package/dist/generated/types/ownershipTransferAccepted.js +30 -0
- package/dist/generated/types/ownershipTransferAccepted.js.map +1 -0
- package/dist/generated/types/ownershipTransferCancelled.d.ts +29 -0
- package/dist/generated/types/ownershipTransferCancelled.d.ts.map +1 -0
- package/dist/generated/types/ownershipTransferCancelled.js +28 -0
- package/dist/generated/types/ownershipTransferCancelled.js.map +1 -0
- package/dist/generated/types/ownershipTransferInitiated.d.ts +33 -0
- package/dist/generated/types/ownershipTransferInitiated.d.ts.map +1 -0
- package/dist/generated/types/ownershipTransferInitiated.js +30 -0
- package/dist/generated/types/ownershipTransferInitiated.js.map +1 -0
- package/dist/generated/types/perRecipientCounter.d.ts +61 -0
- package/dist/generated/types/perRecipientCounter.d.ts.map +1 -0
- package/dist/generated/types/perRecipientCounter.js +26 -0
- package/dist/generated/types/perRecipientCounter.js.map +1 -0
- package/dist/generated/types/postAssertionEntry.d.ts +14 -7
- package/dist/generated/types/postAssertionEntry.d.ts.map +1 -1
- package/dist/generated/types/postAssertionEntry.js +5 -7
- package/dist/generated/types/postAssertionEntry.js.map +1 -1
- package/dist/generated/types/postAssertionEntryZC.d.ts +53 -22
- package/dist/generated/types/postAssertionEntryZC.d.ts.map +1 -1
- package/dist/generated/types/postAssertionEntryZC.js +4 -6
- package/dist/generated/types/postAssertionEntryZC.js.map +1 -1
- package/dist/generated/types/sessionFinalized.d.ts +0 -4
- package/dist/generated/types/sessionFinalized.d.ts.map +1 -1
- package/dist/generated/types/sessionFinalized.js +0 -2
- package/dist/generated/types/sessionFinalized.js.map +1 -1
- package/dist/generated/types/vaultFrozen.d.ts +26 -0
- package/dist/generated/types/vaultFrozen.d.ts.map +1 -1
- package/dist/generated/types/vaultFrozen.js +5 -1
- package/dist/generated/types/vaultFrozen.js.map +1 -1
- package/dist/index.d.ts +35 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +81 -7
- package/dist/index.js.map +1 -1
- package/dist/inscribe.d.ts +0 -4
- package/dist/inscribe.d.ts.map +1 -1
- package/dist/inscribe.js +0 -1
- package/dist/inscribe.js.map +1 -1
- package/dist/inspector.d.ts +0 -23
- package/dist/inspector.d.ts.map +1 -1
- package/dist/inspector.js +0 -52
- package/dist/inspector.js.map +1 -1
- package/dist/kit-adapter.d.ts +1 -1
- package/dist/kit-adapter.d.ts.map +1 -1
- package/dist/kit-adapter.js +1 -1
- package/dist/kit-adapter.js.map +1 -1
- package/dist/logger.d.ts +48 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +36 -0
- package/dist/logger.js.map +1 -1
- package/dist/multisig-detection.d.ts +83 -0
- package/dist/multisig-detection.d.ts.map +1 -0
- package/dist/multisig-detection.js +128 -0
- package/dist/multisig-detection.js.map +1 -0
- package/dist/owner-transaction.d.ts +8 -0
- package/dist/owner-transaction.d.ts.map +1 -1
- package/dist/owner-transaction.js +1 -0
- package/dist/owner-transaction.js.map +1 -1
- package/dist/ownership-transfer.d.ts +79 -0
- package/dist/ownership-transfer.d.ts.map +1 -0
- package/dist/ownership-transfer.js +66 -0
- package/dist/ownership-transfer.js.map +1 -0
- package/dist/policy/compute-cosign-digest.d.ts +193 -0
- package/dist/policy/compute-cosign-digest.d.ts.map +1 -0
- package/dist/policy/compute-cosign-digest.js +318 -0
- package/dist/policy/compute-cosign-digest.js.map +1 -0
- package/dist/policy/compute-policy-preview-digest.d.ts +258 -0
- package/dist/policy/compute-policy-preview-digest.d.ts.map +1 -0
- package/dist/policy/compute-policy-preview-digest.js +351 -0
- package/dist/policy/compute-policy-preview-digest.js.map +1 -0
- package/dist/policy-attestation.d.ts +51 -0
- package/dist/policy-attestation.d.ts.map +1 -0
- package/dist/policy-attestation.js +43 -0
- package/dist/policy-attestation.js.map +1 -0
- package/dist/presets.d.ts +1 -7
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +0 -5
- package/dist/presets.js.map +1 -1
- package/dist/preview-create-vault.d.ts +280 -0
- package/dist/preview-create-vault.d.ts.map +1 -0
- package/dist/preview-create-vault.js +498 -0
- package/dist/preview-create-vault.js.map +1 -0
- package/dist/resolve-accounts.d.ts +75 -10
- package/dist/resolve-accounts.d.ts.map +1 -1
- package/dist/resolve-accounts.js +68 -32
- package/dist/resolve-accounts.js.map +1 -1
- package/dist/rpc-helpers.d.ts +29 -3
- package/dist/rpc-helpers.d.ts.map +1 -1
- package/dist/rpc-helpers.js +51 -12
- package/dist/rpc-helpers.js.map +1 -1
- package/dist/seal/intent-digest.d.ts +195 -0
- package/dist/seal/intent-digest.d.ts.map +1 -0
- package/dist/seal/intent-digest.js +372 -0
- package/dist/seal/intent-digest.js.map +1 -0
- package/dist/seal.d.ts +166 -3
- package/dist/seal.d.ts.map +1 -1
- package/dist/seal.js +428 -8
- package/dist/seal.js.map +1 -1
- package/dist/security-analytics.d.ts +3 -3
- package/dist/security-analytics.d.ts.map +1 -1
- package/dist/security-analytics.js +13 -128
- package/dist/security-analytics.js.map +1 -1
- package/dist/session-mint.d.ts +72 -0
- package/dist/session-mint.d.ts.map +1 -0
- package/dist/session-mint.js +59 -0
- package/dist/session-mint.js.map +1 -0
- package/dist/sigil.d.ts +0 -4
- package/dist/sigil.d.ts.map +1 -1
- package/dist/simulation.d.ts +19 -0
- package/dist/simulation.d.ts.map +1 -1
- package/dist/simulation.js +211 -138
- package/dist/simulation.js.map +1 -1
- package/dist/squads-detection.d.ts +135 -0
- package/dist/squads-detection.d.ts.map +1 -0
- package/dist/squads-detection.js +124 -0
- package/dist/squads-detection.js.map +1 -0
- package/dist/state-resolver.d.ts +0 -16
- package/dist/state-resolver.d.ts.map +1 -1
- package/dist/state-resolver.js +162 -97
- package/dist/state-resolver.js.map +1 -1
- package/dist/testing/devnet.d.ts +40 -1
- package/dist/testing/devnet.d.ts.map +1 -1
- package/dist/testing/devnet.js +333 -45
- package/dist/testing/devnet.js.map +1 -1
- package/dist/testing/errors/expect.d.ts +137 -0
- package/dist/testing/errors/expect.d.ts.map +1 -0
- package/dist/testing/errors/expect.js +372 -0
- package/dist/testing/errors/expect.js.map +1 -0
- package/dist/testing/errors/index.d.ts +3 -0
- package/dist/testing/errors/index.d.ts.map +1 -0
- package/dist/testing/errors/index.js +8 -0
- package/dist/testing/errors/index.js.map +1 -0
- package/dist/testing/errors/names.generated.d.ts +211 -0
- package/dist/testing/errors/names.generated.d.ts.map +1 -0
- package/dist/testing/errors/names.generated.js +206 -0
- package/dist/testing/errors/names.generated.js.map +1 -0
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +8 -0
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/mock-rpc.d.ts +16 -0
- package/dist/testing/mock-rpc.d.ts.map +1 -1
- package/dist/testing/mock-rpc.js +27 -0
- package/dist/testing/mock-rpc.js.map +1 -1
- package/dist/testing/mock-state.d.ts +2 -0
- package/dist/testing/mock-state.d.ts.map +1 -1
- package/dist/testing/mock-state.js +45 -6
- package/dist/testing/mock-state.js.map +1 -1
- package/dist/types.d.ts +5 -15
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +11 -69
- package/dist/types.js.map +1 -1
- package/dist/vault-analytics.d.ts +0 -2
- package/dist/vault-analytics.d.ts.map +1 -1
- package/dist/vault-analytics.js +1 -9
- package/dist/vault-analytics.js.map +1 -1
- package/package.json +12 -5
- package/dist/dashboard/constraint-reads.d.ts +0 -50
- package/dist/dashboard/constraint-reads.d.ts.map +0 -1
- package/dist/dashboard/constraint-reads.js +0 -119
- package/dist/dashboard/constraint-reads.js.map +0 -1
- package/dist/generated/accounts/escrowDeposit.d.ts +0 -50
- package/dist/generated/accounts/escrowDeposit.d.ts.map +0 -1
- package/dist/generated/accounts/escrowDeposit.js +0 -76
- package/dist/generated/accounts/escrowDeposit.js.map +0 -1
- package/dist/generated/accounts/instructionConstraints.d.ts +0 -46
- package/dist/generated/accounts/instructionConstraints.d.ts.map +0 -1
- package/dist/generated/accounts/instructionConstraints.js +0 -73
- package/dist/generated/accounts/instructionConstraints.js.map +0 -1
- package/dist/generated/accounts/pendingCloseConstraints.d.ts +0 -37
- package/dist/generated/accounts/pendingCloseConstraints.d.ts.map +0 -1
- package/dist/generated/accounts/pendingCloseConstraints.js +0 -66
- package/dist/generated/accounts/pendingCloseConstraints.js.map +0 -1
- package/dist/generated/accounts/pendingConstraintsUpdate.d.ts +0 -62
- package/dist/generated/accounts/pendingConstraintsUpdate.d.ts.map +0 -1
- package/dist/generated/accounts/pendingConstraintsUpdate.js +0 -75
- package/dist/generated/accounts/pendingConstraintsUpdate.js.map +0 -1
- package/dist/generated/instructions/allocateConstraintsPda.d.ts +0 -62
- package/dist/generated/instructions/allocateConstraintsPda.d.ts.map +0 -1
- package/dist/generated/instructions/allocateConstraintsPda.js +0 -134
- package/dist/generated/instructions/allocateConstraintsPda.js.map +0 -1
- package/dist/generated/instructions/allocatePendingConstraintsPda.d.ts +0 -66
- package/dist/generated/instructions/allocatePendingConstraintsPda.d.ts.map +0 -1
- package/dist/generated/instructions/allocatePendingConstraintsPda.js.map +0 -1
- package/dist/generated/instructions/applyCloseConstraints.d.ts +0 -59
- package/dist/generated/instructions/applyCloseConstraints.d.ts.map +0 -1
- package/dist/generated/instructions/applyCloseConstraints.js +0 -143
- package/dist/generated/instructions/applyCloseConstraints.js.map +0 -1
- package/dist/generated/instructions/applyConstraintsUpdate.d.ts +0 -62
- package/dist/generated/instructions/applyConstraintsUpdate.d.ts.map +0 -1
- package/dist/generated/instructions/applyConstraintsUpdate.js.map +0 -1
- package/dist/generated/instructions/cancelCloseConstraints.d.ts +0 -51
- package/dist/generated/instructions/cancelCloseConstraints.d.ts.map +0 -1
- package/dist/generated/instructions/cancelCloseConstraints.js +0 -115
- package/dist/generated/instructions/cancelCloseConstraints.js.map +0 -1
- package/dist/generated/instructions/cancelConstraintsUpdate.d.ts +0 -51
- package/dist/generated/instructions/cancelConstraintsUpdate.d.ts.map +0 -1
- package/dist/generated/instructions/cancelConstraintsUpdate.js +0 -115
- package/dist/generated/instructions/cancelConstraintsUpdate.js.map +0 -1
- package/dist/generated/instructions/closeSettledEscrow.d.ts +0 -72
- package/dist/generated/instructions/closeSettledEscrow.d.ts.map +0 -1
- package/dist/generated/instructions/closeSettledEscrow.js +0 -127
- package/dist/generated/instructions/closeSettledEscrow.js.map +0 -1
- package/dist/generated/instructions/createEscrow.d.ts +0 -131
- package/dist/generated/instructions/createEscrow.d.ts.map +0 -1
- package/dist/generated/instructions/createEscrow.js +0 -272
- package/dist/generated/instructions/createEscrow.js.map +0 -1
- package/dist/generated/instructions/createInstructionConstraints.d.ts +0 -68
- package/dist/generated/instructions/createInstructionConstraints.d.ts.map +0 -1
- package/dist/generated/instructions/createInstructionConstraints.js.map +0 -1
- package/dist/generated/instructions/extendPda.d.ts +0 -52
- package/dist/generated/instructions/extendPda.d.ts.map +0 -1
- package/dist/generated/instructions/extendPda.js +0 -86
- package/dist/generated/instructions/extendPda.js.map +0 -1
- package/dist/generated/instructions/queueCloseConstraints.d.ts +0 -66
- package/dist/generated/instructions/queueCloseConstraints.d.ts.map +0 -1
- package/dist/generated/instructions/queueCloseConstraints.js.map +0 -1
- package/dist/generated/instructions/queueConstraintsUpdate.d.ts +0 -75
- package/dist/generated/instructions/queueConstraintsUpdate.d.ts.map +0 -1
- package/dist/generated/instructions/queueConstraintsUpdate.js +0 -154
- package/dist/generated/instructions/queueConstraintsUpdate.js.map +0 -1
- package/dist/generated/instructions/refundEscrow.d.ts +0 -74
- package/dist/generated/instructions/refundEscrow.d.ts.map +0 -1
- package/dist/generated/instructions/refundEscrow.js +0 -142
- package/dist/generated/instructions/refundEscrow.js.map +0 -1
- package/dist/generated/instructions/settleEscrow.d.ts +0 -80
- package/dist/generated/instructions/settleEscrow.d.ts.map +0 -1
- package/dist/generated/instructions/settleEscrow.js +0 -173
- package/dist/generated/instructions/settleEscrow.js.map +0 -1
- package/dist/generated/types/accountConstraint.d.ts +0 -18
- package/dist/generated/types/accountConstraint.d.ts.map +0 -1
- package/dist/generated/types/accountConstraint.js +0 -24
- package/dist/generated/types/accountConstraint.js.map +0 -1
- package/dist/generated/types/accountConstraintZC.d.ts +0 -18
- package/dist/generated/types/accountConstraintZC.d.ts.map +0 -1
- package/dist/generated/types/accountConstraintZC.js +0 -26
- package/dist/generated/types/accountConstraintZC.js.map +0 -1
- package/dist/generated/types/closeConstraintsApplied.d.ts +0 -20
- package/dist/generated/types/closeConstraintsApplied.d.ts.map +0 -1
- package/dist/generated/types/closeConstraintsApplied.js +0 -24
- package/dist/generated/types/closeConstraintsApplied.js.map +0 -1
- package/dist/generated/types/closeConstraintsCancelled.d.ts +0 -16
- package/dist/generated/types/closeConstraintsCancelled.d.ts.map +0 -1
- package/dist/generated/types/closeConstraintsCancelled.js +0 -18
- package/dist/generated/types/closeConstraintsCancelled.js.map +0 -1
- package/dist/generated/types/closeConstraintsQueued.d.ts +0 -20
- package/dist/generated/types/closeConstraintsQueued.d.ts.map +0 -1
- package/dist/generated/types/closeConstraintsQueued.js +0 -24
- package/dist/generated/types/closeConstraintsQueued.js.map +0 -1
- package/dist/generated/types/constraintEntry.d.ts +0 -39
- package/dist/generated/types/constraintEntry.d.ts.map +0 -1
- package/dist/generated/types/constraintEntry.js +0 -31
- package/dist/generated/types/constraintEntry.js.map +0 -1
- package/dist/generated/types/constraintEntryZC.d.ts +0 -68
- package/dist/generated/types/constraintEntryZC.d.ts.map +0 -1
- package/dist/generated/types/constraintEntryZC.js +0 -49
- package/dist/generated/types/constraintEntryZC.js.map +0 -1
- package/dist/generated/types/constraintOperator.d.ts +0 -22
- package/dist/generated/types/constraintOperator.d.ts.map +0 -1
- package/dist/generated/types/constraintOperator.js +0 -28
- package/dist/generated/types/constraintOperator.js.map +0 -1
- package/dist/generated/types/constraintsChangeApplied.d.ts +0 -30
- package/dist/generated/types/constraintsChangeApplied.d.ts.map +0 -1
- package/dist/generated/types/constraintsChangeApplied.js +0 -32
- package/dist/generated/types/constraintsChangeApplied.js.map +0 -1
- package/dist/generated/types/constraintsChangeCancelled.d.ts +0 -16
- package/dist/generated/types/constraintsChangeCancelled.d.ts.map +0 -1
- package/dist/generated/types/constraintsChangeCancelled.js +0 -18
- package/dist/generated/types/constraintsChangeCancelled.js.map +0 -1
- package/dist/generated/types/constraintsChangeQueued.d.ts +0 -30
- package/dist/generated/types/constraintsChangeQueued.d.ts.map +0 -1
- package/dist/generated/types/constraintsChangeQueued.js +0 -32
- package/dist/generated/types/constraintsChangeQueued.js.map +0 -1
- package/dist/generated/types/dataConstraint.d.ts +0 -23
- package/dist/generated/types/dataConstraint.d.ts.map +0 -1
- package/dist/generated/types/dataConstraint.js +0 -27
- package/dist/generated/types/dataConstraint.js.map +0 -1
- package/dist/generated/types/dataConstraintZC.d.ts +0 -20
- package/dist/generated/types/dataConstraintZC.d.ts.map +0 -1
- package/dist/generated/types/dataConstraintZC.js +0 -30
- package/dist/generated/types/dataConstraintZC.js.map +0 -1
- package/dist/generated/types/discriminatorFormat.d.ts +0 -25
- package/dist/generated/types/discriminatorFormat.d.ts.map +0 -1
- package/dist/generated/types/discriminatorFormat.js +0 -31
- package/dist/generated/types/discriminatorFormat.js.map +0 -1
- package/dist/generated/types/escrowCreated.d.ts +0 -30
- package/dist/generated/types/escrowCreated.d.ts.map +0 -1
- package/dist/generated/types/escrowCreated.js +0 -34
- package/dist/generated/types/escrowCreated.js.map +0 -1
- package/dist/generated/types/escrowRefunded.d.ts +0 -26
- package/dist/generated/types/escrowRefunded.d.ts.map +0 -1
- package/dist/generated/types/escrowRefunded.js +0 -30
- package/dist/generated/types/escrowRefunded.js.map +0 -1
- package/dist/generated/types/escrowSettled.d.ts +0 -26
- package/dist/generated/types/escrowSettled.d.ts.map +0 -1
- package/dist/generated/types/escrowSettled.js +0 -30
- package/dist/generated/types/escrowSettled.js.map +0 -1
- package/dist/generated/types/escrowStatus.d.ts +0 -18
- package/dist/generated/types/escrowStatus.d.ts.map +0 -1
- package/dist/generated/types/escrowStatus.js +0 -24
- package/dist/generated/types/escrowStatus.js.map +0 -1
- package/dist/generated/types/instructionConstraintsCreated.d.ts +0 -34
- package/dist/generated/types/instructionConstraintsCreated.d.ts.map +0 -1
- package/dist/generated/types/instructionConstraintsCreated.js +0 -36
- package/dist/generated/types/instructionConstraintsCreated.js.map +0 -1
- package/dist/generated/types/pdaAllocated.d.ts +0 -24
- package/dist/generated/types/pdaAllocated.d.ts.map +0 -1
- package/dist/generated/types/pdaAllocated.js.map +0 -1
- package/dist/generated/types/pdaExtended.d.ts +0 -24
- package/dist/generated/types/pdaExtended.d.ts.map +0 -1
- package/dist/generated/types/pdaExtended.js +0 -28
- package/dist/generated/types/pdaExtended.js.map +0 -1
- package/dist/integrations/protocol-handler.d.ts +0 -59
- package/dist/integrations/protocol-handler.d.ts.map +0 -1
- package/dist/integrations/protocol-handler.js +0 -9
- package/dist/integrations/protocol-handler.js.map +0 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* S21 — `buildUnsigned()` composer.
|
|
3
|
+
*
|
|
4
|
+
* Public composer that wraps {@link buildOwnerTransaction} to give SDK
|
|
5
|
+
* consumers an offline-signing path. The only structural difference from
|
|
6
|
+
* `buildOwnerTransaction` is that `feePayer` is a plain {@link Address}, not
|
|
7
|
+
* a {@link TransactionSigner}; this composer wraps it in `createNoopSigner`
|
|
8
|
+
* internally so the caller never needs to construct a signer object.
|
|
9
|
+
*
|
|
10
|
+
* # Three use cases
|
|
11
|
+
*
|
|
12
|
+
* 1. **Squads multisig.** The caller submits the returned `unsignedTxBytes`
|
|
13
|
+
* buffer to a Squads proposal; signers from the multisig sign
|
|
14
|
+
* asynchronously, then the assembled signed tx is broadcast.
|
|
15
|
+
*
|
|
16
|
+
* 2. **CLI tools.** The caller pipes the `unsignedTxBytes` buffer to
|
|
17
|
+
* `solana sign-tx` (or any cold-key signing tool) for offline signing.
|
|
18
|
+
*
|
|
19
|
+
* 3. **Cost preview.** The caller decodes `unsignedTxBytes` client-side via
|
|
20
|
+
* {@link getCompiledTransactionMessageDecoder} to estimate CU + fee
|
|
21
|
+
* before submission. Pass `simulate: true` to additionally fetch the
|
|
22
|
+
* RPC's `unitsConsumed` estimate via `simulateTransaction`.
|
|
23
|
+
*
|
|
24
|
+
* # Why a separate function instead of `buildOwnerTransaction`?
|
|
25
|
+
*
|
|
26
|
+
* `buildOwnerTransaction` requires a {@link TransactionSigner} for the
|
|
27
|
+
* `owner` field. Callers without a wired-up signer (e.g. a CLI receiving
|
|
28
|
+
* just a pubkey via flag, or a Squads-flow UI that never holds the key) had
|
|
29
|
+
* to construct a `createNoopSigner(addr)` themselves AND know the function
|
|
30
|
+
* returns a `wireBase64` string they then have to base64-decode. This
|
|
31
|
+
* composer hands back a `Uint8Array` directly + a structured object with
|
|
32
|
+
* the original {@link Instruction}[] for inspection, in one call.
|
|
33
|
+
*
|
|
34
|
+
* The unsigned bytes have the standard Solana wire layout:
|
|
35
|
+
* `[num_sigs:u8][signatures:64*num_sigs][messageBytes]`
|
|
36
|
+
* where every signature slot is zero-filled (caller hasn't signed yet).
|
|
37
|
+
*/
|
|
38
|
+
import { createNoopSigner, getCompiledTransactionMessageDecoder, } from "./kit-adapter.js";
|
|
39
|
+
import { buildOwnerTransaction } from "./owner-transaction.js";
|
|
40
|
+
// ─── buildUnsigned ──────────────────────────────────────────────────────────
|
|
41
|
+
/**
|
|
42
|
+
* Build an unsigned versioned transaction for offline signing.
|
|
43
|
+
*
|
|
44
|
+
* @see {@link BuildUnsignedInput} for input fields.
|
|
45
|
+
* @see {@link BuildUnsignedResult} for the returned shape and the three use
|
|
46
|
+
* cases this composer was added for (Squads, CLI, cost preview).
|
|
47
|
+
*
|
|
48
|
+
* @example Squads multisig
|
|
49
|
+
* ```ts
|
|
50
|
+
* const { unsignedTxBytes } = await buildUnsigned({
|
|
51
|
+
* rpc, feePayer: squad.address, instructions: [transferIx],
|
|
52
|
+
* });
|
|
53
|
+
* await squads.createProposal({ transaction: unsignedTxBytes });
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* @example CLI cold-key signing
|
|
57
|
+
* ```ts
|
|
58
|
+
* const { unsignedTxBytes } = await buildUnsigned({ rpc, feePayer, instructions });
|
|
59
|
+
* await fs.writeFile("tx.bin", unsignedTxBytes);
|
|
60
|
+
* // then: solana sign-tx tx.bin
|
|
61
|
+
* ```
|
|
62
|
+
*
|
|
63
|
+
* @example Cost preview with on-chain simulation
|
|
64
|
+
* ```ts
|
|
65
|
+
* const { estimatedComputeUnits, message } = await buildUnsigned({
|
|
66
|
+
* rpc, feePayer, instructions, simulate: true,
|
|
67
|
+
* });
|
|
68
|
+
* console.log(`Estimated CU: ${estimatedComputeUnits}`);
|
|
69
|
+
* console.log(`Static accounts: ${message.staticAccounts.length}`);
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export async function buildUnsigned(input) {
|
|
73
|
+
const ownerSigner = createNoopSigner(input.feePayer);
|
|
74
|
+
const ownerTx = await buildOwnerTransaction({
|
|
75
|
+
rpc: input.rpc,
|
|
76
|
+
owner: ownerSigner,
|
|
77
|
+
instructions: input.instructions,
|
|
78
|
+
network: input.network ?? "devnet",
|
|
79
|
+
...(input.computeUnitLimit !== undefined
|
|
80
|
+
? { computeUnits: input.computeUnitLimit }
|
|
81
|
+
: {}),
|
|
82
|
+
...(input.computeUnitPrice !== undefined
|
|
83
|
+
? { priorityFeeMicroLamports: input.computeUnitPrice }
|
|
84
|
+
: {}),
|
|
85
|
+
...(input.addressLookupTables !== undefined
|
|
86
|
+
? { addressLookupTables: input.addressLookupTables }
|
|
87
|
+
: {}),
|
|
88
|
+
...(input.blockhash !== undefined ? { blockhash: input.blockhash } : {}),
|
|
89
|
+
});
|
|
90
|
+
const unsignedTxBytes = base64ToUint8Array(ownerTx.wireBase64);
|
|
91
|
+
// Decode the compiled message portion for inspection.
|
|
92
|
+
// Wire layout: [num_sigs:u8][signatures:64*num_sigs][messageBytes].
|
|
93
|
+
// Versioned-tx with this composer always has exactly 1 required signer
|
|
94
|
+
// (the fee payer), so the message starts at offset 65 — but read
|
|
95
|
+
// num_sigs defensively in case future changes add co-signers.
|
|
96
|
+
const numSigs = unsignedTxBytes[0] ?? 0;
|
|
97
|
+
const messageBytes = unsignedTxBytes.slice(1 + 64 * numSigs);
|
|
98
|
+
const message = getCompiledTransactionMessageDecoder().decode(messageBytes);
|
|
99
|
+
let estimatedComputeUnits;
|
|
100
|
+
if (input.simulate) {
|
|
101
|
+
estimatedComputeUnits = await safeSimulateUnitsConsumed(input.rpc, ownerTx.wireBase64);
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
unsignedTxBytes,
|
|
105
|
+
instructions: input.instructions,
|
|
106
|
+
...(estimatedComputeUnits !== undefined ? { estimatedComputeUnits } : {}),
|
|
107
|
+
feePayer: input.feePayer,
|
|
108
|
+
recentBlockhash: ownerTx.blockhash.blockhash,
|
|
109
|
+
lastValidBlockHeight: ownerTx.blockhash.lastValidBlockHeight,
|
|
110
|
+
message,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
// ─── Internal helpers ───────────────────────────────────────────────────────
|
|
114
|
+
/**
|
|
115
|
+
* Decode base64 → Uint8Array via `atob` (built-in Node ≥ 16 + browser).
|
|
116
|
+
* Same pattern as `preview-create-vault.ts` — kept private here to avoid
|
|
117
|
+
* a cross-file dependency on a private helper.
|
|
118
|
+
*/
|
|
119
|
+
function base64ToUint8Array(b64) {
|
|
120
|
+
const binary = atob(b64);
|
|
121
|
+
const bytes = new Uint8Array(binary.length);
|
|
122
|
+
for (let i = 0; i < binary.length; i++) {
|
|
123
|
+
bytes[i] = binary.charCodeAt(i);
|
|
124
|
+
}
|
|
125
|
+
return bytes;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Run `simulateTransaction` and return `unitsConsumed` as a number.
|
|
129
|
+
* Best-effort — any failure (RPC error, missing `unitsConsumed`, sim error)
|
|
130
|
+
* returns `undefined` so the caller still gets the unsigned bytes. The
|
|
131
|
+
* simulate flag is for cost preview, not for blocking the build.
|
|
132
|
+
*/
|
|
133
|
+
async function safeSimulateUnitsConsumed(rpc, wireBase64) {
|
|
134
|
+
try {
|
|
135
|
+
const result = await rpc
|
|
136
|
+
.simulateTransaction(wireBase64, {
|
|
137
|
+
encoding: "base64",
|
|
138
|
+
replaceRecentBlockhash: true,
|
|
139
|
+
sigVerify: false,
|
|
140
|
+
commitment: "confirmed",
|
|
141
|
+
})
|
|
142
|
+
.send();
|
|
143
|
+
const value = result.value;
|
|
144
|
+
if (!value || value.err || value.unitsConsumed == null)
|
|
145
|
+
return undefined;
|
|
146
|
+
return Number(value.unitsConsumed);
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
return undefined;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=build-unsigned.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-unsigned.js","sourceRoot":"","sources":["../src/build-unsigned.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CAIP-2 Solana chain identifiers + AL4 isMainnet derivation.
|
|
3
|
+
* Phase 9 Batch J (ISC-77..80, 147).
|
|
4
|
+
*
|
|
5
|
+
* Per the CAIP-2 spec (https://chainagnostic.org/CAIPs/caip-2), Solana
|
|
6
|
+
* networks are identified by a `solana:<genesis-hash-prefix>` string. The
|
|
7
|
+
* canonical IDs are registered at
|
|
8
|
+
* https://github.com/ChainAgnostic/namespaces/blob/main/solana/caip2.md.
|
|
9
|
+
*
|
|
10
|
+
* Sigil SDK V2 ships AL4 as a CAIP-2 chain id PLUS a derived `isMainnet`
|
|
11
|
+
* boolean. Per Council ISC-147, exposing the full CAIP-2 string (not just
|
|
12
|
+
* the boolean) preserves the future ability to bind testnet / localnet
|
|
13
|
+
* intents without changing the SealResult shape — collapsing 4 networks
|
|
14
|
+
* into 2 was flagged as a "footgun in waiting".
|
|
15
|
+
*/
|
|
16
|
+
/** CAIP-2 namespace for Solana. */
|
|
17
|
+
export declare const CAIP2_NAMESPACE_SOLANA: "solana";
|
|
18
|
+
/** Mainnet-beta CAIP-2 chain id. */
|
|
19
|
+
export declare const CAIP2_SOLANA_MAINNET: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
|
|
20
|
+
/** Devnet CAIP-2 chain id. */
|
|
21
|
+
export declare const CAIP2_SOLANA_DEVNET: "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1";
|
|
22
|
+
/** Testnet CAIP-2 chain id (declared for completeness; not currently produced by `toCaip2`). */
|
|
23
|
+
export declare const CAIP2_SOLANA_TESTNET: "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z";
|
|
24
|
+
/**
|
|
25
|
+
* The set of CAIP-2 strings the SDK currently emits. The narrower string
|
|
26
|
+
* literal type prevents callers from constructing ad-hoc strings.
|
|
27
|
+
*/
|
|
28
|
+
export type SigilCaip2Chain = typeof CAIP2_SOLANA_MAINNET | typeof CAIP2_SOLANA_DEVNET;
|
|
29
|
+
/**
|
|
30
|
+
* Convert the SDK's internal `"devnet" | "mainnet"` network discriminant
|
|
31
|
+
* to its canonical CAIP-2 chain id.
|
|
32
|
+
*
|
|
33
|
+
* @throws if `network` is not one of the two supported values. (Type
|
|
34
|
+
* narrowing prevents this at compile time; the runtime check catches
|
|
35
|
+
* misuse from JS callers or `any`-cast bypasses.)
|
|
36
|
+
*/
|
|
37
|
+
export declare function toCaip2(network: "devnet" | "mainnet"): SigilCaip2Chain;
|
|
38
|
+
/**
|
|
39
|
+
* Derive the AL4 `isMainnet` boolean from a CAIP-2 chain id.
|
|
40
|
+
*
|
|
41
|
+
* `isMainnet === true` ONLY when the chain id matches the canonical
|
|
42
|
+
* mainnet-beta value. Devnet, testnet, localnet — anything else — all
|
|
43
|
+
* return false. This is intentional: `isMainnet` is a SECURITY signal
|
|
44
|
+
* (gate destructive defaults behind it); fuzzy matching would be a
|
|
45
|
+
* footgun.
|
|
46
|
+
*/
|
|
47
|
+
export declare function isMainnetCaip2(chain: string): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Convenience: combine `toCaip2` + `isMainnetCaip2` from a `"devnet" | "mainnet"`
|
|
50
|
+
* input. Used by `seal()` to populate `SealResult.network` and
|
|
51
|
+
* `SealResult.isMainnet` in a single call.
|
|
52
|
+
*/
|
|
53
|
+
export declare function deriveNetworkIdentity(network: "devnet" | "mainnet"): {
|
|
54
|
+
network: SigilCaip2Chain;
|
|
55
|
+
isMainnet: boolean;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Convert a Sigil CAIP-2 string to a Wallet Standard chain identifier.
|
|
59
|
+
*
|
|
60
|
+
* Wallet Standard (https://github.com/wallet-standard/wallet-standard) uses
|
|
61
|
+
* `solana:<network-id>` per the SIWS / Solana Mobile spec, which is the
|
|
62
|
+
* exact same shape as Sigil's CAIP-2 strings (per the ChainAgnostic CAIP-2
|
|
63
|
+
* registry — https://chainagnostic.org/CAIPs/caip-2). The conversion is
|
|
64
|
+
* therefore identity at the value level — but the explicit helper
|
|
65
|
+
* documents the boundary so that future wallet-standard surface changes
|
|
66
|
+
* (e.g. an extra cluster discriminant, a versioning suffix) localize to
|
|
67
|
+
* this one function rather than spreading raw CAIP-2 casts across SIWS,
|
|
68
|
+
* connector adapters, and the seal() result shape.
|
|
69
|
+
*
|
|
70
|
+
* The return type is the wider template-literal `\`solana:${string}\`` to
|
|
71
|
+
* keep the helper assignable to Wallet Standard `IdentifierString` /
|
|
72
|
+
* `WalletWithSolanaFeatures` chain fields without consumers needing to
|
|
73
|
+
* narrow back through `SigilCaip2Chain`.
|
|
74
|
+
*
|
|
75
|
+
* @param caip2 — a CAIP-2 chain id produced by {@link toCaip2} or one of
|
|
76
|
+
* the `CAIP2_SOLANA_*` constants. The argument MUST already be in the
|
|
77
|
+
* `solana:<id>` form; this helper does not validate.
|
|
78
|
+
*/
|
|
79
|
+
export declare function toWalletStandardChain(caip2: SigilCaip2Chain): `solana:${string}`;
|
|
80
|
+
/**
|
|
81
|
+
* Network discriminant the SDK accepts as a `"devnet" | "mainnet"`
|
|
82
|
+
* string. Re-exported here so consumers of `verifyNetworkIdentity` don't
|
|
83
|
+
* need a separate import.
|
|
84
|
+
*/
|
|
85
|
+
export type SigilNetwork = "devnet" | "mainnet";
|
|
86
|
+
/**
|
|
87
|
+
* Canonical Solana genesis hashes, keyed by network. Values are the full
|
|
88
|
+
* 44-character base58 hashes returned by `rpc.getGenesisHash()`.
|
|
89
|
+
*
|
|
90
|
+
* mainnet-beta: 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
|
|
91
|
+
* devnet: EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG
|
|
92
|
+
* testnet: 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY
|
|
93
|
+
*
|
|
94
|
+
* Source: Solana Foundation Cluster RPC documentation
|
|
95
|
+
* (https://solana.com/docs/core/clusters). Hardcoded here so the
|
|
96
|
+
* verification path is offline-deterministic — a malicious RPC cannot
|
|
97
|
+
* substitute its own "canonical" hash.
|
|
98
|
+
*/
|
|
99
|
+
export declare const SOLANA_GENESIS_HASHES: {
|
|
100
|
+
readonly mainnet: "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d";
|
|
101
|
+
readonly devnet: "EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG";
|
|
102
|
+
readonly testnet: "4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY";
|
|
103
|
+
};
|
|
104
|
+
/** The set of networks `verifyNetworkIdentity` can report as `actualNetwork`. */
|
|
105
|
+
export type SigilActualNetwork = keyof typeof SOLANA_GENESIS_HASHES | "unknown";
|
|
106
|
+
/**
|
|
107
|
+
* Minimal RPC shape consumed by {@link verifyNetworkIdentity}. Matches
|
|
108
|
+
* the `@solana/kit` RPC contract so callers can pass the same `rpc`
|
|
109
|
+
* object they already use elsewhere in the SDK.
|
|
110
|
+
*/
|
|
111
|
+
export interface GenesisRpc {
|
|
112
|
+
getGenesisHash(): {
|
|
113
|
+
send(): Promise<string>;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/** Structured result returned by {@link verifyNetworkIdentity}. */
|
|
117
|
+
export interface NetworkIdentityResult {
|
|
118
|
+
/** `true` iff the RPC's reported genesis matches the caller's `claimedNetwork`. */
|
|
119
|
+
verified: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* The network the RPC actually serves, derived from `getGenesisHash()`.
|
|
122
|
+
* `"unknown"` indicates the RPC returned a hash that doesn't match any
|
|
123
|
+
* canonical cluster (likely a Surfpool/LiteSVM local validator).
|
|
124
|
+
*/
|
|
125
|
+
actualNetwork: SigilActualNetwork;
|
|
126
|
+
/**
|
|
127
|
+
* Optional human-readable explanation. Populated when `verified === false`
|
|
128
|
+
* (mismatch) OR when `getGenesisHash()` errored / returned malformed data.
|
|
129
|
+
*/
|
|
130
|
+
reason?: string;
|
|
131
|
+
/** The raw hash observed from the RPC (for diagnostic logging). */
|
|
132
|
+
observedGenesisHash?: string;
|
|
133
|
+
/** The hash the SDK expected for `claimedNetwork`. */
|
|
134
|
+
expectedGenesisHash: string;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Verify that an RPC actually serves the cluster a caller claims it does.
|
|
138
|
+
*
|
|
139
|
+
* **Opt-in, non-throwing diagnostic.** Unlike `assertGenesisHash` in
|
|
140
|
+
* seal.ts (which is called inside `createSigilClientAsync` and throws on
|
|
141
|
+
* mismatch), this helper returns a structured result so callers can
|
|
142
|
+
* branch on it without `try/catch`. Use it in preflight checks, in
|
|
143
|
+
* `mainnetConfirmed` confirmation flows that want to surface the
|
|
144
|
+
* mismatch to the operator, or anywhere raw-tx-building code paths
|
|
145
|
+
* bypass the client factory.
|
|
146
|
+
*
|
|
147
|
+
* **Does NOT change `seal()` default behaviour.** The existing seal
|
|
148
|
+
* factory still calls `assertGenesisHash` (which throws) — that's the
|
|
149
|
+
* load-bearing safety gate. `verifyNetworkIdentity` is purely additive.
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```ts
|
|
153
|
+
* const result = await verifyNetworkIdentity({
|
|
154
|
+
* rpc,
|
|
155
|
+
* claimedNetwork: "mainnet",
|
|
156
|
+
* });
|
|
157
|
+
* if (!result.verified) {
|
|
158
|
+
* console.error(
|
|
159
|
+
* `Refusing to submit mainnet tx — RPC reports ${result.actualNetwork} ` +
|
|
160
|
+
* `(genesis ${result.observedGenesisHash}); ` +
|
|
161
|
+
* `expected mainnet (${result.expectedGenesisHash}).`,
|
|
162
|
+
* );
|
|
163
|
+
* throw new Error("Network mismatch");
|
|
164
|
+
* }
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
export declare function verifyNetworkIdentity(input: {
|
|
168
|
+
rpc: GenesisRpc;
|
|
169
|
+
claimedNetwork: SigilNetwork;
|
|
170
|
+
}): Promise<NetworkIdentityResult>;
|
|
171
|
+
//# sourceMappingURL=caip2-network.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caip2-network.d.ts","sourceRoot":"","sources":["../src/caip2-network.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,mCAAmC;AACnC,eAAO,MAAM,sBAAsB,EAAG,QAAiB,CAAC;AAExD,oCAAoC;AACpC,eAAO,MAAM,oBAAoB,EAC/B,yCAAkD,CAAC;AAErD,8BAA8B;AAC9B,eAAO,MAAM,mBAAmB,EAC9B,yCAAkD,CAAC;AAErD,gGAAgG;AAChG,eAAO,MAAM,oBAAoB,EAC/B,yCAAkD,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB,OAAO,oBAAoB,GAC3B,OAAO,mBAAmB,CAAC;AAE/B;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,SAAS,GAAG,eAAe,CAatE;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,QAAQ,GAAG,SAAS,GAAG;IACpE,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB,CAGA;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,GACrB,UAAU,MAAM,EAAE,CAEpB;AAmBD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB;;;;CAIxB,CAAC;AAEX,iFAAiF;AACjF,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,qBAAqB,GAAG,SAAS,CAAC;AAEhF;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,cAAc,IAAI;QAAE,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC;CAC/C;AAED,mEAAmE;AACnE,MAAM,WAAW,qBAAqB;IACpC,mFAAmF;IACnF,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,aAAa,EAAE,kBAAkB,CAAC;IAClC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sDAAsD;IACtD,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,GAAG,EAAE,UAAU,CAAC;IAChB,cAAc,EAAE,YAAY,CAAC;CAC9B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAoEjC"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CAIP-2 Solana chain identifiers + AL4 isMainnet derivation.
|
|
3
|
+
* Phase 9 Batch J (ISC-77..80, 147).
|
|
4
|
+
*
|
|
5
|
+
* Per the CAIP-2 spec (https://chainagnostic.org/CAIPs/caip-2), Solana
|
|
6
|
+
* networks are identified by a `solana:<genesis-hash-prefix>` string. The
|
|
7
|
+
* canonical IDs are registered at
|
|
8
|
+
* https://github.com/ChainAgnostic/namespaces/blob/main/solana/caip2.md.
|
|
9
|
+
*
|
|
10
|
+
* Sigil SDK V2 ships AL4 as a CAIP-2 chain id PLUS a derived `isMainnet`
|
|
11
|
+
* boolean. Per Council ISC-147, exposing the full CAIP-2 string (not just
|
|
12
|
+
* the boolean) preserves the future ability to bind testnet / localnet
|
|
13
|
+
* intents without changing the SealResult shape — collapsing 4 networks
|
|
14
|
+
* into 2 was flagged as a "footgun in waiting".
|
|
15
|
+
*/
|
|
16
|
+
import { SigilSdkDomainError } from "./errors/sdk.js";
|
|
17
|
+
import { SIGIL_ERROR__SDK__INVALID_NETWORK } from "./errors/codes.js";
|
|
18
|
+
/** CAIP-2 namespace for Solana. */
|
|
19
|
+
export const CAIP2_NAMESPACE_SOLANA = "solana";
|
|
20
|
+
/** Mainnet-beta CAIP-2 chain id. */
|
|
21
|
+
export const CAIP2_SOLANA_MAINNET = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
|
|
22
|
+
/** Devnet CAIP-2 chain id. */
|
|
23
|
+
export const CAIP2_SOLANA_DEVNET = "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1";
|
|
24
|
+
/** Testnet CAIP-2 chain id (declared for completeness; not currently produced by `toCaip2`). */
|
|
25
|
+
export const CAIP2_SOLANA_TESTNET = "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z";
|
|
26
|
+
/**
|
|
27
|
+
* Convert the SDK's internal `"devnet" | "mainnet"` network discriminant
|
|
28
|
+
* to its canonical CAIP-2 chain id.
|
|
29
|
+
*
|
|
30
|
+
* @throws if `network` is not one of the two supported values. (Type
|
|
31
|
+
* narrowing prevents this at compile time; the runtime check catches
|
|
32
|
+
* misuse from JS callers or `any`-cast bypasses.)
|
|
33
|
+
*/
|
|
34
|
+
export function toCaip2(network) {
|
|
35
|
+
if (network === "mainnet")
|
|
36
|
+
return CAIP2_SOLANA_MAINNET;
|
|
37
|
+
if (network === "devnet")
|
|
38
|
+
return CAIP2_SOLANA_DEVNET;
|
|
39
|
+
throw new SigilSdkDomainError(SIGIL_ERROR__SDK__INVALID_NETWORK, `toCaip2: network must be 'devnet' or 'mainnet', got ${String(network)}`, {
|
|
40
|
+
context: {
|
|
41
|
+
operation: "toCaip2",
|
|
42
|
+
received: String(network),
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Derive the AL4 `isMainnet` boolean from a CAIP-2 chain id.
|
|
48
|
+
*
|
|
49
|
+
* `isMainnet === true` ONLY when the chain id matches the canonical
|
|
50
|
+
* mainnet-beta value. Devnet, testnet, localnet — anything else — all
|
|
51
|
+
* return false. This is intentional: `isMainnet` is a SECURITY signal
|
|
52
|
+
* (gate destructive defaults behind it); fuzzy matching would be a
|
|
53
|
+
* footgun.
|
|
54
|
+
*/
|
|
55
|
+
export function isMainnetCaip2(chain) {
|
|
56
|
+
return chain === CAIP2_SOLANA_MAINNET;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Convenience: combine `toCaip2` + `isMainnetCaip2` from a `"devnet" | "mainnet"`
|
|
60
|
+
* input. Used by `seal()` to populate `SealResult.network` and
|
|
61
|
+
* `SealResult.isMainnet` in a single call.
|
|
62
|
+
*/
|
|
63
|
+
export function deriveNetworkIdentity(network) {
|
|
64
|
+
const chain = toCaip2(network);
|
|
65
|
+
return { network: chain, isMainnet: isMainnetCaip2(chain) };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Convert a Sigil CAIP-2 string to a Wallet Standard chain identifier.
|
|
69
|
+
*
|
|
70
|
+
* Wallet Standard (https://github.com/wallet-standard/wallet-standard) uses
|
|
71
|
+
* `solana:<network-id>` per the SIWS / Solana Mobile spec, which is the
|
|
72
|
+
* exact same shape as Sigil's CAIP-2 strings (per the ChainAgnostic CAIP-2
|
|
73
|
+
* registry — https://chainagnostic.org/CAIPs/caip-2). The conversion is
|
|
74
|
+
* therefore identity at the value level — but the explicit helper
|
|
75
|
+
* documents the boundary so that future wallet-standard surface changes
|
|
76
|
+
* (e.g. an extra cluster discriminant, a versioning suffix) localize to
|
|
77
|
+
* this one function rather than spreading raw CAIP-2 casts across SIWS,
|
|
78
|
+
* connector adapters, and the seal() result shape.
|
|
79
|
+
*
|
|
80
|
+
* The return type is the wider template-literal `\`solana:${string}\`` to
|
|
81
|
+
* keep the helper assignable to Wallet Standard `IdentifierString` /
|
|
82
|
+
* `WalletWithSolanaFeatures` chain fields without consumers needing to
|
|
83
|
+
* narrow back through `SigilCaip2Chain`.
|
|
84
|
+
*
|
|
85
|
+
* @param caip2 — a CAIP-2 chain id produced by {@link toCaip2} or one of
|
|
86
|
+
* the `CAIP2_SOLANA_*` constants. The argument MUST already be in the
|
|
87
|
+
* `solana:<id>` form; this helper does not validate.
|
|
88
|
+
*/
|
|
89
|
+
export function toWalletStandardChain(caip2) {
|
|
90
|
+
return caip2;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Canonical Solana genesis hashes, keyed by network. Values are the full
|
|
94
|
+
* 44-character base58 hashes returned by `rpc.getGenesisHash()`.
|
|
95
|
+
*
|
|
96
|
+
* mainnet-beta: 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
|
|
97
|
+
* devnet: EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG
|
|
98
|
+
* testnet: 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY
|
|
99
|
+
*
|
|
100
|
+
* Source: Solana Foundation Cluster RPC documentation
|
|
101
|
+
* (https://solana.com/docs/core/clusters). Hardcoded here so the
|
|
102
|
+
* verification path is offline-deterministic — a malicious RPC cannot
|
|
103
|
+
* substitute its own "canonical" hash.
|
|
104
|
+
*/
|
|
105
|
+
export const SOLANA_GENESIS_HASHES = {
|
|
106
|
+
mainnet: "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d",
|
|
107
|
+
devnet: "EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG",
|
|
108
|
+
testnet: "4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY",
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Verify that an RPC actually serves the cluster a caller claims it does.
|
|
112
|
+
*
|
|
113
|
+
* **Opt-in, non-throwing diagnostic.** Unlike `assertGenesisHash` in
|
|
114
|
+
* seal.ts (which is called inside `createSigilClientAsync` and throws on
|
|
115
|
+
* mismatch), this helper returns a structured result so callers can
|
|
116
|
+
* branch on it without `try/catch`. Use it in preflight checks, in
|
|
117
|
+
* `mainnetConfirmed` confirmation flows that want to surface the
|
|
118
|
+
* mismatch to the operator, or anywhere raw-tx-building code paths
|
|
119
|
+
* bypass the client factory.
|
|
120
|
+
*
|
|
121
|
+
* **Does NOT change `seal()` default behaviour.** The existing seal
|
|
122
|
+
* factory still calls `assertGenesisHash` (which throws) — that's the
|
|
123
|
+
* load-bearing safety gate. `verifyNetworkIdentity` is purely additive.
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```ts
|
|
127
|
+
* const result = await verifyNetworkIdentity({
|
|
128
|
+
* rpc,
|
|
129
|
+
* claimedNetwork: "mainnet",
|
|
130
|
+
* });
|
|
131
|
+
* if (!result.verified) {
|
|
132
|
+
* console.error(
|
|
133
|
+
* `Refusing to submit mainnet tx — RPC reports ${result.actualNetwork} ` +
|
|
134
|
+
* `(genesis ${result.observedGenesisHash}); ` +
|
|
135
|
+
* `expected mainnet (${result.expectedGenesisHash}).`,
|
|
136
|
+
* );
|
|
137
|
+
* throw new Error("Network mismatch");
|
|
138
|
+
* }
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
export async function verifyNetworkIdentity(input) {
|
|
142
|
+
const { rpc, claimedNetwork } = input;
|
|
143
|
+
if (claimedNetwork !== "devnet" && claimedNetwork !== "mainnet") {
|
|
144
|
+
// Defensive: JS callers or `any`-cast bypasses. Returned as
|
|
145
|
+
// unverified rather than throwing so the helper stays "diagnostic".
|
|
146
|
+
return {
|
|
147
|
+
verified: false,
|
|
148
|
+
actualNetwork: "unknown",
|
|
149
|
+
expectedGenesisHash: "",
|
|
150
|
+
reason: `claimedNetwork must be 'devnet' or 'mainnet', got ${String(claimedNetwork)}`,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
const expectedGenesisHash = claimedNetwork === "mainnet"
|
|
154
|
+
? SOLANA_GENESIS_HASHES.mainnet
|
|
155
|
+
: SOLANA_GENESIS_HASHES.devnet;
|
|
156
|
+
let observed;
|
|
157
|
+
try {
|
|
158
|
+
observed = await rpc.getGenesisHash().send();
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
return {
|
|
162
|
+
verified: false,
|
|
163
|
+
actualNetwork: "unknown",
|
|
164
|
+
expectedGenesisHash,
|
|
165
|
+
reason: `getGenesisHash() failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
if (typeof observed !== "string" || observed.length < 32) {
|
|
169
|
+
return {
|
|
170
|
+
verified: false,
|
|
171
|
+
actualNetwork: "unknown",
|
|
172
|
+
expectedGenesisHash,
|
|
173
|
+
observedGenesisHash: observed == null ? undefined : String(observed),
|
|
174
|
+
reason: "getGenesisHash() returned a malformed response — expected a 44-char base58 string",
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
// Identify the actual cluster the RPC serves.
|
|
178
|
+
let actualNetwork = "unknown";
|
|
179
|
+
for (const [name, hash] of Object.entries(SOLANA_GENESIS_HASHES)) {
|
|
180
|
+
if (observed === hash) {
|
|
181
|
+
actualNetwork = name;
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (observed === expectedGenesisHash) {
|
|
186
|
+
return {
|
|
187
|
+
verified: true,
|
|
188
|
+
actualNetwork,
|
|
189
|
+
expectedGenesisHash,
|
|
190
|
+
observedGenesisHash: observed,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
return {
|
|
194
|
+
verified: false,
|
|
195
|
+
actualNetwork,
|
|
196
|
+
expectedGenesisHash,
|
|
197
|
+
observedGenesisHash: observed,
|
|
198
|
+
reason: `Cluster mismatch — RPC reports ${actualNetwork} (genesis ${observed}) ` +
|
|
199
|
+
`but caller claimed ${claimedNetwork} (expected ${expectedGenesisHash}).`,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=caip2-network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caip2-network.js","sourceRoot":"","sources":["../src/caip2-network.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical Borsh-style encoder primitives — shared utilities.
|
|
3
|
+
*
|
|
4
|
+
* APPEND-ONLY DISCIPLINE. The TA-19 policy preview digest
|
|
5
|
+
* (`policy/compute-policy-preview-digest.ts`) and the AL3 SealInput intent
|
|
6
|
+
* digest (`seal/intent-digest.ts`, Phase 9 Batch I) both depend on these
|
|
7
|
+
* primitives being byte-stable across SDK versions. Adding a new primitive
|
|
8
|
+
* is fine; CHANGING the byte layout of an existing one would break every
|
|
9
|
+
* downstream cross-impl Rust↔TS hash and silently invalidate every
|
|
10
|
+
* previously-signed policy preview digest.
|
|
11
|
+
*
|
|
12
|
+
* Mirrors the Rust-side conventions used by `solana_program::hash::hash`
|
|
13
|
+
* over Borsh-encoded structs:
|
|
14
|
+
* - Little-endian for all multi-byte integers (u16/u32/u64).
|
|
15
|
+
* - Vec<T> = u32 LE length prefix ++ flat element bytes (no per-element
|
|
16
|
+
* framing).
|
|
17
|
+
* - bool encoded as u8 (0 or 1; the canonical Borsh wire format).
|
|
18
|
+
* - Pubkey = raw 32 bytes (base58 decoded).
|
|
19
|
+
* - SHA-256 over the canonical-encoded byte string.
|
|
20
|
+
*
|
|
21
|
+
* Primitives are deliberately small, stateless, and side-effect-free so
|
|
22
|
+
* they can be unit-tested in isolation and reused without surprises.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Decode a Solana base58 pubkey to its 32-byte raw form. Throws on any
|
|
26
|
+
* input that doesn't decode to exactly 32 bytes (catches malformed
|
|
27
|
+
* pubkeys before they corrupt the canonical encoding).
|
|
28
|
+
*
|
|
29
|
+
* @throws Error if `s` is empty, contains an invalid base58 character,
|
|
30
|
+
* or decodes to a byte length other than 32.
|
|
31
|
+
*/
|
|
32
|
+
export declare function base58Decode32(s: string): Uint8Array;
|
|
33
|
+
/** Write u8 (single byte). Returns new offset. */
|
|
34
|
+
export declare function writeU8(view: DataView, offset: number, v: number): number;
|
|
35
|
+
/** Write u16 little-endian. Returns new offset. */
|
|
36
|
+
export declare function writeU16Le(view: DataView, offset: number, v: number): number;
|
|
37
|
+
/** Write u32 little-endian. Returns new offset. */
|
|
38
|
+
export declare function writeU32Le(view: DataView, offset: number, v: number): number;
|
|
39
|
+
/** Write u64 little-endian. Returns new offset. */
|
|
40
|
+
export declare function writeU64Le(view: DataView, offset: number, v: bigint): number;
|
|
41
|
+
/** Write a bool as a single 0/1 byte. Returns new offset. */
|
|
42
|
+
export declare function writeBool(view: DataView, offset: number, v: boolean): number;
|
|
43
|
+
/**
|
|
44
|
+
* SHA-256 over the input bytes. Backed by `@noble/hashes/sha256` — pure
|
|
45
|
+
* JS, browser- and Bun-compatible, byte-identical to Node's `node:crypto`
|
|
46
|
+
* for the same input (TA-19 cross-impl fixture suite verifies this).
|
|
47
|
+
*
|
|
48
|
+
* Phase 9 Batch I switched the backend from `node:crypto` to noble so AL3
|
|
49
|
+
* intent-digest can ship the same primitive across Node, Bun, and the
|
|
50
|
+
* browser without runtime-conditional imports.
|
|
51
|
+
*/
|
|
52
|
+
export declare function sha256(input: Uint8Array): Uint8Array;
|
|
53
|
+
/**
|
|
54
|
+
* Constant-time digest comparison (true if `a` and `b` are byte-equal).
|
|
55
|
+
* Uses XOR-accumulate with no early exit so timing leaks don't reveal
|
|
56
|
+
* which prefix matched. Used by cosign + policy-digest verification.
|
|
57
|
+
*/
|
|
58
|
+
export declare function digestsEqual(a: Uint8Array, b: Uint8Array): boolean;
|
|
59
|
+
//# sourceMappingURL=canonical-encode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical-encode.d.ts","sourceRoot":"","sources":["../src/canonical-encode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAqBH;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAsCpD;AAQD,kDAAkD;AAClD,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGzE;AAED,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAG5E;AAID;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAOlE"}
|