tenzro-wallet 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +128 -0
- package/dist/balance/aggregator.d.ts +16 -0
- package/dist/balance/aggregator.d.ts.map +1 -0
- package/dist/balance/aggregator.js +73 -0
- package/dist/balance/aggregator.js.map +1 -0
- package/dist/balance/index.d.ts +3 -0
- package/dist/balance/index.d.ts.map +1 -0
- package/dist/balance/index.js +2 -0
- package/dist/balance/index.js.map +1 -0
- package/dist/consent/index.d.ts +3 -0
- package/dist/consent/index.d.ts.map +1 -0
- package/dist/consent/index.js +2 -0
- package/dist/consent/index.js.map +1 -0
- package/dist/consent/policy.d.ts +27 -0
- package/dist/consent/policy.d.ts.map +1 -0
- package/dist/consent/policy.js +121 -0
- package/dist/consent/policy.js.map +1 -0
- package/dist/crypto/eip1559.d.ts +53 -0
- package/dist/crypto/eip1559.d.ts.map +1 -0
- package/dist/crypto/eip1559.js +79 -0
- package/dist/crypto/eip1559.js.map +1 -0
- package/dist/crypto/keccak256.d.ts +20 -0
- package/dist/crypto/keccak256.d.ts.map +1 -0
- package/dist/crypto/keccak256.js +167 -0
- package/dist/crypto/keccak256.js.map +1 -0
- package/dist/crypto/rlp.d.ts +30 -0
- package/dist/crypto/rlp.d.ts.map +1 -0
- package/dist/crypto/rlp.js +165 -0
- package/dist/crypto/rlp.js.map +1 -0
- package/dist/crypto/sha256.d.ts +14 -0
- package/dist/crypto/sha256.d.ts.map +1 -0
- package/dist/crypto/sha256.js +33 -0
- package/dist/crypto/sha256.js.map +1 -0
- package/dist/crypto/solana.d.ts +86 -0
- package/dist/crypto/solana.d.ts.map +1 -0
- package/dist/crypto/solana.js +218 -0
- package/dist/crypto/solana.js.map +1 -0
- package/dist/custody/frost/backend.d.ts +59 -0
- package/dist/custody/frost/backend.d.ts.map +1 -0
- package/dist/custody/frost/backend.js +83 -0
- package/dist/custody/frost/backend.js.map +1 -0
- package/dist/custody/frost/coordinator.d.ts +148 -0
- package/dist/custody/frost/coordinator.d.ts.map +1 -0
- package/dist/custody/frost/coordinator.js +58 -0
- package/dist/custody/frost/coordinator.js.map +1 -0
- package/dist/custody/frost/ed25519-driver.d.ts +30 -0
- package/dist/custody/frost/ed25519-driver.d.ts.map +1 -0
- package/dist/custody/frost/ed25519-driver.js +76 -0
- package/dist/custody/frost/ed25519-driver.js.map +1 -0
- package/dist/custody/frost/http-adapter.d.ts +77 -0
- package/dist/custody/frost/http-adapter.d.ts.map +1 -0
- package/dist/custody/frost/http-adapter.js +168 -0
- package/dist/custody/frost/http-adapter.js.map +1 -0
- package/dist/custody/frost/hybrid-driver.d.ts +37 -0
- package/dist/custody/frost/hybrid-driver.d.ts.map +1 -0
- package/dist/custody/frost/hybrid-driver.js +60 -0
- package/dist/custody/frost/hybrid-driver.js.map +1 -0
- package/dist/custody/frost/index.d.ts +12 -0
- package/dist/custody/frost/index.d.ts.map +1 -0
- package/dist/custody/frost/index.js +6 -0
- package/dist/custody/frost/index.js.map +1 -0
- package/dist/custody/frost/secp256k1-driver.d.ts +26 -0
- package/dist/custody/frost/secp256k1-driver.d.ts.map +1 -0
- package/dist/custody/frost/secp256k1-driver.js +78 -0
- package/dist/custody/frost/secp256k1-driver.js.map +1 -0
- package/dist/custody/index.d.ts +9 -0
- package/dist/custody/index.d.ts.map +1 -0
- package/dist/custody/index.js +11 -0
- package/dist/custody/index.js.map +1 -0
- package/dist/custody/internal-mpc.d.ts +14 -0
- package/dist/custody/internal-mpc.d.ts.map +1 -0
- package/dist/custody/internal-mpc.js +40 -0
- package/dist/custody/internal-mpc.js.map +1 -0
- package/dist/custody/mldsa/coordinator.d.ts +63 -0
- package/dist/custody/mldsa/coordinator.d.ts.map +1 -0
- package/dist/custody/mldsa/coordinator.js +44 -0
- package/dist/custody/mldsa/coordinator.js.map +1 -0
- package/dist/custody/mldsa/driver.d.ts +23 -0
- package/dist/custody/mldsa/driver.d.ts.map +1 -0
- package/dist/custody/mldsa/driver.js +43 -0
- package/dist/custody/mldsa/driver.js.map +1 -0
- package/dist/custody/mldsa/http-adapter.d.ts +59 -0
- package/dist/custody/mldsa/http-adapter.d.ts.map +1 -0
- package/dist/custody/mldsa/http-adapter.js +103 -0
- package/dist/custody/mldsa/http-adapter.js.map +1 -0
- package/dist/custody/mldsa/index.d.ts +7 -0
- package/dist/custody/mldsa/index.d.ts.map +1 -0
- package/dist/custody/mldsa/index.js +4 -0
- package/dist/custody/mldsa/index.js.map +1 -0
- package/dist/custody/pairing/http-adapter.d.ts +40 -0
- package/dist/custody/pairing/http-adapter.d.ts.map +1 -0
- package/dist/custody/pairing/http-adapter.js +113 -0
- package/dist/custody/pairing/http-adapter.js.map +1 -0
- package/dist/custody/pairing/index.d.ts +10 -0
- package/dist/custody/pairing/index.d.ts.map +1 -0
- package/dist/custody/pairing/index.js +8 -0
- package/dist/custody/pairing/index.js.map +1 -0
- package/dist/custody/pairing/port.d.ts +121 -0
- package/dist/custody/pairing/port.d.ts.map +1 -0
- package/dist/custody/pairing/port.js +40 -0
- package/dist/custody/pairing/port.js.map +1 -0
- package/dist/custody/passkey-share/http-adapter.d.ts +77 -0
- package/dist/custody/passkey-share/http-adapter.d.ts.map +1 -0
- package/dist/custody/passkey-share/http-adapter.js +125 -0
- package/dist/custody/passkey-share/http-adapter.js.map +1 -0
- package/dist/custody/passkey-share/index.d.ts +7 -0
- package/dist/custody/passkey-share/index.d.ts.map +1 -0
- package/dist/custody/passkey-share/index.js +4 -0
- package/dist/custody/passkey-share/index.js.map +1 -0
- package/dist/custody/passkey-share/unwrapper.d.ts +174 -0
- package/dist/custody/passkey-share/unwrapper.d.ts.map +1 -0
- package/dist/custody/passkey-share/unwrapper.js +132 -0
- package/dist/custody/passkey-share/unwrapper.js.map +1 -0
- package/dist/custody/passkey-share/webauthn-adapter.d.ts +112 -0
- package/dist/custody/passkey-share/webauthn-adapter.d.ts.map +1 -0
- package/dist/custody/passkey-share/webauthn-adapter.js +150 -0
- package/dist/custody/passkey-share/webauthn-adapter.js.map +1 -0
- package/dist/custody/surface-key-id.d.ts +15 -0
- package/dist/custody/surface-key-id.d.ts.map +1 -0
- package/dist/custody/surface-key-id.js +25 -0
- package/dist/custody/surface-key-id.js.map +1 -0
- package/dist/dapp/eip6963.d.ts +64 -0
- package/dist/dapp/eip6963.d.ts.map +1 -0
- package/dist/dapp/eip6963.js +55 -0
- package/dist/dapp/eip6963.js.map +1 -0
- package/dist/dapp/index.d.ts +21 -0
- package/dist/dapp/index.d.ts.map +1 -0
- package/dist/dapp/index.js +24 -0
- package/dist/dapp/index.js.map +1 -0
- package/dist/identity/delegate-set.d.ts +57 -0
- package/dist/identity/delegate-set.d.ts.map +1 -0
- package/dist/identity/delegate-set.js +85 -0
- package/dist/identity/delegate-set.js.map +1 -0
- package/dist/identity/did.d.ts +17 -0
- package/dist/identity/did.d.ts.map +1 -0
- package/dist/identity/did.js +60 -0
- package/dist/identity/did.js.map +1 -0
- package/dist/identity/index.d.ts +14 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +8 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/identity/provision.d.ts +13 -0
- package/dist/identity/provision.d.ts.map +1 -0
- package/dist/identity/provision.js +151 -0
- package/dist/identity/provision.js.map +1 -0
- package/dist/identity/provisioning-http-adapter.d.ts +81 -0
- package/dist/identity/provisioning-http-adapter.d.ts.map +1 -0
- package/dist/identity/provisioning-http-adapter.js +114 -0
- package/dist/identity/provisioning-http-adapter.js.map +1 -0
- package/dist/identity/recovery-http-adapter.d.ts +83 -0
- package/dist/identity/recovery-http-adapter.d.ts.map +1 -0
- package/dist/identity/recovery-http-adapter.js +139 -0
- package/dist/identity/recovery-http-adapter.js.map +1 -0
- package/dist/identity/wallet-new.d.ts +132 -0
- package/dist/identity/wallet-new.d.ts.map +1 -0
- package/dist/identity/wallet-new.js +94 -0
- package/dist/identity/wallet-new.js.map +1 -0
- package/dist/identity/wallet-recover.d.ts +116 -0
- package/dist/identity/wallet-recover.d.ts.map +1 -0
- package/dist/identity/wallet-recover.js +95 -0
- package/dist/identity/wallet-recover.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/kernel.d.ts +119 -0
- package/dist/kernel.d.ts.map +1 -0
- package/dist/kernel.js +144 -0
- package/dist/kernel.js.map +1 -0
- package/dist/ports/adapters/tenzro-identity-adapter.d.ts +44 -0
- package/dist/ports/adapters/tenzro-identity-adapter.d.ts.map +1 -0
- package/dist/ports/adapters/tenzro-identity-adapter.js +60 -0
- package/dist/ports/adapters/tenzro-identity-adapter.js.map +1 -0
- package/dist/ports/adapters/tenzro-sdk-adapter.d.ts +86 -0
- package/dist/ports/adapters/tenzro-sdk-adapter.d.ts.map +1 -0
- package/dist/ports/adapters/tenzro-sdk-adapter.js +100 -0
- package/dist/ports/adapters/tenzro-sdk-adapter.js.map +1 -0
- package/dist/ports/agent/acp.d.ts +66 -0
- package/dist/ports/agent/acp.d.ts.map +1 -0
- package/dist/ports/agent/acp.js +27 -0
- package/dist/ports/agent/acp.js.map +1 -0
- package/dist/ports/agent/adapters/acp-adapter.d.ts +67 -0
- package/dist/ports/agent/adapters/acp-adapter.d.ts.map +1 -0
- package/dist/ports/agent/adapters/acp-adapter.js +70 -0
- package/dist/ports/agent/adapters/acp-adapter.js.map +1 -0
- package/dist/ports/agent/adapters/agent-bond-adapter.d.ts +31 -0
- package/dist/ports/agent/adapters/agent-bond-adapter.d.ts.map +1 -0
- package/dist/ports/agent/adapters/agent-bond-adapter.js +82 -0
- package/dist/ports/agent/adapters/agent-bond-adapter.js.map +1 -0
- package/dist/ports/agent/adapters/agent-payment-adapter.d.ts +66 -0
- package/dist/ports/agent/adapters/agent-payment-adapter.d.ts.map +1 -0
- package/dist/ports/agent/adapters/agent-payment-adapter.js +75 -0
- package/dist/ports/agent/adapters/agent-payment-adapter.js.map +1 -0
- package/dist/ports/agent/adapters/ap2-adapter.d.ts +28 -0
- package/dist/ports/agent/adapters/ap2-adapter.d.ts.map +1 -0
- package/dist/ports/agent/adapters/ap2-adapter.js +97 -0
- package/dist/ports/agent/adapters/ap2-adapter.js.map +1 -0
- package/dist/ports/agent/adapters/auth-approval-adapter.d.ts +26 -0
- package/dist/ports/agent/adapters/auth-approval-adapter.d.ts.map +1 -0
- package/dist/ports/agent/adapters/auth-approval-adapter.js +37 -0
- package/dist/ports/agent/adapters/auth-approval-adapter.js.map +1 -0
- package/dist/ports/agent/adapters/erc7802-adapter.d.ts +30 -0
- package/dist/ports/agent/adapters/erc7802-adapter.d.ts.map +1 -0
- package/dist/ports/agent/adapters/erc7802-adapter.js +60 -0
- package/dist/ports/agent/adapters/erc7802-adapter.js.map +1 -0
- package/dist/ports/agent/adapters/erc8004-adapter.d.ts +54 -0
- package/dist/ports/agent/adapters/erc8004-adapter.d.ts.map +1 -0
- package/dist/ports/agent/adapters/erc8004-adapter.js +53 -0
- package/dist/ports/agent/adapters/erc8004-adapter.js.map +1 -0
- package/dist/ports/agent/adapters/escrow-adapter.d.ts +33 -0
- package/dist/ports/agent/adapters/escrow-adapter.d.ts.map +1 -0
- package/dist/ports/agent/adapters/escrow-adapter.js +109 -0
- package/dist/ports/agent/adapters/escrow-adapter.js.map +1 -0
- package/dist/ports/agent/adapters/fee-estimator-adapter.d.ts +31 -0
- package/dist/ports/agent/adapters/fee-estimator-adapter.d.ts.map +1 -0
- package/dist/ports/agent/adapters/fee-estimator-adapter.js +103 -0
- package/dist/ports/agent/adapters/fee-estimator-adapter.js.map +1 -0
- package/dist/ports/agent/adapters/htlc-escrow-adapter.d.ts +68 -0
- package/dist/ports/agent/adapters/htlc-escrow-adapter.d.ts.map +1 -0
- package/dist/ports/agent/adapters/htlc-escrow-adapter.js +131 -0
- package/dist/ports/agent/adapters/htlc-escrow-adapter.js.map +1 -0
- package/dist/ports/agent/adapters/insurance-adapter.d.ts +32 -0
- package/dist/ports/agent/adapters/insurance-adapter.d.ts.map +1 -0
- package/dist/ports/agent/adapters/insurance-adapter.js +103 -0
- package/dist/ports/agent/adapters/insurance-adapter.js.map +1 -0
- package/dist/ports/agent/adapters/lifecycle-adapter.d.ts +26 -0
- package/dist/ports/agent/adapters/lifecycle-adapter.d.ts.map +1 -0
- package/dist/ports/agent/adapters/lifecycle-adapter.js +136 -0
- package/dist/ports/agent/adapters/lifecycle-adapter.js.map +1 -0
- package/dist/ports/agent/adapters/nanopayment-adapter.d.ts +62 -0
- package/dist/ports/agent/adapters/nanopayment-adapter.d.ts.map +1 -0
- package/dist/ports/agent/adapters/nanopayment-adapter.js +76 -0
- package/dist/ports/agent/adapters/nanopayment-adapter.js.map +1 -0
- package/dist/ports/agent/adapters/payment-rails-adapter.d.ts +67 -0
- package/dist/ports/agent/adapters/payment-rails-adapter.d.ts.map +1 -0
- package/dist/ports/agent/adapters/payment-rails-adapter.js +108 -0
- package/dist/ports/agent/adapters/payment-rails-adapter.js.map +1 -0
- package/dist/ports/agent/adapters/principal-chain-adapter.d.ts +23 -0
- package/dist/ports/agent/adapters/principal-chain-adapter.d.ts.map +1 -0
- package/dist/ports/agent/adapters/principal-chain-adapter.js +156 -0
- package/dist/ports/agent/adapters/principal-chain-adapter.js.map +1 -0
- package/dist/ports/agent/adapters/session-key-adapter.d.ts +45 -0
- package/dist/ports/agent/adapters/session-key-adapter.d.ts.map +1 -0
- package/dist/ports/agent/adapters/session-key-adapter.js +80 -0
- package/dist/ports/agent/adapters/session-key-adapter.js.map +1 -0
- package/dist/ports/agent/adapters/tee-attestation-adapter.d.ts +32 -0
- package/dist/ports/agent/adapters/tee-attestation-adapter.d.ts.map +1 -0
- package/dist/ports/agent/adapters/tee-attestation-adapter.js +38 -0
- package/dist/ports/agent/adapters/tee-attestation-adapter.js.map +1 -0
- package/dist/ports/agent/agent-bond.d.ts +80 -0
- package/dist/ports/agent/agent-bond.d.ts.map +1 -0
- package/dist/ports/agent/agent-bond.js +23 -0
- package/dist/ports/agent/agent-bond.js.map +1 -0
- package/dist/ports/agent/agent-payment.d.ts +72 -0
- package/dist/ports/agent/agent-payment.d.ts.map +1 -0
- package/dist/ports/agent/agent-payment.js +17 -0
- package/dist/ports/agent/agent-payment.js.map +1 -0
- package/dist/ports/agent/ap2.d.ts +104 -0
- package/dist/ports/agent/ap2.d.ts.map +1 -0
- package/dist/ports/agent/ap2.js +22 -0
- package/dist/ports/agent/ap2.js.map +1 -0
- package/dist/ports/agent/auth-approval.d.ts +40 -0
- package/dist/ports/agent/auth-approval.d.ts.map +1 -0
- package/dist/ports/agent/auth-approval.js +23 -0
- package/dist/ports/agent/auth-approval.js.map +1 -0
- package/dist/ports/agent/erc7802.d.ts +94 -0
- package/dist/ports/agent/erc7802.d.ts.map +1 -0
- package/dist/ports/agent/erc7802.js +30 -0
- package/dist/ports/agent/erc7802.js.map +1 -0
- package/dist/ports/agent/erc8004.d.ts +57 -0
- package/dist/ports/agent/erc8004.d.ts.map +1 -0
- package/dist/ports/agent/erc8004.js +20 -0
- package/dist/ports/agent/erc8004.js.map +1 -0
- package/dist/ports/agent/escrow.d.ts +74 -0
- package/dist/ports/agent/escrow.d.ts.map +1 -0
- package/dist/ports/agent/escrow.js +18 -0
- package/dist/ports/agent/escrow.js.map +1 -0
- package/dist/ports/agent/fee-estimator.d.ts +71 -0
- package/dist/ports/agent/fee-estimator.d.ts.map +1 -0
- package/dist/ports/agent/fee-estimator.js +21 -0
- package/dist/ports/agent/fee-estimator.js.map +1 -0
- package/dist/ports/agent/htlc-escrow.d.ts +94 -0
- package/dist/ports/agent/htlc-escrow.d.ts.map +1 -0
- package/dist/ports/agent/htlc-escrow.js +25 -0
- package/dist/ports/agent/htlc-escrow.js.map +1 -0
- package/dist/ports/agent/index.d.ts +58 -0
- package/dist/ports/agent/index.d.ts.map +1 -0
- package/dist/ports/agent/index.js +24 -0
- package/dist/ports/agent/index.js.map +1 -0
- package/dist/ports/agent/insurance.d.ts +65 -0
- package/dist/ports/agent/insurance.d.ts.map +1 -0
- package/dist/ports/agent/insurance.js +18 -0
- package/dist/ports/agent/insurance.js.map +1 -0
- package/dist/ports/agent/lifecycle.d.ts +69 -0
- package/dist/ports/agent/lifecycle.d.ts.map +1 -0
- package/dist/ports/agent/lifecycle.js +17 -0
- package/dist/ports/agent/lifecycle.js.map +1 -0
- package/dist/ports/agent/nanopayment.d.ts +72 -0
- package/dist/ports/agent/nanopayment.d.ts.map +1 -0
- package/dist/ports/agent/nanopayment.js +16 -0
- package/dist/ports/agent/nanopayment.js.map +1 -0
- package/dist/ports/agent/payment-rails.d.ts +140 -0
- package/dist/ports/agent/payment-rails.d.ts.map +1 -0
- package/dist/ports/agent/payment-rails.js +25 -0
- package/dist/ports/agent/payment-rails.js.map +1 -0
- package/dist/ports/agent/principal-chain.d.ts +95 -0
- package/dist/ports/agent/principal-chain.d.ts.map +1 -0
- package/dist/ports/agent/principal-chain.js +16 -0
- package/dist/ports/agent/principal-chain.js.map +1 -0
- package/dist/ports/agent/session-key.d.ts +94 -0
- package/dist/ports/agent/session-key.d.ts.map +1 -0
- package/dist/ports/agent/session-key.js +31 -0
- package/dist/ports/agent/session-key.js.map +1 -0
- package/dist/ports/agent/tee-attestation.d.ts +51 -0
- package/dist/ports/agent/tee-attestation.d.ts.map +1 -0
- package/dist/ports/agent/tee-attestation.js +28 -0
- package/dist/ports/agent/tee-attestation.js.map +1 -0
- package/dist/ports/bridge/adapters/bridge-adapter-base.d.ts +47 -0
- package/dist/ports/bridge/adapters/bridge-adapter-base.d.ts.map +1 -0
- package/dist/ports/bridge/adapters/bridge-adapter-base.js +144 -0
- package/dist/ports/bridge/adapters/bridge-adapter-base.js.map +1 -0
- package/dist/ports/bridge/adapters/canton-bridge-adapter.d.ts +30 -0
- package/dist/ports/bridge/adapters/canton-bridge-adapter.d.ts.map +1 -0
- package/dist/ports/bridge/adapters/canton-bridge-adapter.js +31 -0
- package/dist/ports/bridge/adapters/canton-bridge-adapter.js.map +1 -0
- package/dist/ports/bridge/adapters/ccip-adapter.d.ts +30 -0
- package/dist/ports/bridge/adapters/ccip-adapter.d.ts.map +1 -0
- package/dist/ports/bridge/adapters/ccip-adapter.js +31 -0
- package/dist/ports/bridge/adapters/ccip-adapter.js.map +1 -0
- package/dist/ports/bridge/adapters/debridge-adapter.d.ts +27 -0
- package/dist/ports/bridge/adapters/debridge-adapter.d.ts.map +1 -0
- package/dist/ports/bridge/adapters/debridge-adapter.js +28 -0
- package/dist/ports/bridge/adapters/debridge-adapter.js.map +1 -0
- package/dist/ports/bridge/adapters/layerzero-adapter.d.ts +30 -0
- package/dist/ports/bridge/adapters/layerzero-adapter.d.ts.map +1 -0
- package/dist/ports/bridge/adapters/layerzero-adapter.js +31 -0
- package/dist/ports/bridge/adapters/layerzero-adapter.js.map +1 -0
- package/dist/ports/bridge/adapters/lifi-adapter.d.ts +48 -0
- package/dist/ports/bridge/adapters/lifi-adapter.d.ts.map +1 -0
- package/dist/ports/bridge/adapters/lifi-adapter.js +49 -0
- package/dist/ports/bridge/adapters/lifi-adapter.js.map +1 -0
- package/dist/ports/bridge/adapters/wormhole-adapter.d.ts +26 -0
- package/dist/ports/bridge/adapters/wormhole-adapter.d.ts.map +1 -0
- package/dist/ports/bridge/adapters/wormhole-adapter.js +27 -0
- package/dist/ports/bridge/adapters/wormhole-adapter.js.map +1 -0
- package/dist/ports/bridge/bridge.d.ts +123 -0
- package/dist/ports/bridge/bridge.d.ts.map +1 -0
- package/dist/ports/bridge/bridge.js +20 -0
- package/dist/ports/bridge/bridge.js.map +1 -0
- package/dist/ports/bridge/index.d.ts +13 -0
- package/dist/ports/bridge/index.d.ts.map +1 -0
- package/dist/ports/bridge/index.js +11 -0
- package/dist/ports/bridge/index.js.map +1 -0
- package/dist/ports/canton/adapters/ledger-api-adapter.d.ts +52 -0
- package/dist/ports/canton/adapters/ledger-api-adapter.d.ts.map +1 -0
- package/dist/ports/canton/adapters/ledger-api-adapter.js +232 -0
- package/dist/ports/canton/adapters/ledger-api-adapter.js.map +1 -0
- package/dist/ports/canton/canton-identity.d.ts +60 -0
- package/dist/ports/canton/canton-identity.d.ts.map +1 -0
- package/dist/ports/canton/canton-identity.js +28 -0
- package/dist/ports/canton/canton-identity.js.map +1 -0
- package/dist/ports/canton/canton-validator.d.ts +182 -0
- package/dist/ports/canton/canton-validator.d.ts.map +1 -0
- package/dist/ports/canton/canton-validator.js +39 -0
- package/dist/ports/canton/canton-validator.js.map +1 -0
- package/dist/ports/canton/fingerprint.d.ts +24 -0
- package/dist/ports/canton/fingerprint.d.ts.map +1 -0
- package/dist/ports/canton/fingerprint.js +31 -0
- package/dist/ports/canton/fingerprint.js.map +1 -0
- package/dist/ports/canton/hash.d.ts +37 -0
- package/dist/ports/canton/hash.d.ts.map +1 -0
- package/dist/ports/canton/hash.js +68 -0
- package/dist/ports/canton/hash.js.map +1 -0
- package/dist/ports/canton/http.d.ts +64 -0
- package/dist/ports/canton/http.d.ts.map +1 -0
- package/dist/ports/canton/http.js +177 -0
- package/dist/ports/canton/http.js.map +1 -0
- package/dist/ports/cross-vm.d.ts +79 -0
- package/dist/ports/cross-vm.d.ts.map +1 -0
- package/dist/ports/cross-vm.js +81 -0
- package/dist/ports/cross-vm.js.map +1 -0
- package/dist/ports/index.d.ts +18 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +11 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/ports/tenzro-identity.d.ts +29 -0
- package/dist/ports/tenzro-identity.d.ts.map +1 -0
- package/dist/ports/tenzro-identity.js +19 -0
- package/dist/ports/tenzro-identity.js.map +1 -0
- package/dist/ports/tenzro-rpc.d.ts +79 -0
- package/dist/ports/tenzro-rpc.d.ts.map +1 -0
- package/dist/ports/tenzro-rpc.js +21 -0
- package/dist/ports/tenzro-rpc.js.map +1 -0
- package/dist/router/index.d.ts +3 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +2 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/route.d.ts +17 -0
- package/dist/router/route.d.ts.map +1 -0
- package/dist/router/route.js +78 -0
- package/dist/router/route.js.map +1 -0
- package/dist/settlement/nanopayment-flow.d.ts +48 -0
- package/dist/settlement/nanopayment-flow.d.ts.map +1 -0
- package/dist/settlement/nanopayment-flow.js +111 -0
- package/dist/settlement/nanopayment-flow.js.map +1 -0
- package/dist/surfaces/canton-external.d.ts +43 -0
- package/dist/surfaces/canton-external.d.ts.map +1 -0
- package/dist/surfaces/canton-external.js +252 -0
- package/dist/surfaces/canton-external.js.map +1 -0
- package/dist/surfaces/canton-internal.d.ts +34 -0
- package/dist/surfaces/canton-internal.d.ts.map +1 -0
- package/dist/surfaces/canton-internal.js +163 -0
- package/dist/surfaces/canton-internal.js.map +1 -0
- package/dist/surfaces/canton-onboarding.d.ts +64 -0
- package/dist/surfaces/canton-onboarding.d.ts.map +1 -0
- package/dist/surfaces/canton-onboarding.js +113 -0
- package/dist/surfaces/canton-onboarding.js.map +1 -0
- package/dist/surfaces/evm-on-tenzro.d.ts +29 -0
- package/dist/surfaces/evm-on-tenzro.d.ts.map +1 -0
- package/dist/surfaces/evm-on-tenzro.js +226 -0
- package/dist/surfaces/evm-on-tenzro.js.map +1 -0
- package/dist/surfaces/index.d.ts +13 -0
- package/dist/surfaces/index.d.ts.map +1 -0
- package/dist/surfaces/index.js +7 -0
- package/dist/surfaces/index.js.map +1 -0
- package/dist/surfaces/svm-on-tenzro.d.ts +24 -0
- package/dist/surfaces/svm-on-tenzro.d.ts.map +1 -0
- package/dist/surfaces/svm-on-tenzro.js +238 -0
- package/dist/surfaces/svm-on-tenzro.js.map +1 -0
- package/dist/surfaces/tenzro-native.d.ts +45 -0
- package/dist/surfaces/tenzro-native.d.ts.map +1 -0
- package/dist/surfaces/tenzro-native.js +299 -0
- package/dist/surfaces/tenzro-native.js.map +1 -0
- package/dist/surfaces/util.d.ts +18 -0
- package/dist/surfaces/util.d.ts.map +1 -0
- package/dist/surfaces/util.js +36 -0
- package/dist/surfaces/util.js.map +1 -0
- package/dist/types/asset.d.ts +43 -0
- package/dist/types/asset.d.ts.map +1 -0
- package/dist/types/asset.js +13 -0
- package/dist/types/asset.js.map +1 -0
- package/dist/types/consent.d.ts +46 -0
- package/dist/types/consent.d.ts.map +1 -0
- package/dist/types/consent.js +18 -0
- package/dist/types/consent.js.map +1 -0
- package/dist/types/identity.d.ts +115 -0
- package/dist/types/identity.d.ts.map +1 -0
- package/dist/types/identity.js +12 -0
- package/dist/types/identity.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/intent.d.ts +132 -0
- package/dist/types/intent.d.ts.map +1 -0
- package/dist/types/intent.js +8 -0
- package/dist/types/intent.js.map +1 -0
- package/dist/types/signing-driver.d.ts +48 -0
- package/dist/types/signing-driver.d.ts.map +1 -0
- package/dist/types/signing-driver.js +9 -0
- package/dist/types/signing-driver.js.map +1 -0
- package/dist/types/surface-module.d.ts +38 -0
- package/dist/types/surface-module.d.ts.map +1 -0
- package/dist/types/surface-module.js +19 -0
- package/dist/types/surface-module.js.map +1 -0
- package/dist/types/surface.d.ts +17 -0
- package/dist/types/surface.d.ts.map +1 -0
- package/dist/types/surface.js +28 -0
- package/dist/types/surface.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EIP-1559 typed-transaction encoding (transaction type 0x02).
|
|
3
|
+
*
|
|
4
|
+
* Wire format per EIP-1559:
|
|
5
|
+
* signing_payload = 0x02 || rlp([
|
|
6
|
+
* chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit,
|
|
7
|
+
* to, value, data, accessList,
|
|
8
|
+
* ])
|
|
9
|
+
* signing_hash = keccak256(signing_payload)
|
|
10
|
+
* serialized_tx = 0x02 || rlp([... above 9 fields ..., yParity, r, s])
|
|
11
|
+
*
|
|
12
|
+
* `yParity` is 0 or 1 (NOT the legacy `27 + chainId*2 + ...` form).
|
|
13
|
+
*
|
|
14
|
+
* Refs: https://eips.ethereum.org/EIPS/eip-1559,
|
|
15
|
+
* https://eips.ethereum.org/EIPS/eip-2930 (access list),
|
|
16
|
+
* https://eips.ethereum.org/EIPS/eip-2718 (typed-tx envelope).
|
|
17
|
+
*/
|
|
18
|
+
export interface Eip1559Tx {
|
|
19
|
+
readonly chainId: number;
|
|
20
|
+
readonly nonce: number;
|
|
21
|
+
readonly maxPriorityFeePerGas: bigint;
|
|
22
|
+
readonly maxFeePerGas: bigint;
|
|
23
|
+
readonly gasLimit: bigint;
|
|
24
|
+
readonly to: `0x${string}`;
|
|
25
|
+
readonly value: bigint;
|
|
26
|
+
readonly data: Uint8Array;
|
|
27
|
+
/** Access list entries: `[address, [storageKey, storageKey, …]]`. */
|
|
28
|
+
readonly accessList?: readonly {
|
|
29
|
+
readonly address: `0x${string}`;
|
|
30
|
+
readonly storageKeys: readonly `0x${string}`[];
|
|
31
|
+
}[];
|
|
32
|
+
}
|
|
33
|
+
/** Pre-image bytes the signer must hash: `0x02 || rlp(body)`. */
|
|
34
|
+
export declare function encodeForSigning(tx: Eip1559Tx): Uint8Array;
|
|
35
|
+
/** 32-byte signing hash over the EIP-1559 pre-image. */
|
|
36
|
+
export declare function signingHash(tx: Eip1559Tx): Uint8Array;
|
|
37
|
+
export interface Eip1559Signature {
|
|
38
|
+
/** 0 or 1. */
|
|
39
|
+
readonly yParity: number;
|
|
40
|
+
/** Big-endian, ≤32 bytes. */
|
|
41
|
+
readonly r: Uint8Array;
|
|
42
|
+
/** Big-endian, ≤32 bytes. */
|
|
43
|
+
readonly s: Uint8Array;
|
|
44
|
+
}
|
|
45
|
+
/** Wire-format serialized tx: `0x02 || rlp(body || [yParity, r, s])`. */
|
|
46
|
+
export declare function serializeSigned(tx: Eip1559Tx, sig: Eip1559Signature): Uint8Array;
|
|
47
|
+
/**
|
|
48
|
+
* Parse a 65-byte secp256k1 signature (r||s||v) into the EIP-1559 shape.
|
|
49
|
+
* Some signing drivers emit `v` as 27/28 (legacy) and some as 0/1 (modern);
|
|
50
|
+
* we accept either.
|
|
51
|
+
*/
|
|
52
|
+
export declare function splitSignature(sig: Uint8Array): Eip1559Signature;
|
|
53
|
+
//# sourceMappingURL=eip1559.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eip1559.d.ts","sourceRoot":"","sources":["../../src/crypto/eip1559.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS;QAC7B,QAAQ,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;QAChC,QAAQ,CAAC,WAAW,EAAE,SAAS,KAAK,MAAM,EAAE,EAAE,CAAC;KAChD,EAAE,CAAC;CACL;AAuBD,iEAAiE;AACjE,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,SAAS,GAAG,UAAU,CAM1D;AAED,wDAAwD;AACxD,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,GAAG,UAAU,CAErD;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc;IACd,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,6BAA6B;IAC7B,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC;IACvB,6BAA6B;IAC7B,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC;CACxB;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,gBAAgB,GAAG,UAAU,CAQhF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,gBAAgB,CAYhE"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EIP-1559 typed-transaction encoding (transaction type 0x02).
|
|
3
|
+
*
|
|
4
|
+
* Wire format per EIP-1559:
|
|
5
|
+
* signing_payload = 0x02 || rlp([
|
|
6
|
+
* chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit,
|
|
7
|
+
* to, value, data, accessList,
|
|
8
|
+
* ])
|
|
9
|
+
* signing_hash = keccak256(signing_payload)
|
|
10
|
+
* serialized_tx = 0x02 || rlp([... above 9 fields ..., yParity, r, s])
|
|
11
|
+
*
|
|
12
|
+
* `yParity` is 0 or 1 (NOT the legacy `27 + chainId*2 + ...` form).
|
|
13
|
+
*
|
|
14
|
+
* Refs: https://eips.ethereum.org/EIPS/eip-1559,
|
|
15
|
+
* https://eips.ethereum.org/EIPS/eip-2930 (access list),
|
|
16
|
+
* https://eips.ethereum.org/EIPS/eip-2718 (typed-tx envelope).
|
|
17
|
+
*/
|
|
18
|
+
import { keccak256 } from "./keccak256.js";
|
|
19
|
+
import { bigintToBytes, hexToBytes, numberToBytes, rlpEncode } from "./rlp.js";
|
|
20
|
+
const TX_TYPE = 0x02;
|
|
21
|
+
/** RLP-encoded body without the type byte; useful for hashing under the type. */
|
|
22
|
+
function bodyItems(tx) {
|
|
23
|
+
const accessListItems = (tx.accessList ?? []).map((e) => [
|
|
24
|
+
hexToBytes(e.address),
|
|
25
|
+
e.storageKeys.map((k) => hexToBytes(k)),
|
|
26
|
+
]);
|
|
27
|
+
return [
|
|
28
|
+
numberToBytes(tx.chainId),
|
|
29
|
+
numberToBytes(tx.nonce),
|
|
30
|
+
bigintToBytes(tx.maxPriorityFeePerGas),
|
|
31
|
+
bigintToBytes(tx.maxFeePerGas),
|
|
32
|
+
bigintToBytes(tx.gasLimit),
|
|
33
|
+
hexToBytes(tx.to),
|
|
34
|
+
bigintToBytes(tx.value),
|
|
35
|
+
tx.data,
|
|
36
|
+
accessListItems,
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
/** Pre-image bytes the signer must hash: `0x02 || rlp(body)`. */
|
|
40
|
+
export function encodeForSigning(tx) {
|
|
41
|
+
const body = rlpEncode(bodyItems(tx));
|
|
42
|
+
const out = new Uint8Array(1 + body.length);
|
|
43
|
+
out[0] = TX_TYPE;
|
|
44
|
+
out.set(body, 1);
|
|
45
|
+
return out;
|
|
46
|
+
}
|
|
47
|
+
/** 32-byte signing hash over the EIP-1559 pre-image. */
|
|
48
|
+
export function signingHash(tx) {
|
|
49
|
+
return keccak256(encodeForSigning(tx));
|
|
50
|
+
}
|
|
51
|
+
/** Wire-format serialized tx: `0x02 || rlp(body || [yParity, r, s])`. */
|
|
52
|
+
export function serializeSigned(tx, sig) {
|
|
53
|
+
const body = bodyItems(tx);
|
|
54
|
+
const full = [...body, numberToBytes(sig.yParity), sig.r, sig.s];
|
|
55
|
+
const enc = rlpEncode(full);
|
|
56
|
+
const out = new Uint8Array(1 + enc.length);
|
|
57
|
+
out[0] = TX_TYPE;
|
|
58
|
+
out.set(enc, 1);
|
|
59
|
+
return out;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Parse a 65-byte secp256k1 signature (r||s||v) into the EIP-1559 shape.
|
|
63
|
+
* Some signing drivers emit `v` as 27/28 (legacy) and some as 0/1 (modern);
|
|
64
|
+
* we accept either.
|
|
65
|
+
*/
|
|
66
|
+
export function splitSignature(sig) {
|
|
67
|
+
if (sig.length !== 65) {
|
|
68
|
+
throw new Error(`expected 65-byte signature, got ${sig.length}`);
|
|
69
|
+
}
|
|
70
|
+
const r = sig.subarray(0, 32);
|
|
71
|
+
const s = sig.subarray(32, 64);
|
|
72
|
+
const v = sig[64];
|
|
73
|
+
const yParity = v === 27 || v === 28 ? v - 27 : v;
|
|
74
|
+
if (yParity !== 0 && yParity !== 1) {
|
|
75
|
+
throw new Error(`invalid yParity: derived ${yParity} from v=${v}`);
|
|
76
|
+
}
|
|
77
|
+
return { yParity, r, s };
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=eip1559.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eip1559.js","sourceRoot":"","sources":["../../src/crypto/eip1559.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* keccak256 — the original Keccak-f[1600] permutation, NIST padding *not*
|
|
3
|
+
* applied (this is the pre-FIPS-202 variant Ethereum uses, distinct from the
|
|
4
|
+
* official SHA3-256). Accepts a Uint8Array, returns a 32-byte digest.
|
|
5
|
+
*
|
|
6
|
+
* Pure JS implementation, no dependency on Node `crypto` or WebCrypto. Hot
|
|
7
|
+
* path is the round function; we keep it on plain `Uint32Array` lanes so the
|
|
8
|
+
* code is readable and the JIT can box it into typed-array ops.
|
|
9
|
+
*
|
|
10
|
+
* Why we ship our own:
|
|
11
|
+
* - WebCrypto's `digest('SHA3-256', …)` is *not* keccak-256 — different
|
|
12
|
+
* padding byte (0x06 vs 0x01).
|
|
13
|
+
* - The kernel package has no `@types/node` and ships to browsers, so
|
|
14
|
+
* `crypto.createHash('keccak256')` isn't on the table either.
|
|
15
|
+
*
|
|
16
|
+
* Cross-checked against the canonical test vectors in
|
|
17
|
+
* https://keccak.team/files/Keccak-reference-3.0.pdf appendix A.
|
|
18
|
+
*/
|
|
19
|
+
export declare function keccak256(input: Uint8Array): Uint8Array;
|
|
20
|
+
//# sourceMappingURL=keccak256.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keccak256.d.ts","sourceRoot":"","sources":["../../src/crypto/keccak256.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA8CH,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CA6BvD"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* keccak256 — the original Keccak-f[1600] permutation, NIST padding *not*
|
|
3
|
+
* applied (this is the pre-FIPS-202 variant Ethereum uses, distinct from the
|
|
4
|
+
* official SHA3-256). Accepts a Uint8Array, returns a 32-byte digest.
|
|
5
|
+
*
|
|
6
|
+
* Pure JS implementation, no dependency on Node `crypto` or WebCrypto. Hot
|
|
7
|
+
* path is the round function; we keep it on plain `Uint32Array` lanes so the
|
|
8
|
+
* code is readable and the JIT can box it into typed-array ops.
|
|
9
|
+
*
|
|
10
|
+
* Why we ship our own:
|
|
11
|
+
* - WebCrypto's `digest('SHA3-256', …)` is *not* keccak-256 — different
|
|
12
|
+
* padding byte (0x06 vs 0x01).
|
|
13
|
+
* - The kernel package has no `@types/node` and ships to browsers, so
|
|
14
|
+
* `crypto.createHash('keccak256')` isn't on the table either.
|
|
15
|
+
*
|
|
16
|
+
* Cross-checked against the canonical test vectors in
|
|
17
|
+
* https://keccak.team/files/Keccak-reference-3.0.pdf appendix A.
|
|
18
|
+
*/
|
|
19
|
+
// Round constants for Keccak-f[1600], as 64-bit ints split into [hi, lo]
|
|
20
|
+
// 32-bit halves so we can run the bitwise ops on Uint32Array.
|
|
21
|
+
const RC = [
|
|
22
|
+
[0x00000000, 0x00000001],
|
|
23
|
+
[0x00000000, 0x00008082],
|
|
24
|
+
[0x80000000, 0x0000808a],
|
|
25
|
+
[0x80000000, 0x80008000],
|
|
26
|
+
[0x00000000, 0x0000808b],
|
|
27
|
+
[0x00000000, 0x80000001],
|
|
28
|
+
[0x80000000, 0x80008081],
|
|
29
|
+
[0x80000000, 0x00008009],
|
|
30
|
+
[0x00000000, 0x0000008a],
|
|
31
|
+
[0x00000000, 0x00000088],
|
|
32
|
+
[0x00000000, 0x80008009],
|
|
33
|
+
[0x00000000, 0x8000000a],
|
|
34
|
+
[0x00000000, 0x8000808b],
|
|
35
|
+
[0x80000000, 0x0000008b],
|
|
36
|
+
[0x80000000, 0x00008089],
|
|
37
|
+
[0x80000000, 0x00008003],
|
|
38
|
+
[0x80000000, 0x00008002],
|
|
39
|
+
[0x80000000, 0x00000080],
|
|
40
|
+
[0x00000000, 0x0000800a],
|
|
41
|
+
[0x80000000, 0x8000000a],
|
|
42
|
+
[0x80000000, 0x80008081],
|
|
43
|
+
[0x80000000, 0x00008080],
|
|
44
|
+
[0x00000000, 0x80000001],
|
|
45
|
+
[0x80000000, 0x80008008],
|
|
46
|
+
];
|
|
47
|
+
// Rotation offsets for ρ.
|
|
48
|
+
// prettier-ignore
|
|
49
|
+
const RHO = [
|
|
50
|
+
0, 1, 62, 28, 27, 36, 44, 6, 55, 20, 3, 10, 43, 25, 39, 41, 45, 15, 21, 8, 18, 2, 61, 56, 14,
|
|
51
|
+
];
|
|
52
|
+
// Lane permutation for π: PI[x*5 + y] = src lane index.
|
|
53
|
+
// prettier-ignore
|
|
54
|
+
const PI = [
|
|
55
|
+
0, 6, 12, 18, 24, 3, 9, 10, 16, 22, 1, 7, 13, 19, 20, 4, 5, 11, 17, 23, 2, 8, 14, 15, 21,
|
|
56
|
+
];
|
|
57
|
+
const RATE = 136; // bytes (1088 bits) for keccak-256
|
|
58
|
+
const OUTPUT = 32;
|
|
59
|
+
export function keccak256(input) {
|
|
60
|
+
// 25 lanes × 64 bits → 50 × Uint32 (lane n stored as [hi=2n+1, lo=2n]).
|
|
61
|
+
const state = new Uint32Array(50);
|
|
62
|
+
// Absorb full RATE-byte blocks.
|
|
63
|
+
let off = 0;
|
|
64
|
+
while (off + RATE <= input.length) {
|
|
65
|
+
xorBlock(state, input, off);
|
|
66
|
+
permute(state);
|
|
67
|
+
off += RATE;
|
|
68
|
+
}
|
|
69
|
+
// Pad final block: 0x01 (keccak), then zeros, then 0x80 high bit.
|
|
70
|
+
const tail = new Uint8Array(RATE);
|
|
71
|
+
tail.set(input.subarray(off));
|
|
72
|
+
tail[input.length - off] = 0x01;
|
|
73
|
+
tail[RATE - 1] = (tail[RATE - 1] ?? 0) | 0x80;
|
|
74
|
+
xorBlock(state, tail, 0);
|
|
75
|
+
permute(state);
|
|
76
|
+
// Squeeze 32 bytes from the rate.
|
|
77
|
+
const out = new Uint8Array(OUTPUT);
|
|
78
|
+
for (let i = 0; i < OUTPUT; i++) {
|
|
79
|
+
const laneIdx = (i / 8) | 0;
|
|
80
|
+
const byteInLane = i % 8;
|
|
81
|
+
const word = byteInLane < 4 ? state[laneIdx * 2] : state[laneIdx * 2 + 1];
|
|
82
|
+
out[i] = (word >>> ((byteInLane % 4) * 8)) & 0xff;
|
|
83
|
+
}
|
|
84
|
+
return out;
|
|
85
|
+
}
|
|
86
|
+
function xorBlock(state, input, off) {
|
|
87
|
+
for (let i = 0; i < RATE; i += 8) {
|
|
88
|
+
const lane = i >> 3;
|
|
89
|
+
const lo = input[off + i] |
|
|
90
|
+
(input[off + i + 1] << 8) |
|
|
91
|
+
(input[off + i + 2] << 16) |
|
|
92
|
+
(input[off + i + 3] << 24);
|
|
93
|
+
const hi = input[off + i + 4] |
|
|
94
|
+
(input[off + i + 5] << 8) |
|
|
95
|
+
(input[off + i + 6] << 16) |
|
|
96
|
+
(input[off + i + 7] << 24);
|
|
97
|
+
state[lane * 2] = state[lane * 2] ^ (lo >>> 0);
|
|
98
|
+
state[lane * 2 + 1] = state[lane * 2 + 1] ^ (hi >>> 0);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function permute(s) {
|
|
102
|
+
for (let r = 0; r < 24; r++) {
|
|
103
|
+
// θ
|
|
104
|
+
const cLo = new Uint32Array(5);
|
|
105
|
+
const cHi = new Uint32Array(5);
|
|
106
|
+
for (let x = 0; x < 5; x++) {
|
|
107
|
+
cLo[x] = s[x * 2] ^ s[(x + 5) * 2] ^ s[(x + 10) * 2] ^ s[(x + 15) * 2] ^ s[(x + 20) * 2];
|
|
108
|
+
cHi[x] =
|
|
109
|
+
s[x * 2 + 1] ^
|
|
110
|
+
s[(x + 5) * 2 + 1] ^
|
|
111
|
+
s[(x + 10) * 2 + 1] ^
|
|
112
|
+
s[(x + 15) * 2 + 1] ^
|
|
113
|
+
s[(x + 20) * 2 + 1];
|
|
114
|
+
}
|
|
115
|
+
for (let x = 0; x < 5; x++) {
|
|
116
|
+
const dLo = cLo[(x + 4) % 5] ^ rotl32(cLo[(x + 1) % 5], cHi[(x + 1) % 5], 1).lo;
|
|
117
|
+
const dHi = cHi[(x + 4) % 5] ^ rotl32(cLo[(x + 1) % 5], cHi[(x + 1) % 5], 1).hi;
|
|
118
|
+
for (let y = 0; y < 5; y++) {
|
|
119
|
+
s[(x + y * 5) * 2] = (s[(x + y * 5) * 2] ^ dLo) >>> 0;
|
|
120
|
+
s[(x + y * 5) * 2 + 1] = (s[(x + y * 5) * 2 + 1] ^ dHi) >>> 0;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// ρ + π
|
|
124
|
+
const bLo = new Uint32Array(25);
|
|
125
|
+
const bHi = new Uint32Array(25);
|
|
126
|
+
for (let i = 0; i < 25; i++) {
|
|
127
|
+
const src = PI[i];
|
|
128
|
+
const rot = RHO[src];
|
|
129
|
+
const r2 = rotl32(s[src * 2], s[src * 2 + 1], rot);
|
|
130
|
+
bLo[i] = r2.lo;
|
|
131
|
+
bHi[i] = r2.hi;
|
|
132
|
+
}
|
|
133
|
+
// χ
|
|
134
|
+
for (let y = 0; y < 5; y++) {
|
|
135
|
+
for (let x = 0; x < 5; x++) {
|
|
136
|
+
const idx = x + y * 5;
|
|
137
|
+
s[idx * 2] =
|
|
138
|
+
(bLo[idx] ^ (~bLo[((x + 1) % 5) + y * 5] & bLo[((x + 2) % 5) + y * 5])) >>> 0;
|
|
139
|
+
s[idx * 2 + 1] =
|
|
140
|
+
(bHi[idx] ^ (~bHi[((x + 1) % 5) + y * 5] & bHi[((x + 2) % 5) + y * 5])) >>> 0;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// ι
|
|
144
|
+
s[0] = (s[0] ^ RC[r][1]) >>> 0;
|
|
145
|
+
s[1] = (s[1] ^ RC[r][0]) >>> 0;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/** 64-bit left-rotation, lanes split into hi/lo 32-bit halves. */
|
|
149
|
+
function rotl32(lo, hi, n) {
|
|
150
|
+
const m = n % 64;
|
|
151
|
+
if (m === 0)
|
|
152
|
+
return { lo: lo >>> 0, hi: hi >>> 0 };
|
|
153
|
+
if (m < 32) {
|
|
154
|
+
return {
|
|
155
|
+
lo: ((lo << m) | (hi >>> (32 - m))) >>> 0,
|
|
156
|
+
hi: ((hi << m) | (lo >>> (32 - m))) >>> 0,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
const k = m - 32;
|
|
160
|
+
if (k === 0)
|
|
161
|
+
return { lo: hi >>> 0, hi: lo >>> 0 };
|
|
162
|
+
return {
|
|
163
|
+
lo: ((hi << k) | (lo >>> (32 - k))) >>> 0,
|
|
164
|
+
hi: ((lo << k) | (hi >>> (32 - k))) >>> 0,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=keccak256.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keccak256.js","sourceRoot":"","sources":["../../src/crypto/keccak256.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal RLP encoder per Ethereum Yellow Paper appendix B.
|
|
3
|
+
*
|
|
4
|
+
* Why we have our own:
|
|
5
|
+
* - The kernel package has no `@types/node` and ships to browsers, so we
|
|
6
|
+
* can't pull in the canonical `rlp` / `ethereumjs-util` packages without
|
|
7
|
+
* dragging Node's Buffer into the dep tree.
|
|
8
|
+
* - Our use is narrow: encode an EIP-1559 typed-tx body. ~60 lines covers
|
|
9
|
+
* it; reaching for a 50KB dep would be silly.
|
|
10
|
+
*
|
|
11
|
+
* Decoder is included only to support round-trip tests — not exported from
|
|
12
|
+
* the package root.
|
|
13
|
+
*
|
|
14
|
+
* Spec: https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/
|
|
15
|
+
*/
|
|
16
|
+
export type RLPItem = Uint8Array | RLPItem[];
|
|
17
|
+
/** Encode a single RLP item (bytes or list of items) to its wire form. */
|
|
18
|
+
export declare function rlpEncode(item: RLPItem): Uint8Array;
|
|
19
|
+
/**
|
|
20
|
+
* Convert a non-negative bigint to its minimal big-endian byte form.
|
|
21
|
+
* 0n encodes as the empty byte string per RLP convention (NOT 0x00).
|
|
22
|
+
*/
|
|
23
|
+
export declare function bigintToBytes(n: bigint): Uint8Array;
|
|
24
|
+
/** Convert a non-negative number to RLP-minimal big-endian bytes. */
|
|
25
|
+
export declare function numberToBytes(n: number): Uint8Array;
|
|
26
|
+
/** Hex string `0x…` (even-length; odd-length nibbles are zero-padded). */
|
|
27
|
+
export declare function hexToBytes(hex: string): Uint8Array;
|
|
28
|
+
export declare function bytesToHex(b: Uint8Array): string;
|
|
29
|
+
export declare function rlpDecode(input: Uint8Array): RLPItem;
|
|
30
|
+
//# sourceMappingURL=rlp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rlp.d.ts","sourceRoot":"","sources":["../../src/crypto/rlp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,OAAO,EAAE,CAAC;AAE7C,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAGnD;AAyCD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAInD;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAKnD;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAQlD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAIhD;AAqBD,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAIpD"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal RLP encoder per Ethereum Yellow Paper appendix B.
|
|
3
|
+
*
|
|
4
|
+
* Why we have our own:
|
|
5
|
+
* - The kernel package has no `@types/node` and ships to browsers, so we
|
|
6
|
+
* can't pull in the canonical `rlp` / `ethereumjs-util` packages without
|
|
7
|
+
* dragging Node's Buffer into the dep tree.
|
|
8
|
+
* - Our use is narrow: encode an EIP-1559 typed-tx body. ~60 lines covers
|
|
9
|
+
* it; reaching for a 50KB dep would be silly.
|
|
10
|
+
*
|
|
11
|
+
* Decoder is included only to support round-trip tests — not exported from
|
|
12
|
+
* the package root.
|
|
13
|
+
*
|
|
14
|
+
* Spec: https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/
|
|
15
|
+
*/
|
|
16
|
+
/** Encode a single RLP item (bytes or list of items) to its wire form. */
|
|
17
|
+
export function rlpEncode(item) {
|
|
18
|
+
if (item instanceof Uint8Array)
|
|
19
|
+
return encodeBytes(item);
|
|
20
|
+
return encodeList(item);
|
|
21
|
+
}
|
|
22
|
+
function encodeBytes(b) {
|
|
23
|
+
if (b.length === 1 && b[0] < 0x80)
|
|
24
|
+
return b;
|
|
25
|
+
if (b.length < 56) {
|
|
26
|
+
const out = new Uint8Array(1 + b.length);
|
|
27
|
+
out[0] = 0x80 + b.length;
|
|
28
|
+
out.set(b, 1);
|
|
29
|
+
return out;
|
|
30
|
+
}
|
|
31
|
+
const lenBytes = bigEndian(BigInt(b.length));
|
|
32
|
+
const out = new Uint8Array(1 + lenBytes.length + b.length);
|
|
33
|
+
out[0] = 0xb7 + lenBytes.length;
|
|
34
|
+
out.set(lenBytes, 1);
|
|
35
|
+
out.set(b, 1 + lenBytes.length);
|
|
36
|
+
return out;
|
|
37
|
+
}
|
|
38
|
+
function encodeList(items) {
|
|
39
|
+
const parts = [];
|
|
40
|
+
let payloadLen = 0;
|
|
41
|
+
for (const it of items) {
|
|
42
|
+
const enc = rlpEncode(it);
|
|
43
|
+
parts.push(enc);
|
|
44
|
+
payloadLen += enc.length;
|
|
45
|
+
}
|
|
46
|
+
const payload = concat(parts);
|
|
47
|
+
if (payloadLen < 56) {
|
|
48
|
+
const out = new Uint8Array(1 + payloadLen);
|
|
49
|
+
out[0] = 0xc0 + payloadLen;
|
|
50
|
+
out.set(payload, 1);
|
|
51
|
+
return out;
|
|
52
|
+
}
|
|
53
|
+
const lenBytes = bigEndian(BigInt(payloadLen));
|
|
54
|
+
const out = new Uint8Array(1 + lenBytes.length + payloadLen);
|
|
55
|
+
out[0] = 0xf7 + lenBytes.length;
|
|
56
|
+
out.set(lenBytes, 1);
|
|
57
|
+
out.set(payload, 1 + lenBytes.length);
|
|
58
|
+
return out;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Convert a non-negative bigint to its minimal big-endian byte form.
|
|
62
|
+
* 0n encodes as the empty byte string per RLP convention (NOT 0x00).
|
|
63
|
+
*/
|
|
64
|
+
export function bigintToBytes(n) {
|
|
65
|
+
if (n < 0n)
|
|
66
|
+
throw new Error('rlp: negative integers are not encodable');
|
|
67
|
+
if (n === 0n)
|
|
68
|
+
return new Uint8Array(0);
|
|
69
|
+
return bigEndian(n);
|
|
70
|
+
}
|
|
71
|
+
/** Convert a non-negative number to RLP-minimal big-endian bytes. */
|
|
72
|
+
export function numberToBytes(n) {
|
|
73
|
+
if (!Number.isInteger(n) || n < 0) {
|
|
74
|
+
throw new Error('rlp: only non-negative integers are encodable');
|
|
75
|
+
}
|
|
76
|
+
return bigintToBytes(BigInt(n));
|
|
77
|
+
}
|
|
78
|
+
/** Hex string `0x…` (even-length; odd-length nibbles are zero-padded). */
|
|
79
|
+
export function hexToBytes(hex) {
|
|
80
|
+
const h = hex.startsWith('0x') ? hex.slice(2) : hex;
|
|
81
|
+
const norm = h.length % 2 === 0 ? h : '0' + h;
|
|
82
|
+
const out = new Uint8Array(norm.length / 2);
|
|
83
|
+
for (let i = 0; i < out.length; i++) {
|
|
84
|
+
out[i] = Number.parseInt(norm.slice(i * 2, i * 2 + 2), 16);
|
|
85
|
+
}
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
export function bytesToHex(b) {
|
|
89
|
+
let s = '0x';
|
|
90
|
+
for (const byte of b)
|
|
91
|
+
s += byte.toString(16).padStart(2, '0');
|
|
92
|
+
return s;
|
|
93
|
+
}
|
|
94
|
+
function bigEndian(n) {
|
|
95
|
+
const hex = n.toString(16);
|
|
96
|
+
return hexToBytes(hex.length % 2 === 0 ? hex : '0' + hex);
|
|
97
|
+
}
|
|
98
|
+
function concat(parts) {
|
|
99
|
+
let total = 0;
|
|
100
|
+
for (const p of parts)
|
|
101
|
+
total += p.length;
|
|
102
|
+
const out = new Uint8Array(total);
|
|
103
|
+
let off = 0;
|
|
104
|
+
for (const p of parts) {
|
|
105
|
+
out.set(p, off);
|
|
106
|
+
off += p.length;
|
|
107
|
+
}
|
|
108
|
+
return out;
|
|
109
|
+
}
|
|
110
|
+
// --- decoder (round-trip tests only) ---
|
|
111
|
+
export function rlpDecode(input) {
|
|
112
|
+
const { item, consumed } = decodeOne(input, 0);
|
|
113
|
+
if (consumed !== input.length)
|
|
114
|
+
throw new Error('rlp: trailing bytes');
|
|
115
|
+
return item;
|
|
116
|
+
}
|
|
117
|
+
function decodeOne(buf, off) {
|
|
118
|
+
const first = buf[off];
|
|
119
|
+
if (first === undefined)
|
|
120
|
+
throw new Error('rlp: unexpected EOF');
|
|
121
|
+
if (first < 0x80) {
|
|
122
|
+
return { item: buf.subarray(off, off + 1), consumed: 1 };
|
|
123
|
+
}
|
|
124
|
+
if (first < 0xb8) {
|
|
125
|
+
const len = first - 0x80;
|
|
126
|
+
return { item: buf.subarray(off + 1, off + 1 + len), consumed: 1 + len };
|
|
127
|
+
}
|
|
128
|
+
if (first < 0xc0) {
|
|
129
|
+
const lenLen = first - 0xb7;
|
|
130
|
+
const len = readLen(buf, off + 1, lenLen);
|
|
131
|
+
return {
|
|
132
|
+
item: buf.subarray(off + 1 + lenLen, off + 1 + lenLen + len),
|
|
133
|
+
consumed: 1 + lenLen + len,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
if (first < 0xf8) {
|
|
137
|
+
const len = first - 0xc0;
|
|
138
|
+
return decodeList(buf, off + 1, len, 1 + len);
|
|
139
|
+
}
|
|
140
|
+
const lenLen = first - 0xf7;
|
|
141
|
+
const len = readLen(buf, off + 1, lenLen);
|
|
142
|
+
return decodeList(buf, off + 1 + lenLen, len, 1 + lenLen + len);
|
|
143
|
+
}
|
|
144
|
+
function decodeList(buf, start, payloadLen, totalConsumed) {
|
|
145
|
+
const items = [];
|
|
146
|
+
let cursor = start;
|
|
147
|
+
const end = start + payloadLen;
|
|
148
|
+
while (cursor < end) {
|
|
149
|
+
const { item, consumed } = decodeOne(buf, cursor);
|
|
150
|
+
items.push(item);
|
|
151
|
+
cursor += consumed;
|
|
152
|
+
}
|
|
153
|
+
return { item: items, consumed: totalConsumed };
|
|
154
|
+
}
|
|
155
|
+
function readLen(buf, off, lenLen) {
|
|
156
|
+
let n = 0;
|
|
157
|
+
for (let i = 0; i < lenLen; i++) {
|
|
158
|
+
const b = buf[off + i];
|
|
159
|
+
if (b === undefined)
|
|
160
|
+
throw new Error('rlp: short length');
|
|
161
|
+
n = n * 256 + b;
|
|
162
|
+
}
|
|
163
|
+
return n;
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=rlp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rlp.js","sourceRoot":"","sources":["../../src/crypto/rlp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SHA-256 wrapper around WebCrypto's `crypto.subtle.digest`. Available in
|
|
3
|
+
* browsers, Node 16+, Cloudflare Workers, Deno, Bun — every modern JS
|
|
4
|
+
* runtime. Avoids vendoring a pure-JS SHA-256 the way we vendored keccak —
|
|
5
|
+
* SHA-256 is universally provided, keccak isn't.
|
|
6
|
+
*
|
|
7
|
+
* Used by the Canton adapter for `preparedTransactionHash` recomputation
|
|
8
|
+
* (Canton hash purpose 11, SHA-256 over the proto bytes per
|
|
9
|
+
* `HASHING_SCHEME_VERSION_V2`).
|
|
10
|
+
*/
|
|
11
|
+
export declare function sha256(data: Uint8Array): Promise<Uint8Array>;
|
|
12
|
+
/** Concatenate byte slices — small helper to avoid pulling in a util module. */
|
|
13
|
+
export declare function concatBytes(...parts: ReadonlyArray<Uint8Array>): Uint8Array;
|
|
14
|
+
//# sourceMappingURL=sha256.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sha256.d.ts","sourceRoot":"","sources":["../../src/crypto/sha256.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,wBAAsB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAUlE;AAED,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,GAAG,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,UAAU,CAU3E"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SHA-256 wrapper around WebCrypto's `crypto.subtle.digest`. Available in
|
|
3
|
+
* browsers, Node 16+, Cloudflare Workers, Deno, Bun — every modern JS
|
|
4
|
+
* runtime. Avoids vendoring a pure-JS SHA-256 the way we vendored keccak —
|
|
5
|
+
* SHA-256 is universally provided, keccak isn't.
|
|
6
|
+
*
|
|
7
|
+
* Used by the Canton adapter for `preparedTransactionHash` recomputation
|
|
8
|
+
* (Canton hash purpose 11, SHA-256 over the proto bytes per
|
|
9
|
+
* `HASHING_SCHEME_VERSION_V2`).
|
|
10
|
+
*/
|
|
11
|
+
export async function sha256(data) {
|
|
12
|
+
const subtle = globalThis.crypto?.subtle;
|
|
13
|
+
if (!subtle) {
|
|
14
|
+
throw new Error('sha256: globalThis.crypto.subtle unavailable. Tenzro wallet-kernel ' +
|
|
15
|
+
'requires a WebCrypto-capable runtime (Node 16+, browsers, Workers).');
|
|
16
|
+
}
|
|
17
|
+
const buf = await subtle.digest('SHA-256', data);
|
|
18
|
+
return new Uint8Array(buf);
|
|
19
|
+
}
|
|
20
|
+
/** Concatenate byte slices — small helper to avoid pulling in a util module. */
|
|
21
|
+
export function concatBytes(...parts) {
|
|
22
|
+
let total = 0;
|
|
23
|
+
for (const p of parts)
|
|
24
|
+
total += p.length;
|
|
25
|
+
const out = new Uint8Array(total);
|
|
26
|
+
let off = 0;
|
|
27
|
+
for (const p of parts) {
|
|
28
|
+
out.set(p, off);
|
|
29
|
+
off += p.length;
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=sha256.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sha256.js","sourceRoot":"","sources":["../../src/crypto/sha256.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAgB;IAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,qEAAqE;YACnE,qEAAqE,CACxE,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,WAAW,CAAC,GAAG,KAAgC;IAC7D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAChB,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|