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,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SVM surface inside the Tenzro runtime. SPL Token Adapter view of TNZO at
|
|
3
|
+
* 9 decimals. Sub-lamport (sub-9-decimal) dust is truncated when crossing into
|
|
4
|
+
* this view from EVM/native — the router surfaces a warning when applicable.
|
|
5
|
+
*/
|
|
6
|
+
import { base58Decode, base58Encode, serializeCompiledMessage, serializeTransaction, } from "../crypto/solana.js";
|
|
7
|
+
import { dustResidual, truncateForView } from "../ports/cross-vm.js";
|
|
8
|
+
import { makeHandle, mockStatusWalk } from "./util.js";
|
|
9
|
+
/**
|
|
10
|
+
* Placeholder program ID (32 bytes, base58 of all-zeros + last byte = 3) for
|
|
11
|
+
* `tenzro_cross_vm`. The real address is gated on the SVM-on-Tenzro spec
|
|
12
|
+
* publishing the canonical program ID — when it does, swap in those bytes.
|
|
13
|
+
* Documentation TODO at https://tenzro.com/docs/cross-vm-tokens.
|
|
14
|
+
*/
|
|
15
|
+
const TENZRO_CROSS_VM_PROGRAM_ID = (() => {
|
|
16
|
+
const b = new Uint8Array(32);
|
|
17
|
+
b[31] = 0x03; // sentinel — distinct from System Program (all zeros)
|
|
18
|
+
return b;
|
|
19
|
+
})();
|
|
20
|
+
export function svmOnTenzroSurface(deps) {
|
|
21
|
+
const rpc = deps.rpc ?? mockRpc();
|
|
22
|
+
return {
|
|
23
|
+
name: 'svm-on-tenzro',
|
|
24
|
+
async prepare(intent) {
|
|
25
|
+
if (intent.kind !== 'send')
|
|
26
|
+
throw new Error(`unsupported: ${intent.kind}`);
|
|
27
|
+
if (intent.to.kind !== 'svm')
|
|
28
|
+
throw new Error('svm-on-tenzro requires an SVM recipient');
|
|
29
|
+
const fromKey = deps.keyResolver(intent.from);
|
|
30
|
+
if (!fromKey || fromKey.surface !== 'svm-on-tenzro') {
|
|
31
|
+
throw new Error(`no svm-on-tenzro key for ${intent.from}`);
|
|
32
|
+
}
|
|
33
|
+
const recentBlockhash = await rpc.getRecentBlockhash();
|
|
34
|
+
const lamports = toLamports(intent.amount, intent.asset.decimals);
|
|
35
|
+
const dustTruncated = fromLamports(lamports, intent.asset.decimals) !== intent.amount;
|
|
36
|
+
const body = {
|
|
37
|
+
kind: 'svm-send',
|
|
38
|
+
fromPubkey: fromKey.address,
|
|
39
|
+
toPubkey: intent.to.publicKey,
|
|
40
|
+
lamports,
|
|
41
|
+
recentBlockhash,
|
|
42
|
+
};
|
|
43
|
+
return {
|
|
44
|
+
route: { kind: 'native', surface: 'svm-on-tenzro' },
|
|
45
|
+
intent,
|
|
46
|
+
fees: [{ asset: intent.asset, amount: 5000n, label: 'solana-style fee (lamports)' }],
|
|
47
|
+
etaMs: 800,
|
|
48
|
+
reversibility: 'final-on-submit',
|
|
49
|
+
warnings: dustTruncated
|
|
50
|
+
? ['amount truncated to 9-decimal precision (sub-lamport dust dropped)']
|
|
51
|
+
: [],
|
|
52
|
+
body,
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
async preparePointer(intent, op) {
|
|
56
|
+
if (intent.kind !== 'send')
|
|
57
|
+
throw new Error(`unsupported: ${intent.kind}`);
|
|
58
|
+
const fromKey = deps.keyResolver(intent.from);
|
|
59
|
+
if (!fromKey || fromKey.surface !== 'svm-on-tenzro') {
|
|
60
|
+
throw new Error(`no svm-on-tenzro key for ${intent.from}`);
|
|
61
|
+
}
|
|
62
|
+
const recentBlockhash = await rpc.getRecentBlockhash();
|
|
63
|
+
const body = {
|
|
64
|
+
kind: 'svm-pointer',
|
|
65
|
+
fromPubkey: fromKey.address,
|
|
66
|
+
recentBlockhash,
|
|
67
|
+
pointer: op,
|
|
68
|
+
};
|
|
69
|
+
const dust = dustResidual(op.amount, op.toSurface);
|
|
70
|
+
const truncated = truncateForView(op.amount, op.toSurface);
|
|
71
|
+
const warnings = [];
|
|
72
|
+
if (dust > 0n) {
|
|
73
|
+
warnings.push(`${dust.toString()} sub-units below ${op.toSurface} precision will ` +
|
|
74
|
+
`not appear in the destination view; ${truncated.toString()} ` +
|
|
75
|
+
`canonical units will move`);
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
route: {
|
|
79
|
+
kind: 'cross-vm-pointer',
|
|
80
|
+
fromSurface: 'svm-on-tenzro',
|
|
81
|
+
toSurface: op.toSurface,
|
|
82
|
+
precompile: '0x1003',
|
|
83
|
+
},
|
|
84
|
+
intent,
|
|
85
|
+
fees: [{ asset: intent.asset, amount: 5000n, label: 'solana-style fee (lamports)' }],
|
|
86
|
+
etaMs: 800,
|
|
87
|
+
reversibility: 'final-on-submit',
|
|
88
|
+
warnings,
|
|
89
|
+
body,
|
|
90
|
+
};
|
|
91
|
+
},
|
|
92
|
+
async sign(prepared, _consent) {
|
|
93
|
+
const body = prepared.body;
|
|
94
|
+
const did = prepared.intent.from;
|
|
95
|
+
const key = deps.keyResolver(did);
|
|
96
|
+
if (!key || key.surface !== 'svm-on-tenzro') {
|
|
97
|
+
throw new Error('missing svm key at sign time');
|
|
98
|
+
}
|
|
99
|
+
const preimage = canonicalize(body);
|
|
100
|
+
const result = await deps.signingDriver.sign({
|
|
101
|
+
did,
|
|
102
|
+
surfaceKey: key,
|
|
103
|
+
scheme: 'ed25519',
|
|
104
|
+
preimage,
|
|
105
|
+
purpose: body.kind === 'svm-pointer' ? 'svm-pointer' : 'svm-send',
|
|
106
|
+
});
|
|
107
|
+
return { prepared, signatures: result.signatures, body };
|
|
108
|
+
},
|
|
109
|
+
async submit(signed) {
|
|
110
|
+
const body = signed.body;
|
|
111
|
+
const sig = signed.signatures[0];
|
|
112
|
+
if (!sig)
|
|
113
|
+
throw new Error('missing signature');
|
|
114
|
+
const message = compileMessage(body);
|
|
115
|
+
const rawTx = serializeTransaction(message, [sig]);
|
|
116
|
+
const txSig = await rpc.sendRawTransaction(rawTx);
|
|
117
|
+
return makeHandle('svm-on-tenzro', signed.prepared.intent, txSig);
|
|
118
|
+
},
|
|
119
|
+
watch(handle) {
|
|
120
|
+
return mockStatusWalk(handle);
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
function toLamports(amount, decimals) {
|
|
125
|
+
if (decimals === 9)
|
|
126
|
+
return amount;
|
|
127
|
+
if (decimals > 9) {
|
|
128
|
+
const div = 10n ** BigInt(decimals - 9);
|
|
129
|
+
return amount / div;
|
|
130
|
+
}
|
|
131
|
+
const mul = 10n ** BigInt(9 - decimals);
|
|
132
|
+
return amount * mul;
|
|
133
|
+
}
|
|
134
|
+
function fromLamports(lamports, decimals) {
|
|
135
|
+
if (decimals === 9)
|
|
136
|
+
return lamports;
|
|
137
|
+
if (decimals > 9)
|
|
138
|
+
return lamports * 10n ** BigInt(decimals - 9);
|
|
139
|
+
return lamports / 10n ** BigInt(9 - decimals);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Canonical signing pre-image for an SVM transaction is the *compiled message
|
|
143
|
+
* bytes themselves*. Ed25519 (RFC 8032) hashes internally, so unlike EVM we
|
|
144
|
+
* do NOT pre-hash here — feeding the message bytes to the SigningDriver is
|
|
145
|
+
* what `solana-validator` will recompute and verify against `accountKeys[0]`.
|
|
146
|
+
*/
|
|
147
|
+
function canonicalize(body) {
|
|
148
|
+
return serializeCompiledMessage(compileMessage(body));
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Compile the structured tx body into a Solana legacy `CompiledMessage`.
|
|
152
|
+
*
|
|
153
|
+
* For `svm-send`: signer is the fee payer + sender (`fromPubkey`); recipient
|
|
154
|
+
* is a non-signer; the System Program (all-zeros pubkey) is the program; the
|
|
155
|
+
* single instruction is a System Program transfer with little-endian u64
|
|
156
|
+
* lamports.
|
|
157
|
+
*
|
|
158
|
+
* For `svm-pointer`: signer is the fee payer (`fromPubkey`); program is
|
|
159
|
+
* `TENZRO_CROSS_VM_PROGRAM_ID`; data is the structured payload (placeholder
|
|
160
|
+
* JSON until the program's instruction discriminator is published).
|
|
161
|
+
*/
|
|
162
|
+
function compileMessage(body) {
|
|
163
|
+
if (body.kind === 'svm-send') {
|
|
164
|
+
const from = base58Decode(body.fromPubkey);
|
|
165
|
+
const to = base58Decode(body.toPubkey);
|
|
166
|
+
const sysProgram = new Uint8Array(32); // 11111…11
|
|
167
|
+
return {
|
|
168
|
+
numRequiredSignatures: 1,
|
|
169
|
+
numReadonlySignedAccounts: 0,
|
|
170
|
+
// Recipient is writable (sees value increase) but not a signer; program
|
|
171
|
+
// is read-only and not a signer.
|
|
172
|
+
numReadonlyUnsignedAccounts: 1,
|
|
173
|
+
// Solana ordering: signers first, then writable non-signers, then
|
|
174
|
+
// read-only non-signers. So [from, to, sysProgram].
|
|
175
|
+
accountKeys: [from, to, sysProgram],
|
|
176
|
+
recentBlockhash: base58Decode(body.recentBlockhash),
|
|
177
|
+
instructions: [
|
|
178
|
+
{
|
|
179
|
+
programIdIndex: 2, // sysProgram
|
|
180
|
+
accountKeyIndices: [0, 1], // from, to
|
|
181
|
+
data: encodeSystemTransfer(body.lamports),
|
|
182
|
+
},
|
|
183
|
+
],
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
// pointer op
|
|
187
|
+
const from = base58Decode(body.fromPubkey);
|
|
188
|
+
return {
|
|
189
|
+
numRequiredSignatures: 1,
|
|
190
|
+
numReadonlySignedAccounts: 0,
|
|
191
|
+
numReadonlyUnsignedAccounts: 1, // program is read-only
|
|
192
|
+
accountKeys: [from, TENZRO_CROSS_VM_PROGRAM_ID],
|
|
193
|
+
recentBlockhash: base58Decode(body.recentBlockhash),
|
|
194
|
+
instructions: [
|
|
195
|
+
{
|
|
196
|
+
programIdIndex: 1, // tenzro_cross_vm
|
|
197
|
+
accountKeyIndices: [0], // signer
|
|
198
|
+
// Placeholder until the program publishes its instruction
|
|
199
|
+
// discriminator. The wire path that wraps and signs this is real;
|
|
200
|
+
// only the inner bytes are TBD.
|
|
201
|
+
data: new TextEncoder().encode(JSON.stringify({
|
|
202
|
+
toSurface: body.pointer.toSurface,
|
|
203
|
+
owner: body.pointer.owner,
|
|
204
|
+
amount: body.pointer.amount.toString(),
|
|
205
|
+
})),
|
|
206
|
+
},
|
|
207
|
+
],
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Solana System Program `Transfer` instruction:
|
|
212
|
+
* layout: u32 instruction_index (= 2 for transfer) || u64 LE lamports
|
|
213
|
+
*/
|
|
214
|
+
function encodeSystemTransfer(lamports) {
|
|
215
|
+
const out = new Uint8Array(12);
|
|
216
|
+
// instruction = 2 (Transfer), little-endian u32
|
|
217
|
+
out[0] = 2;
|
|
218
|
+
// lamports, little-endian u64
|
|
219
|
+
let v = lamports;
|
|
220
|
+
for (let i = 0; i < 8; i++) {
|
|
221
|
+
out[4 + i] = Number(v & 0xffn);
|
|
222
|
+
v >>= 8n;
|
|
223
|
+
}
|
|
224
|
+
return out;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Mock RPC used when no real Solana port is injected. Returns deterministic
|
|
228
|
+
* placeholders shaped like real Solana wire types (32-byte blockhash
|
|
229
|
+
* base58-encoded, fixed tx-signature string).
|
|
230
|
+
*/
|
|
231
|
+
function mockRpc() {
|
|
232
|
+
const blockhash = base58Encode(new Uint8Array(32).fill(0x01));
|
|
233
|
+
return {
|
|
234
|
+
getRecentBlockhash: async () => blockhash,
|
|
235
|
+
sendRawTransaction: async () => 'mocksig',
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=svm-on-tenzro.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svm-on-tenzro.js","sourceRoot":"","sources":["../../src/surfaces/svm-on-tenzro.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tenzro native surface — the canonical TNZO ledger. Hybrid signing
|
|
3
|
+
* (Ed25519 + ML-DSA-65) per https://tenzro.com/docs/wallet-sdk.
|
|
4
|
+
*
|
|
5
|
+
* M2 path (current):
|
|
6
|
+
* prepare → sign (local placeholder) → submit (server-side hybrid signing
|
|
7
|
+
* via `tenzro_signAndSendTransaction`, see TenzroRpcPort.sendTransaction).
|
|
8
|
+
*
|
|
9
|
+
* M5 path (future):
|
|
10
|
+
* sign() runs the FROST-Ed25519 device-leg with a passkey assertion;
|
|
11
|
+
* submit() sends the local share + assertion to the node, which combines
|
|
12
|
+
* with the TEE share and the ML-DSA leg. Same surface contract; the
|
|
13
|
+
* signing driver gets swapped under the kernel.
|
|
14
|
+
*
|
|
15
|
+
* The signing-driver call here is retained so the M1 mock test continues to
|
|
16
|
+
* exercise the threshold-share collection abstraction. Its output is not
|
|
17
|
+
* consumed by `submit()` in M2 (the node signs server-side); it will be
|
|
18
|
+
* consumed in M5.
|
|
19
|
+
*/
|
|
20
|
+
import type { TenzroIdentityPort } from '../ports/tenzro-identity.js';
|
|
21
|
+
import type { TenzroRpcPort } from '../ports/tenzro-rpc.js';
|
|
22
|
+
import type { SurfaceKey, TdipDid } from '../types/identity.js';
|
|
23
|
+
import type { SigningDriver } from '../types/signing-driver.js';
|
|
24
|
+
import type { SurfaceModule } from '../types/surface-module.js';
|
|
25
|
+
export interface TenzroNativeDeps {
|
|
26
|
+
/** Resolves the surface key (with on-chain address) for a given DID. */
|
|
27
|
+
readonly keyResolver: (did: TdipDid) => SurfaceKey | undefined;
|
|
28
|
+
readonly signingDriver: SigningDriver;
|
|
29
|
+
/**
|
|
30
|
+
* Tenzro RPC port. Real builds inject `TenzroSdkAdapter.fromClient(...)`;
|
|
31
|
+
* tests inject an in-memory fake. Optional only because the M1 smoke tests
|
|
32
|
+
* exercise the abstraction without a node — defaults to a stub that returns
|
|
33
|
+
* deterministic placeholders.
|
|
34
|
+
*/
|
|
35
|
+
readonly rpc?: TenzroRpcPort;
|
|
36
|
+
/**
|
|
37
|
+
* Optional remote identity port. Used only when a recipient DID is *not*
|
|
38
|
+
* the user's own (i.e., not in `keyResolver`'s local cache). Without it,
|
|
39
|
+
* sends to non-self DIDs throw — useful in tests and offline-first builds
|
|
40
|
+
* where every DID is locally known.
|
|
41
|
+
*/
|
|
42
|
+
readonly identityPort?: TenzroIdentityPort;
|
|
43
|
+
}
|
|
44
|
+
export declare function tenzroNativeSurface(deps: TenzroNativeDeps): SurfaceModule;
|
|
45
|
+
//# sourceMappingURL=tenzro-native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenzro-native.d.ts","sourceRoot":"","sources":["../../src/surfaces/tenzro-native.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,wBAAwB,CAAC;AAE5E,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAgChE,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,UAAU,GAAG,SAAS,CAAC;IAC/D,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAC;CAC5C;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,aAAa,CAoKzE"}
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tenzro native surface — the canonical TNZO ledger. Hybrid signing
|
|
3
|
+
* (Ed25519 + ML-DSA-65) per https://tenzro.com/docs/wallet-sdk.
|
|
4
|
+
*
|
|
5
|
+
* M2 path (current):
|
|
6
|
+
* prepare → sign (local placeholder) → submit (server-side hybrid signing
|
|
7
|
+
* via `tenzro_signAndSendTransaction`, see TenzroRpcPort.sendTransaction).
|
|
8
|
+
*
|
|
9
|
+
* M5 path (future):
|
|
10
|
+
* sign() runs the FROST-Ed25519 device-leg with a passkey assertion;
|
|
11
|
+
* submit() sends the local share + assertion to the node, which combines
|
|
12
|
+
* with the TEE share and the ML-DSA leg. Same surface contract; the
|
|
13
|
+
* signing driver gets swapped under the kernel.
|
|
14
|
+
*
|
|
15
|
+
* The signing-driver call here is retained so the M1 mock test continues to
|
|
16
|
+
* exercise the threshold-share collection abstraction. Its output is not
|
|
17
|
+
* consumed by `submit()` in M2 (the node signs server-side); it will be
|
|
18
|
+
* consumed in M5.
|
|
19
|
+
*/
|
|
20
|
+
import { dustResidual, truncateForView } from "../ports/cross-vm.js";
|
|
21
|
+
import { makeHandle } from "./util.js";
|
|
22
|
+
export function tenzroNativeSurface(deps) {
|
|
23
|
+
const rpc = deps.rpc ?? stubRpc();
|
|
24
|
+
return {
|
|
25
|
+
name: 'tenzro-native',
|
|
26
|
+
async prepare(intent) {
|
|
27
|
+
if (intent.kind !== 'send') {
|
|
28
|
+
throw new Error(`unsupported intent on tenzro-native: ${intent.kind}`);
|
|
29
|
+
}
|
|
30
|
+
const fromKey = deps.keyResolver(intent.from);
|
|
31
|
+
if (!fromKey || fromKey.surface !== 'tenzro-native') {
|
|
32
|
+
throw new Error(`no tenzro-native key for ${intent.from}`);
|
|
33
|
+
}
|
|
34
|
+
const fromAddress = fromKey.address;
|
|
35
|
+
const nonce = await rpc.getNonce(fromAddress);
|
|
36
|
+
const chainId = await rpc.getChainId();
|
|
37
|
+
const toAddress = await resolveRecipientAddress(intent.to, deps.keyResolver, deps.identityPort);
|
|
38
|
+
const body = {
|
|
39
|
+
kind: 'tenzro-native-send',
|
|
40
|
+
from: intent.from,
|
|
41
|
+
fromAddress,
|
|
42
|
+
...(intent.to.kind === 'tdip' ? { toDid: intent.to.did } : {}),
|
|
43
|
+
toAddress,
|
|
44
|
+
amount: intent.amount,
|
|
45
|
+
assetSymbol: intent.asset.symbol,
|
|
46
|
+
nonce,
|
|
47
|
+
chainId,
|
|
48
|
+
};
|
|
49
|
+
return {
|
|
50
|
+
route: { kind: 'native', surface: 'tenzro-native' },
|
|
51
|
+
intent,
|
|
52
|
+
fees: [
|
|
53
|
+
{
|
|
54
|
+
asset: intent.asset,
|
|
55
|
+
// M2: 21000 gas × 1 gwei placeholder; real estimate via
|
|
56
|
+
// node-side gas oracle lands when the SDK exposes one.
|
|
57
|
+
amount: 21000n * 1000000000n,
|
|
58
|
+
label: 'tenzro gas',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
etaMs: 500,
|
|
62
|
+
reversibility: 'final-on-submit',
|
|
63
|
+
warnings: [],
|
|
64
|
+
body,
|
|
65
|
+
};
|
|
66
|
+
},
|
|
67
|
+
async preparePointer(intent, op) {
|
|
68
|
+
if (intent.kind !== 'send') {
|
|
69
|
+
throw new Error(`unsupported intent on tenzro-native: ${intent.kind}`);
|
|
70
|
+
}
|
|
71
|
+
const fromKey = deps.keyResolver(intent.from);
|
|
72
|
+
if (!fromKey || fromKey.surface !== 'tenzro-native') {
|
|
73
|
+
throw new Error(`no tenzro-native key for ${intent.from}`);
|
|
74
|
+
}
|
|
75
|
+
const [nonce, chainId] = await Promise.all([rpc.getNonce(fromKey.address), rpc.getChainId()]);
|
|
76
|
+
const body = {
|
|
77
|
+
kind: 'tenzro-native-pointer',
|
|
78
|
+
from: intent.from,
|
|
79
|
+
fromAddress: fromKey.address,
|
|
80
|
+
nonce,
|
|
81
|
+
chainId,
|
|
82
|
+
pointer: op,
|
|
83
|
+
};
|
|
84
|
+
const dust = dustResidual(op.amount, op.toSurface);
|
|
85
|
+
const truncated = truncateForView(op.amount, op.toSurface);
|
|
86
|
+
const warnings = [];
|
|
87
|
+
if (dust > 0n) {
|
|
88
|
+
warnings.push(`${dust.toString()} sub-units below ${op.toSurface} precision will ` +
|
|
89
|
+
`not appear in the destination view; ${truncated.toString()} ` +
|
|
90
|
+
`canonical units will move`);
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
route: {
|
|
94
|
+
kind: 'cross-vm-pointer',
|
|
95
|
+
fromSurface: 'tenzro-native',
|
|
96
|
+
toSurface: op.toSurface,
|
|
97
|
+
precompile: '0x1003',
|
|
98
|
+
},
|
|
99
|
+
intent,
|
|
100
|
+
fees: [
|
|
101
|
+
{
|
|
102
|
+
asset: intent.asset,
|
|
103
|
+
amount: 21000n * 1000000000n,
|
|
104
|
+
label: 'tenzro gas (pointer call)',
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
etaMs: 500,
|
|
108
|
+
reversibility: 'final-on-submit',
|
|
109
|
+
warnings,
|
|
110
|
+
body,
|
|
111
|
+
};
|
|
112
|
+
},
|
|
113
|
+
async sign(prepared, _consent) {
|
|
114
|
+
const body = prepared.body;
|
|
115
|
+
const surfaceKey = deps.keyResolver(body.from);
|
|
116
|
+
if (!surfaceKey || surfaceKey.surface !== 'tenzro-native') {
|
|
117
|
+
throw new Error(`no tenzro-native key for ${body.from}`);
|
|
118
|
+
}
|
|
119
|
+
const preimage = canonicalize(body);
|
|
120
|
+
// M2: the signing driver still runs (so the M1 test fixture keeps
|
|
121
|
+
// working and the consent/policy gate stays at the kernel-level
|
|
122
|
+
// sign() boundary). In M5 the driver becomes a real FROST-Ed25519
|
|
123
|
+
// device-leg + passkey assertion, and `submit()` forwards that to
|
|
124
|
+
// the node along with the canonical body for TEE-side completion.
|
|
125
|
+
const result = await deps.signingDriver.sign({
|
|
126
|
+
did: body.from,
|
|
127
|
+
surfaceKey,
|
|
128
|
+
scheme: 'ed25519+ml-dsa-65',
|
|
129
|
+
preimage,
|
|
130
|
+
purpose: body.kind === 'tenzro-native-pointer' ? 'tenzro-native-pointer' : 'tenzro-native-send',
|
|
131
|
+
});
|
|
132
|
+
return { prepared, signatures: result.signatures, body };
|
|
133
|
+
},
|
|
134
|
+
async submit(signed) {
|
|
135
|
+
const body = signed.body;
|
|
136
|
+
// M2: server-side hybrid signing path. The kernel's local signature
|
|
137
|
+
// shares are not yet wire-bound; the SDK's DPoP-asserted session is
|
|
138
|
+
// the auth boundary. M5 wires the local Ed25519 leg + passkey
|
|
139
|
+
// assertion through to the node here.
|
|
140
|
+
//
|
|
141
|
+
// M3: pointer ops also flow through `sendTransaction` for now — the
|
|
142
|
+
// node's RPC will branch on the body's `kind` to invoke the
|
|
143
|
+
// `crossvm_pointer_move` syscall instead of value-transfer settlement.
|
|
144
|
+
// When the SDK adds a dedicated pointer endpoint this branches.
|
|
145
|
+
const sendArgs = body.kind === 'tenzro-native-pointer'
|
|
146
|
+
? {
|
|
147
|
+
from: body.fromAddress,
|
|
148
|
+
to: '0x1003',
|
|
149
|
+
value: 0n,
|
|
150
|
+
nonce: body.nonce,
|
|
151
|
+
chainId: body.chainId,
|
|
152
|
+
}
|
|
153
|
+
: {
|
|
154
|
+
from: body.fromAddress,
|
|
155
|
+
to: body.toAddress,
|
|
156
|
+
value: body.amount,
|
|
157
|
+
nonce: body.nonce,
|
|
158
|
+
chainId: body.chainId,
|
|
159
|
+
};
|
|
160
|
+
const hash = await rpc.sendTransaction(sendArgs);
|
|
161
|
+
return makeHandle('tenzro-native', signed.prepared.intent, hash);
|
|
162
|
+
},
|
|
163
|
+
watch(handle) {
|
|
164
|
+
return watchViaPort(handle, rpc);
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
// --- helpers ---
|
|
169
|
+
async function resolveRecipientAddress(to, keyResolver, identityPort) {
|
|
170
|
+
switch (to.kind) {
|
|
171
|
+
case 'tdip': {
|
|
172
|
+
// Local-first: self-sends and any DID the kernel already knows about
|
|
173
|
+
// resolve from the in-memory `SurfaceKey` map without a round-trip.
|
|
174
|
+
const k = keyResolver(to.did);
|
|
175
|
+
if (k && k.surface === 'tenzro-native')
|
|
176
|
+
return k.address;
|
|
177
|
+
// Remote: ask the identity port. This is where `resolveDidDocument`
|
|
178
|
+
// happens in real builds; tests can leave the port unset to enforce
|
|
179
|
+
// local-only resolution.
|
|
180
|
+
if (!identityPort) {
|
|
181
|
+
throw new Error(`cannot resolve tenzro-native address for recipient DID ${to.did}; ` +
|
|
182
|
+
`no identity port wired (pass deps.identityPort to enable remote DID resolution)`);
|
|
183
|
+
}
|
|
184
|
+
const remote = await identityPort.resolveTenzroAddress(to.did);
|
|
185
|
+
if (!remote) {
|
|
186
|
+
throw new Error(`DID ${to.did} has no tenzro-native key; cannot send to it on this surface`);
|
|
187
|
+
}
|
|
188
|
+
return remote;
|
|
189
|
+
}
|
|
190
|
+
case 'evm':
|
|
191
|
+
return to.address;
|
|
192
|
+
case 'svm':
|
|
193
|
+
return to.publicKey;
|
|
194
|
+
case 'canton':
|
|
195
|
+
return to.partyId;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
function canonicalize(body) {
|
|
199
|
+
// Stable JSON canonicalization is fine for the M2 stub; the wire format
|
|
200
|
+
// the chain actually verifies is `Transaction::hash()` per wallet-sdk
|
|
201
|
+
// docs, but server-side signing means the node owns canonicalization.
|
|
202
|
+
// Local canonicalization here only matters for the local signing-driver
|
|
203
|
+
// leg (which is a placeholder until M5).
|
|
204
|
+
const json = JSON.stringify(body, (_k, v) => (typeof v === 'bigint' ? v.toString() : v));
|
|
205
|
+
return new TextEncoder().encode(json);
|
|
206
|
+
}
|
|
207
|
+
function stubRpc() {
|
|
208
|
+
return {
|
|
209
|
+
getNonce: async () => 0,
|
|
210
|
+
getChainId: async () => 1337,
|
|
211
|
+
sendTransaction: async () => '0xmock',
|
|
212
|
+
getTransaction: async () => null,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Watch loop: yields one `created` status, then polls the node every
|
|
217
|
+
* `intervalMs` and yields whenever the inferred status changes. Stops
|
|
218
|
+
* after `finalized` or `failed`, or when `timeoutMs` elapses (yielding a
|
|
219
|
+
* synthetic `dropped`).
|
|
220
|
+
*
|
|
221
|
+
* Defaults: 250ms poll, 60s timeout. Both can be overridden via the
|
|
222
|
+
* `TENZRO_WATCH_INTERVAL_MS` / `TENZRO_WATCH_TIMEOUT_MS` env vars at
|
|
223
|
+
* runtime — useful for smoke tests against slow testnets.
|
|
224
|
+
*/
|
|
225
|
+
async function* watchViaPort(handle, rpc) {
|
|
226
|
+
const env = readEnv();
|
|
227
|
+
const intervalMs = Number(env.TENZRO_WATCH_INTERVAL_MS ?? 250);
|
|
228
|
+
const timeoutMs = Number(env.TENZRO_WATCH_TIMEOUT_MS ?? 60_000);
|
|
229
|
+
yield { handle, phase: 'created' };
|
|
230
|
+
if (handle.hash === undefined) {
|
|
231
|
+
// No hash to poll for — surface produced a placeholder handle. Treat as
|
|
232
|
+
// dropped immediately rather than spinning a doomed poll loop.
|
|
233
|
+
yield { handle, phase: 'dropped', error: 'no transaction hash on handle' };
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
const deadline = Date.now() + timeoutMs;
|
|
237
|
+
let lastPhase = 'created';
|
|
238
|
+
while (Date.now() < deadline) {
|
|
239
|
+
let nodeStatus = null;
|
|
240
|
+
try {
|
|
241
|
+
nodeStatus = await rpc.getTransaction(handle.hash);
|
|
242
|
+
}
|
|
243
|
+
catch (err) {
|
|
244
|
+
// Transient RPC errors don't kill the walk — they just fall through
|
|
245
|
+
// to the next interval. M3+ may surface them as warnings.
|
|
246
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
247
|
+
// Yielding a `failed` here would lie about the on-chain state; just
|
|
248
|
+
// sleep and retry. If the issue is persistent we'll time out.
|
|
249
|
+
void message;
|
|
250
|
+
}
|
|
251
|
+
const phase = mapStatusToPhase(nodeStatus);
|
|
252
|
+
if (phase !== lastPhase) {
|
|
253
|
+
lastPhase = phase;
|
|
254
|
+
const update = {
|
|
255
|
+
handle,
|
|
256
|
+
phase,
|
|
257
|
+
...(handle.hash !== undefined ? { hash: handle.hash } : {}),
|
|
258
|
+
...(nodeStatus?.blockHeight !== undefined ? { blockHeight: nodeStatus.blockHeight } : {}),
|
|
259
|
+
};
|
|
260
|
+
yield update;
|
|
261
|
+
if (phase === 'finalized' || phase === 'failed')
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
await sleep(intervalMs);
|
|
265
|
+
}
|
|
266
|
+
// Timed out without seeing finalization.
|
|
267
|
+
yield {
|
|
268
|
+
handle,
|
|
269
|
+
phase: 'dropped',
|
|
270
|
+
...(handle.hash !== undefined ? { hash: handle.hash } : {}),
|
|
271
|
+
error: `watch timed out after ${timeoutMs}ms`,
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
function mapStatusToPhase(s) {
|
|
275
|
+
if (s === null)
|
|
276
|
+
return 'pending';
|
|
277
|
+
switch (s.status) {
|
|
278
|
+
case 'pending':
|
|
279
|
+
return 'pending';
|
|
280
|
+
case 'included':
|
|
281
|
+
return 'confirmed';
|
|
282
|
+
case 'finalized':
|
|
283
|
+
return 'finalized';
|
|
284
|
+
case 'failed':
|
|
285
|
+
return 'failed';
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
function sleep(ms) {
|
|
289
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Read env vars without requiring `@types/node`. Falls back to an empty
|
|
293
|
+
* object in non-Node runtimes (browsers, web workers).
|
|
294
|
+
*/
|
|
295
|
+
function readEnv() {
|
|
296
|
+
const g = globalThis;
|
|
297
|
+
return g.process?.env ?? {};
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=tenzro-native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenzro-native.js","sourceRoot":"","sources":["../../src/surfaces/tenzro-native.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Surface-internal helpers. Not exported from the package root.
|
|
3
|
+
*/
|
|
4
|
+
import type { Intent, TxHandle, TxStatus } from '../types/intent.js';
|
|
5
|
+
import type { SurfaceName } from '../types/surface.js';
|
|
6
|
+
export declare function makeHandle(surface: SurfaceName, _intent: Intent, hash?: string): TxHandle;
|
|
7
|
+
/**
|
|
8
|
+
* M1 placeholder confirmation walk: created → pending → confirmed → finalized.
|
|
9
|
+
*
|
|
10
|
+
* Used by every surface that doesn't yet have a real port wired. As of M2,
|
|
11
|
+
* `tenzro-native` replaces this with `watchViaPort` against a real RPC; the
|
|
12
|
+
* remaining consumers (evm-on-tenzro, svm-on-tenzro, canton-internal,
|
|
13
|
+
* canton-external) keep using this until their respective milestones land.
|
|
14
|
+
*
|
|
15
|
+
* Delete this when no surface imports it any more.
|
|
16
|
+
*/
|
|
17
|
+
export declare function mockStatusWalk(handle: TxHandle): AsyncIterable<TxStatus>;
|
|
18
|
+
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/surfaces/util.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAQzF;AAED;;;;;;;;;GASG;AACH,wBAAuB,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAQ/E"}
|