@agirails/sdk 2.0.1-beta → 2.0.2
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 +190 -0
- package/README.md +116 -108
- package/bin/actp +10 -0
- package/dist/ACTPClient.d.ts +456 -33
- package/dist/ACTPClient.d.ts.map +1 -1
- package/dist/ACTPClient.js +477 -93
- package/dist/ACTPClient.js.map +1 -1
- package/dist/abi/AgentRegistry.json +782 -0
- package/dist/abi/EscrowVault.json +106 -38
- package/dist/abi/IdentityRegistry.json +316 -0
- package/dist/adapters/BaseAdapter.d.ts +231 -0
- package/dist/adapters/BaseAdapter.d.ts.map +1 -0
- package/dist/adapters/BaseAdapter.js +393 -0
- package/dist/adapters/BaseAdapter.js.map +1 -0
- package/dist/adapters/BeginnerAdapter.d.ts +152 -0
- package/dist/adapters/BeginnerAdapter.d.ts.map +1 -0
- package/dist/adapters/BeginnerAdapter.js +168 -0
- package/dist/adapters/BeginnerAdapter.js.map +1 -0
- package/dist/adapters/IntermediateAdapter.d.ts +211 -0
- package/dist/adapters/IntermediateAdapter.d.ts.map +1 -0
- package/dist/adapters/IntermediateAdapter.js +260 -0
- package/dist/adapters/IntermediateAdapter.js.map +1 -0
- package/dist/adapters/index.d.ts +15 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +26 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/builders/DeliveryProofBuilder.d.ts +60 -1
- package/dist/builders/DeliveryProofBuilder.d.ts.map +1 -1
- package/dist/builders/DeliveryProofBuilder.js +81 -5
- package/dist/builders/DeliveryProofBuilder.js.map +1 -1
- package/dist/builders/QuoteBuilder.d.ts +101 -0
- package/dist/builders/QuoteBuilder.d.ts.map +1 -1
- package/dist/builders/QuoteBuilder.js +120 -3
- package/dist/builders/QuoteBuilder.js.map +1 -1
- package/dist/builders/index.d.ts +4 -0
- package/dist/builders/index.d.ts.map +1 -1
- package/dist/builders/index.js +4 -0
- package/dist/builders/index.js.map +1 -1
- package/dist/cli/commands/balance.d.ts +13 -0
- package/dist/cli/commands/balance.d.ts.map +1 -0
- package/dist/cli/commands/balance.js +89 -0
- package/dist/cli/commands/balance.js.map +1 -0
- package/dist/cli/commands/batch.d.ts +24 -0
- package/dist/cli/commands/batch.d.ts.map +1 -0
- package/dist/cli/commands/batch.js +424 -0
- package/dist/cli/commands/batch.js.map +1 -0
- package/dist/cli/commands/config.d.ts +13 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +192 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/init.d.ts +19 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +143 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/mint.d.ts +13 -0
- package/dist/cli/commands/mint.d.ts.map +1 -0
- package/dist/cli/commands/mint.js +91 -0
- package/dist/cli/commands/mint.js.map +1 -0
- package/dist/cli/commands/pay.d.ts +18 -0
- package/dist/cli/commands/pay.d.ts.map +1 -0
- package/dist/cli/commands/pay.js +87 -0
- package/dist/cli/commands/pay.js.map +1 -0
- package/dist/cli/commands/simulate.d.ts +32 -0
- package/dist/cli/commands/simulate.d.ts.map +1 -0
- package/dist/cli/commands/simulate.js +290 -0
- package/dist/cli/commands/simulate.js.map +1 -0
- package/dist/cli/commands/time.d.ts +29 -0
- package/dist/cli/commands/time.d.ts.map +1 -0
- package/dist/cli/commands/time.js +252 -0
- package/dist/cli/commands/time.js.map +1 -0
- package/dist/cli/commands/tx.d.ts +16 -0
- package/dist/cli/commands/tx.d.ts.map +1 -0
- package/dist/cli/commands/tx.js +379 -0
- package/dist/cli/commands/tx.js.map +1 -0
- package/dist/cli/commands/watch.d.ts +20 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/commands/watch.js +160 -0
- package/dist/cli/commands/watch.js.map +1 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +104 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/client.d.ts +70 -0
- package/dist/cli/utils/client.d.ts.map +1 -0
- package/dist/cli/utils/client.js +240 -0
- package/dist/cli/utils/client.js.map +1 -0
- package/dist/cli/utils/config.d.ts +91 -0
- package/dist/cli/utils/config.d.ts.map +1 -0
- package/dist/cli/utils/config.js +240 -0
- package/dist/cli/utils/config.js.map +1 -0
- package/dist/cli/utils/output.d.ts +174 -0
- package/dist/cli/utils/output.d.ts.map +1 -0
- package/dist/cli/utils/output.js +380 -0
- package/dist/cli/utils/output.js.map +1 -0
- package/dist/config/networks.d.ts +28 -0
- package/dist/config/networks.d.ts.map +1 -1
- package/dist/config/networks.js +60 -12
- package/dist/config/networks.js.map +1 -1
- package/dist/errors/index.d.ts +165 -2
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +260 -2
- package/dist/errors/index.js.map +1 -1
- package/dist/index.d.ts +61 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +141 -36
- package/dist/index.js.map +1 -1
- package/dist/level0/Provider.d.ts +106 -0
- package/dist/level0/Provider.d.ts.map +1 -0
- package/dist/level0/Provider.js +10 -0
- package/dist/level0/Provider.js.map +1 -0
- package/dist/level0/ServiceDirectory.d.ts +74 -0
- package/dist/level0/ServiceDirectory.d.ts.map +1 -0
- package/dist/level0/ServiceDirectory.js +122 -0
- package/dist/level0/ServiceDirectory.js.map +1 -0
- package/dist/level0/index.d.ts +10 -0
- package/dist/level0/index.d.ts.map +1 -0
- package/dist/level0/index.js +15 -0
- package/dist/level0/index.js.map +1 -0
- package/dist/level0/provide.d.ts +51 -0
- package/dist/level0/provide.d.ts.map +1 -0
- package/dist/level0/provide.js +113 -0
- package/dist/level0/provide.js.map +1 -0
- package/dist/level0/request.d.ts +53 -0
- package/dist/level0/request.d.ts.map +1 -0
- package/dist/level0/request.js +462 -0
- package/dist/level0/request.js.map +1 -0
- package/dist/level1/Agent.d.ts +472 -0
- package/dist/level1/Agent.d.ts.map +1 -0
- package/dist/level1/Agent.js +1091 -0
- package/dist/level1/Agent.js.map +1 -0
- package/dist/level1/index.d.ts +10 -0
- package/dist/level1/index.d.ts.map +1 -0
- package/dist/level1/index.js +30 -0
- package/dist/level1/index.js.map +1 -0
- package/dist/level1/pricing/PriceCalculator.d.ts +62 -0
- package/dist/level1/pricing/PriceCalculator.d.ts.map +1 -0
- package/dist/level1/pricing/PriceCalculator.js +237 -0
- package/dist/level1/pricing/PriceCalculator.js.map +1 -0
- package/dist/level1/pricing/PricingStrategy.d.ts +179 -0
- package/dist/level1/pricing/PricingStrategy.d.ts.map +1 -0
- package/dist/level1/pricing/PricingStrategy.js +11 -0
- package/dist/level1/pricing/PricingStrategy.js.map +1 -0
- package/dist/level1/types/Job.d.ts +166 -0
- package/dist/level1/types/Job.d.ts.map +1 -0
- package/dist/level1/types/Job.js +11 -0
- package/dist/level1/types/Job.js.map +1 -0
- package/dist/level1/types/Options.d.ts +258 -0
- package/dist/level1/types/Options.d.ts.map +1 -0
- package/dist/level1/types/Options.js +8 -0
- package/dist/level1/types/Options.js.map +1 -0
- package/dist/level1/types/index.d.ts +8 -0
- package/dist/level1/types/index.d.ts.map +1 -0
- package/dist/level1/types/index.js +8 -0
- package/dist/level1/types/index.js.map +1 -0
- package/dist/protocol/ACTPKernel.d.ts +229 -2
- package/dist/protocol/ACTPKernel.d.ts.map +1 -1
- package/dist/protocol/ACTPKernel.js +367 -33
- package/dist/protocol/ACTPKernel.js.map +1 -1
- package/dist/protocol/AgentRegistry.d.ts +177 -0
- package/dist/protocol/AgentRegistry.d.ts.map +1 -0
- package/dist/protocol/AgentRegistry.js +449 -0
- package/dist/protocol/AgentRegistry.js.map +1 -0
- package/dist/protocol/DIDManager.d.ts +289 -0
- package/dist/protocol/DIDManager.d.ts.map +1 -0
- package/dist/protocol/DIDManager.js +481 -0
- package/dist/protocol/DIDManager.js.map +1 -0
- package/dist/protocol/DIDResolver.d.ts +236 -0
- package/dist/protocol/DIDResolver.d.ts.map +1 -0
- package/dist/protocol/DIDResolver.js +495 -0
- package/dist/protocol/DIDResolver.js.map +1 -0
- package/dist/protocol/EASHelper.d.ts +57 -2
- package/dist/protocol/EASHelper.d.ts.map +1 -1
- package/dist/protocol/EASHelper.js +230 -37
- package/dist/protocol/EASHelper.js.map +1 -1
- package/dist/protocol/EscrowVault.d.ts +93 -2
- package/dist/protocol/EscrowVault.d.ts.map +1 -1
- package/dist/protocol/EscrowVault.js +122 -33
- package/dist/protocol/EscrowVault.js.map +1 -1
- package/dist/protocol/EventMonitor.d.ts +45 -1
- package/dist/protocol/EventMonitor.d.ts.map +1 -1
- package/dist/protocol/EventMonitor.js +64 -8
- package/dist/protocol/EventMonitor.js.map +1 -1
- package/dist/protocol/MessageSigner.d.ts +116 -2
- package/dist/protocol/MessageSigner.d.ts.map +1 -1
- package/dist/protocol/MessageSigner.js +215 -9
- package/dist/protocol/MessageSigner.js.map +1 -1
- package/dist/protocol/ProofGenerator.d.ts +93 -0
- package/dist/protocol/ProofGenerator.d.ts.map +1 -1
- package/dist/protocol/ProofGenerator.js +194 -9
- package/dist/protocol/ProofGenerator.js.map +1 -1
- package/dist/protocol/QuoteBuilder.d.ts +8 -0
- package/dist/protocol/QuoteBuilder.d.ts.map +1 -1
- package/dist/protocol/QuoteBuilder.js +8 -0
- package/dist/protocol/QuoteBuilder.js.map +1 -1
- package/dist/runtime/BlockchainRuntime.d.ts +360 -0
- package/dist/runtime/BlockchainRuntime.d.ts.map +1 -0
- package/dist/runtime/BlockchainRuntime.js +767 -0
- package/dist/runtime/BlockchainRuntime.js.map +1 -0
- package/dist/runtime/IACTPRuntime.d.ts +271 -0
- package/dist/runtime/IACTPRuntime.d.ts.map +1 -0
- package/dist/runtime/IACTPRuntime.js +15 -0
- package/dist/runtime/IACTPRuntime.js.map +1 -0
- package/dist/runtime/MockRuntime.d.ts +445 -0
- package/dist/runtime/MockRuntime.d.ts.map +1 -0
- package/dist/runtime/MockRuntime.js +1065 -0
- package/dist/runtime/MockRuntime.js.map +1 -0
- package/dist/runtime/MockStateManager.d.ts +233 -0
- package/dist/runtime/MockStateManager.d.ts.map +1 -0
- package/dist/runtime/MockStateManager.js +533 -0
- package/dist/runtime/MockStateManager.js.map +1 -0
- package/dist/runtime/index.d.ts +14 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +42 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/types/MockState.d.ts +167 -0
- package/dist/runtime/types/MockState.d.ts.map +1 -0
- package/dist/runtime/types/MockState.js +43 -0
- package/dist/runtime/types/MockState.js.map +1 -0
- package/dist/types/agent.d.ts +76 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +8 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/did.d.ts +192 -0
- package/dist/types/did.d.ts.map +1 -0
- package/dist/types/did.js +38 -0
- package/dist/types/did.js.map +1 -0
- package/dist/types/eip712.d.ts +34 -0
- package/dist/types/eip712.d.ts.map +1 -1
- package/dist/types/eip712.js +31 -5
- package/dist/types/eip712.js.map +1 -1
- package/dist/types/escrow.d.ts +17 -10
- package/dist/types/escrow.d.ts.map +1 -1
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/message.d.ts +32 -0
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js +4 -0
- package/dist/types/message.js.map +1 -1
- package/dist/types/state.d.ts +28 -0
- package/dist/types/state.d.ts.map +1 -1
- package/dist/types/state.js +37 -6
- package/dist/types/state.js.map +1 -1
- package/dist/types/transaction.d.ts +17 -0
- package/dist/types/transaction.d.ts.map +1 -1
- package/dist/utils/ErrorRecoveryGuide.d.ts +125 -0
- package/dist/utils/ErrorRecoveryGuide.d.ts.map +1 -0
- package/dist/utils/ErrorRecoveryGuide.js +579 -0
- package/dist/utils/ErrorRecoveryGuide.js.map +1 -0
- package/dist/utils/Helpers.d.ts +453 -0
- package/dist/utils/Helpers.d.ts.map +1 -0
- package/dist/utils/Helpers.js +623 -0
- package/dist/utils/Helpers.js.map +1 -0
- package/dist/utils/IPFSClient.d.ts +113 -0
- package/dist/utils/IPFSClient.d.ts.map +1 -1
- package/dist/utils/IPFSClient.js +128 -7
- package/dist/utils/IPFSClient.js.map +1 -1
- package/dist/utils/Logger.d.ts +195 -0
- package/dist/utils/Logger.d.ts.map +1 -0
- package/dist/utils/Logger.js +382 -0
- package/dist/utils/Logger.js.map +1 -0
- package/dist/utils/NonceManager.d.ts +234 -1
- package/dist/utils/NonceManager.d.ts.map +1 -1
- package/dist/utils/NonceManager.js +372 -7
- package/dist/utils/NonceManager.js.map +1 -1
- package/dist/utils/RateLimiter.d.ts +253 -0
- package/dist/utils/RateLimiter.d.ts.map +1 -0
- package/dist/utils/RateLimiter.js +424 -0
- package/dist/utils/RateLimiter.js.map +1 -0
- package/dist/utils/ReceivedNonceTracker.d.ts +175 -0
- package/dist/utils/ReceivedNonceTracker.d.ts.map +1 -1
- package/dist/utils/ReceivedNonceTracker.js +261 -5
- package/dist/utils/ReceivedNonceTracker.js.map +1 -1
- package/dist/utils/SDKLifecycle.d.ts +156 -0
- package/dist/utils/SDKLifecycle.d.ts.map +1 -0
- package/dist/utils/SDKLifecycle.js +347 -0
- package/dist/utils/SDKLifecycle.js.map +1 -0
- package/dist/utils/SecureNonce.d.ts +57 -0
- package/dist/utils/SecureNonce.d.ts.map +1 -0
- package/dist/utils/SecureNonce.js +80 -0
- package/dist/utils/SecureNonce.js.map +1 -0
- package/dist/utils/Semaphore.d.ts +123 -0
- package/dist/utils/Semaphore.d.ts.map +1 -0
- package/dist/utils/Semaphore.js +247 -0
- package/dist/utils/Semaphore.js.map +1 -0
- package/dist/utils/UsedAttestationTracker.d.ts +167 -0
- package/dist/utils/UsedAttestationTracker.d.ts.map +1 -0
- package/dist/utils/UsedAttestationTracker.js +309 -0
- package/dist/utils/UsedAttestationTracker.js.map +1 -0
- package/dist/utils/canonicalJson.d.ts +22 -0
- package/dist/utils/canonicalJson.d.ts.map +1 -1
- package/dist/utils/canonicalJson.js +26 -3
- package/dist/utils/canonicalJson.js.map +1 -1
- package/dist/utils/computeTypeHash.d.ts +14 -0
- package/dist/utils/computeTypeHash.d.ts.map +1 -1
- package/dist/utils/computeTypeHash.js +19 -2
- package/dist/utils/computeTypeHash.js.map +1 -1
- package/dist/utils/fsSafe.d.ts +14 -0
- package/dist/utils/fsSafe.d.ts.map +1 -0
- package/dist/utils/fsSafe.js +89 -0
- package/dist/utils/fsSafe.js.map +1 -0
- package/dist/utils/index.d.ts +15 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +51 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/security.d.ts +147 -0
- package/dist/utils/security.d.ts.map +1 -0
- package/dist/utils/security.js +391 -0
- package/dist/utils/security.js.map +1 -0
- package/dist/utils/validation.d.ts +40 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +184 -7
- package/dist/utils/validation.js.map +1 -1
- package/package.json +54 -37
- package/src/ACTPClient.ts +692 -178
- package/src/abi/AgentRegistry.json +782 -0
- package/src/abi/EscrowVault.json +106 -38
- package/src/abi/IdentityRegistry.json +316 -0
- package/src/adapters/BaseAdapter.ts +473 -0
- package/src/adapters/BeginnerAdapter.ts +232 -0
- package/src/adapters/IntermediateAdapter.ts +316 -0
- package/src/adapters/index.ts +25 -0
- package/src/builders/DeliveryProofBuilder.ts +3 -2
- package/src/cli/commands/balance.ts +110 -0
- package/src/cli/commands/batch.ts +487 -0
- package/src/cli/commands/config.ts +231 -0
- package/src/cli/commands/init.ts +161 -0
- package/src/cli/commands/mint.ts +116 -0
- package/src/cli/commands/pay.ts +113 -0
- package/src/cli/commands/simulate.ts +345 -0
- package/src/cli/commands/time.ts +303 -0
- package/src/cli/commands/tx.ts +448 -0
- package/src/cli/commands/watch.ts +211 -0
- package/src/cli/index.ts +116 -0
- package/src/cli/utils/client.ts +249 -0
- package/src/cli/utils/config.ts +282 -0
- package/src/cli/utils/output.ts +465 -0
- package/src/config/networks.ts +32 -9
- package/src/errors/index.ts +298 -1
- package/src/index.ts +207 -71
- package/src/level0/Provider.ts +117 -0
- package/src/level0/ServiceDirectory.ts +131 -0
- package/src/level0/index.ts +10 -0
- package/src/level0/provide.ts +131 -0
- package/src/level0/request.ts +494 -0
- package/src/level1/Agent.ts +1432 -0
- package/src/level1/index.ts +10 -0
- package/src/level1/pricing/PriceCalculator.ts +255 -0
- package/src/level1/pricing/PricingStrategy.ts +198 -0
- package/src/level1/types/Job.ts +179 -0
- package/src/level1/types/Options.ts +291 -0
- package/src/level1/types/index.ts +8 -0
- package/src/protocol/ACTPKernel.ts +175 -23
- package/src/protocol/AgentRegistry.ts +559 -0
- package/src/protocol/DIDManager.ts +629 -0
- package/src/protocol/DIDResolver.ts +554 -0
- package/src/protocol/EASHelper.ts +230 -46
- package/src/protocol/EscrowVault.ts +68 -50
- package/src/protocol/EventMonitor.ts +44 -15
- package/src/protocol/MessageSigner.ts +193 -13
- package/src/protocol/ProofGenerator.ts +223 -4
- package/src/runtime/BlockchainRuntime.ts +993 -0
- package/src/runtime/IACTPRuntime.ts +284 -0
- package/src/runtime/MockRuntime.ts +1244 -0
- package/src/runtime/MockStateManager.ts +576 -0
- package/src/runtime/index.ts +25 -0
- package/src/runtime/types/MockState.ts +227 -0
- package/src/types/agent.ts +79 -0
- package/src/types/did.ts +223 -0
- package/src/types/escrow.ts +12 -11
- package/src/types/index.ts +5 -1
- package/src/types/state.ts +12 -3
- package/src/types/transaction.ts +4 -1
- package/src/utils/ErrorRecoveryGuide.ts +675 -0
- package/src/utils/Helpers.ts +688 -0
- package/src/utils/IPFSClient.ts +122 -5
- package/src/utils/Logger.ts +484 -0
- package/src/utils/NonceManager.ts +305 -8
- package/src/utils/RateLimiter.ts +534 -0
- package/src/utils/ReceivedNonceTracker.ts +170 -0
- package/src/utils/SDKLifecycle.ts +416 -0
- package/src/utils/SecureNonce.ts +78 -0
- package/src/utils/Semaphore.ts +276 -0
- package/src/utils/UsedAttestationTracker.ts +387 -0
- package/src/utils/fsSafe.ts +75 -0
- package/src/utils/index.ts +80 -0
- package/src/utils/security.ts +418 -0
- package/src/utils/validation.ts +164 -0
- package/src/__tests__/ProofGenerator.test.ts +0 -124
- package/src/__tests__/QuoteBuilder.test.ts +0 -516
- package/src/__tests__/StateMachine.test.ts +0 -82
- package/src/__tests__/builders/DeliveryProofBuilder.test.ts +0 -581
- package/src/__tests__/integration/ACTPClient.test.ts +0 -263
- package/src/__tests__/integration.test.ts +0 -289
- package/src/__tests__/protocol/EASHelper.test.ts +0 -472
- package/src/__tests__/protocol/EventMonitor.test.ts +0 -382
- package/src/__tests__/security/ACTPKernel.security.test.ts +0 -1167
- package/src/__tests__/security/EscrowVault.security.test.ts +0 -570
- package/src/__tests__/security/MessageSigner.security.test.ts +0 -286
- package/src/__tests__/security/NonceReplay.security.test.ts +0 -501
- package/src/__tests__/security/validation.security.test.ts +0 -376
- package/src/__tests__/utils/IPFSClient.test.ts +0 -262
- package/src/__tests__/utils/NonceManager.test.ts +0 -205
- package/src/__tests__/utils/canonicalJson.test.ts +0 -153
package/dist/ACTPClient.js
CHANGED
|
@@ -1,119 +1,503 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ACTPClient - Main entry point for AGIRAILS SDK
|
|
4
|
+
*
|
|
5
|
+
* Provides the unified API for interacting with the ACTP protocol
|
|
6
|
+
* through three different abstraction levels:
|
|
7
|
+
* - `beginner`: High-level, opinionated API for simple use cases
|
|
8
|
+
* - `intermediate`: Balanced API with more control
|
|
9
|
+
* - `advanced`: Direct protocol access for full control
|
|
10
|
+
*
|
|
11
|
+
* @module ACTPClient
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* // Create client in mock mode
|
|
16
|
+
* const client = await ACTPClient.create({
|
|
17
|
+
* mode: 'mock',
|
|
18
|
+
* requesterAddress: '0x1234...',
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // Beginner API - simplest approach
|
|
22
|
+
* const result = await client.beginner.pay({
|
|
23
|
+
* to: '0xProvider...',
|
|
24
|
+
* amount: '100',
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* // Intermediate API - more control
|
|
28
|
+
* const txId = await client.intermediate.createTransaction({
|
|
29
|
+
* provider: '0xProvider...',
|
|
30
|
+
* amount: '100',
|
|
31
|
+
* });
|
|
32
|
+
* await client.intermediate.linkEscrow(txId);
|
|
33
|
+
*
|
|
34
|
+
* // Advanced API - direct protocol access
|
|
35
|
+
* const tx = await client.advanced.getTransaction(txId);
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
39
|
+
if (k2 === undefined) k2 = k;
|
|
40
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
41
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
42
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
43
|
+
}
|
|
44
|
+
Object.defineProperty(o, k2, desc);
|
|
45
|
+
}) : (function(o, m, k, k2) {
|
|
46
|
+
if (k2 === undefined) k2 = k;
|
|
47
|
+
o[k2] = m[k];
|
|
48
|
+
}));
|
|
49
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
50
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
51
|
+
}) : function(o, v) {
|
|
52
|
+
o["default"] = v;
|
|
53
|
+
});
|
|
54
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
55
|
+
if (mod && mod.__esModule) return mod;
|
|
56
|
+
var result = {};
|
|
57
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
58
|
+
__setModuleDefault(result, mod);
|
|
59
|
+
return result;
|
|
60
|
+
};
|
|
2
61
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
62
|
exports.ACTPClient = void 0;
|
|
63
|
+
const path = __importStar(require("path"));
|
|
64
|
+
const os = __importStar(require("os"));
|
|
65
|
+
const fs = __importStar(require("fs"));
|
|
4
66
|
const ethers_1 = require("ethers");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const QuoteBuilder_1 = require("./builders/QuoteBuilder");
|
|
67
|
+
const MockRuntime_1 = require("./runtime/MockRuntime");
|
|
68
|
+
const MockStateManager_1 = require("./runtime/MockStateManager");
|
|
69
|
+
const BlockchainRuntime_1 = require("./runtime/BlockchainRuntime");
|
|
70
|
+
const BeginnerAdapter_1 = require("./adapters/BeginnerAdapter");
|
|
71
|
+
const IntermediateAdapter_1 = require("./adapters/IntermediateAdapter");
|
|
11
72
|
const networks_1 = require("./config/networks");
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
73
|
+
// ============================================================================
|
|
74
|
+
// Security: Path Validation
|
|
75
|
+
// ============================================================================
|
|
76
|
+
/**
|
|
77
|
+
* Validates that a state directory path is safe to use.
|
|
78
|
+
*
|
|
79
|
+
* SECURITY: Prevents path traversal attacks by ensuring:
|
|
80
|
+
* 1. No '..' components in the path
|
|
81
|
+
* 2. No symbolic links that could escape the intended directory
|
|
82
|
+
* 3. Path resolves to a location within home directory or current working directory
|
|
83
|
+
*
|
|
84
|
+
* @param stateDirectory - The directory path to validate
|
|
85
|
+
* @throws Error if path is unsafe
|
|
86
|
+
*/
|
|
87
|
+
function validateStateDirectory(stateDirectory) {
|
|
88
|
+
// Check for path traversal characters
|
|
89
|
+
if (stateDirectory.includes('..')) {
|
|
90
|
+
throw new Error('stateDirectory cannot contain path traversal characters (..). ' +
|
|
91
|
+
'Use absolute paths only for security.');
|
|
92
|
+
}
|
|
93
|
+
// Resolve the path to get the absolute path
|
|
94
|
+
const resolvedPath = path.resolve(stateDirectory);
|
|
95
|
+
// If path exists, reject symlinks and use realpath for boundary checks.
|
|
96
|
+
// This blocks symlink escapes like "~/project" -> "/etc".
|
|
97
|
+
let effectivePath = resolvedPath;
|
|
98
|
+
if (fs.existsSync(resolvedPath)) {
|
|
99
|
+
const st = fs.lstatSync(resolvedPath);
|
|
100
|
+
if (st.isSymbolicLink()) {
|
|
101
|
+
throw new Error('stateDirectory cannot be a symbolic link. ' +
|
|
102
|
+
`Path "${stateDirectory}" resolves to a symlink at "${resolvedPath}".`);
|
|
36
103
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
Object.freeze(this.networkConfig);
|
|
40
|
-
if (config.provider) {
|
|
41
|
-
this.provider = config.provider;
|
|
104
|
+
if (!st.isDirectory()) {
|
|
105
|
+
throw new Error(`stateDirectory must be a directory. Path "${resolvedPath}" is not a directory.`);
|
|
42
106
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
107
|
+
effectivePath = fs.realpathSync(resolvedPath);
|
|
108
|
+
}
|
|
109
|
+
// Get safe base directories
|
|
110
|
+
const homeDir = os.homedir();
|
|
111
|
+
const cwd = process.cwd();
|
|
112
|
+
// SECURITY FIX (C-5): Use path.relative() instead of startsWith()
|
|
113
|
+
// to handle case-insensitive filesystems (macOS, Windows) correctly.
|
|
114
|
+
// path.relative() returns a path starting with '..' if target is outside base.
|
|
115
|
+
const relativeToHome = path.relative(homeDir, effectivePath);
|
|
116
|
+
const relativeToCwd = path.relative(cwd, effectivePath);
|
|
117
|
+
// Check if path escapes the boundary (starts with '..' or is absolute)
|
|
118
|
+
const isUnderHome = !relativeToHome.startsWith('..') && !path.isAbsolute(relativeToHome);
|
|
119
|
+
const isUnderCwd = !relativeToCwd.startsWith('..') && !path.isAbsolute(relativeToCwd);
|
|
120
|
+
if (!isUnderHome && !isUnderCwd) {
|
|
121
|
+
throw new Error('stateDirectory must be within home directory or current working directory. ' +
|
|
122
|
+
`Resolved path "${resolvedPath}" is outside allowed boundaries.`);
|
|
123
|
+
}
|
|
124
|
+
// Additional check: Ensure path doesn't contain null bytes (can bypass validation)
|
|
125
|
+
if (stateDirectory.includes('\0')) {
|
|
126
|
+
throw new Error('stateDirectory contains invalid null byte character');
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// ============================================================================
|
|
130
|
+
// Type Guards
|
|
131
|
+
// ============================================================================
|
|
132
|
+
/**
|
|
133
|
+
* Type guard to check if runtime is MockRuntime.
|
|
134
|
+
*
|
|
135
|
+
* @param runtime - Runtime to check
|
|
136
|
+
* @returns True if runtime is IMockRuntime
|
|
137
|
+
*/
|
|
138
|
+
function isMockRuntime(runtime) {
|
|
139
|
+
return 'reset' in runtime && typeof runtime.reset === 'function';
|
|
140
|
+
}
|
|
141
|
+
// ============================================================================
|
|
142
|
+
// ACTPClient Class
|
|
143
|
+
// ============================================================================
|
|
144
|
+
/**
|
|
145
|
+
* ACTPClient - Main entry point for AGIRAILS SDK.
|
|
146
|
+
*
|
|
147
|
+
* This class provides a unified interface to the ACTP protocol through
|
|
148
|
+
* three abstraction levels, catering to developers with different needs:
|
|
149
|
+
*
|
|
150
|
+
* **Beginner API** (`client.beginner`):
|
|
151
|
+
* - Simplest possible interface
|
|
152
|
+
* - Smart defaults (24h deadline, 2-day dispute window)
|
|
153
|
+
* - User-friendly inputs (strings, no BigInt)
|
|
154
|
+
* - Perfect for: Quick prototypes, simple integrations
|
|
155
|
+
*
|
|
156
|
+
* **Intermediate API** (`client.intermediate`):
|
|
157
|
+
* - Explicit lifecycle methods
|
|
158
|
+
* - More control over transaction flow
|
|
159
|
+
* - Still with user-friendly input parsing
|
|
160
|
+
* - Perfect for: Production apps needing control
|
|
161
|
+
*
|
|
162
|
+
* **Advanced API** (`client.advanced`):
|
|
163
|
+
* - Direct access to protocol runtime
|
|
164
|
+
* - Full control over all parameters
|
|
165
|
+
* - Protocol-level types (BigInt, timestamps)
|
|
166
|
+
* - Perfect for: Power users, custom integrations
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* ```typescript
|
|
170
|
+
* // Create client
|
|
171
|
+
* const client = await ACTPClient.create({
|
|
172
|
+
* mode: 'mock',
|
|
173
|
+
* requesterAddress: '0xRequester...',
|
|
174
|
+
* });
|
|
175
|
+
*
|
|
176
|
+
* // Three ways to create a transaction:
|
|
177
|
+
*
|
|
178
|
+
* // 1. Beginner: One call does everything
|
|
179
|
+
* await client.beginner.pay({ to: '0xProvider', amount: '100' });
|
|
180
|
+
*
|
|
181
|
+
* // 2. Intermediate: Explicit steps
|
|
182
|
+
* const txId = await client.intermediate.createTransaction({
|
|
183
|
+
* provider: '0xProvider',
|
|
184
|
+
* amount: '100',
|
|
185
|
+
* });
|
|
186
|
+
* await client.intermediate.linkEscrow(txId);
|
|
187
|
+
*
|
|
188
|
+
* // 3. Advanced: Full control
|
|
189
|
+
* const txId = await client.advanced.createTransaction({
|
|
190
|
+
* provider: '0xProvider',
|
|
191
|
+
* requester: '0xRequester',
|
|
192
|
+
* amount: '100000000', // wei
|
|
193
|
+
* deadline: Math.floor(Date.now() / 1000) + 86400,
|
|
194
|
+
* disputeWindow: 172800,
|
|
195
|
+
* });
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
class ACTPClient {
|
|
199
|
+
/**
|
|
200
|
+
* Private constructor - use ACTPClient.create() factory method.
|
|
201
|
+
*/
|
|
202
|
+
constructor(runtime, requesterAddress, info, easHelper) {
|
|
203
|
+
this.runtime = runtime;
|
|
204
|
+
this.info = info;
|
|
205
|
+
this.easHelper = easHelper;
|
|
206
|
+
this.beginner = new BeginnerAdapter_1.BeginnerAdapter(runtime, requesterAddress, easHelper);
|
|
207
|
+
this.intermediate = new IntermediateAdapter_1.IntermediateAdapter(runtime, requesterAddress, easHelper);
|
|
208
|
+
}
|
|
209
|
+
// ==========================================================================
|
|
210
|
+
// Factory Method
|
|
211
|
+
// ==========================================================================
|
|
212
|
+
/**
|
|
213
|
+
* Creates a new ACTPClient instance.
|
|
214
|
+
*
|
|
215
|
+
* This is the primary way to instantiate an ACTPClient.
|
|
216
|
+
* It handles runtime initialization based on the specified mode.
|
|
217
|
+
*
|
|
218
|
+
* @param config - Client configuration
|
|
219
|
+
* @returns Promise resolving to initialized ACTPClient
|
|
220
|
+
* @throws {Error} If mode is not supported (only 'mock' currently)
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* ```typescript
|
|
224
|
+
* // Mock mode (local development)
|
|
225
|
+
* const client = await ACTPClient.create({
|
|
226
|
+
* mode: 'mock',
|
|
227
|
+
* requesterAddress: '0x1234...',
|
|
228
|
+
* });
|
|
229
|
+
*
|
|
230
|
+
* // Mock mode with custom state directory
|
|
231
|
+
* const client = await ACTPClient.create({
|
|
232
|
+
* mode: 'mock',
|
|
233
|
+
* requesterAddress: '0x1234...',
|
|
234
|
+
* stateDirectory: '/custom/path/.actp',
|
|
235
|
+
* });
|
|
236
|
+
*
|
|
237
|
+
* // Custom runtime (for testing)
|
|
238
|
+
* const customRuntime = new MockRuntime();
|
|
239
|
+
* const client = await ACTPClient.create({
|
|
240
|
+
* mode: 'mock',
|
|
241
|
+
* requesterAddress: '0x1234...',
|
|
242
|
+
* runtime: customRuntime,
|
|
243
|
+
* });
|
|
244
|
+
* ```
|
|
245
|
+
*/
|
|
246
|
+
static async create(config) {
|
|
247
|
+
// Validate requester address
|
|
248
|
+
if (!config.requesterAddress) {
|
|
249
|
+
throw new Error('requesterAddress is required');
|
|
46
250
|
}
|
|
47
|
-
if (config.
|
|
48
|
-
|
|
251
|
+
if (!/^0x[a-fA-F0-9]{40}$/.test(config.requesterAddress)) {
|
|
252
|
+
throw new Error(`Invalid requesterAddress: "${config.requesterAddress}". ` +
|
|
253
|
+
'Must be a valid Ethereum address (0x-prefixed, 40 hex chars)');
|
|
49
254
|
}
|
|
50
|
-
|
|
51
|
-
|
|
255
|
+
let runtime;
|
|
256
|
+
let stateDirectory;
|
|
257
|
+
let easHelper;
|
|
258
|
+
// If custom runtime provided, use it directly
|
|
259
|
+
if (config.runtime) {
|
|
260
|
+
runtime = config.runtime;
|
|
52
261
|
}
|
|
53
262
|
else {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
263
|
+
// Initialize runtime based on mode
|
|
264
|
+
switch (config.mode) {
|
|
265
|
+
case 'mock': {
|
|
266
|
+
// SECURITY FIX: Enhanced path validation to prevent path traversal attacks
|
|
267
|
+
if (config.stateDirectory) {
|
|
268
|
+
validateStateDirectory(config.stateDirectory);
|
|
269
|
+
}
|
|
270
|
+
// MockStateManager takes projectRoot as string parameter
|
|
271
|
+
const stateManager = new MockStateManager_1.MockStateManager(config.stateDirectory);
|
|
272
|
+
runtime = new MockRuntime_1.MockRuntime(stateManager);
|
|
273
|
+
stateDirectory = config.stateDirectory;
|
|
274
|
+
// EASHelper not needed in mock mode
|
|
275
|
+
break;
|
|
276
|
+
}
|
|
277
|
+
case 'testnet':
|
|
278
|
+
case 'mainnet': {
|
|
279
|
+
// Validate required parameters for blockchain modes
|
|
280
|
+
if (!config.privateKey) {
|
|
281
|
+
throw new Error(`privateKey is required for ${config.mode} mode`);
|
|
282
|
+
}
|
|
283
|
+
// Map mode to network config
|
|
284
|
+
const network = config.mode === 'testnet' ? 'base-sepolia' : 'base-mainnet';
|
|
285
|
+
// Default RPC URL from network config if not provided
|
|
286
|
+
// This makes Level0/Agent usable on testnet without forcing users to pass rpcUrl explicitly.
|
|
287
|
+
const rpcUrl = config.rpcUrl ?? (0, networks_1.getNetwork)(network).rpcUrl;
|
|
288
|
+
// Optional persistent state directory can be used for:
|
|
289
|
+
// - mock mode state (mock-state.json)
|
|
290
|
+
// - blockchain mode safety state (e.g., used-attestation replay protection)
|
|
291
|
+
if (config.stateDirectory) {
|
|
292
|
+
validateStateDirectory(config.stateDirectory);
|
|
293
|
+
}
|
|
294
|
+
// Create ethers provider and signer
|
|
295
|
+
const provider = new ethers_1.ethers.JsonRpcProvider(rpcUrl);
|
|
296
|
+
const signer = new ethers_1.ethers.Wallet(config.privateKey, provider);
|
|
297
|
+
const requireAttestation = config.requireAttestation ?? Boolean(config.easConfig);
|
|
298
|
+
// Create BlockchainRuntime
|
|
299
|
+
const blockchainRuntime = new BlockchainRuntime_1.BlockchainRuntime({
|
|
300
|
+
network,
|
|
301
|
+
signer,
|
|
302
|
+
provider,
|
|
303
|
+
contracts: config.contracts,
|
|
304
|
+
gasSettings: config.gasSettings,
|
|
305
|
+
easConfig: config.easConfig,
|
|
306
|
+
requireAttestation,
|
|
307
|
+
stateDirectory: config.stateDirectory,
|
|
308
|
+
});
|
|
309
|
+
// Initialize async components
|
|
310
|
+
await blockchainRuntime.initialize();
|
|
311
|
+
runtime = blockchainRuntime;
|
|
312
|
+
// SECURITY FIX (C-4): Use the runtime's initialized EASHelper so
|
|
313
|
+
// adapters and runtime share the same tracker + verification logic.
|
|
314
|
+
if (config.easConfig) {
|
|
315
|
+
easHelper = blockchainRuntime.getEASHelper();
|
|
316
|
+
}
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
319
|
+
default:
|
|
320
|
+
throw new Error(`Unknown mode: "${config.mode}". ` +
|
|
321
|
+
'Supported modes: "mock", "testnet", "mainnet"');
|
|
322
|
+
}
|
|
67
323
|
}
|
|
324
|
+
// Normalize address to lowercase for consistency
|
|
325
|
+
const normalizedAddress = config.requesterAddress.toLowerCase();
|
|
326
|
+
const info = {
|
|
327
|
+
mode: config.mode,
|
|
328
|
+
address: normalizedAddress,
|
|
329
|
+
stateDirectory,
|
|
330
|
+
};
|
|
331
|
+
// SECURITY FIX (C-4): Pass EASHelper to adapters for attestation verification
|
|
332
|
+
return new ACTPClient(runtime, normalizedAddress, info, easHelper);
|
|
68
333
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
334
|
+
// ==========================================================================
|
|
335
|
+
// Public Methods
|
|
336
|
+
// ==========================================================================
|
|
337
|
+
/**
|
|
338
|
+
* Advanced-level API.
|
|
339
|
+
*
|
|
340
|
+
* Provides direct access to the underlying protocol runtime.
|
|
341
|
+
* Use this when you need full control over all parameters.
|
|
342
|
+
*
|
|
343
|
+
* This is the same as accessing `client.runtime` directly.
|
|
344
|
+
*
|
|
345
|
+
* @example
|
|
346
|
+
* ```typescript
|
|
347
|
+
* // Direct runtime access
|
|
348
|
+
* const txId = await client.advanced.createTransaction({
|
|
349
|
+
* provider: '0xProvider',
|
|
350
|
+
* requester: '0xRequester',
|
|
351
|
+
* amount: '100000000', // wei
|
|
352
|
+
* deadline: Math.floor(Date.now() / 1000) + 86400,
|
|
353
|
+
* });
|
|
354
|
+
*
|
|
355
|
+
* // Get transaction details
|
|
356
|
+
* const tx = await client.advanced.getTransaction(txId);
|
|
357
|
+
*
|
|
358
|
+
* // Time manipulation (mock mode only - requires IMockRuntime cast)
|
|
359
|
+
* import { IMockRuntime } from './runtime/IACTPRuntime';
|
|
360
|
+
* if (client.getMode() === 'mock') {
|
|
361
|
+
* (client.advanced as IMockRuntime).time.advanceTime(3600); // Advance 1 hour
|
|
362
|
+
* }
|
|
363
|
+
* ```
|
|
364
|
+
*/
|
|
365
|
+
get advanced() {
|
|
366
|
+
return this.runtime;
|
|
76
367
|
}
|
|
77
|
-
|
|
78
|
-
|
|
368
|
+
/**
|
|
369
|
+
* Gets the requester's Ethereum address.
|
|
370
|
+
*
|
|
371
|
+
* This is the address used as the "from" address for all transactions
|
|
372
|
+
* created through this client.
|
|
373
|
+
*
|
|
374
|
+
* @returns The requester's Ethereum address (normalized to lowercase)
|
|
375
|
+
*
|
|
376
|
+
* @example
|
|
377
|
+
* ```typescript
|
|
378
|
+
* const address = client.getAddress();
|
|
379
|
+
* console.log('My address:', address);
|
|
380
|
+
* // '0x1111111111111111111111111111111111111111'
|
|
381
|
+
* ```
|
|
382
|
+
*/
|
|
383
|
+
getAddress() {
|
|
384
|
+
return this.info.address;
|
|
79
385
|
}
|
|
80
|
-
|
|
81
|
-
|
|
386
|
+
/**
|
|
387
|
+
* Gets the current operating mode.
|
|
388
|
+
*
|
|
389
|
+
* @returns The client's operating mode ('mock', 'testnet', or 'mainnet')
|
|
390
|
+
*
|
|
391
|
+
* @example
|
|
392
|
+
* ```typescript
|
|
393
|
+
* if (client.getMode() === 'mock') {
|
|
394
|
+
* console.log('Running in local development mode');
|
|
395
|
+
* }
|
|
396
|
+
* ```
|
|
397
|
+
*/
|
|
398
|
+
getMode() {
|
|
399
|
+
return this.info.mode;
|
|
82
400
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
401
|
+
/**
|
|
402
|
+
* Resets the mock state to default.
|
|
403
|
+
*
|
|
404
|
+
* Only available in mock mode. Clears all transactions, escrows,
|
|
405
|
+
* and accounts, resetting to a fresh state.
|
|
406
|
+
*
|
|
407
|
+
* @throws {Error} If not in mock mode or runtime doesn't support reset
|
|
408
|
+
*
|
|
409
|
+
* @example
|
|
410
|
+
* ```typescript
|
|
411
|
+
* // Reset state between test runs
|
|
412
|
+
* await client.reset();
|
|
413
|
+
* ```
|
|
414
|
+
*/
|
|
415
|
+
async reset() {
|
|
416
|
+
if (this.info.mode !== 'mock') {
|
|
417
|
+
throw new Error(`reset() is only available in mock mode. Current mode: "${this.info.mode}"`);
|
|
89
418
|
}
|
|
90
|
-
|
|
91
|
-
throw new
|
|
419
|
+
if (!isMockRuntime(this.runtime)) {
|
|
420
|
+
throw new Error('Runtime does not support reset operation');
|
|
92
421
|
}
|
|
422
|
+
await this.runtime.reset();
|
|
93
423
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
424
|
+
/**
|
|
425
|
+
* Custom JSON serialization to prevent private key exposure.
|
|
426
|
+
*
|
|
427
|
+
* SECURITY FIX (HIGH-4): Prevents accidental private key logging
|
|
428
|
+
* when ACTPClient instance is serialized (e.g., JSON.stringify, console.log).
|
|
429
|
+
*
|
|
430
|
+
* @returns Safe serializable object with sensitive data removed
|
|
431
|
+
*/
|
|
432
|
+
toJSON() {
|
|
433
|
+
return {
|
|
434
|
+
mode: this.info.mode,
|
|
435
|
+
address: this.info.address,
|
|
436
|
+
stateDirectory: this.info.stateDirectory,
|
|
437
|
+
isInitialized: true,
|
|
438
|
+
// Explicitly exclude: privateKey, signer, provider internals
|
|
439
|
+
_warning: 'Sensitive data (privateKey, signer) excluded for security',
|
|
440
|
+
};
|
|
102
441
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
442
|
+
/**
|
|
443
|
+
* Custom string representation for debugging.
|
|
444
|
+
*
|
|
445
|
+
* SECURITY FIX (HIGH-4): Prevents private key exposure in logs.
|
|
446
|
+
*/
|
|
447
|
+
toString() {
|
|
448
|
+
return `ACTPClient(mode=${this.info.mode}, address=${this.info.address})`;
|
|
109
449
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
450
|
+
/**
|
|
451
|
+
* Custom inspect for Node.js util.inspect (console.log).
|
|
452
|
+
*
|
|
453
|
+
* SECURITY FIX (HIGH-4): Prevents private key exposure in console output.
|
|
454
|
+
*/
|
|
455
|
+
[Symbol.for('nodejs.util.inspect.custom')]() {
|
|
456
|
+
return this.toString();
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Mints USDC tokens to an address.
|
|
460
|
+
*
|
|
461
|
+
* Only available in mock mode. Useful for testing scenarios
|
|
462
|
+
* where you need to fund accounts.
|
|
463
|
+
*
|
|
464
|
+
* @param address - Address to mint tokens to
|
|
465
|
+
* @param amount - Amount to mint (in USDC wei, e.g., '1000000' for 1 USDC)
|
|
466
|
+
* @throws {Error} If not in mock mode or runtime doesn't support mintTokens
|
|
467
|
+
*
|
|
468
|
+
* @example
|
|
469
|
+
* ```typescript
|
|
470
|
+
* // Mint 1000 USDC to the requester
|
|
471
|
+
* await client.mintTokens(client.getAddress(), '1000000000'); // 1000 * 10^6
|
|
472
|
+
* ```
|
|
473
|
+
*/
|
|
474
|
+
async mintTokens(address, amount) {
|
|
475
|
+
if (this.info.mode !== 'mock') {
|
|
476
|
+
throw new Error(`mintTokens() is only available in mock mode. Current mode: "${this.info.mode}"`);
|
|
477
|
+
}
|
|
478
|
+
if (!isMockRuntime(this.runtime)) {
|
|
479
|
+
throw new Error('Runtime does not support mintTokens operation');
|
|
113
480
|
}
|
|
114
|
-
|
|
115
|
-
|
|
481
|
+
await this.runtime.mintTokens(address, amount);
|
|
482
|
+
}
|
|
483
|
+
/**
|
|
484
|
+
* Gets the USDC balance of an address.
|
|
485
|
+
*
|
|
486
|
+
* @param address - Address to check balance for
|
|
487
|
+
* @returns Promise resolving to balance in USDC wei
|
|
488
|
+
* @throws {Error} If runtime doesn't support getBalance
|
|
489
|
+
*
|
|
490
|
+
* @example
|
|
491
|
+
* ```typescript
|
|
492
|
+
* const balance = await client.getBalance(client.getAddress());
|
|
493
|
+
* console.log('Balance:', balance); // '1000000000' (1000 USDC)
|
|
494
|
+
* ```
|
|
495
|
+
*/
|
|
496
|
+
async getBalance(address) {
|
|
497
|
+
if (!isMockRuntime(this.runtime)) {
|
|
498
|
+
throw new Error('Runtime does not support getBalance operation');
|
|
116
499
|
}
|
|
500
|
+
return this.runtime.getBalance(address);
|
|
117
501
|
}
|
|
118
502
|
}
|
|
119
503
|
exports.ACTPClient = ACTPClient;
|
package/dist/ACTPClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ACTPClient.js","sourceRoot":"","sources":["../src/ACTPClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ACTPClient.js","sourceRoot":"","sources":["../src/ACTPClient.ts"],"names":[],"mappings":"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"}
|