@usesigil/kit 0.1.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/LICENSE +191 -0
- package/README.md +190 -0
- package/dist/advanced-analytics.d.ts +118 -0
- package/dist/advanced-analytics.d.ts.map +1 -0
- package/dist/advanced-analytics.js +341 -0
- package/dist/advanced-analytics.js.map +1 -0
- package/dist/agent-analytics.d.ts +76 -0
- package/dist/agent-analytics.d.ts.map +1 -0
- package/dist/agent-analytics.js +179 -0
- package/dist/agent-analytics.js.map +1 -0
- package/dist/agent-errors.d.ts +151 -0
- package/dist/agent-errors.d.ts.map +1 -0
- package/dist/agent-errors.js +2001 -0
- package/dist/agent-errors.js.map +1 -0
- package/dist/alt-config.d.ts +43 -0
- package/dist/alt-config.d.ts.map +1 -0
- package/dist/alt-config.js +78 -0
- package/dist/alt-config.js.map +1 -0
- package/dist/alt-loader.d.ts +47 -0
- package/dist/alt-loader.d.ts.map +1 -0
- package/dist/alt-loader.js +143 -0
- package/dist/alt-loader.js.map +1 -0
- package/dist/balance-tracker.d.ts +87 -0
- package/dist/balance-tracker.d.ts.map +1 -0
- package/dist/balance-tracker.js +181 -0
- package/dist/balance-tracker.js.map +1 -0
- package/dist/composer.d.ts +56 -0
- package/dist/composer.d.ts.map +1 -0
- package/dist/composer.js +77 -0
- package/dist/composer.js.map +1 -0
- package/dist/core/engine.d.ts +17 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +177 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/errors.d.ts +24 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +16 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +10 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/policies.d.ts +75 -0
- package/dist/core/policies.d.ts.map +1 -0
- package/dist/core/policies.js +126 -0
- package/dist/core/policies.js.map +1 -0
- package/dist/core/registry.d.ts +29 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +125 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/state.d.ts +71 -0
- package/dist/core/state.d.ts.map +1 -0
- package/dist/core/state.js +169 -0
- package/dist/core/state.js.map +1 -0
- package/dist/create-vault.d.ts +58 -0
- package/dist/create-vault.d.ts.map +1 -0
- package/dist/create-vault.js +90 -0
- package/dist/create-vault.js.map +1 -0
- package/dist/custody-adapter.d.ts +54 -0
- package/dist/custody-adapter.d.ts.map +1 -0
- package/dist/custody-adapter.js +45 -0
- package/dist/custody-adapter.js.map +1 -0
- package/dist/event-analytics.d.ts +45 -0
- package/dist/event-analytics.d.ts.map +1 -0
- package/dist/event-analytics.js +277 -0
- package/dist/event-analytics.js.map +1 -0
- package/dist/events.d.ts +56 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +151 -0
- package/dist/events.js.map +1 -0
- package/dist/formatting.d.ts +103 -0
- package/dist/formatting.d.ts.map +1 -0
- package/dist/formatting.js +244 -0
- package/dist/formatting.js.map +1 -0
- package/dist/generated/accounts/agentSpendOverlay.d.ts +54 -0
- package/dist/generated/accounts/agentSpendOverlay.d.ts.map +1 -0
- package/dist/generated/accounts/agentSpendOverlay.js +74 -0
- package/dist/generated/accounts/agentSpendOverlay.js.map +1 -0
- package/dist/generated/accounts/agentVault.d.ts +95 -0
- package/dist/generated/accounts/agentVault.d.ts.map +1 -0
- package/dist/generated/accounts/agentVault.js +83 -0
- package/dist/generated/accounts/agentVault.js.map +1 -0
- package/dist/generated/accounts/escrowDeposit.d.ts +50 -0
- package/dist/generated/accounts/escrowDeposit.d.ts.map +1 -0
- package/dist/generated/accounts/escrowDeposit.js +76 -0
- package/dist/generated/accounts/escrowDeposit.js.map +1 -0
- package/dist/generated/accounts/index.d.ts +17 -0
- package/dist/generated/accounts/index.d.ts.map +1 -0
- package/dist/generated/accounts/index.js +17 -0
- package/dist/generated/accounts/index.js.map +1 -0
- package/dist/generated/accounts/instructionConstraints.d.ts +37 -0
- package/dist/generated/accounts/instructionConstraints.d.ts.map +1 -0
- package/dist/generated/accounts/instructionConstraints.js +64 -0
- package/dist/generated/accounts/instructionConstraints.js.map +1 -0
- package/dist/generated/accounts/pendingConstraintsUpdate.d.ts +53 -0
- package/dist/generated/accounts/pendingConstraintsUpdate.d.ts.map +1 -0
- package/dist/generated/accounts/pendingConstraintsUpdate.js +68 -0
- package/dist/generated/accounts/pendingConstraintsUpdate.js.map +1 -0
- package/dist/generated/accounts/pendingPolicyUpdate.d.ts +72 -0
- package/dist/generated/accounts/pendingPolicyUpdate.d.ts.map +1 -0
- package/dist/generated/accounts/pendingPolicyUpdate.js +97 -0
- package/dist/generated/accounts/pendingPolicyUpdate.js.map +1 -0
- package/dist/generated/accounts/policyConfig.d.ts +180 -0
- package/dist/generated/accounts/policyConfig.d.ts.map +1 -0
- package/dist/generated/accounts/policyConfig.js +88 -0
- package/dist/generated/accounts/policyConfig.js.map +1 -0
- package/dist/generated/accounts/sessionAuthority.d.ts +104 -0
- package/dist/generated/accounts/sessionAuthority.d.ts.map +1 -0
- package/dist/generated/accounts/sessionAuthority.js +86 -0
- package/dist/generated/accounts/sessionAuthority.js.map +1 -0
- package/dist/generated/accounts/spendTracker.d.ts +60 -0
- package/dist/generated/accounts/spendTracker.d.ts.map +1 -0
- package/dist/generated/accounts/spendTracker.js +74 -0
- package/dist/generated/accounts/spendTracker.js.map +1 -0
- package/dist/generated/errors/index.d.ts +9 -0
- package/dist/generated/errors/index.d.ts.map +1 -0
- package/dist/generated/errors/index.js +9 -0
- package/dist/generated/errors/index.js.map +1 -0
- package/dist/generated/errors/sigil.d.ts +162 -0
- package/dist/generated/errors/sigil.d.ts.map +1 -0
- package/dist/generated/errors/sigil.js +237 -0
- package/dist/generated/errors/sigil.js.map +1 -0
- package/dist/generated/event-discriminators.d.ts +2 -0
- package/dist/generated/event-discriminators.d.ts.map +1 -0
- package/dist/generated/event-discriminators.js +39 -0
- package/dist/generated/event-discriminators.js.map +1 -0
- package/dist/generated/index.d.ts +13 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/index.js +13 -0
- package/dist/generated/index.js.map +1 -0
- package/dist/generated/instructions/agentTransfer.d.ts +109 -0
- package/dist/generated/instructions/agentTransfer.d.ts.map +1 -0
- package/dist/generated/instructions/agentTransfer.js +211 -0
- package/dist/generated/instructions/agentTransfer.js.map +1 -0
- package/dist/generated/instructions/applyConstraintsUpdate.d.ts +55 -0
- package/dist/generated/instructions/applyConstraintsUpdate.d.ts.map +1 -0
- package/dist/generated/instructions/applyConstraintsUpdate.js +129 -0
- package/dist/generated/instructions/applyConstraintsUpdate.js.map +1 -0
- package/dist/generated/instructions/applyPendingPolicy.d.ts +55 -0
- package/dist/generated/instructions/applyPendingPolicy.d.ts.map +1 -0
- package/dist/generated/instructions/applyPendingPolicy.js +122 -0
- package/dist/generated/instructions/applyPendingPolicy.js.map +1 -0
- package/dist/generated/instructions/cancelConstraintsUpdate.d.ts +51 -0
- package/dist/generated/instructions/cancelConstraintsUpdate.d.ts.map +1 -0
- package/dist/generated/instructions/cancelConstraintsUpdate.js +115 -0
- package/dist/generated/instructions/cancelConstraintsUpdate.js.map +1 -0
- package/dist/generated/instructions/cancelPendingPolicy.d.ts +55 -0
- package/dist/generated/instructions/cancelPendingPolicy.d.ts.map +1 -0
- package/dist/generated/instructions/cancelPendingPolicy.js +122 -0
- package/dist/generated/instructions/cancelPendingPolicy.js.map +1 -0
- package/dist/generated/instructions/closeInstructionConstraints.d.ts +55 -0
- package/dist/generated/instructions/closeInstructionConstraints.d.ts.map +1 -0
- package/dist/generated/instructions/closeInstructionConstraints.js +120 -0
- package/dist/generated/instructions/closeInstructionConstraints.js.map +1 -0
- package/dist/generated/instructions/closeSettledEscrow.d.ts +72 -0
- package/dist/generated/instructions/closeSettledEscrow.d.ts.map +1 -0
- package/dist/generated/instructions/closeSettledEscrow.js +127 -0
- package/dist/generated/instructions/closeSettledEscrow.js.map +1 -0
- package/dist/generated/instructions/closeVault.d.ts +69 -0
- package/dist/generated/instructions/closeVault.d.ts.map +1 -0
- package/dist/generated/instructions/closeVault.js +142 -0
- package/dist/generated/instructions/closeVault.js.map +1 -0
- package/dist/generated/instructions/createEscrow.d.ts +131 -0
- package/dist/generated/instructions/createEscrow.d.ts.map +1 -0
- package/dist/generated/instructions/createEscrow.js +272 -0
- package/dist/generated/instructions/createEscrow.js.map +1 -0
- package/dist/generated/instructions/createInstructionConstraints.d.ts +69 -0
- package/dist/generated/instructions/createInstructionConstraints.d.ts.map +1 -0
- package/dist/generated/instructions/createInstructionConstraints.js +145 -0
- package/dist/generated/instructions/createInstructionConstraints.js.map +1 -0
- package/dist/generated/instructions/depositFunds.d.ts +82 -0
- package/dist/generated/instructions/depositFunds.d.ts.map +1 -0
- package/dist/generated/instructions/depositFunds.js +198 -0
- package/dist/generated/instructions/depositFunds.js.map +1 -0
- package/dist/generated/instructions/finalizeSession.d.ts +126 -0
- package/dist/generated/instructions/finalizeSession.d.ts.map +1 -0
- package/dist/generated/instructions/finalizeSession.js +218 -0
- package/dist/generated/instructions/finalizeSession.js.map +1 -0
- package/dist/generated/instructions/freezeVault.d.ts +40 -0
- package/dist/generated/instructions/freezeVault.d.ts.map +1 -0
- package/dist/generated/instructions/freezeVault.js +66 -0
- package/dist/generated/instructions/freezeVault.js.map +1 -0
- package/dist/generated/instructions/index.d.ts +37 -0
- package/dist/generated/instructions/index.d.ts.map +1 -0
- package/dist/generated/instructions/index.js +37 -0
- package/dist/generated/instructions/index.js.map +1 -0
- package/dist/generated/instructions/initializeVault.d.ts +122 -0
- package/dist/generated/instructions/initializeVault.d.ts.map +1 -0
- package/dist/generated/instructions/initializeVault.js +187 -0
- package/dist/generated/instructions/initializeVault.js.map +1 -0
- package/dist/generated/instructions/pauseAgent.d.ts +44 -0
- package/dist/generated/instructions/pauseAgent.d.ts.map +1 -0
- package/dist/generated/instructions/pauseAgent.js +72 -0
- package/dist/generated/instructions/pauseAgent.js.map +1 -0
- package/dist/generated/instructions/queueConstraintsUpdate.d.ts +73 -0
- package/dist/generated/instructions/queueConstraintsUpdate.d.ts.map +1 -0
- package/dist/generated/instructions/queueConstraintsUpdate.js +168 -0
- package/dist/generated/instructions/queueConstraintsUpdate.js.map +1 -0
- package/dist/generated/instructions/queuePolicyUpdate.d.ts +116 -0
- package/dist/generated/instructions/queuePolicyUpdate.d.ts.map +1 -0
- package/dist/generated/instructions/queuePolicyUpdate.js +173 -0
- package/dist/generated/instructions/queuePolicyUpdate.js.map +1 -0
- package/dist/generated/instructions/reactivateVault.d.ts +47 -0
- package/dist/generated/instructions/reactivateVault.d.ts.map +1 -0
- package/dist/generated/instructions/reactivateVault.js +74 -0
- package/dist/generated/instructions/reactivateVault.js.map +1 -0
- package/dist/generated/instructions/refundEscrow.d.ts +74 -0
- package/dist/generated/instructions/refundEscrow.d.ts.map +1 -0
- package/dist/generated/instructions/refundEscrow.js +142 -0
- package/dist/generated/instructions/refundEscrow.js.map +1 -0
- package/dist/generated/instructions/registerAgent.d.ts +55 -0
- package/dist/generated/instructions/registerAgent.d.ts.map +1 -0
- package/dist/generated/instructions/registerAgent.js +85 -0
- package/dist/generated/instructions/registerAgent.js.map +1 -0
- package/dist/generated/instructions/revokeAgent.d.ts +49 -0
- package/dist/generated/instructions/revokeAgent.d.ts.map +1 -0
- package/dist/generated/instructions/revokeAgent.js +81 -0
- package/dist/generated/instructions/revokeAgent.js.map +1 -0
- package/dist/generated/instructions/settleEscrow.d.ts +80 -0
- package/dist/generated/instructions/settleEscrow.d.ts.map +1 -0
- package/dist/generated/instructions/settleEscrow.js +173 -0
- package/dist/generated/instructions/settleEscrow.js.map +1 -0
- package/dist/generated/instructions/syncPositions.d.ts +44 -0
- package/dist/generated/instructions/syncPositions.d.ts.map +1 -0
- package/dist/generated/instructions/syncPositions.js +72 -0
- package/dist/generated/instructions/syncPositions.js.map +1 -0
- package/dist/generated/instructions/unpauseAgent.d.ts +44 -0
- package/dist/generated/instructions/unpauseAgent.d.ts.map +1 -0
- package/dist/generated/instructions/unpauseAgent.js +72 -0
- package/dist/generated/instructions/unpauseAgent.js.map +1 -0
- package/dist/generated/instructions/updateAgentPermissions.d.ts +68 -0
- package/dist/generated/instructions/updateAgentPermissions.d.ts.map +1 -0
- package/dist/generated/instructions/updateAgentPermissions.js +139 -0
- package/dist/generated/instructions/updateAgentPermissions.js.map +1 -0
- package/dist/generated/instructions/updateInstructionConstraints.d.ts +65 -0
- package/dist/generated/instructions/updateInstructionConstraints.d.ts.map +1 -0
- package/dist/generated/instructions/updateInstructionConstraints.js +131 -0
- package/dist/generated/instructions/updateInstructionConstraints.js.map +1 -0
- package/dist/generated/instructions/updatePolicy.d.ts +108 -0
- package/dist/generated/instructions/updatePolicy.d.ts.map +1 -0
- package/dist/generated/instructions/updatePolicy.js +143 -0
- package/dist/generated/instructions/updatePolicy.js.map +1 -0
- package/dist/generated/instructions/validateAndAuthorize.d.ts +171 -0
- package/dist/generated/instructions/validateAndAuthorize.d.ts.map +1 -0
- package/dist/generated/instructions/validateAndAuthorize.js +271 -0
- package/dist/generated/instructions/validateAndAuthorize.js.map +1 -0
- package/dist/generated/instructions/withdrawFunds.d.ts +74 -0
- package/dist/generated/instructions/withdrawFunds.d.ts.map +1 -0
- package/dist/generated/instructions/withdrawFunds.js +166 -0
- package/dist/generated/instructions/withdrawFunds.js.map +1 -0
- package/dist/generated/programs/index.d.ts +9 -0
- package/dist/generated/programs/index.d.ts.map +1 -0
- package/dist/generated/programs/index.js +9 -0
- package/dist/generated/programs/index.js.map +1 -0
- package/dist/generated/programs/sigil.d.ts +173 -0
- package/dist/generated/programs/sigil.d.ts.map +1 -0
- package/dist/generated/programs/sigil.js +443 -0
- package/dist/generated/programs/sigil.js.map +1 -0
- package/dist/generated/types/accountConstraint.d.ts +18 -0
- package/dist/generated/types/accountConstraint.d.ts.map +1 -0
- package/dist/generated/types/accountConstraint.js +24 -0
- package/dist/generated/types/accountConstraint.js.map +1 -0
- package/dist/generated/types/actionAuthorized.d.ts +39 -0
- package/dist/generated/types/actionAuthorized.d.ts.map +1 -0
- package/dist/generated/types/actionAuthorized.js +43 -0
- package/dist/generated/types/actionAuthorized.js.map +1 -0
- package/dist/generated/types/actionType.d.ts +37 -0
- package/dist/generated/types/actionType.d.ts.map +1 -0
- package/dist/generated/types/actionType.js +43 -0
- package/dist/generated/types/actionType.js.map +1 -0
- package/dist/generated/types/agentContributionEntry.d.ts +49 -0
- package/dist/generated/types/agentContributionEntry.d.ts.map +1 -0
- package/dist/generated/types/agentContributionEntry.js +26 -0
- package/dist/generated/types/agentContributionEntry.js.map +1 -0
- package/dist/generated/types/agentEntry.d.ts +24 -0
- package/dist/generated/types/agentEntry.d.ts.map +1 -0
- package/dist/generated/types/agentEntry.js +28 -0
- package/dist/generated/types/agentEntry.js.map +1 -0
- package/dist/generated/types/agentPausedEvent.d.ts +22 -0
- package/dist/generated/types/agentPausedEvent.d.ts.map +1 -0
- package/dist/generated/types/agentPausedEvent.js +26 -0
- package/dist/generated/types/agentPausedEvent.js.map +1 -0
- package/dist/generated/types/agentPermissionsUpdated.d.ts +24 -0
- package/dist/generated/types/agentPermissionsUpdated.d.ts.map +1 -0
- package/dist/generated/types/agentPermissionsUpdated.js +28 -0
- package/dist/generated/types/agentPermissionsUpdated.js.map +1 -0
- package/dist/generated/types/agentRegistered.d.ts +26 -0
- package/dist/generated/types/agentRegistered.d.ts.map +1 -0
- package/dist/generated/types/agentRegistered.js +30 -0
- package/dist/generated/types/agentRegistered.js.map +1 -0
- package/dist/generated/types/agentRevoked.d.ts +24 -0
- package/dist/generated/types/agentRevoked.d.ts.map +1 -0
- package/dist/generated/types/agentRevoked.js +28 -0
- package/dist/generated/types/agentRevoked.js.map +1 -0
- package/dist/generated/types/agentSpendLimitChecked.d.ts +28 -0
- package/dist/generated/types/agentSpendLimitChecked.d.ts.map +1 -0
- package/dist/generated/types/agentSpendLimitChecked.js +32 -0
- package/dist/generated/types/agentSpendLimitChecked.js.map +1 -0
- package/dist/generated/types/agentTransferExecuted.d.ts +24 -0
- package/dist/generated/types/agentTransferExecuted.d.ts.map +1 -0
- package/dist/generated/types/agentTransferExecuted.js +28 -0
- package/dist/generated/types/agentTransferExecuted.js.map +1 -0
- package/dist/generated/types/agentUnpausedEvent.d.ts +22 -0
- package/dist/generated/types/agentUnpausedEvent.d.ts.map +1 -0
- package/dist/generated/types/agentUnpausedEvent.js +26 -0
- package/dist/generated/types/agentUnpausedEvent.js.map +1 -0
- package/dist/generated/types/constraintEntry.d.ts +23 -0
- package/dist/generated/types/constraintEntry.d.ts.map +1 -0
- package/dist/generated/types/constraintEntry.js +27 -0
- package/dist/generated/types/constraintEntry.js.map +1 -0
- package/dist/generated/types/constraintOperator.d.ts +22 -0
- package/dist/generated/types/constraintOperator.d.ts.map +1 -0
- package/dist/generated/types/constraintOperator.js +28 -0
- package/dist/generated/types/constraintOperator.js.map +1 -0
- package/dist/generated/types/constraintsChangeApplied.d.ts +20 -0
- package/dist/generated/types/constraintsChangeApplied.d.ts.map +1 -0
- package/dist/generated/types/constraintsChangeApplied.js +24 -0
- package/dist/generated/types/constraintsChangeApplied.js.map +1 -0
- package/dist/generated/types/constraintsChangeCancelled.d.ts +16 -0
- package/dist/generated/types/constraintsChangeCancelled.d.ts.map +1 -0
- package/dist/generated/types/constraintsChangeCancelled.js +18 -0
- package/dist/generated/types/constraintsChangeCancelled.js.map +1 -0
- package/dist/generated/types/constraintsChangeQueued.d.ts +20 -0
- package/dist/generated/types/constraintsChangeQueued.d.ts.map +1 -0
- package/dist/generated/types/constraintsChangeQueued.js +24 -0
- package/dist/generated/types/constraintsChangeQueued.js.map +1 -0
- package/dist/generated/types/dataConstraint.d.ts +23 -0
- package/dist/generated/types/dataConstraint.d.ts.map +1 -0
- package/dist/generated/types/dataConstraint.js +27 -0
- package/dist/generated/types/dataConstraint.js.map +1 -0
- package/dist/generated/types/delegationRevoked.d.ts +22 -0
- package/dist/generated/types/delegationRevoked.d.ts.map +1 -0
- package/dist/generated/types/delegationRevoked.js +26 -0
- package/dist/generated/types/delegationRevoked.js.map +1 -0
- package/dist/generated/types/epochBucket.d.ts +28 -0
- package/dist/generated/types/epochBucket.d.ts.map +1 -0
- package/dist/generated/types/epochBucket.js +24 -0
- package/dist/generated/types/epochBucket.js.map +1 -0
- package/dist/generated/types/escrowCreated.d.ts +30 -0
- package/dist/generated/types/escrowCreated.d.ts.map +1 -0
- package/dist/generated/types/escrowCreated.js +34 -0
- package/dist/generated/types/escrowCreated.js.map +1 -0
- package/dist/generated/types/escrowRefunded.d.ts +26 -0
- package/dist/generated/types/escrowRefunded.d.ts.map +1 -0
- package/dist/generated/types/escrowRefunded.js +30 -0
- package/dist/generated/types/escrowRefunded.js.map +1 -0
- package/dist/generated/types/escrowSettled.d.ts +26 -0
- package/dist/generated/types/escrowSettled.d.ts.map +1 -0
- package/dist/generated/types/escrowSettled.js +30 -0
- package/dist/generated/types/escrowSettled.js.map +1 -0
- package/dist/generated/types/escrowStatus.d.ts +18 -0
- package/dist/generated/types/escrowStatus.d.ts.map +1 -0
- package/dist/generated/types/escrowStatus.js +24 -0
- package/dist/generated/types/escrowStatus.js.map +1 -0
- package/dist/generated/types/feesCollected.d.ts +38 -0
- package/dist/generated/types/feesCollected.d.ts.map +1 -0
- package/dist/generated/types/feesCollected.js +42 -0
- package/dist/generated/types/feesCollected.js.map +1 -0
- package/dist/generated/types/fundsDeposited.d.ts +24 -0
- package/dist/generated/types/fundsDeposited.d.ts.map +1 -0
- package/dist/generated/types/fundsDeposited.js +28 -0
- package/dist/generated/types/fundsDeposited.js.map +1 -0
- package/dist/generated/types/fundsWithdrawn.d.ts +26 -0
- package/dist/generated/types/fundsWithdrawn.d.ts.map +1 -0
- package/dist/generated/types/fundsWithdrawn.js +30 -0
- package/dist/generated/types/fundsWithdrawn.js.map +1 -0
- package/dist/generated/types/index.d.ts +50 -0
- package/dist/generated/types/index.d.ts.map +1 -0
- package/dist/generated/types/index.js +50 -0
- package/dist/generated/types/index.js.map +1 -0
- package/dist/generated/types/instructionConstraintsClosed.d.ts +20 -0
- package/dist/generated/types/instructionConstraintsClosed.d.ts.map +1 -0
- package/dist/generated/types/instructionConstraintsClosed.js +24 -0
- package/dist/generated/types/instructionConstraintsClosed.js.map +1 -0
- package/dist/generated/types/instructionConstraintsCreated.d.ts +24 -0
- package/dist/generated/types/instructionConstraintsCreated.d.ts.map +1 -0
- package/dist/generated/types/instructionConstraintsCreated.js +28 -0
- package/dist/generated/types/instructionConstraintsCreated.js.map +1 -0
- package/dist/generated/types/instructionConstraintsUpdated.d.ts +24 -0
- package/dist/generated/types/instructionConstraintsUpdated.d.ts.map +1 -0
- package/dist/generated/types/instructionConstraintsUpdated.js +28 -0
- package/dist/generated/types/instructionConstraintsUpdated.js.map +1 -0
- package/dist/generated/types/policyChangeApplied.d.ts +20 -0
- package/dist/generated/types/policyChangeApplied.d.ts.map +1 -0
- package/dist/generated/types/policyChangeApplied.js +24 -0
- package/dist/generated/types/policyChangeApplied.js.map +1 -0
- package/dist/generated/types/policyChangeCancelled.d.ts +16 -0
- package/dist/generated/types/policyChangeCancelled.d.ts.map +1 -0
- package/dist/generated/types/policyChangeCancelled.js +18 -0
- package/dist/generated/types/policyChangeCancelled.js.map +1 -0
- package/dist/generated/types/policyChangeQueued.d.ts +20 -0
- package/dist/generated/types/policyChangeQueued.d.ts.map +1 -0
- package/dist/generated/types/policyChangeQueued.js +24 -0
- package/dist/generated/types/policyChangeQueued.js.map +1 -0
- package/dist/generated/types/policyUpdated.d.ts +34 -0
- package/dist/generated/types/policyUpdated.d.ts.map +1 -0
- package/dist/generated/types/policyUpdated.js +38 -0
- package/dist/generated/types/policyUpdated.js.map +1 -0
- package/dist/generated/types/positionsSynced.d.ts +24 -0
- package/dist/generated/types/positionsSynced.d.ts.map +1 -0
- package/dist/generated/types/positionsSynced.js +28 -0
- package/dist/generated/types/positionsSynced.js.map +1 -0
- package/dist/generated/types/protocolSpendCounter.d.ts +33 -0
- package/dist/generated/types/protocolSpendCounter.d.ts.map +1 -0
- package/dist/generated/types/protocolSpendCounter.js +26 -0
- package/dist/generated/types/protocolSpendCounter.js.map +1 -0
- package/dist/generated/types/sessionFinalized.d.ts +32 -0
- package/dist/generated/types/sessionFinalized.d.ts.map +1 -0
- package/dist/generated/types/sessionFinalized.js +36 -0
- package/dist/generated/types/sessionFinalized.js.map +1 -0
- package/dist/generated/types/vaultClosed.d.ts +22 -0
- package/dist/generated/types/vaultClosed.d.ts.map +1 -0
- package/dist/generated/types/vaultClosed.js +26 -0
- package/dist/generated/types/vaultClosed.js.map +1 -0
- package/dist/generated/types/vaultCreated.d.ts +24 -0
- package/dist/generated/types/vaultCreated.d.ts.map +1 -0
- package/dist/generated/types/vaultCreated.js +28 -0
- package/dist/generated/types/vaultCreated.js.map +1 -0
- package/dist/generated/types/vaultFrozen.d.ts +24 -0
- package/dist/generated/types/vaultFrozen.d.ts.map +1 -0
- package/dist/generated/types/vaultFrozen.js +28 -0
- package/dist/generated/types/vaultFrozen.js.map +1 -0
- package/dist/generated/types/vaultReactivated.d.ts +24 -0
- package/dist/generated/types/vaultReactivated.d.ts.map +1 -0
- package/dist/generated/types/vaultReactivated.js +28 -0
- package/dist/generated/types/vaultReactivated.js.map +1 -0
- package/dist/generated/types/vaultStatus.d.ts +19 -0
- package/dist/generated/types/vaultStatus.d.ts.map +1 -0
- package/dist/generated/types/vaultStatus.js +25 -0
- package/dist/generated/types/vaultStatus.js.map +1 -0
- package/dist/index.d.ts +74 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +113 -0
- package/dist/index.js.map +1 -0
- package/dist/inscribe.d.ts +134 -0
- package/dist/inscribe.d.ts.map +1 -0
- package/dist/inscribe.js +149 -0
- package/dist/inscribe.js.map +1 -0
- package/dist/inspector.d.ts +85 -0
- package/dist/inspector.d.ts.map +1 -0
- package/dist/inspector.js +188 -0
- package/dist/inspector.js.map +1 -0
- package/dist/math-utils.d.ts +15 -0
- package/dist/math-utils.d.ts.map +1 -0
- package/dist/math-utils.js +29 -0
- package/dist/math-utils.js.map +1 -0
- package/dist/owner-transaction.d.ts +42 -0
- package/dist/owner-transaction.d.ts.map +1 -0
- package/dist/owner-transaction.js +71 -0
- package/dist/owner-transaction.js.map +1 -0
- package/dist/policies.d.ts +70 -0
- package/dist/policies.d.ts.map +1 -0
- package/dist/policies.js +87 -0
- package/dist/policies.js.map +1 -0
- package/dist/portfolio-analytics.d.ts +82 -0
- package/dist/portfolio-analytics.d.ts.map +1 -0
- package/dist/portfolio-analytics.js +232 -0
- package/dist/portfolio-analytics.js.map +1 -0
- package/dist/presets.d.ts +108 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +110 -0
- package/dist/presets.js.map +1 -0
- package/dist/priority-fees.d.ts +49 -0
- package/dist/priority-fees.d.ts.map +1 -0
- package/dist/priority-fees.js +175 -0
- package/dist/priority-fees.js.map +1 -0
- package/dist/protocol-analytics.d.ts +35 -0
- package/dist/protocol-analytics.d.ts.map +1 -0
- package/dist/protocol-analytics.js +64 -0
- package/dist/protocol-analytics.js.map +1 -0
- package/dist/protocol-names.d.ts +9 -0
- package/dist/protocol-names.d.ts.map +1 -0
- package/dist/protocol-names.js +18 -0
- package/dist/protocol-names.js.map +1 -0
- package/dist/protocol-resolver.d.ts +54 -0
- package/dist/protocol-resolver.d.ts.map +1 -0
- package/dist/protocol-resolver.js +123 -0
- package/dist/protocol-resolver.js.map +1 -0
- package/dist/resolve-accounts.d.ts +38 -0
- package/dist/resolve-accounts.d.ts.map +1 -0
- package/dist/resolve-accounts.js +120 -0
- package/dist/resolve-accounts.js.map +1 -0
- package/dist/rpc-helpers.d.ts +50 -0
- package/dist/rpc-helpers.d.ts.map +1 -0
- package/dist/rpc-helpers.js +119 -0
- package/dist/rpc-helpers.js.map +1 -0
- package/dist/seal.d.ts +211 -0
- package/dist/seal.d.ts.map +1 -0
- package/dist/seal.js +569 -0
- package/dist/seal.js.map +1 -0
- package/dist/security-analytics.d.ts +85 -0
- package/dist/security-analytics.d.ts.map +1 -0
- package/dist/security-analytics.js +510 -0
- package/dist/security-analytics.js.map +1 -0
- package/dist/shield.d.ts +235 -0
- package/dist/shield.d.ts.map +1 -0
- package/dist/shield.js +701 -0
- package/dist/shield.js.map +1 -0
- package/dist/simulation.d.ts +111 -0
- package/dist/simulation.d.ts.map +1 -0
- package/dist/simulation.js +514 -0
- package/dist/simulation.js.map +1 -0
- package/dist/spending-analytics.d.ts +91 -0
- package/dist/spending-analytics.d.ts.map +1 -0
- package/dist/spending-analytics.js +217 -0
- package/dist/spending-analytics.js.map +1 -0
- package/dist/state-resolver.d.ts +173 -0
- package/dist/state-resolver.d.ts.map +1 -0
- package/dist/state-resolver.js +660 -0
- package/dist/state-resolver.js.map +1 -0
- package/dist/tee/cache.d.ts +28 -0
- package/dist/tee/cache.d.ts.map +1 -0
- package/dist/tee/cache.js +75 -0
- package/dist/tee/cache.js.map +1 -0
- package/dist/tee/index.d.ts +9 -0
- package/dist/tee/index.d.ts.map +1 -0
- package/dist/tee/index.js +9 -0
- package/dist/tee/index.js.map +1 -0
- package/dist/tee/nitro-root.d.ts +11 -0
- package/dist/tee/nitro-root.d.ts.map +1 -0
- package/dist/tee/nitro-root.js +24 -0
- package/dist/tee/nitro-root.js.map +1 -0
- package/dist/tee/providers/crossmint.d.ts +12 -0
- package/dist/tee/providers/crossmint.d.ts.map +1 -0
- package/dist/tee/providers/crossmint.js +73 -0
- package/dist/tee/providers/crossmint.js.map +1 -0
- package/dist/tee/providers/privy.d.ts +12 -0
- package/dist/tee/providers/privy.d.ts.map +1 -0
- package/dist/tee/providers/privy.js +73 -0
- package/dist/tee/providers/privy.js.map +1 -0
- package/dist/tee/providers/turnkey.d.ts +34 -0
- package/dist/tee/providers/turnkey.d.ts.map +1 -0
- package/dist/tee/providers/turnkey.js +401 -0
- package/dist/tee/providers/turnkey.js.map +1 -0
- package/dist/tee/types.d.ts +124 -0
- package/dist/tee/types.d.ts.map +1 -0
- package/dist/tee/types.js +51 -0
- package/dist/tee/types.js.map +1 -0
- package/dist/tee/verify.d.ts +34 -0
- package/dist/tee/verify.d.ts.map +1 -0
- package/dist/tee/verify.js +177 -0
- package/dist/tee/verify.js.map +1 -0
- package/dist/tee/wallet-types.d.ts +61 -0
- package/dist/tee/wallet-types.d.ts.map +1 -0
- package/dist/tee/wallet-types.js +42 -0
- package/dist/tee/wallet-types.js.map +1 -0
- package/dist/testing/devnet.d.ts +64 -0
- package/dist/testing/devnet.d.ts.map +1 -0
- package/dist/testing/devnet.js +222 -0
- package/dist/testing/devnet.js.map +1 -0
- package/dist/testing/index.d.ts +3 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +9 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/mock-rpc.d.ts +31 -0
- package/dist/testing/mock-rpc.d.ts.map +1 -0
- package/dist/testing/mock-rpc.js +50 -0
- package/dist/testing/mock-rpc.js.map +1 -0
- package/dist/testing/mock-state.d.ts +35 -0
- package/dist/testing/mock-state.d.ts.map +1 -0
- package/dist/testing/mock-state.js +86 -0
- package/dist/testing/mock-state.js.map +1 -0
- package/dist/tokens.d.ts +35 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +157 -0
- package/dist/tokens.js.map +1 -0
- package/dist/transaction-executor.d.ts +116 -0
- package/dist/transaction-executor.d.ts.map +1 -0
- package/dist/transaction-executor.js +165 -0
- package/dist/transaction-executor.js.map +1 -0
- package/dist/types.d.ts +102 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +216 -0
- package/dist/types.js.map +1 -0
- package/dist/vault-analytics.d.ts +83 -0
- package/dist/vault-analytics.d.ts.map +1 -0
- package/dist/vault-analytics.js +175 -0
- package/dist/vault-analytics.js.map +1 -0
- package/dist/velocity-tracker.d.ts +79 -0
- package/dist/velocity-tracker.d.ts.map +1 -0
- package/dist/velocity-tracker.js +183 -0
- package/dist/velocity-tracker.js.map +1 -0
- package/dist/x402/amount-guard.d.ts +26 -0
- package/dist/x402/amount-guard.d.ts.map +1 -0
- package/dist/x402/amount-guard.js +80 -0
- package/dist/x402/amount-guard.js.map +1 -0
- package/dist/x402/audit-trail.d.ts +26 -0
- package/dist/x402/audit-trail.d.ts.map +1 -0
- package/dist/x402/audit-trail.js +32 -0
- package/dist/x402/audit-trail.js.map +1 -0
- package/dist/x402/codec.d.ts +26 -0
- package/dist/x402/codec.d.ts.map +1 -0
- package/dist/x402/codec.js +95 -0
- package/dist/x402/codec.js.map +1 -0
- package/dist/x402/errors.d.ts +34 -0
- package/dist/x402/errors.d.ts.map +1 -0
- package/dist/x402/errors.js +53 -0
- package/dist/x402/errors.js.map +1 -0
- package/dist/x402/facilitator-verify.d.ts +24 -0
- package/dist/x402/facilitator-verify.d.ts.map +1 -0
- package/dist/x402/facilitator-verify.js +74 -0
- package/dist/x402/facilitator-verify.js.map +1 -0
- package/dist/x402/index.d.ts +14 -0
- package/dist/x402/index.d.ts.map +1 -0
- package/dist/x402/index.js +23 -0
- package/dist/x402/index.js.map +1 -0
- package/dist/x402/nonce-tracker.d.ts +65 -0
- package/dist/x402/nonce-tracker.d.ts.map +1 -0
- package/dist/x402/nonce-tracker.js +123 -0
- package/dist/x402/nonce-tracker.js.map +1 -0
- package/dist/x402/payment-selector.d.ts +20 -0
- package/dist/x402/payment-selector.d.ts.map +1 -0
- package/dist/x402/payment-selector.js +49 -0
- package/dist/x402/payment-selector.js.map +1 -0
- package/dist/x402/policy-bridge.d.ts +23 -0
- package/dist/x402/policy-bridge.d.ts.map +1 -0
- package/dist/x402/policy-bridge.js +67 -0
- package/dist/x402/policy-bridge.js.map +1 -0
- package/dist/x402/shielded-fetch.d.ts +46 -0
- package/dist/x402/shielded-fetch.d.ts.map +1 -0
- package/dist/x402/shielded-fetch.js +342 -0
- package/dist/x402/shielded-fetch.js.map +1 -0
- package/dist/x402/transfer-builder.d.ts +43 -0
- package/dist/x402/transfer-builder.d.ts.map +1 -0
- package/dist/x402/transfer-builder.js +126 -0
- package/dist/x402/transfer-builder.js.map +1 -0
- package/dist/x402/types.d.ts +109 -0
- package/dist/x402/types.d.ts.map +1 -0
- package/dist/x402/types.js +8 -0
- package/dist/x402/types.js.map +1 -0
- package/package.json +98 -0
package/dist/seal.js
ADDED
|
@@ -0,0 +1,569 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* seal() — Protocol-agnostic DeFi instruction sealing.
|
|
3
|
+
*
|
|
4
|
+
* Takes arbitrary DeFi instructions (from Jupiter API, SAK, GOAT, MCP servers)
|
|
5
|
+
* and sandwiches them with Sigil security:
|
|
6
|
+
* [ComputeBudget, ValidateAndAuthorize, ...defiIxs, FinalizeSession]
|
|
7
|
+
*
|
|
8
|
+
* All succeed or all revert atomically.
|
|
9
|
+
*
|
|
10
|
+
* Devnet prerequisites:
|
|
11
|
+
* - Sigil program deployed at SIGIL_PROGRAM_ADDRESS
|
|
12
|
+
* - SIGIL_ALT_DEVNET updated in alt-config.ts (currently placeholder)
|
|
13
|
+
* - PROTOCOL_TREASURY token accounts initialized for USDC/USDT on devnet
|
|
14
|
+
* - Vault funded with tokens and ATAs created
|
|
15
|
+
*/
|
|
16
|
+
import { AccountRole } from "@solana/kit";
|
|
17
|
+
import { ActionType } from "./generated/types/actionType.js";
|
|
18
|
+
import { VaultStatus } from "./generated/types/vaultStatus.js";
|
|
19
|
+
import { getValidateAndAuthorizeInstructionAsync } from "./generated/instructions/validateAndAuthorize.js";
|
|
20
|
+
import { getFinalizeSessionInstructionAsync } from "./generated/instructions/finalizeSession.js";
|
|
21
|
+
import { resolveVaultState, resolveVaultStateForOwner, resolveVaultBudget, } from "./state-resolver.js";
|
|
22
|
+
import { getSessionPDA, getAgentOverlayPDA } from "./resolve-accounts.js";
|
|
23
|
+
import { composeSigilTransaction, measureTransactionSize, } from "./composer.js";
|
|
24
|
+
import { BlockhashCache, signAndEncode, sendAndConfirmTransaction, } from "./rpc-helpers.js";
|
|
25
|
+
import { AltCache, mergeAltAddresses, verifySigilAlt } from "./alt-loader.js";
|
|
26
|
+
import { getSigilAltAddress, getExpectedAltContents } from "./alt-config.js";
|
|
27
|
+
import { deriveAta } from "./x402/transfer-builder.js";
|
|
28
|
+
import { isStablecoinMint, hasPermission, isSpendingAction, validateNetwork, normalizeNetwork, toInstruction, PROTOCOL_TREASURY, USDC_MINT_DEVNET, USDC_MINT_MAINNET, USDT_MINT_DEVNET, USDT_MINT_MAINNET, RECOGNIZED_DEFI_PROGRAMS, PROTOCOL_FEE_RATE, } from "./types.js";
|
|
29
|
+
import { isProtocolAllowed } from "./protocol-resolver.js";
|
|
30
|
+
import { toSigilAgentError } from "./agent-errors.js";
|
|
31
|
+
import { getVaultPnL, getVaultTokenBalances, } from "./balance-tracker.js";
|
|
32
|
+
import { parseTokenBalance } from "./simulation.js";
|
|
33
|
+
import { createVault, } from "./create-vault.js";
|
|
34
|
+
// ─── Well-known program addresses to strip ──────────────────────────────────
|
|
35
|
+
const COMPUTE_BUDGET_PROGRAM = "ComputeBudget111111111111111111111111111111";
|
|
36
|
+
const SYSTEM_PROGRAM = "11111111111111111111111111111111";
|
|
37
|
+
const TOKEN_PROGRAM = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
|
|
38
|
+
const TOKEN_2022_PROGRAM = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
|
|
39
|
+
// ─── Internal helpers ───────────────────────────────────────────────────────
|
|
40
|
+
/** Replace agent ATAs with vault ATAs in DeFi instruction account lists. */
|
|
41
|
+
export function replaceAgentAtas(instructions, replacements) {
|
|
42
|
+
if (replacements.size === 0)
|
|
43
|
+
return instructions;
|
|
44
|
+
return instructions.map((ix) => ({
|
|
45
|
+
...ix,
|
|
46
|
+
accounts: ix.accounts?.map((acc) => {
|
|
47
|
+
const replacement = replacements.get(acc.address);
|
|
48
|
+
// Only replace WRITABLE accounts — read-only accounts (authorities, oracles)
|
|
49
|
+
// should keep their original address to avoid instruction malfunction.
|
|
50
|
+
// ATAs in DeFi instructions are always WRITABLE (they receive/send tokens).
|
|
51
|
+
if (replacement &&
|
|
52
|
+
(acc.role === AccountRole.WRITABLE ||
|
|
53
|
+
acc.role === AccountRole.WRITABLE_SIGNER)) {
|
|
54
|
+
return { ...acc, address: replacement };
|
|
55
|
+
}
|
|
56
|
+
return acc;
|
|
57
|
+
}),
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
const ACTION_TYPE_KEYS = {
|
|
61
|
+
[ActionType.Swap]: "swap",
|
|
62
|
+
[ActionType.OpenPosition]: "openPosition",
|
|
63
|
+
[ActionType.ClosePosition]: "closePosition",
|
|
64
|
+
[ActionType.IncreasePosition]: "increasePosition",
|
|
65
|
+
[ActionType.DecreasePosition]: "decreasePosition",
|
|
66
|
+
[ActionType.Deposit]: "deposit",
|
|
67
|
+
[ActionType.Withdraw]: "withdraw",
|
|
68
|
+
[ActionType.Transfer]: "transfer",
|
|
69
|
+
[ActionType.AddCollateral]: "addCollateral",
|
|
70
|
+
[ActionType.RemoveCollateral]: "removeCollateral",
|
|
71
|
+
[ActionType.PlaceTriggerOrder]: "placeTriggerOrder",
|
|
72
|
+
[ActionType.EditTriggerOrder]: "editTriggerOrder",
|
|
73
|
+
[ActionType.CancelTriggerOrder]: "cancelTriggerOrder",
|
|
74
|
+
[ActionType.PlaceLimitOrder]: "placeLimitOrder",
|
|
75
|
+
[ActionType.EditLimitOrder]: "editLimitOrder",
|
|
76
|
+
[ActionType.CancelLimitOrder]: "cancelLimitOrder",
|
|
77
|
+
[ActionType.SwapAndOpenPosition]: "swapAndOpenPosition",
|
|
78
|
+
[ActionType.CloseAndSwapPosition]: "closeAndSwapPosition",
|
|
79
|
+
[ActionType.CreateEscrow]: "createEscrow",
|
|
80
|
+
[ActionType.SettleEscrow]: "settleEscrow",
|
|
81
|
+
[ActionType.RefundEscrow]: "refundEscrow",
|
|
82
|
+
};
|
|
83
|
+
// ─── Shared caches (module-level singletons) ────────────────────────────────
|
|
84
|
+
const blockhashCache = new BlockhashCache();
|
|
85
|
+
const altCache = new AltCache();
|
|
86
|
+
// ─── seal() ─────────────────────────────────────────────────────────────────
|
|
87
|
+
/**
|
|
88
|
+
* Seal arbitrary DeFi instructions with Sigil security.
|
|
89
|
+
*
|
|
90
|
+
* Sandwiches the provided instructions between validate_and_authorize (before)
|
|
91
|
+
* and finalize_session (after) in an atomic Solana transaction.
|
|
92
|
+
*
|
|
93
|
+
* NOTE: Concurrent calls for the same vault+agent+tokenMint are NOT supported.
|
|
94
|
+
* The on-chain SessionAuthority PDA is deterministic — two concurrent seals
|
|
95
|
+
* produce colliding session PDAs and only one will succeed on-chain.
|
|
96
|
+
*
|
|
97
|
+
* @throws Error if vault is not active, agent lacks permission, protocol not allowed,
|
|
98
|
+
* spending cap insufficient, or transaction exceeds 1232 byte limit.
|
|
99
|
+
*/
|
|
100
|
+
export async function seal(params) {
|
|
101
|
+
const warnings = [];
|
|
102
|
+
const net = normalizeNetwork(params.network);
|
|
103
|
+
validateNetwork(net);
|
|
104
|
+
// Step 1: Resolve vault state (with stale cache detection)
|
|
105
|
+
let state;
|
|
106
|
+
if (params.cachedState) {
|
|
107
|
+
const ageMs = (Date.now() / 1000 - Number(params.cachedState.resolvedAtTimestamp)) *
|
|
108
|
+
1000;
|
|
109
|
+
const maxAge = params.maxCacheAgeMs ?? 30_000;
|
|
110
|
+
if (ageMs > maxAge) {
|
|
111
|
+
state = await resolveVaultState(params.rpc, params.vault, params.agent.address, undefined, net);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
state = params.cachedState;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
state = await resolveVaultState(params.rpc, params.vault, params.agent.address, undefined, net);
|
|
119
|
+
}
|
|
120
|
+
// Verify vault is active
|
|
121
|
+
if (state.vault.status !== VaultStatus.Active) {
|
|
122
|
+
throw new Error(`Vault is not active (status: ${VaultStatus[state.vault.status] ?? state.vault.status})`);
|
|
123
|
+
}
|
|
124
|
+
// Step 2: Validate agent
|
|
125
|
+
const agentEntry = state.vault.agents.find((a) => a.pubkey === params.agent.address);
|
|
126
|
+
if (!agentEntry) {
|
|
127
|
+
throw new Error(`Agent ${params.agent.address} is not registered in vault ${params.vault}`);
|
|
128
|
+
}
|
|
129
|
+
if (agentEntry.paused) {
|
|
130
|
+
throw new Error(`Agent ${params.agent.address} is paused in vault ${params.vault}`);
|
|
131
|
+
}
|
|
132
|
+
// Step 3: Determine actionType + spending
|
|
133
|
+
const actionType = params.actionType ?? ActionType.Swap;
|
|
134
|
+
const actionKey = ACTION_TYPE_KEYS[actionType];
|
|
135
|
+
if (!actionKey) {
|
|
136
|
+
throw new Error(`Unknown ActionType: ${actionType}`);
|
|
137
|
+
}
|
|
138
|
+
// Escrow actions use standalone instructions, not the validate/finalize composition flow.
|
|
139
|
+
// On-chain validate_and_authorize rejects escrow actions with InvalidSession.
|
|
140
|
+
const ESCROW_ACTIONS = new Set([
|
|
141
|
+
ActionType.CreateEscrow,
|
|
142
|
+
ActionType.SettleEscrow,
|
|
143
|
+
ActionType.RefundEscrow,
|
|
144
|
+
]);
|
|
145
|
+
if (ESCROW_ACTIONS.has(actionType)) {
|
|
146
|
+
throw new Error(`Escrow action "${actionKey}" uses standalone instructions, not seal(). ` +
|
|
147
|
+
`Use createEscrow/settleEscrow/refundEscrow directly.`);
|
|
148
|
+
}
|
|
149
|
+
const spending = isSpendingAction(actionKey);
|
|
150
|
+
if (params.amount < 0n) {
|
|
151
|
+
throw new Error(`Amount must be non-negative, got ${params.amount}. ` +
|
|
152
|
+
`Sigil amounts are unsigned 64-bit integers (0 to 18446744073709551615).`);
|
|
153
|
+
}
|
|
154
|
+
if (spending && params.amount === 0n) {
|
|
155
|
+
throw new Error(`Spending action "${actionKey}" requires amount > 0`);
|
|
156
|
+
}
|
|
157
|
+
if (!spending && params.amount !== undefined && params.amount !== 0n) {
|
|
158
|
+
throw new Error(`Non-spending action "${actionKey}" requires amount === 0 (on-chain enforces InvalidNonSpendingAmount)`);
|
|
159
|
+
}
|
|
160
|
+
// Step 4: Strip infrastructure instructions
|
|
161
|
+
const defiInstructions = params.instructions.filter((ix) => ix.programAddress !== COMPUTE_BUDGET_PROGRAM &&
|
|
162
|
+
ix.programAddress !== SYSTEM_PROGRAM);
|
|
163
|
+
// Step 4b: SPL Token blocking — mirrors on-chain scan_instruction_shared().
|
|
164
|
+
// Blocked: Approve(4), ApproveChecked(13), Transfer(3), TransferChecked(12),
|
|
165
|
+
// SetAuthority(6), CloseAccount(9), Burn(8), BurnChecked(15), Token-2022:26.
|
|
166
|
+
for (const ix of defiInstructions) {
|
|
167
|
+
if ((ix.programAddress === TOKEN_PROGRAM ||
|
|
168
|
+
ix.programAddress === TOKEN_2022_PROGRAM) &&
|
|
169
|
+
ix.data &&
|
|
170
|
+
ix.data.length > 0) {
|
|
171
|
+
const disc = ix.data[0];
|
|
172
|
+
if (disc === 4) {
|
|
173
|
+
throw new Error("Top-level SPL Token Approve not allowed in sealed transactions. " +
|
|
174
|
+
"DeFi programs handle approvals via CPI.");
|
|
175
|
+
}
|
|
176
|
+
if (disc === 13) {
|
|
177
|
+
throw new Error("Top-level SPL Token ApproveChecked not allowed in sealed transactions. " +
|
|
178
|
+
"DeFi programs handle approvals via CPI.");
|
|
179
|
+
}
|
|
180
|
+
if (disc === 3 ||
|
|
181
|
+
disc === 12 ||
|
|
182
|
+
(ix.programAddress === TOKEN_2022_PROGRAM && disc === 26)) {
|
|
183
|
+
throw new Error("Top-level SPL Token Transfer not allowed in sealed transactions. " +
|
|
184
|
+
"Use the Transfer ActionType instead.");
|
|
185
|
+
}
|
|
186
|
+
if (disc === 6 || disc === 9) {
|
|
187
|
+
throw new Error("Top-level SPL Token SetAuthority/CloseAccount not allowed in sealed transactions. " +
|
|
188
|
+
"These operations could damage or destroy vault token accounts.");
|
|
189
|
+
}
|
|
190
|
+
if (disc === 8 || disc === 15) {
|
|
191
|
+
throw new Error("Top-level SPL Token Burn/BurnChecked not allowed in sealed transactions. " +
|
|
192
|
+
"Delegate burn authority could destroy vault funds.");
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// Step 5: Determine targetProtocol
|
|
197
|
+
const targetProtocol = params.targetProtocol ?? defiInstructions[0]?.programAddress;
|
|
198
|
+
if (!targetProtocol) {
|
|
199
|
+
throw new Error("No target protocol: provide targetProtocol or include DeFi instructions");
|
|
200
|
+
}
|
|
201
|
+
// Step 6: Pre-flight checks
|
|
202
|
+
// 6a: Permission check (hard error)
|
|
203
|
+
if (!hasPermission(agentEntry.permissions, actionKey)) {
|
|
204
|
+
throw new Error(`Agent lacks permission for action "${actionKey}"`);
|
|
205
|
+
}
|
|
206
|
+
// 6b: Protocol allowlist (hard error)
|
|
207
|
+
if (!isProtocolAllowed(targetProtocol, state.policy)) {
|
|
208
|
+
throw new Error(`Protocol ${targetProtocol} is not allowed by vault policy`);
|
|
209
|
+
}
|
|
210
|
+
// 6b2: DeFi instruction count enforcement (mirrors on-chain v&a.rs:325-354)
|
|
211
|
+
if (spending) {
|
|
212
|
+
const defiCount = defiInstructions.filter((ix) => RECOGNIZED_DEFI_PROGRAMS.has(ix.programAddress)).length;
|
|
213
|
+
const isStablecoinInput = isStablecoinMint(params.tokenMint, net);
|
|
214
|
+
if (isStablecoinInput && defiCount > 1) {
|
|
215
|
+
throw new Error("At most 1 recognized DeFi instruction for stablecoin input " +
|
|
216
|
+
"(prevents round-trip fee avoidance).");
|
|
217
|
+
}
|
|
218
|
+
if (!isStablecoinInput && defiCount !== 1) {
|
|
219
|
+
throw new Error("Exactly 1 recognized DeFi instruction required for non-stablecoin input.");
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// 6c: Cap headroom — fee-inclusive check (hard error)
|
|
223
|
+
// On-chain finalize_session measures actual_spend which includes fees deducted
|
|
224
|
+
// from the vault balance. SDK must account for fees to avoid submitting TXs
|
|
225
|
+
// that will definitely fail and waste priority fees.
|
|
226
|
+
if (spending && params.amount > 0n) {
|
|
227
|
+
const FEE_DENOM = 1000000n;
|
|
228
|
+
const ceilFee = (amount, rate) => (amount * rate + FEE_DENOM - 1n) / FEE_DENOM;
|
|
229
|
+
const protocolFee = ceilFee(params.amount, BigInt(PROTOCOL_FEE_RATE));
|
|
230
|
+
const devFee = ceilFee(params.amount, BigInt(state.policy.developerFeeRate));
|
|
231
|
+
const totalWithFees = params.amount + protocolFee + devFee;
|
|
232
|
+
const headroom = state.globalBudget.remaining;
|
|
233
|
+
if (totalWithFees > headroom) {
|
|
234
|
+
throw new Error(`Amount ${params.amount} + fees (protocol: ${protocolFee}, dev: ${devFee}) = ${totalWithFees} ` +
|
|
235
|
+
`exceeds remaining daily cap headroom ${headroom}. ` +
|
|
236
|
+
`Reduce amount or wait for rolling window to free capacity.`);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// 6d: Position limit check for increment actions (all 3 PositionEffect::Increment types)
|
|
240
|
+
if ((actionType === ActionType.OpenPosition ||
|
|
241
|
+
actionType === ActionType.SwapAndOpenPosition ||
|
|
242
|
+
actionType === ActionType.PlaceLimitOrder) &&
|
|
243
|
+
state.vault.openPositions >= state.policy.maxConcurrentPositions) {
|
|
244
|
+
throw new Error(`Position limit reached: ${state.vault.openPositions}/${state.policy.maxConcurrentPositions}`);
|
|
245
|
+
}
|
|
246
|
+
// Step 6e: Non-canonical output stablecoin ATA rejection
|
|
247
|
+
if (params.outputStablecoinAccount &&
|
|
248
|
+
spending &&
|
|
249
|
+
!isStablecoinMint(params.tokenMint, net)) {
|
|
250
|
+
const stableMint = net === "devnet" ? USDC_MINT_DEVNET : USDC_MINT_MAINNET;
|
|
251
|
+
const canonicalAta = await deriveAta(params.vault, stableMint);
|
|
252
|
+
if (params.outputStablecoinAccount !== canonicalAta) {
|
|
253
|
+
throw new Error(`Non-canonical output stablecoin ATA. Expected ${canonicalAta}, ` +
|
|
254
|
+
`got ${params.outputStablecoinAccount}. ` +
|
|
255
|
+
`Use the vault's canonical ATA for balance tracking consistency.`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// Step 7: Derive token accounts (parallelized — all pure crypto, no RPC)
|
|
259
|
+
const needsOutputStablecoin = spending && !isStablecoinMint(params.tokenMint, net);
|
|
260
|
+
const defaultStableMint = net === "devnet" ? USDC_MINT_DEVNET : USDC_MINT_MAINNET;
|
|
261
|
+
const [vaultTokenAccount, outputStablecoinDerived, protocolTreasuryTokenAccount, feeDestinationTokenAccount, [agentOverlayPda], [sessionPda], agentTokenAta, agentStablecoinAta,] = await Promise.all([
|
|
262
|
+
deriveAta(params.vault, params.tokenMint),
|
|
263
|
+
needsOutputStablecoin && !params.outputStablecoinAccount
|
|
264
|
+
? deriveAta(params.vault, defaultStableMint).then(async (ata) => {
|
|
265
|
+
// Fix 7: Verify output stablecoin ATA exists to prevent fee burn on missing account
|
|
266
|
+
try {
|
|
267
|
+
const info = await params.rpc
|
|
268
|
+
.getAccountInfo(ata, { encoding: "base64" })
|
|
269
|
+
.send();
|
|
270
|
+
if (!info || !info.value) {
|
|
271
|
+
warnings.push(`Output stablecoin ATA ${ata} does not exist on-chain. ` +
|
|
272
|
+
`Transaction will fail at validate_and_authorize. ` +
|
|
273
|
+
`Create it first with createAssociatedTokenAccount.`);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
// RPC error — proceed with derived address (on-chain will catch)
|
|
278
|
+
}
|
|
279
|
+
return ata;
|
|
280
|
+
})
|
|
281
|
+
: Promise.resolve(undefined),
|
|
282
|
+
spending
|
|
283
|
+
? deriveAta(PROTOCOL_TREASURY, params.tokenMint)
|
|
284
|
+
: Promise.resolve(undefined),
|
|
285
|
+
spending && state.policy.developerFeeRate > 0
|
|
286
|
+
? deriveAta(state.vault.feeDestination, params.tokenMint)
|
|
287
|
+
: Promise.resolve(undefined),
|
|
288
|
+
getAgentOverlayPDA(params.vault, 0),
|
|
289
|
+
getSessionPDA(params.vault, params.agent.address, params.tokenMint),
|
|
290
|
+
deriveAta(params.agent.address, params.tokenMint),
|
|
291
|
+
needsOutputStablecoin
|
|
292
|
+
? deriveAta(params.agent.address, defaultStableMint)
|
|
293
|
+
: Promise.resolve(undefined),
|
|
294
|
+
]);
|
|
295
|
+
const outputStablecoinAccount = params.outputStablecoinAccount ?? outputStablecoinDerived;
|
|
296
|
+
// Step 7b: Replace agent ATAs with vault ATAs in DeFi instructions
|
|
297
|
+
const ataReplacements = new Map();
|
|
298
|
+
ataReplacements.set(agentTokenAta, vaultTokenAccount);
|
|
299
|
+
if (agentStablecoinAta && outputStablecoinAccount) {
|
|
300
|
+
ataReplacements.set(agentStablecoinAta, outputStablecoinAccount);
|
|
301
|
+
}
|
|
302
|
+
// Merge additional ATA replacements for multi-token DeFi routes
|
|
303
|
+
if (params.additionalAtaReplacements) {
|
|
304
|
+
for (const [agentAta, vaultAta] of params.additionalAtaReplacements) {
|
|
305
|
+
if (ataReplacements.has(agentAta)) {
|
|
306
|
+
throw new Error(`additionalAtaReplacements key ${agentAta} conflicts with canonical ` +
|
|
307
|
+
`ATA replacement. Cannot override vault token account mappings.`);
|
|
308
|
+
}
|
|
309
|
+
ataReplacements.set(agentAta, vaultAta);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
const rewrittenDefiInstructions = replaceAgentAtas(defiInstructions, ataReplacements);
|
|
313
|
+
// Step 8: Build validate_and_authorize instruction
|
|
314
|
+
const validateIx = await getValidateAndAuthorizeInstructionAsync({
|
|
315
|
+
agent: params.agent,
|
|
316
|
+
vault: params.vault,
|
|
317
|
+
agentSpendOverlay: agentOverlayPda,
|
|
318
|
+
vaultTokenAccount,
|
|
319
|
+
tokenMintAccount: params.tokenMint,
|
|
320
|
+
protocolTreasuryTokenAccount,
|
|
321
|
+
feeDestinationTokenAccount,
|
|
322
|
+
outputStablecoinAccount,
|
|
323
|
+
actionType,
|
|
324
|
+
tokenMint: params.tokenMint,
|
|
325
|
+
amount: params.amount,
|
|
326
|
+
targetProtocol,
|
|
327
|
+
leverageBps: params.leverageBps ?? null,
|
|
328
|
+
});
|
|
329
|
+
const finalizeIx = await getFinalizeSessionInstructionAsync({
|
|
330
|
+
payer: params.agent,
|
|
331
|
+
vault: params.vault,
|
|
332
|
+
session: sessionPda,
|
|
333
|
+
sessionRentRecipient: params.agent.address,
|
|
334
|
+
agentSpendOverlay: agentOverlayPda,
|
|
335
|
+
vaultTokenAccount,
|
|
336
|
+
outputStablecoinAccount,
|
|
337
|
+
});
|
|
338
|
+
// Step 10: Compose + compile + measure
|
|
339
|
+
const blockhash = params.blockhash ?? (await blockhashCache.get(params.rpc));
|
|
340
|
+
// Resolve ALTs — Sigil ALT + protocol ALTs (e.g. Jupiter route-specific)
|
|
341
|
+
let addressLookupTables = params.addressLookupTables;
|
|
342
|
+
if (!addressLookupTables) {
|
|
343
|
+
const sigilAlt = getSigilAltAddress(net);
|
|
344
|
+
const allAlts = mergeAltAddresses(sigilAlt, params.protocolAltAddresses);
|
|
345
|
+
addressLookupTables = await altCache.resolve(params.rpc, allAlts);
|
|
346
|
+
// Verify Sigil ALT contents — if stale cache causes mismatch, evict and retry once.
|
|
347
|
+
// This self-heals after ALT extension without requiring manual cache invalidation.
|
|
348
|
+
try {
|
|
349
|
+
verifySigilAlt(addressLookupTables, sigilAlt, getExpectedAltContents(net));
|
|
350
|
+
}
|
|
351
|
+
catch (e) {
|
|
352
|
+
// Evict stale cache entry and re-resolve from RPC
|
|
353
|
+
altCache.invalidate();
|
|
354
|
+
addressLookupTables = await altCache.resolve(params.rpc, allAlts);
|
|
355
|
+
// Second attempt throws if still mismatched (real corruption, not staleness)
|
|
356
|
+
verifySigilAlt(addressLookupTables, sigilAlt, getExpectedAltContents(net));
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
const compiledTx = composeSigilTransaction({
|
|
360
|
+
feePayer: params.agent.address,
|
|
361
|
+
validateIx: toInstruction(validateIx),
|
|
362
|
+
defiInstructions: rewrittenDefiInstructions,
|
|
363
|
+
finalizeIx: toInstruction(finalizeIx),
|
|
364
|
+
blockhash,
|
|
365
|
+
computeUnits: params.computeUnits,
|
|
366
|
+
priorityFeeMicroLamports: params.priorityFeeMicroLamports,
|
|
367
|
+
addressLookupTables,
|
|
368
|
+
});
|
|
369
|
+
const { byteLength, withinLimit } = measureTransactionSize(compiledTx);
|
|
370
|
+
if (!withinLimit) {
|
|
371
|
+
const hasProtocolAlts = params.protocolAltAddresses && params.protocolAltAddresses.length > 0;
|
|
372
|
+
throw new Error(`Transaction size ${byteLength} bytes exceeds 1232 byte limit. ` +
|
|
373
|
+
(hasProtocolAlts
|
|
374
|
+
? `Even with ${params.protocolAltAddresses.length} protocol ALT(s), the transaction is too large. Reduce instruction count.`
|
|
375
|
+
: `Pass protocolAltAddresses from your DeFi API response (e.g. Jupiter swap-instructions addressLookupTableAddresses).`));
|
|
376
|
+
}
|
|
377
|
+
// Build vaultContext for downstream drain detection
|
|
378
|
+
const usdcMintForNet = net === "devnet" ? USDC_MINT_DEVNET : USDC_MINT_MAINNET;
|
|
379
|
+
const usdtMintForNet = net === "devnet" ? USDT_MINT_DEVNET : USDT_MINT_MAINNET;
|
|
380
|
+
let tokenBalance;
|
|
381
|
+
if (params.tokenMint === usdcMintForNet) {
|
|
382
|
+
tokenBalance = state.stablecoinBalances.usdc;
|
|
383
|
+
}
|
|
384
|
+
else if (params.tokenMint === usdtMintForNet) {
|
|
385
|
+
tokenBalance = state.stablecoinBalances.usdt;
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
// Non-stablecoin: fetch actual balance from vault's token ATA.
|
|
389
|
+
// Without this, drain detection is blind (totalVaultBalance=0 skips all checks).
|
|
390
|
+
// We DO NOT silently fall back to 0n — that disables drain detection entirely.
|
|
391
|
+
// If we can't verify the balance, we tell the caller explicitly.
|
|
392
|
+
try {
|
|
393
|
+
const info = await params.rpc
|
|
394
|
+
.getAccountInfo(vaultTokenAccount, { encoding: "base64" })
|
|
395
|
+
.send();
|
|
396
|
+
if (info?.value?.data?.[0]) {
|
|
397
|
+
tokenBalance = parseTokenBalance(info.value.data[0]);
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
// Account doesn't exist → vault genuinely has 0 tokens of this mint.
|
|
401
|
+
// This is a legitimate state (vault created but not yet funded for this token).
|
|
402
|
+
tokenBalance = 0n;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
catch {
|
|
406
|
+
// RPC failed — we cannot verify the vault balance.
|
|
407
|
+
// Rather than silently disabling drain detection by setting 0n,
|
|
408
|
+
// use a sentinel value that makes percentage checks MORE sensitive.
|
|
409
|
+
// u64::MAX means any outflow triggers LARGE_OUTFLOW + FULL_DRAIN.
|
|
410
|
+
tokenBalance = 18446744073709551615n; // u64::MAX — assume worst case
|
|
411
|
+
warnings.push("Failed to fetch non-stablecoin token balance via RPC. " +
|
|
412
|
+
"Drain detection assumes maximum balance (all outflows will be flagged). " +
|
|
413
|
+
"This is a conservative fallback — verify RPC connectivity.");
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
// Known recipients: ATA addresses that legitimately receive tokens during Sigil TXs.
|
|
417
|
+
// Drain detection compares against token account (ATA) addresses in balance deltas,
|
|
418
|
+
// so we must add ATAs here — NOT wallet addresses (which would never match).
|
|
419
|
+
const knownRecipients = new Set();
|
|
420
|
+
knownRecipients.add(vaultTokenAccount); // vault's own token ATA
|
|
421
|
+
if (protocolTreasuryTokenAccount) {
|
|
422
|
+
knownRecipients.add(protocolTreasuryTokenAccount);
|
|
423
|
+
}
|
|
424
|
+
if (feeDestinationTokenAccount) {
|
|
425
|
+
knownRecipients.add(feeDestinationTokenAccount);
|
|
426
|
+
}
|
|
427
|
+
return {
|
|
428
|
+
ok: true,
|
|
429
|
+
transaction: compiledTx,
|
|
430
|
+
actionType,
|
|
431
|
+
warnings,
|
|
432
|
+
txSizeBytes: byteLength,
|
|
433
|
+
lastValidBlockHeight: blockhash.lastValidBlockHeight,
|
|
434
|
+
vaultContext: {
|
|
435
|
+
vaultAddress: params.vault,
|
|
436
|
+
vaultTokenAta: vaultTokenAccount,
|
|
437
|
+
tokenBalance,
|
|
438
|
+
knownRecipients,
|
|
439
|
+
},
|
|
440
|
+
};
|
|
441
|
+
}
|
|
442
|
+
// ─── SigilClient ─────────────────────────────────────────────────────────
|
|
443
|
+
/**
|
|
444
|
+
* Primary SDK entry point — stateful client that owns context and caches.
|
|
445
|
+
*
|
|
446
|
+
* Recommended over standalone seal() for production use:
|
|
447
|
+
* - Holds vault, agent, network, and RPC — no state carrying between calls
|
|
448
|
+
* - Blockhash and ALT caches are isolated per client instance
|
|
449
|
+
* - invalidateCaches() clears instance caches that are actually used
|
|
450
|
+
* - Convenience methods delegate to existing stateless functions
|
|
451
|
+
*/
|
|
452
|
+
export class SigilClient {
|
|
453
|
+
blockhashCacheInstance;
|
|
454
|
+
altCacheInstance;
|
|
455
|
+
onErrorCallback;
|
|
456
|
+
rpc;
|
|
457
|
+
vault;
|
|
458
|
+
agent;
|
|
459
|
+
network;
|
|
460
|
+
constructor(config) {
|
|
461
|
+
if (!config.rpc)
|
|
462
|
+
throw new Error("SigilClientConfig.rpc is required");
|
|
463
|
+
if (!config.vault)
|
|
464
|
+
throw new Error("SigilClientConfig.vault is required");
|
|
465
|
+
if (!config.agent)
|
|
466
|
+
throw new Error("SigilClientConfig.agent is required");
|
|
467
|
+
if (!config.network)
|
|
468
|
+
throw new Error("SigilClientConfig.network is required");
|
|
469
|
+
this.rpc = config.rpc;
|
|
470
|
+
this.vault = config.vault;
|
|
471
|
+
this.agent = config.agent;
|
|
472
|
+
this.network = config.network;
|
|
473
|
+
this.blockhashCacheInstance = new BlockhashCache(config.blockhashTtlMs);
|
|
474
|
+
this.altCacheInstance = new AltCache();
|
|
475
|
+
this.onErrorCallback = config.onError;
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Seal DeFi instructions with Sigil security.
|
|
479
|
+
*
|
|
480
|
+
* Pre-resolves blockhash and ALTs from instance caches, then delegates
|
|
481
|
+
* to the standalone seal() function. This ensures invalidateCaches()
|
|
482
|
+
* actually clears caches that are read (N-2 fix).
|
|
483
|
+
*/
|
|
484
|
+
async seal(instructions, opts) {
|
|
485
|
+
// Parallelize blockhash + ALT resolution (both independent RPC calls)
|
|
486
|
+
const altPromise = opts.addressLookupTables
|
|
487
|
+
? Promise.resolve(opts.addressLookupTables)
|
|
488
|
+
: this.altCacheInstance.resolve(this.rpc, mergeAltAddresses(getSigilAltAddress(normalizeNetwork(this.network)), opts.protocolAltAddresses));
|
|
489
|
+
let [blockhash, addressLookupTables] = await Promise.all([
|
|
490
|
+
this.blockhashCacheInstance.get(this.rpc),
|
|
491
|
+
altPromise,
|
|
492
|
+
]);
|
|
493
|
+
// Defense-in-depth: verify Sigil ALT contents even when pre-resolved.
|
|
494
|
+
// On-chain constraints are the real security boundary, but this catches
|
|
495
|
+
// stale ALT data or SDK-layer corruption before the transaction is sent.
|
|
496
|
+
// If stale cache causes mismatch, evict and retry once (self-healing).
|
|
497
|
+
if (!opts.addressLookupTables) {
|
|
498
|
+
const net = normalizeNetwork(this.network);
|
|
499
|
+
const sigilAlt = getSigilAltAddress(net);
|
|
500
|
+
const expected = getExpectedAltContents(net);
|
|
501
|
+
try {
|
|
502
|
+
verifySigilAlt(addressLookupTables, sigilAlt, expected);
|
|
503
|
+
}
|
|
504
|
+
catch {
|
|
505
|
+
this.altCacheInstance.invalidate();
|
|
506
|
+
const allAlts = mergeAltAddresses(sigilAlt, opts.protocolAltAddresses);
|
|
507
|
+
addressLookupTables = await this.altCacheInstance.resolve(this.rpc, allAlts);
|
|
508
|
+
verifySigilAlt(addressLookupTables, sigilAlt, expected);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
return seal({
|
|
512
|
+
rpc: this.rpc,
|
|
513
|
+
vault: this.vault,
|
|
514
|
+
agent: this.agent,
|
|
515
|
+
network: this.network,
|
|
516
|
+
instructions,
|
|
517
|
+
...opts,
|
|
518
|
+
blockhash,
|
|
519
|
+
addressLookupTables,
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Seal + sign + send + confirm in one call.
|
|
524
|
+
*
|
|
525
|
+
* Uses the same signing pattern as TransactionExecutor.signSendConfirm()
|
|
526
|
+
* (transaction-executor.ts:236-265).
|
|
527
|
+
*/
|
|
528
|
+
async executeAndConfirm(instructions, opts) {
|
|
529
|
+
try {
|
|
530
|
+
const result = await this.seal(instructions, opts);
|
|
531
|
+
const encoded = await signAndEncode(this.agent, result.transaction);
|
|
532
|
+
const signature = await sendAndConfirmTransaction(this.rpc, encoded, opts.confirmOptions);
|
|
533
|
+
return { signature, sealResult: result };
|
|
534
|
+
}
|
|
535
|
+
catch (err) {
|
|
536
|
+
const sdkError = toSigilAgentError(err);
|
|
537
|
+
this.onErrorCallback?.(sdkError, {
|
|
538
|
+
action: opts.actionType?.toString() ?? "unknown",
|
|
539
|
+
tokenMint: opts.tokenMint,
|
|
540
|
+
amount: opts.amount,
|
|
541
|
+
});
|
|
542
|
+
throw sdkError;
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
invalidateCaches() {
|
|
546
|
+
this.blockhashCacheInstance.invalidate();
|
|
547
|
+
this.altCacheInstance.invalidate();
|
|
548
|
+
}
|
|
549
|
+
// ─── Convenience methods (pure delegation) ─────────────────────────────
|
|
550
|
+
get networkFull() {
|
|
551
|
+
return this.network === "mainnet" ? "mainnet-beta" : "devnet";
|
|
552
|
+
}
|
|
553
|
+
async getVaultState() {
|
|
554
|
+
return resolveVaultStateForOwner(this.rpc, this.vault, undefined, this.networkFull);
|
|
555
|
+
}
|
|
556
|
+
async getAgentBudget() {
|
|
557
|
+
return resolveVaultBudget(this.rpc, this.vault, this.agent.address);
|
|
558
|
+
}
|
|
559
|
+
async getPnL() {
|
|
560
|
+
return getVaultPnL(this.rpc, this.vault, this.networkFull);
|
|
561
|
+
}
|
|
562
|
+
async getTokenBalances() {
|
|
563
|
+
return getVaultTokenBalances(this.rpc, this.vault, this.networkFull);
|
|
564
|
+
}
|
|
565
|
+
static async createVault(opts) {
|
|
566
|
+
return createVault(opts);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
//# sourceMappingURL=seal.js.map
|
package/dist/seal.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seal.js","sourceRoot":"","sources":["../src/seal.ts"],"names":[],"mappings":"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"}
|