envoy-pay 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/CHANGELOG.md +99 -0
- package/LICENSE +200 -0
- package/README.md +529 -0
- package/dist/cjs/adapters/base.js +174 -0
- package/dist/cjs/adapters/base.js.map +1 -0
- package/dist/cjs/adapters/evm.js +339 -0
- package/dist/cjs/adapters/evm.js.map +1 -0
- package/dist/cjs/adapters/index.js +15 -0
- package/dist/cjs/adapters/index.js.map +1 -0
- package/dist/cjs/adapters/ows.js +204 -0
- package/dist/cjs/adapters/ows.js.map +1 -0
- package/dist/cjs/adapters/solana.js +210 -0
- package/dist/cjs/adapters/solana.js.map +1 -0
- package/dist/cjs/adapters/stellar.js +173 -0
- package/dist/cjs/adapters/stellar.js.map +1 -0
- package/dist/cjs/adapters/stripe.js +338 -0
- package/dist/cjs/adapters/stripe.js.map +1 -0
- package/dist/cjs/adapters/types.js +3 -0
- package/dist/cjs/adapters/types.js.map +1 -0
- package/dist/cjs/client.js +309 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/contracts/abis/EnvoyFacilitator.js +197 -0
- package/dist/cjs/contracts/abis/EnvoyFacilitator.js.map +1 -0
- package/dist/cjs/contracts/addresses.js +42 -0
- package/dist/cjs/contracts/addresses.js.map +1 -0
- package/dist/cjs/contracts/facilitator.js +225 -0
- package/dist/cjs/contracts/facilitator.js.map +1 -0
- package/dist/cjs/contracts/index.js +21 -0
- package/dist/cjs/contracts/index.js.map +1 -0
- package/dist/cjs/facilitator/facilitator-service.js +305 -0
- package/dist/cjs/facilitator/facilitator-service.js.map +1 -0
- package/dist/cjs/facilitator/fee-calculator.js +134 -0
- package/dist/cjs/facilitator/fee-calculator.js.map +1 -0
- package/dist/cjs/facilitator/index.js +12 -0
- package/dist/cjs/facilitator/index.js.map +1 -0
- package/dist/cjs/facilitator/types.js +99 -0
- package/dist/cjs/facilitator/types.js.map +1 -0
- package/dist/cjs/identity/agent-card.js +143 -0
- package/dist/cjs/identity/agent-card.js.map +1 -0
- package/dist/cjs/identity/agent-identity.js +166 -0
- package/dist/cjs/identity/agent-identity.js.map +1 -0
- package/dist/cjs/identity/did-resolver.js +149 -0
- package/dist/cjs/identity/did-resolver.js.map +1 -0
- package/dist/cjs/identity/erc8004/abis.js +218 -0
- package/dist/cjs/identity/erc8004/abis.js.map +1 -0
- package/dist/cjs/identity/erc8004/identity.js +268 -0
- package/dist/cjs/identity/erc8004/identity.js.map +1 -0
- package/dist/cjs/identity/erc8004/index.js +36 -0
- package/dist/cjs/identity/erc8004/index.js.map +1 -0
- package/dist/cjs/identity/erc8004/reputation.js +110 -0
- package/dist/cjs/identity/erc8004/reputation.js.map +1 -0
- package/dist/cjs/identity/erc8004/types.js +3 -0
- package/dist/cjs/identity/erc8004/types.js.map +1 -0
- package/dist/cjs/identity/index.js +61 -0
- package/dist/cjs/identity/index.js.map +1 -0
- package/dist/cjs/identity/owner-registry.js +140 -0
- package/dist/cjs/identity/owner-registry.js.map +1 -0
- package/dist/cjs/identity/reputation.js +193 -0
- package/dist/cjs/identity/reputation.js.map +1 -0
- package/dist/cjs/identity/types.js +16 -0
- package/dist/cjs/identity/types.js.map +1 -0
- package/dist/cjs/index.js +72 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/logger.js +7 -0
- package/dist/cjs/logger.js.map +1 -0
- package/dist/cjs/monitor/evm-watcher.js +165 -0
- package/dist/cjs/monitor/evm-watcher.js.map +1 -0
- package/dist/cjs/monitor/index.js +32 -0
- package/dist/cjs/monitor/index.js.map +1 -0
- package/dist/cjs/monitor/multi-watcher.js +94 -0
- package/dist/cjs/monitor/multi-watcher.js.map +1 -0
- package/dist/cjs/monitor/solana-watcher.js +172 -0
- package/dist/cjs/monitor/solana-watcher.js.map +1 -0
- package/dist/cjs/monitor/stellar-watcher.js +125 -0
- package/dist/cjs/monitor/stellar-watcher.js.map +1 -0
- package/dist/cjs/mpp.js +187 -0
- package/dist/cjs/mpp.js.map +1 -0
- package/dist/cjs/policy.js +71 -0
- package/dist/cjs/policy.js.map +1 -0
- package/dist/cjs/providers/bridge.js +323 -0
- package/dist/cjs/providers/bridge.js.map +1 -0
- package/dist/cjs/providers/onchainos.js +210 -0
- package/dist/cjs/providers/onchainos.js.map +1 -0
- package/dist/cjs/requests/eip681.js +77 -0
- package/dist/cjs/requests/eip681.js.map +1 -0
- package/dist/cjs/requests/index.js +18 -0
- package/dist/cjs/requests/index.js.map +1 -0
- package/dist/cjs/requests/sep7.js +61 -0
- package/dist/cjs/requests/sep7.js.map +1 -0
- package/dist/cjs/requests/solana-pay.js +51 -0
- package/dist/cjs/requests/solana-pay.js.map +1 -0
- package/dist/cjs/requests/universal.js +40 -0
- package/dist/cjs/requests/universal.js.map +1 -0
- package/dist/cjs/server/index.js +35 -0
- package/dist/cjs/server/index.js.map +1 -0
- package/dist/cjs/server/mpp-gate.js +118 -0
- package/dist/cjs/server/mpp-gate.js.map +1 -0
- package/dist/cjs/server/payment-gate.js +92 -0
- package/dist/cjs/server/payment-gate.js.map +1 -0
- package/dist/cjs/server/receipt.js +52 -0
- package/dist/cjs/server/receipt.js.map +1 -0
- package/dist/cjs/server/webhook.js +122 -0
- package/dist/cjs/server/webhook.js.map +1 -0
- package/dist/cjs/server/x402-gate.js +103 -0
- package/dist/cjs/server/x402-gate.js.map +1 -0
- package/dist/cjs/solana.js +14 -0
- package/dist/cjs/solana.js.map +1 -0
- package/dist/cjs/stellar.js +14 -0
- package/dist/cjs/stellar.js.map +1 -0
- package/dist/cjs/wallet/balance-aggregator.js +149 -0
- package/dist/cjs/wallet/balance-aggregator.js.map +1 -0
- package/dist/cjs/wallet/chain-router.js +254 -0
- package/dist/cjs/wallet/chain-router.js.map +1 -0
- package/dist/cjs/wallet/index.js +15 -0
- package/dist/cjs/wallet/index.js.map +1 -0
- package/dist/cjs/wallet/intent-resolver.js +145 -0
- package/dist/cjs/wallet/intent-resolver.js.map +1 -0
- package/dist/cjs/wallet/session-manager.js +170 -0
- package/dist/cjs/wallet/session-manager.js.map +1 -0
- package/dist/cjs/wallet/types.js +14 -0
- package/dist/cjs/wallet/types.js.map +1 -0
- package/dist/cjs/wallet/unified-wallet.js +253 -0
- package/dist/cjs/wallet/unified-wallet.js.map +1 -0
- package/dist/esm/adapters/base.js +170 -0
- package/dist/esm/adapters/base.js.map +1 -0
- package/dist/esm/adapters/evm.js +334 -0
- package/dist/esm/adapters/evm.js.map +1 -0
- package/dist/esm/adapters/index.js +6 -0
- package/dist/esm/adapters/index.js.map +1 -0
- package/dist/esm/adapters/ows.js +194 -0
- package/dist/esm/adapters/ows.js.map +1 -0
- package/dist/esm/adapters/solana.js +206 -0
- package/dist/esm/adapters/solana.js.map +1 -0
- package/dist/esm/adapters/stellar.js +136 -0
- package/dist/esm/adapters/stellar.js.map +1 -0
- package/dist/esm/adapters/stripe.js +334 -0
- package/dist/esm/adapters/stripe.js.map +1 -0
- package/dist/esm/adapters/types.js +2 -0
- package/dist/esm/adapters/types.js.map +1 -0
- package/dist/esm/client.js +302 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/contracts/abis/EnvoyFacilitator.js +194 -0
- package/dist/esm/contracts/abis/EnvoyFacilitator.js.map +1 -0
- package/dist/esm/contracts/addresses.js +38 -0
- package/dist/esm/contracts/addresses.js.map +1 -0
- package/dist/esm/contracts/facilitator.js +218 -0
- package/dist/esm/contracts/facilitator.js.map +1 -0
- package/dist/esm/contracts/index.js +8 -0
- package/dist/esm/contracts/index.js.map +1 -0
- package/dist/esm/facilitator/facilitator-service.js +301 -0
- package/dist/esm/facilitator/facilitator-service.js.map +1 -0
- package/dist/esm/facilitator/fee-calculator.js +130 -0
- package/dist/esm/facilitator/fee-calculator.js.map +1 -0
- package/dist/esm/facilitator/index.js +5 -0
- package/dist/esm/facilitator/index.js.map +1 -0
- package/dist/esm/facilitator/types.js +96 -0
- package/dist/esm/facilitator/types.js.map +1 -0
- package/dist/esm/identity/agent-card.js +139 -0
- package/dist/esm/identity/agent-card.js.map +1 -0
- package/dist/esm/identity/agent-identity.js +162 -0
- package/dist/esm/identity/agent-identity.js.map +1 -0
- package/dist/esm/identity/did-resolver.js +145 -0
- package/dist/esm/identity/did-resolver.js.map +1 -0
- package/dist/esm/identity/erc8004/abis.js +215 -0
- package/dist/esm/identity/erc8004/abis.js.map +1 -0
- package/dist/esm/identity/erc8004/identity.js +250 -0
- package/dist/esm/identity/erc8004/identity.js.map +1 -0
- package/dist/esm/identity/erc8004/index.js +13 -0
- package/dist/esm/identity/erc8004/index.js.map +1 -0
- package/dist/esm/identity/erc8004/reputation.js +105 -0
- package/dist/esm/identity/erc8004/reputation.js.map +1 -0
- package/dist/esm/identity/erc8004/types.js +2 -0
- package/dist/esm/identity/erc8004/types.js.map +1 -0
- package/dist/esm/identity/index.js +19 -0
- package/dist/esm/identity/index.js.map +1 -0
- package/dist/esm/identity/owner-registry.js +136 -0
- package/dist/esm/identity/owner-registry.js.map +1 -0
- package/dist/esm/identity/reputation.js +189 -0
- package/dist/esm/identity/reputation.js.map +1 -0
- package/dist/esm/identity/types.js +15 -0
- package/dist/esm/identity/types.js.map +1 -0
- package/dist/esm/index.js +37 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/logger.js +3 -0
- package/dist/esm/logger.js.map +1 -0
- package/dist/esm/monitor/evm-watcher.js +162 -0
- package/dist/esm/monitor/evm-watcher.js.map +1 -0
- package/dist/esm/monitor/index.js +25 -0
- package/dist/esm/monitor/index.js.map +1 -0
- package/dist/esm/monitor/multi-watcher.js +91 -0
- package/dist/esm/monitor/multi-watcher.js.map +1 -0
- package/dist/esm/monitor/solana-watcher.js +169 -0
- package/dist/esm/monitor/solana-watcher.js.map +1 -0
- package/dist/esm/monitor/stellar-watcher.js +122 -0
- package/dist/esm/monitor/stellar-watcher.js.map +1 -0
- package/dist/esm/mpp.js +175 -0
- package/dist/esm/mpp.js.map +1 -0
- package/dist/esm/policy.js +67 -0
- package/dist/esm/policy.js.map +1 -0
- package/dist/esm/providers/bridge.js +319 -0
- package/dist/esm/providers/bridge.js.map +1 -0
- package/dist/esm/providers/onchainos.js +172 -0
- package/dist/esm/providers/onchainos.js.map +1 -0
- package/dist/esm/requests/eip681.js +74 -0
- package/dist/esm/requests/eip681.js.map +1 -0
- package/dist/esm/requests/index.js +11 -0
- package/dist/esm/requests/index.js.map +1 -0
- package/dist/esm/requests/sep7.js +58 -0
- package/dist/esm/requests/sep7.js.map +1 -0
- package/dist/esm/requests/solana-pay.js +48 -0
- package/dist/esm/requests/solana-pay.js.map +1 -0
- package/dist/esm/requests/universal.js +37 -0
- package/dist/esm/requests/universal.js.map +1 -0
- package/dist/esm/server/index.js +27 -0
- package/dist/esm/server/index.js.map +1 -0
- package/dist/esm/server/mpp-gate.js +115 -0
- package/dist/esm/server/mpp-gate.js.map +1 -0
- package/dist/esm/server/payment-gate.js +89 -0
- package/dist/esm/server/payment-gate.js.map +1 -0
- package/dist/esm/server/receipt.js +48 -0
- package/dist/esm/server/receipt.js.map +1 -0
- package/dist/esm/server/webhook.js +119 -0
- package/dist/esm/server/webhook.js.map +1 -0
- package/dist/esm/server/x402-gate.js +100 -0
- package/dist/esm/server/x402-gate.js.map +1 -0
- package/dist/esm/solana.js +8 -0
- package/dist/esm/solana.js.map +1 -0
- package/dist/esm/stellar.js +8 -0
- package/dist/esm/stellar.js.map +1 -0
- package/dist/esm/wallet/balance-aggregator.js +145 -0
- package/dist/esm/wallet/balance-aggregator.js.map +1 -0
- package/dist/esm/wallet/chain-router.js +250 -0
- package/dist/esm/wallet/chain-router.js.map +1 -0
- package/dist/esm/wallet/index.js +7 -0
- package/dist/esm/wallet/index.js.map +1 -0
- package/dist/esm/wallet/intent-resolver.js +141 -0
- package/dist/esm/wallet/intent-resolver.js.map +1 -0
- package/dist/esm/wallet/session-manager.js +166 -0
- package/dist/esm/wallet/session-manager.js.map +1 -0
- package/dist/esm/wallet/types.js +13 -0
- package/dist/esm/wallet/types.js.map +1 -0
- package/dist/esm/wallet/unified-wallet.js +249 -0
- package/dist/esm/wallet/unified-wallet.js.map +1 -0
- package/dist/types/adapters/base.d.ts +53 -0
- package/dist/types/adapters/base.d.ts.map +1 -0
- package/dist/types/adapters/evm.d.ts +93 -0
- package/dist/types/adapters/evm.d.ts.map +1 -0
- package/dist/types/adapters/index.d.ts +7 -0
- package/dist/types/adapters/index.d.ts.map +1 -0
- package/dist/types/adapters/ows.d.ts +123 -0
- package/dist/types/adapters/ows.d.ts.map +1 -0
- package/dist/types/adapters/solana.d.ts +77 -0
- package/dist/types/adapters/solana.d.ts.map +1 -0
- package/dist/types/adapters/stellar.d.ts +67 -0
- package/dist/types/adapters/stellar.d.ts.map +1 -0
- package/dist/types/adapters/stripe.d.ts +206 -0
- package/dist/types/adapters/stripe.d.ts.map +1 -0
- package/dist/types/adapters/types.d.ts +110 -0
- package/dist/types/adapters/types.d.ts.map +1 -0
- package/dist/types/client.d.ts +89 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/contracts/abis/EnvoyFacilitator.d.ts +296 -0
- package/dist/types/contracts/abis/EnvoyFacilitator.d.ts.map +1 -0
- package/dist/types/contracts/addresses.d.ts +24 -0
- package/dist/types/contracts/addresses.d.ts.map +1 -0
- package/dist/types/contracts/facilitator.d.ts +172 -0
- package/dist/types/contracts/facilitator.d.ts.map +1 -0
- package/dist/types/contracts/index.d.ts +6 -0
- package/dist/types/contracts/index.d.ts.map +1 -0
- package/dist/types/facilitator/facilitator-service.d.ts +69 -0
- package/dist/types/facilitator/facilitator-service.d.ts.map +1 -0
- package/dist/types/facilitator/fee-calculator.d.ts +48 -0
- package/dist/types/facilitator/fee-calculator.d.ts.map +1 -0
- package/dist/types/facilitator/index.d.ts +5 -0
- package/dist/types/facilitator/index.d.ts.map +1 -0
- package/dist/types/facilitator/types.d.ts +221 -0
- package/dist/types/facilitator/types.d.ts.map +1 -0
- package/dist/types/identity/agent-card.d.ts +83 -0
- package/dist/types/identity/agent-card.d.ts.map +1 -0
- package/dist/types/identity/agent-identity.d.ts +102 -0
- package/dist/types/identity/agent-identity.d.ts.map +1 -0
- package/dist/types/identity/did-resolver.d.ts +70 -0
- package/dist/types/identity/did-resolver.d.ts.map +1 -0
- package/dist/types/identity/erc8004/abis.d.ts +336 -0
- package/dist/types/identity/erc8004/abis.d.ts.map +1 -0
- package/dist/types/identity/erc8004/identity.d.ts +109 -0
- package/dist/types/identity/erc8004/identity.d.ts.map +1 -0
- package/dist/types/identity/erc8004/index.d.ts +15 -0
- package/dist/types/identity/erc8004/index.d.ts.map +1 -0
- package/dist/types/identity/erc8004/reputation.d.ts +52 -0
- package/dist/types/identity/erc8004/reputation.d.ts.map +1 -0
- package/dist/types/identity/erc8004/types.d.ts +31 -0
- package/dist/types/identity/erc8004/types.d.ts.map +1 -0
- package/dist/types/identity/index.d.ts +10 -0
- package/dist/types/identity/index.d.ts.map +1 -0
- package/dist/types/identity/owner-registry.d.ts +68 -0
- package/dist/types/identity/owner-registry.d.ts.map +1 -0
- package/dist/types/identity/reputation.d.ts +66 -0
- package/dist/types/identity/reputation.d.ts.map +1 -0
- package/dist/types/identity/types.d.ts +182 -0
- package/dist/types/identity/types.d.ts.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/logger.d.ts +10 -0
- package/dist/types/logger.d.ts.map +1 -0
- package/dist/types/monitor/evm-watcher.d.ts +40 -0
- package/dist/types/monitor/evm-watcher.d.ts.map +1 -0
- package/dist/types/monitor/index.d.ts +25 -0
- package/dist/types/monitor/index.d.ts.map +1 -0
- package/dist/types/monitor/multi-watcher.d.ts +48 -0
- package/dist/types/monitor/multi-watcher.d.ts.map +1 -0
- package/dist/types/monitor/solana-watcher.d.ts +36 -0
- package/dist/types/monitor/solana-watcher.d.ts.map +1 -0
- package/dist/types/monitor/stellar-watcher.d.ts +34 -0
- package/dist/types/monitor/stellar-watcher.d.ts.map +1 -0
- package/dist/types/mpp.d.ts +153 -0
- package/dist/types/mpp.d.ts.map +1 -0
- package/dist/types/policy.d.ts +40 -0
- package/dist/types/policy.d.ts.map +1 -0
- package/dist/types/providers/bridge.d.ts +162 -0
- package/dist/types/providers/bridge.d.ts.map +1 -0
- package/dist/types/providers/onchainos.d.ts +128 -0
- package/dist/types/providers/onchainos.d.ts.map +1 -0
- package/dist/types/requests/eip681.d.ts +51 -0
- package/dist/types/requests/eip681.d.ts.map +1 -0
- package/dist/types/requests/index.d.ts +11 -0
- package/dist/types/requests/index.d.ts.map +1 -0
- package/dist/types/requests/sep7.d.ts +56 -0
- package/dist/types/requests/sep7.d.ts.map +1 -0
- package/dist/types/requests/solana-pay.d.ts +50 -0
- package/dist/types/requests/solana-pay.d.ts.map +1 -0
- package/dist/types/requests/universal.d.ts +28 -0
- package/dist/types/requests/universal.d.ts.map +1 -0
- package/dist/types/server/index.d.ts +27 -0
- package/dist/types/server/index.d.ts.map +1 -0
- package/dist/types/server/mpp-gate.d.ts +66 -0
- package/dist/types/server/mpp-gate.d.ts.map +1 -0
- package/dist/types/server/payment-gate.d.ts +33 -0
- package/dist/types/server/payment-gate.d.ts.map +1 -0
- package/dist/types/server/receipt.d.ts +52 -0
- package/dist/types/server/receipt.d.ts.map +1 -0
- package/dist/types/server/webhook.d.ts +46 -0
- package/dist/types/server/webhook.d.ts.map +1 -0
- package/dist/types/server/x402-gate.d.ts +70 -0
- package/dist/types/server/x402-gate.d.ts.map +1 -0
- package/dist/types/solana.d.ts +7 -0
- package/dist/types/solana.d.ts.map +1 -0
- package/dist/types/stellar.d.ts +7 -0
- package/dist/types/stellar.d.ts.map +1 -0
- package/dist/types/wallet/balance-aggregator.d.ts +51 -0
- package/dist/types/wallet/balance-aggregator.d.ts.map +1 -0
- package/dist/types/wallet/chain-router.d.ts +44 -0
- package/dist/types/wallet/chain-router.d.ts.map +1 -0
- package/dist/types/wallet/index.d.ts +7 -0
- package/dist/types/wallet/index.d.ts.map +1 -0
- package/dist/types/wallet/intent-resolver.d.ts +39 -0
- package/dist/types/wallet/intent-resolver.d.ts.map +1 -0
- package/dist/types/wallet/session-manager.d.ts +57 -0
- package/dist/types/wallet/session-manager.d.ts.map +1 -0
- package/dist/types/wallet/types.d.ts +161 -0
- package/dist/types/wallet/types.d.ts.map +1 -0
- package/dist/types/wallet/unified-wallet.d.ts +122 -0
- package/dist/types/wallet/unified-wallet.d.ts.map +1 -0
- package/package.json +194 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed viem client for `EnvoyFacilitator.sol`.
|
|
3
|
+
*
|
|
4
|
+
* Provides three layers:
|
|
5
|
+
*
|
|
6
|
+
* 1. Pure helpers — `paymentAuthDomain`, `paymentAuthTypes`, the typed-data
|
|
7
|
+
* builder. Useful for any code that just needs to sign a `PaymentAuth`
|
|
8
|
+
* without taking a Facilitator client dependency.
|
|
9
|
+
* 2. `signPaymentAuth(...)` — convenience wrapper around
|
|
10
|
+
* `walletClient.signTypedData(...)` for the agent's signing wallet.
|
|
11
|
+
* 3. `createEnvoyFacilitator(...)` — full client bundling reads + writes +
|
|
12
|
+
* sign + the contract address.
|
|
13
|
+
*
|
|
14
|
+
* All amounts are bigints in the token's smallest unit. cKES is 18 decimals;
|
|
15
|
+
* USDC is 6.
|
|
16
|
+
*/
|
|
17
|
+
import { type Account, type Address, type Hash, type Hex, type PublicClient, type WalletClient } from 'viem';
|
|
18
|
+
/** The EIP-712 message the agent's wallet signs to authorize a single payment. */
|
|
19
|
+
export interface PaymentAuth {
|
|
20
|
+
agentId: bigint;
|
|
21
|
+
token: Address;
|
|
22
|
+
merchant: Address;
|
|
23
|
+
amount: bigint;
|
|
24
|
+
challengeId: Hex;
|
|
25
|
+
nonce: bigint;
|
|
26
|
+
/** Unix seconds. Use a `uint64` value — the contract will revert past this. */
|
|
27
|
+
deadline: bigint;
|
|
28
|
+
}
|
|
29
|
+
/** Spending policy storage shape, as returned by `getLimit(...)`. */
|
|
30
|
+
export interface LimitView {
|
|
31
|
+
perTx: bigint;
|
|
32
|
+
perPeriod: bigint;
|
|
33
|
+
spentInPeriod: bigint;
|
|
34
|
+
periodStart: bigint;
|
|
35
|
+
periodLen: number;
|
|
36
|
+
enabled: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface SettledEvent {
|
|
39
|
+
challengeId: Hex;
|
|
40
|
+
agentId: bigint;
|
|
41
|
+
merchant: Address;
|
|
42
|
+
token: Address;
|
|
43
|
+
amount: bigint;
|
|
44
|
+
fee: bigint;
|
|
45
|
+
nonce: bigint;
|
|
46
|
+
signer: Address;
|
|
47
|
+
txHash: Hash;
|
|
48
|
+
blockNumber: bigint;
|
|
49
|
+
}
|
|
50
|
+
export declare function paymentAuthDomain(args: {
|
|
51
|
+
chainId: number;
|
|
52
|
+
facilitatorAddress: Address;
|
|
53
|
+
}): {
|
|
54
|
+
readonly name: "EnvoyFacilitator";
|
|
55
|
+
readonly version: "1";
|
|
56
|
+
readonly chainId: number;
|
|
57
|
+
readonly verifyingContract: `0x${string}`;
|
|
58
|
+
};
|
|
59
|
+
export declare const PAYMENT_AUTH_TYPES: {
|
|
60
|
+
readonly PaymentAuth: readonly [{
|
|
61
|
+
readonly name: "agentId";
|
|
62
|
+
readonly type: "uint256";
|
|
63
|
+
}, {
|
|
64
|
+
readonly name: "token";
|
|
65
|
+
readonly type: "address";
|
|
66
|
+
}, {
|
|
67
|
+
readonly name: "merchant";
|
|
68
|
+
readonly type: "address";
|
|
69
|
+
}, {
|
|
70
|
+
readonly name: "amount";
|
|
71
|
+
readonly type: "uint256";
|
|
72
|
+
}, {
|
|
73
|
+
readonly name: "challengeId";
|
|
74
|
+
readonly type: "bytes32";
|
|
75
|
+
}, {
|
|
76
|
+
readonly name: "nonce";
|
|
77
|
+
readonly type: "uint256";
|
|
78
|
+
}, {
|
|
79
|
+
readonly name: "deadline";
|
|
80
|
+
readonly type: "uint64";
|
|
81
|
+
}];
|
|
82
|
+
};
|
|
83
|
+
/** Build a viem-compatible typed-data payload for `walletClient.signTypedData`. */
|
|
84
|
+
export declare function paymentAuthTypedData(args: {
|
|
85
|
+
chainId: number;
|
|
86
|
+
facilitatorAddress: Address;
|
|
87
|
+
auth: PaymentAuth;
|
|
88
|
+
}): {
|
|
89
|
+
domain: {
|
|
90
|
+
readonly name: "EnvoyFacilitator";
|
|
91
|
+
readonly version: "1";
|
|
92
|
+
readonly chainId: number;
|
|
93
|
+
readonly verifyingContract: `0x${string}`;
|
|
94
|
+
};
|
|
95
|
+
types: {
|
|
96
|
+
readonly PaymentAuth: readonly [{
|
|
97
|
+
readonly name: "agentId";
|
|
98
|
+
readonly type: "uint256";
|
|
99
|
+
}, {
|
|
100
|
+
readonly name: "token";
|
|
101
|
+
readonly type: "address";
|
|
102
|
+
}, {
|
|
103
|
+
readonly name: "merchant";
|
|
104
|
+
readonly type: "address";
|
|
105
|
+
}, {
|
|
106
|
+
readonly name: "amount";
|
|
107
|
+
readonly type: "uint256";
|
|
108
|
+
}, {
|
|
109
|
+
readonly name: "challengeId";
|
|
110
|
+
readonly type: "bytes32";
|
|
111
|
+
}, {
|
|
112
|
+
readonly name: "nonce";
|
|
113
|
+
readonly type: "uint256";
|
|
114
|
+
}, {
|
|
115
|
+
readonly name: "deadline";
|
|
116
|
+
readonly type: "uint64";
|
|
117
|
+
}];
|
|
118
|
+
};
|
|
119
|
+
primaryType: "PaymentAuth";
|
|
120
|
+
message: PaymentAuth;
|
|
121
|
+
};
|
|
122
|
+
/** Sign a `PaymentAuth` with the agent's signing wallet. */
|
|
123
|
+
export declare function signPaymentAuth(walletClient: WalletClient, args: {
|
|
124
|
+
chainId: number;
|
|
125
|
+
facilitatorAddress: Address;
|
|
126
|
+
auth: PaymentAuth;
|
|
127
|
+
}): Promise<Hex>;
|
|
128
|
+
export interface EnvoyFacilitatorClientOptions {
|
|
129
|
+
/** Address of the deployed `EnvoyFacilitator`. */
|
|
130
|
+
address: Address;
|
|
131
|
+
/** Public client for reads + receipt waiting. */
|
|
132
|
+
publicClient: PublicClient;
|
|
133
|
+
/** Optional wallet client for writes. Omit for read-only usage. */
|
|
134
|
+
walletClient?: WalletClient;
|
|
135
|
+
/** EIP-155 chainId. If omitted, the publicClient's chain is used. */
|
|
136
|
+
chainId?: number;
|
|
137
|
+
}
|
|
138
|
+
export interface EnvoyFacilitatorClient {
|
|
139
|
+
/** Resolved address of the deployed Facilitator. */
|
|
140
|
+
readonly address: Address;
|
|
141
|
+
/** Resolved chain id used for EIP-712 binding. */
|
|
142
|
+
readonly chainId: number;
|
|
143
|
+
getFeeBps(): Promise<number>;
|
|
144
|
+
getMaxFeeBps(): Promise<number>;
|
|
145
|
+
getTreasury(): Promise<Address>;
|
|
146
|
+
getIdentityRegistry(): Promise<Address>;
|
|
147
|
+
getLimit(agentId: bigint, token: Address): Promise<LimitView>;
|
|
148
|
+
isNonceUsed(agentId: bigint, nonce: bigint): Promise<boolean>;
|
|
149
|
+
/** Returns the on-chain digest the agent's wallet must sign. */
|
|
150
|
+
paymentAuthHash(auth: PaymentAuth): Promise<Hex>;
|
|
151
|
+
domainSeparator(): Promise<Hex>;
|
|
152
|
+
setLimit(args: {
|
|
153
|
+
agentId: bigint;
|
|
154
|
+
token: Address;
|
|
155
|
+
perTx: bigint;
|
|
156
|
+
perPeriod: bigint;
|
|
157
|
+
periodLen: number;
|
|
158
|
+
account?: Account | Address;
|
|
159
|
+
}): Promise<Hash>;
|
|
160
|
+
disableLimit(args: {
|
|
161
|
+
agentId: bigint;
|
|
162
|
+
token: Address;
|
|
163
|
+
account?: Account | Address;
|
|
164
|
+
}): Promise<Hash>;
|
|
165
|
+
setTreasury(newTreasury: Address, account?: Account | Address): Promise<Hash>;
|
|
166
|
+
pay(auth: PaymentAuth, signature: Hex, opts?: {
|
|
167
|
+
account?: Account | Address;
|
|
168
|
+
}): Promise<SettledEvent>;
|
|
169
|
+
signPaymentAuth(auth: PaymentAuth): Promise<Hex>;
|
|
170
|
+
}
|
|
171
|
+
export declare function createEnvoyFacilitator(opts: EnvoyFacilitatorClientOptions): EnvoyFacilitatorClient;
|
|
172
|
+
//# sourceMappingURL=facilitator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facilitator.d.ts","sourceRoot":"","sources":["../../../src/contracts/facilitator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { ENVOY_CONTRACT_ADDRESSES, getEnvoyAddresses, CELO_MAINNET, CELO_SEPOLIA, } from './addresses';
|
|
2
|
+
export type { EnvoyContractAddresses } from './addresses';
|
|
3
|
+
export { createEnvoyFacilitator, signPaymentAuth, paymentAuthDomain, paymentAuthTypedData, PAYMENT_AUTH_TYPES, } from './facilitator';
|
|
4
|
+
export type { PaymentAuth, LimitView, SettledEvent, EnvoyFacilitatorClient, EnvoyFacilitatorClientOptions, } from './facilitator';
|
|
5
|
+
export { ENVOY_FACILITATOR_ABI } from './abis/EnvoyFacilitator';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/contracts/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,YAAY,EACZ,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FacilitatorService — Core payment processing + fee extraction.
|
|
3
|
+
*
|
|
4
|
+
* This is where money is made. The FacilitatorService:
|
|
5
|
+
* 1. Validates the API key and checks rate limits
|
|
6
|
+
* 2. Calculates the facilitator fee
|
|
7
|
+
* 3. Routes the payment through UnifiedWallet
|
|
8
|
+
* 4. Extracts the fee before settlement
|
|
9
|
+
* 5. Records usage for billing
|
|
10
|
+
* 6. Returns a receipt
|
|
11
|
+
*
|
|
12
|
+
* Revenue flow:
|
|
13
|
+
* Agent pays $5.00 → envoy extracts $0.025 (0.5%) → Merchant gets $4.975
|
|
14
|
+
*/
|
|
15
|
+
import { ApiKeyRecord, FacilitateRequest, FacilitateResponse, PricingPlan, UsageRecord, RevenueSummary } from './types';
|
|
16
|
+
export declare class FacilitatorService {
|
|
17
|
+
private apiKeys;
|
|
18
|
+
private transactions;
|
|
19
|
+
private feeCalculator;
|
|
20
|
+
private log;
|
|
21
|
+
constructor(options?: {
|
|
22
|
+
logger?: (msg: string) => void;
|
|
23
|
+
});
|
|
24
|
+
/**
|
|
25
|
+
* Create a new API key for a merchant.
|
|
26
|
+
*/
|
|
27
|
+
createApiKey(ownerId: string, name: string, plan?: PricingPlan): ApiKeyRecord;
|
|
28
|
+
/**
|
|
29
|
+
* Validate an API key.
|
|
30
|
+
*/
|
|
31
|
+
validateApiKey(key: string): {
|
|
32
|
+
valid: boolean;
|
|
33
|
+
reason?: string;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Revoke an API key.
|
|
37
|
+
*/
|
|
38
|
+
revokeApiKey(key: string): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Upgrade an API key's plan.
|
|
41
|
+
*/
|
|
42
|
+
upgradePlan(key: string, newPlan: PricingPlan): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Process a payment facilitation request.
|
|
45
|
+
* This is the core revenue-generating method.
|
|
46
|
+
*/
|
|
47
|
+
facilitate(apiKey: string, request: FacilitateRequest): Promise<FacilitateResponse>;
|
|
48
|
+
/**
|
|
49
|
+
* Get usage for an API key in the current period.
|
|
50
|
+
*/
|
|
51
|
+
getUsage(apiKey: string): UsageRecord | null;
|
|
52
|
+
/**
|
|
53
|
+
* Get revenue summary across all API keys.
|
|
54
|
+
*/
|
|
55
|
+
getRevenueSummary(period?: 'day' | 'week' | 'month' | 'all-time'): RevenueSummary;
|
|
56
|
+
/**
|
|
57
|
+
* Get total API keys count.
|
|
58
|
+
*/
|
|
59
|
+
getApiKeyCount(): number;
|
|
60
|
+
/**
|
|
61
|
+
* Get all active API keys.
|
|
62
|
+
*/
|
|
63
|
+
getActiveKeys(): ApiKeyRecord[];
|
|
64
|
+
private failedResponse;
|
|
65
|
+
private getRateLimit;
|
|
66
|
+
private chainName;
|
|
67
|
+
private getVolumeForKey;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=facilitator-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facilitator-service.d.ts","sourceRoot":"","sources":["../../../src/facilitator/facilitator-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EAEX,WAAW,EACX,cAAc,EACf,MAAM,SAAS,CAAC;AAYjB,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,GAAG,CAAwB;gBAEvB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE;IAOxD;;OAEG;IACH,YAAY,CACV,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,WAAmB,GACxB,YAAY;IA4Bf;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAkBhE;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQlC;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO;IAWvD;;;OAGG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,kBAAkB,CAAC;IAsE9B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAyB5C;;OAEG;IACH,iBAAiB,CAAC,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,UAAuB,GAAG,cAAc;IAqE7F;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,aAAa,IAAI,YAAY,EAAE;IAM/B,OAAO,CAAC,cAAc;IAuBtB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,eAAe;CAKxB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FeeCalculator — Compute facilitator fees per transaction.
|
|
3
|
+
*
|
|
4
|
+
* This is the core revenue logic. Every transaction through envoy
|
|
5
|
+
* gets a fee calculated based on:
|
|
6
|
+
* 1. The merchant's pricing plan (dev/growth/scale/enterprise)
|
|
7
|
+
* 2. The payment protocol (x402 vs MPP)
|
|
8
|
+
* 3. The transaction amount (micropayment premiums)
|
|
9
|
+
* 4. Volume discounts
|
|
10
|
+
*
|
|
11
|
+
* Fee = max(amount × feePercent, minFee) + networkCost
|
|
12
|
+
*/
|
|
13
|
+
import { FeeBreakdown, PricingPlan, PricingTier } from './types';
|
|
14
|
+
export declare class FeeCalculator {
|
|
15
|
+
private tiers;
|
|
16
|
+
constructor(customTiers?: Partial<Record<PricingPlan, PricingTier>>);
|
|
17
|
+
/**
|
|
18
|
+
* Calculate the full fee breakdown for a transaction.
|
|
19
|
+
*/
|
|
20
|
+
calculate(amountUsd: number, plan: PricingPlan, protocol?: 'x402' | 'mpp', chain?: string): FeeBreakdown;
|
|
21
|
+
/**
|
|
22
|
+
* Quick fee estimate (just the fee amount, no breakdown).
|
|
23
|
+
*/
|
|
24
|
+
estimateFee(amountUsd: number, plan?: PricingPlan, protocol?: 'x402' | 'mpp'): number;
|
|
25
|
+
/**
|
|
26
|
+
* Calculate net revenue from a transaction (what envoy makes).
|
|
27
|
+
*/
|
|
28
|
+
netRevenue(amountUsd: number, plan?: PricingPlan, protocol?: 'x402' | 'mpp', chain?: string): number;
|
|
29
|
+
/**
|
|
30
|
+
* Calculate revenue from N transactions at given plan.
|
|
31
|
+
* Useful for financial modeling.
|
|
32
|
+
*/
|
|
33
|
+
projectRevenue(avgTransactionUsd: number, transactionCount: number, plan: PricingPlan, protocol?: 'x402' | 'mpp', chain?: string): {
|
|
34
|
+
grossFees: number;
|
|
35
|
+
networkCosts: number;
|
|
36
|
+
netRevenue: number;
|
|
37
|
+
margin: number;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Get the pricing tier for a plan.
|
|
41
|
+
*/
|
|
42
|
+
getTier(plan: PricingPlan): PricingTier;
|
|
43
|
+
/**
|
|
44
|
+
* Get all pricing tiers.
|
|
45
|
+
*/
|
|
46
|
+
getAllTiers(): Record<PricingPlan, PricingTier>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=fee-calculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fee-calculator.d.ts","sourceRoot":"","sources":["../../../src/facilitator/fee-calculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,YAAY,EACZ,WAAW,EACX,WAAW,EAEZ,MAAM,SAAS,CAAC;AAoCjB,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAmC;gBAEpC,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IASnE;;OAEG;IACH,SAAS,CACP,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,WAAW,EACjB,QAAQ,GAAE,MAAM,GAAG,KAAc,EACjC,KAAK,GAAE,MAAuB,GAC7B,YAAY;IAqCf;;OAEG;IACH,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,WAAsB,EAC5B,QAAQ,GAAE,MAAM,GAAG,KAAc,GAChC,MAAM;IAKT;;OAEG;IACH,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,WAAsB,EAC5B,QAAQ,GAAE,MAAM,GAAG,KAAc,EACjC,KAAK,GAAE,MAAuB,GAC7B,MAAM;IAIT;;;OAGG;IACH,cAAc,CACZ,iBAAiB,EAAE,MAAM,EACzB,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,WAAW,EACjB,QAAQ,GAAE,MAAM,GAAG,KAAc,EACjC,KAAK,GAAE,MAAuB,GAC7B;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;KAChB;IAeD;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW;IAIvC;;OAEG;IACH,WAAW,IAAI,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC;CAGhD"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { FacilitatorService } from './facilitator-service';
|
|
2
|
+
export { FeeCalculator } from './fee-calculator';
|
|
3
|
+
export type { PricingPlan, PricingTier, ApiKeyRecord, FacilitateRequest, FacilitateResponse, FeeBreakdown, UsageRecord, RevenueSummary, CardPlan, CardTier, } from './types';
|
|
4
|
+
export { PRICING_TIERS, CARD_TIERS } from './types';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/facilitator/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,QAAQ,EACR,QAAQ,GACT,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Facilitator Types — Hosted payment facilitation with fee extraction.
|
|
3
|
+
*
|
|
4
|
+
* The Facilitator API is the PRIMARY revenue engine. It processes
|
|
5
|
+
* agent payments, extracts a configurable fee (0.5-1.5%), and
|
|
6
|
+
* settles to the merchant.
|
|
7
|
+
*
|
|
8
|
+
* Revenue model:
|
|
9
|
+
* - x402 on-chain: 0.5% facilitator fee
|
|
10
|
+
* - MPP fiat: 1.5% + $0.05
|
|
11
|
+
* - Cross-chain: 1.0%
|
|
12
|
+
* - Micropayments (<$1): 2% (min $0.001)
|
|
13
|
+
*
|
|
14
|
+
* @see Stripe Connect — inspiration for fee model
|
|
15
|
+
*/
|
|
16
|
+
/** Pricing plan for API access. */
|
|
17
|
+
export type PricingPlan = 'dev' | 'growth' | 'scale' | 'enterprise';
|
|
18
|
+
/** Full pricing tier configuration. */
|
|
19
|
+
export interface PricingTier {
|
|
20
|
+
plan: PricingPlan;
|
|
21
|
+
/** Monthly base price (USD). */
|
|
22
|
+
monthlyPrice: number;
|
|
23
|
+
/** Included transactions per month. */
|
|
24
|
+
includedTransactions: number;
|
|
25
|
+
/** Price per transaction over the included amount. */
|
|
26
|
+
overageRate: number;
|
|
27
|
+
/** Facilitator fee percentage (0-100). */
|
|
28
|
+
feePercent: number;
|
|
29
|
+
/** Minimum fee per transaction (USD). */
|
|
30
|
+
minFee: number;
|
|
31
|
+
/** Chains available. */
|
|
32
|
+
chains: 'single' | 'all';
|
|
33
|
+
/** Priority routing available. */
|
|
34
|
+
priorityRouting: boolean;
|
|
35
|
+
/** SLA uptime guarantee. */
|
|
36
|
+
slaUptime?: number;
|
|
37
|
+
/** Dedicated infrastructure. */
|
|
38
|
+
dedicatedInfra: boolean;
|
|
39
|
+
}
|
|
40
|
+
/** Default pricing tiers. */
|
|
41
|
+
export declare const PRICING_TIERS: Record<PricingPlan, PricingTier>;
|
|
42
|
+
/** API key record for authentication and billing. */
|
|
43
|
+
export interface ApiKeyRecord {
|
|
44
|
+
/** API key string (e.g., "asg_live_..."). */
|
|
45
|
+
key: string;
|
|
46
|
+
/** Display name. */
|
|
47
|
+
name: string;
|
|
48
|
+
/** Owner identifier (user/org ID). */
|
|
49
|
+
ownerId: string;
|
|
50
|
+
/** Pricing plan. */
|
|
51
|
+
plan: PricingPlan;
|
|
52
|
+
/** Is the key active? */
|
|
53
|
+
isActive: boolean;
|
|
54
|
+
/** When the key was created. */
|
|
55
|
+
createdAt: Date;
|
|
56
|
+
/** Current billing period start. */
|
|
57
|
+
periodStart: Date;
|
|
58
|
+
/** Current billing period end. */
|
|
59
|
+
periodEnd: Date;
|
|
60
|
+
/** Transactions used this period. */
|
|
61
|
+
transactionsUsed: number;
|
|
62
|
+
/** Total revenue generated for envoy this period. */
|
|
63
|
+
revenueGenerated: number;
|
|
64
|
+
/** Rate limit per minute. */
|
|
65
|
+
rateLimit: number;
|
|
66
|
+
/** Metadata. */
|
|
67
|
+
metadata?: Record<string, string>;
|
|
68
|
+
}
|
|
69
|
+
/** Input to the Facilitator API. */
|
|
70
|
+
export interface FacilitateRequest {
|
|
71
|
+
/** Payment protocol to use. */
|
|
72
|
+
protocol: 'x402' | 'mpp' | 'auto';
|
|
73
|
+
/** Amount in USD. */
|
|
74
|
+
amount: string;
|
|
75
|
+
/** Currency (default: USDC). */
|
|
76
|
+
currency?: string;
|
|
77
|
+
/** Merchant/destination address. */
|
|
78
|
+
destination: string;
|
|
79
|
+
/** Routing strategy. */
|
|
80
|
+
routing?: 'cheapest' | 'fastest' | 'prefer-crypto' | 'prefer-fiat';
|
|
81
|
+
/** Preferred chain (CAIP-2 ID). */
|
|
82
|
+
preferredChain?: string;
|
|
83
|
+
/** Agent DID (optional, for identity tracking). */
|
|
84
|
+
agentDid?: string;
|
|
85
|
+
/** Idempotency key. */
|
|
86
|
+
idempotencyKey?: string;
|
|
87
|
+
/** Memo/reference. */
|
|
88
|
+
memo?: string;
|
|
89
|
+
}
|
|
90
|
+
/** Successful facilitation response. */
|
|
91
|
+
export interface FacilitateResponse {
|
|
92
|
+
/** Was the payment successful? */
|
|
93
|
+
success: boolean;
|
|
94
|
+
/** Unique facilitation ID. */
|
|
95
|
+
facilitationId: string;
|
|
96
|
+
/** Transaction hash (if on-chain). */
|
|
97
|
+
transactionHash: string | null;
|
|
98
|
+
/** Protocol used. */
|
|
99
|
+
protocol: 'x402' | 'mpp';
|
|
100
|
+
/** Chain used. */
|
|
101
|
+
chain: string;
|
|
102
|
+
/** CAIP-2 chain ID. */
|
|
103
|
+
caip2Id: string;
|
|
104
|
+
/** Amount settled to merchant (USD). */
|
|
105
|
+
amountSettled: string;
|
|
106
|
+
/** envoy facilitator fee (USD). */
|
|
107
|
+
fee: string;
|
|
108
|
+
/** Fee percentage applied. */
|
|
109
|
+
feePercent: number;
|
|
110
|
+
/** Total cost to agent (amount + fee). */
|
|
111
|
+
totalCost: string;
|
|
112
|
+
/** Settlement status. */
|
|
113
|
+
settlement: 'instant' | 'pending' | 'failed';
|
|
114
|
+
/** Timestamp. */
|
|
115
|
+
timestamp: Date;
|
|
116
|
+
/** Error message (if failed). */
|
|
117
|
+
error?: string;
|
|
118
|
+
}
|
|
119
|
+
/** Detailed fee calculation. */
|
|
120
|
+
export interface FeeBreakdown {
|
|
121
|
+
/** Base amount (USD). */
|
|
122
|
+
baseAmount: number;
|
|
123
|
+
/** Fee percentage applied. */
|
|
124
|
+
feePercent: number;
|
|
125
|
+
/** Calculated fee (USD). */
|
|
126
|
+
calculatedFee: number;
|
|
127
|
+
/** Minimum fee applied? */
|
|
128
|
+
minFeeApplied: boolean;
|
|
129
|
+
/** Final fee (USD). */
|
|
130
|
+
finalFee: number;
|
|
131
|
+
/** Gas/network cost estimate (USD). */
|
|
132
|
+
networkCost: number;
|
|
133
|
+
/** envoy net revenue from this tx. */
|
|
134
|
+
netRevenue: number;
|
|
135
|
+
/** Total cost to agent. */
|
|
136
|
+
totalCost: number;
|
|
137
|
+
}
|
|
138
|
+
/** Usage record for a billing period. */
|
|
139
|
+
export interface UsageRecord {
|
|
140
|
+
/** API key. */
|
|
141
|
+
apiKey: string;
|
|
142
|
+
/** Billing period start. */
|
|
143
|
+
periodStart: Date;
|
|
144
|
+
/** Billing period end. */
|
|
145
|
+
periodEnd: Date;
|
|
146
|
+
/** Total transactions. */
|
|
147
|
+
totalTransactions: number;
|
|
148
|
+
/** Included transactions (from plan). */
|
|
149
|
+
includedTransactions: number;
|
|
150
|
+
/** Overage transactions. */
|
|
151
|
+
overageTransactions: number;
|
|
152
|
+
/** Total volume processed (USD). */
|
|
153
|
+
totalVolume: number;
|
|
154
|
+
/** Total fees collected (USD). */
|
|
155
|
+
totalFees: number;
|
|
156
|
+
/** Overage charges (USD). */
|
|
157
|
+
overageCharges: number;
|
|
158
|
+
/** Subscription charge (USD). */
|
|
159
|
+
subscriptionCharge: number;
|
|
160
|
+
/** Grand total billing amount. */
|
|
161
|
+
totalBilling: number;
|
|
162
|
+
}
|
|
163
|
+
/** Revenue summary for the operator. */
|
|
164
|
+
export interface RevenueSummary {
|
|
165
|
+
/** Time period. */
|
|
166
|
+
period: 'day' | 'week' | 'month' | 'all-time';
|
|
167
|
+
/** Total transactions processed. */
|
|
168
|
+
totalTransactions: number;
|
|
169
|
+
/** Total payment volume (USD). */
|
|
170
|
+
totalVolume: number;
|
|
171
|
+
/** Total fees collected (USD). */
|
|
172
|
+
totalFees: number;
|
|
173
|
+
/** Total subscription revenue (USD). */
|
|
174
|
+
subscriptionRevenue: number;
|
|
175
|
+
/** Total overage revenue (USD). */
|
|
176
|
+
overageRevenue: number;
|
|
177
|
+
/** Grand total revenue (USD). */
|
|
178
|
+
totalRevenue: number;
|
|
179
|
+
/** Average transaction size (USD). */
|
|
180
|
+
avgTransactionSize: number;
|
|
181
|
+
/** Average fee per transaction (USD). */
|
|
182
|
+
avgFee: number;
|
|
183
|
+
/** Active API keys. */
|
|
184
|
+
activeKeys: number;
|
|
185
|
+
/** Breakdown by protocol. */
|
|
186
|
+
byProtocol: {
|
|
187
|
+
x402: {
|
|
188
|
+
count: number;
|
|
189
|
+
volume: number;
|
|
190
|
+
fees: number;
|
|
191
|
+
};
|
|
192
|
+
mpp: {
|
|
193
|
+
count: number;
|
|
194
|
+
volume: number;
|
|
195
|
+
fees: number;
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
/** Breakdown by chain. */
|
|
199
|
+
byChain: Record<string, {
|
|
200
|
+
count: number;
|
|
201
|
+
volume: number;
|
|
202
|
+
fees: number;
|
|
203
|
+
}>;
|
|
204
|
+
}
|
|
205
|
+
/** Card pricing plan. */
|
|
206
|
+
export type CardPlan = 'starter' | 'pro' | 'business' | 'enterprise';
|
|
207
|
+
/** Card tier configuration. */
|
|
208
|
+
export interface CardTier {
|
|
209
|
+
plan: CardPlan;
|
|
210
|
+
/** Monthly subscription price. */
|
|
211
|
+
monthlyPrice: number;
|
|
212
|
+
/** Maximum virtual cards. */
|
|
213
|
+
maxCards: number;
|
|
214
|
+
/** Per-card spending limit (USD/month). */
|
|
215
|
+
perCardLimit: number;
|
|
216
|
+
/** Estimated interchange rate (%). */
|
|
217
|
+
interchangeRate: number;
|
|
218
|
+
}
|
|
219
|
+
/** Default card tiers. */
|
|
220
|
+
export declare const CARD_TIERS: Record<CardPlan, CardTier>;
|
|
221
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/facilitator/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,mCAAmC;AACnC,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,CAAC;AAEpE,uCAAuC;AACvC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,gCAAgC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,MAAM,EAAE,QAAQ,GAAG,KAAK,CAAC;IACzB,kCAAkC;IAClC,eAAe,EAAE,OAAO,CAAC;IACzB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,6BAA6B;AAC7B,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,CA+C1D,CAAC;AAIF,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,yBAAyB;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,gCAAgC;IAChC,SAAS,EAAE,IAAI,CAAC;IAChB,oCAAoC;IACpC,WAAW,EAAE,IAAI,CAAC;IAClB,kCAAkC;IAClC,SAAS,EAAE,IAAI,CAAC;IAChB,qCAAqC;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,gBAAgB,EAAE,MAAM,CAAC;IACzB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAID,oCAAoC;AACpC,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IAClC,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,eAAe,GAAG,aAAa,CAAC;IACnE,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,qBAAqB;IACrB,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,UAAU,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC7C,iBAAiB;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,gCAAgC;AAChC,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,eAAe;IACf,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,WAAW,EAAE,IAAI,CAAC;IAClB,0BAA0B;IAC1B,SAAS,EAAE,IAAI,CAAC;IAChB,0BAA0B;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yCAAyC;IACzC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4BAA4B;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;CACtB;AAID,wCAAwC;AACxC,MAAM,WAAW,cAAc;IAC7B,mBAAmB;IACnB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IAC9C,oCAAoC;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,UAAU,EAAE;QACV,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACtD,GAAG,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KACtD,CAAC;IACF,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1E;AAID,yBAAyB;AACzB,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,YAAY,CAAC;AAErE,+BAA+B;AAC/B,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,0BAA0B;AAC1B,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CA6BjD,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentCard — Capability and metadata registry for AI agents.
|
|
3
|
+
*
|
|
4
|
+
* Implements the ERC-8004 Identity Registry concept: each agent has
|
|
5
|
+
* a structured card describing its capabilities, service endpoints,
|
|
6
|
+
* owner, and multi-chain addresses.
|
|
7
|
+
*
|
|
8
|
+
* AgentCards are portable — they can be serialized to JSON and stored
|
|
9
|
+
* on IPFS, or registered on-chain as NFT metadata (ERC-721).
|
|
10
|
+
*
|
|
11
|
+
* @see ERC-8004 — Identity Registry (NFT-based agent IDs)
|
|
12
|
+
* @see Google A2A Protocol — AgentCard discovery
|
|
13
|
+
*/
|
|
14
|
+
import { AgentCardData } from './types';
|
|
15
|
+
export declare class AgentCard {
|
|
16
|
+
private data;
|
|
17
|
+
readonly createdAt: Date;
|
|
18
|
+
private updatedAt;
|
|
19
|
+
constructor(data: AgentCardData);
|
|
20
|
+
get name(): string;
|
|
21
|
+
get version(): string;
|
|
22
|
+
get description(): string | undefined;
|
|
23
|
+
get capabilities(): string[];
|
|
24
|
+
get owner(): string;
|
|
25
|
+
get endpoints(): {
|
|
26
|
+
a2a?: string;
|
|
27
|
+
mcp?: string;
|
|
28
|
+
payment?: string;
|
|
29
|
+
webhook?: string;
|
|
30
|
+
} | undefined;
|
|
31
|
+
get addresses(): {
|
|
32
|
+
chain: string;
|
|
33
|
+
caip2Id: string;
|
|
34
|
+
address: string;
|
|
35
|
+
}[] | undefined;
|
|
36
|
+
get tags(): string[];
|
|
37
|
+
get iconUrl(): string | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Check if this agent has a specific capability.
|
|
40
|
+
*/
|
|
41
|
+
hasCapability(capability: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Check if this agent has ALL of the specified capabilities.
|
|
44
|
+
*/
|
|
45
|
+
hasAllCapabilities(capabilities: string[]): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Check if this agent has ANY of the specified capabilities.
|
|
48
|
+
*/
|
|
49
|
+
hasAnyCapability(capabilities: string[]): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Add a capability to the agent card.
|
|
52
|
+
*/
|
|
53
|
+
addCapability(capability: string): void;
|
|
54
|
+
/**
|
|
55
|
+
* Remove a capability from the agent card.
|
|
56
|
+
*/
|
|
57
|
+
removeCapability(capability: string): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Update a service endpoint.
|
|
60
|
+
*/
|
|
61
|
+
setEndpoint(type: 'a2a' | 'mcp' | 'payment' | 'webhook', url: string): void;
|
|
62
|
+
/**
|
|
63
|
+
* Add a chain address to the agent card.
|
|
64
|
+
*/
|
|
65
|
+
addAddress(chain: string, caip2Id: string, address: string): void;
|
|
66
|
+
/**
|
|
67
|
+
* Serialize to JSON (for IPFS, on-chain storage, etc.)
|
|
68
|
+
*/
|
|
69
|
+
toJSON(): AgentCardData & {
|
|
70
|
+
createdAt: string;
|
|
71
|
+
updatedAt: string;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Create an AgentCard from JSON.
|
|
75
|
+
*/
|
|
76
|
+
static fromJSON(json: AgentCardData): AgentCard;
|
|
77
|
+
/**
|
|
78
|
+
* Get the raw data.
|
|
79
|
+
*/
|
|
80
|
+
getData(): Readonly<AgentCardData>;
|
|
81
|
+
private validateCard;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=agent-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-card.d.ts","sourceRoot":"","sources":["../../../src/identity/agent-card.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,qBAAa,SAAS;IACpB,OAAO,CAAC,IAAI,CAAgB;IAC5B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,OAAO,CAAC,SAAS,CAAO;gBAEZ,IAAI,EAAE,aAAa;IAS/B,IAAI,IAAI,IAAI,MAAM,CAA2B;IAC7C,IAAI,OAAO,IAAI,MAAM,CAA8B;IACnD,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAAkC;IACvE,IAAI,YAAY,IAAI,MAAM,EAAE,CAAwC;IACpE,IAAI,KAAK,IAAI,MAAM,CAA4B;IAC/C,IAAI,SAAS;;;;;kBAA2E;IACxF,IAAI,SAAS;;;;oBAAyE;IACtF,IAAI,IAAI,IAAI,MAAM,EAAE,CAAsD;IAC1E,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAA8B;IAI/D;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI1C;;OAEG;IACH,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO;IAInD;;OAEG;IACH,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO;IAMjD;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAQvC;;OAEG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAU7C;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAQ3E;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAiBjE;;OAEG;IACH,MAAM,IAAI,aAAa,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAQlE;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS;IAI/C;;OAEG;IACH,OAAO,IAAI,QAAQ,CAAC,aAAa,CAAC;IAMlC,OAAO,CAAC,YAAY;CAcrB"}
|