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,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EIP-6963 announcement payload builder.
|
|
3
|
+
*
|
|
4
|
+
* EIP-6963 specifies how a wallet announces itself to dApps in the
|
|
5
|
+
* browser-extension form factor: the wallet dispatches an
|
|
6
|
+
* `eip6963:announceProvider` event carrying a `{ info, provider }` detail,
|
|
7
|
+
* and listens for `eip6963:requestProvider` to re-announce on demand.
|
|
8
|
+
*
|
|
9
|
+
* Per DESIGN.md §11.6 (resolved), Tenzro Wallet uses EIP-6963 in-page
|
|
10
|
+
* conventions until a Canton CIP for multi-provider discovery lands. The
|
|
11
|
+
* actual `window.dispatchEvent` lives in the browser-extension package
|
|
12
|
+
* (`@tenzro/wallet-extension`, M6) — this module only builds the
|
|
13
|
+
* payload so the announcement can be unit-tested without a DOM and
|
|
14
|
+
* re-used across form factors.
|
|
15
|
+
*
|
|
16
|
+
* The default `rdns` is sourced from `tenzro-sdk`'s `TENZRO_PROVIDER_RDNS`
|
|
17
|
+
* constant — the SDK's `discoverEip6963Provider()` filters on that exact
|
|
18
|
+
* value, so importing it here keeps the announce side and the consume side
|
|
19
|
+
* aligned by construction. If the SDK ever moves the RDNS, the kernel
|
|
20
|
+
* announcement moves with it without a code change here.
|
|
21
|
+
*
|
|
22
|
+
* Spec: https://eips.ethereum.org/EIPS/eip-6963
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* The `info` half of an EIP-6963 announcement. The `provider` half is the
|
|
26
|
+
* EIP-1193 object the extension injects; the kernel doesn't construct
|
|
27
|
+
* that — the extension does.
|
|
28
|
+
*/
|
|
29
|
+
export interface Eip6963ProviderInfo {
|
|
30
|
+
/**
|
|
31
|
+
* UUIDv4 stable across announcements within a page. Per spec, dApps
|
|
32
|
+
* may treat this as a session-scoped wallet identity.
|
|
33
|
+
*/
|
|
34
|
+
readonly uuid: string;
|
|
35
|
+
/** Human-readable wallet name displayed in selector UIs. */
|
|
36
|
+
readonly name: string;
|
|
37
|
+
/** Reverse-DNS namespace owned by the wallet vendor. */
|
|
38
|
+
readonly rdns: string;
|
|
39
|
+
/** `data:image/svg+xml;base64,...` (or PNG) wallet icon. */
|
|
40
|
+
readonly icon: string;
|
|
41
|
+
}
|
|
42
|
+
export interface Eip6963AnnouncementInput {
|
|
43
|
+
readonly uuid: string;
|
|
44
|
+
/** Defaults to "Tenzro Wallet". */
|
|
45
|
+
readonly name?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Defaults to the SDK's `TENZRO_PROVIDER_RDNS` constant
|
|
48
|
+
* (`network.tenzro.wallet`) — the same value `discoverEip6963Provider()`
|
|
49
|
+
* filters on. Override only for staging / preview builds.
|
|
50
|
+
*/
|
|
51
|
+
readonly rdns?: string;
|
|
52
|
+
/** Required — no built-in default; the extension supplies the asset. */
|
|
53
|
+
readonly icon: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Build the `info` payload for an `eip6963:announceProvider` event. Pure —
|
|
57
|
+
* no DOM access, no side effects. The browser-extension package consumes
|
|
58
|
+
* this and pairs it with the EIP-1193 provider object before dispatch.
|
|
59
|
+
*/
|
|
60
|
+
export declare function buildEip6963Announcement(input: Eip6963AnnouncementInput): Eip6963ProviderInfo;
|
|
61
|
+
/** EIP-6963 event names — exported as constants so consumers don't typo. */
|
|
62
|
+
export declare const EIP6963_ANNOUNCE_EVENT = "eip6963:announceProvider";
|
|
63
|
+
export declare const EIP6963_REQUEST_EVENT = "eip6963:requestProvider";
|
|
64
|
+
//# sourceMappingURL=eip6963.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eip6963.d.ts","sourceRoot":"","sources":["../../src/dapp/eip6963.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAQD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,wBAAwB,GAAG,mBAAmB,CAiB7F;AAED,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB,6BAA6B,CAAC;AACjE,eAAO,MAAM,qBAAqB,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EIP-6963 announcement payload builder.
|
|
3
|
+
*
|
|
4
|
+
* EIP-6963 specifies how a wallet announces itself to dApps in the
|
|
5
|
+
* browser-extension form factor: the wallet dispatches an
|
|
6
|
+
* `eip6963:announceProvider` event carrying a `{ info, provider }` detail,
|
|
7
|
+
* and listens for `eip6963:requestProvider` to re-announce on demand.
|
|
8
|
+
*
|
|
9
|
+
* Per DESIGN.md §11.6 (resolved), Tenzro Wallet uses EIP-6963 in-page
|
|
10
|
+
* conventions until a Canton CIP for multi-provider discovery lands. The
|
|
11
|
+
* actual `window.dispatchEvent` lives in the browser-extension package
|
|
12
|
+
* (`@tenzro/wallet-extension`, M6) — this module only builds the
|
|
13
|
+
* payload so the announcement can be unit-tested without a DOM and
|
|
14
|
+
* re-used across form factors.
|
|
15
|
+
*
|
|
16
|
+
* The default `rdns` is sourced from `tenzro-sdk`'s `TENZRO_PROVIDER_RDNS`
|
|
17
|
+
* constant — the SDK's `discoverEip6963Provider()` filters on that exact
|
|
18
|
+
* value, so importing it here keeps the announce side and the consume side
|
|
19
|
+
* aligned by construction. If the SDK ever moves the RDNS, the kernel
|
|
20
|
+
* announcement moves with it without a code change here.
|
|
21
|
+
*
|
|
22
|
+
* Spec: https://eips.ethereum.org/EIPS/eip-6963
|
|
23
|
+
*/
|
|
24
|
+
import { TENZRO_PROVIDER_RDNS } from 'tenzro-sdk';
|
|
25
|
+
/** Tenzro defaults — kernel-default name + rdns matching the docs site. */
|
|
26
|
+
const DEFAULT_NAME = 'Tenzro Wallet';
|
|
27
|
+
const DEFAULT_RDNS = TENZRO_PROVIDER_RDNS;
|
|
28
|
+
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
29
|
+
/**
|
|
30
|
+
* Build the `info` payload for an `eip6963:announceProvider` event. Pure —
|
|
31
|
+
* no DOM access, no side effects. The browser-extension package consumes
|
|
32
|
+
* this and pairs it with the EIP-1193 provider object before dispatch.
|
|
33
|
+
*/
|
|
34
|
+
export function buildEip6963Announcement(input) {
|
|
35
|
+
if (!UUID_RE.test(input.uuid)) {
|
|
36
|
+
throw new Error(`buildEip6963Announcement: invalid uuid "${input.uuid}" — must be UUIDv1–v5`);
|
|
37
|
+
}
|
|
38
|
+
if (!input.icon || !/^data:image\/(svg\+xml|png|jpeg|webp)/i.test(input.icon)) {
|
|
39
|
+
throw new Error('buildEip6963Announcement: icon must be a data: URL with an image MIME type');
|
|
40
|
+
}
|
|
41
|
+
const rdns = input.rdns ?? DEFAULT_RDNS;
|
|
42
|
+
if (!/^[a-z0-9]+(\.[a-z0-9-]+)+$/i.test(rdns)) {
|
|
43
|
+
throw new Error(`buildEip6963Announcement: invalid rdns "${rdns}" — expected reverse-DNS form`);
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
uuid: input.uuid,
|
|
47
|
+
name: input.name ?? DEFAULT_NAME,
|
|
48
|
+
rdns,
|
|
49
|
+
icon: input.icon,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/** EIP-6963 event names — exported as constants so consumers don't typo. */
|
|
53
|
+
export const EIP6963_ANNOUNCE_EVENT = 'eip6963:announceProvider';
|
|
54
|
+
export const EIP6963_REQUEST_EVENT = 'eip6963:requestProvider';
|
|
55
|
+
//# sourceMappingURL=eip6963.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eip6963.js","sourceRoot":"","sources":["../../src/dapp/eip6963.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAmClD,2EAA2E;AAC3E,MAAM,YAAY,GAAG,eAAe,CAAC;AACrC,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAE1C,MAAM,OAAO,GAAG,4EAA4E,CAAC;AAE7F;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAA+B;IACtE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,2CAA2C,KAAK,CAAC,IAAI,uBAAuB,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,wCAAwC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAChG,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,YAAY,CAAC;IACxC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,2CAA2C,IAAI,+BAA+B,CAAC,CAAC;IAClG,CAAC;IACD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,YAAY;QAChC,IAAI;QACJ,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AACjE,MAAM,CAAC,MAAM,qBAAqB,GAAG,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dApp-facing helpers — payload builders + event names + SDK browser-support
|
|
3
|
+
* re-exports. The actual provider injection lives in
|
|
4
|
+
* `@tenzro/wallet-extension` (M6); the kernel only ships the parts that are
|
|
5
|
+
* pure / DOM-free / unit-testable plus a re-export of the SDK-supplied
|
|
6
|
+
* consume-side helpers so dApp-host code in this repo can pull from one
|
|
7
|
+
* place.
|
|
8
|
+
*
|
|
9
|
+
* Why the re-export lives here: the SDK provides
|
|
10
|
+
* `discoverEip6963Provider` + `TenzroNotInstalledError` +
|
|
11
|
+
* `TENZRO_PROVIDER_RDNS` as the consumer-side counterpart to the
|
|
12
|
+
* announce-side builder in this folder. Co-locating them keeps "the kernel
|
|
13
|
+
* is the only thing that touches `tenzro-sdk`" rule intact (any host that
|
|
14
|
+
* just needs to *consume* an injected provider can depend on the kernel
|
|
15
|
+
* instead of a second SDK install).
|
|
16
|
+
*/
|
|
17
|
+
export { buildEip6963Announcement, EIP6963_ANNOUNCE_EVENT, EIP6963_REQUEST_EVENT, } from './eip6963.js';
|
|
18
|
+
export type { Eip6963ProviderInfo, Eip6963AnnouncementInput, } from './eip6963.js';
|
|
19
|
+
export { TENZRO_PROVIDER_RDNS, discoverEip6963Provider, TenzroNotInstalledError, Eip1193Transport, } from 'tenzro-sdk';
|
|
20
|
+
export type { EIP1193Provider, EIP6963ProviderInfo, EIP6963ProviderDetail, RpcTransport, } from 'tenzro-sdk';
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dapp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,cAAc,CAAC;AAOtB,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,GACb,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dApp-facing helpers — payload builders + event names + SDK browser-support
|
|
3
|
+
* re-exports. The actual provider injection lives in
|
|
4
|
+
* `@tenzro/wallet-extension` (M6); the kernel only ships the parts that are
|
|
5
|
+
* pure / DOM-free / unit-testable plus a re-export of the SDK-supplied
|
|
6
|
+
* consume-side helpers so dApp-host code in this repo can pull from one
|
|
7
|
+
* place.
|
|
8
|
+
*
|
|
9
|
+
* Why the re-export lives here: the SDK provides
|
|
10
|
+
* `discoverEip6963Provider` + `TenzroNotInstalledError` +
|
|
11
|
+
* `TENZRO_PROVIDER_RDNS` as the consumer-side counterpart to the
|
|
12
|
+
* announce-side builder in this folder. Co-locating them keeps "the kernel
|
|
13
|
+
* is the only thing that touches `tenzro-sdk`" rule intact (any host that
|
|
14
|
+
* just needs to *consume* an injected provider can depend on the kernel
|
|
15
|
+
* instead of a second SDK install).
|
|
16
|
+
*/
|
|
17
|
+
export { buildEip6963Announcement, EIP6963_ANNOUNCE_EVENT, EIP6963_REQUEST_EVENT, } from "./eip6963.js";
|
|
18
|
+
// SDK-supplied consume-side helpers — see `tenzro-sdk/dist/eip6963.d.ts`
|
|
19
|
+
// and `tenzro-sdk/dist/rpc.d.ts`. The kernel re-exports rather than
|
|
20
|
+
// re-implements so the SDK stays the single source of truth for the
|
|
21
|
+
// `network.tenzro.wallet` RDNS, the discovery timeout semantics, and the
|
|
22
|
+
// `Eip1193Transport` wire shape.
|
|
23
|
+
export { TENZRO_PROVIDER_RDNS, discoverEip6963Provider, TenzroNotInstalledError, Eip1193Transport, } from 'tenzro-sdk';
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dapp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAMtB,yEAAyE;AACzE,oEAAoE;AACpE,oEAAoE;AACpE,yEAAyE;AACzE,iCAAiC;AACjC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TDIP social-recovery delegate set — `k of n` configuration.
|
|
3
|
+
*
|
|
4
|
+
* Per DESIGN.md §4.3.6 + §11.10 (deferred): users designate `n` delegates
|
|
5
|
+
* (TDIP-rooted DIDs of trusted parties — friends, family, institutions) and
|
|
6
|
+
* recovery requires `k` of them to co-sign. We ship a 3-of-5 default that
|
|
7
|
+
* matches Argent's model, with k/n configurable at delegate-set creation.
|
|
8
|
+
*
|
|
9
|
+
* The kernel exposes the *shape* + validation here; the actual recovery
|
|
10
|
+
* flow (UI, delegate-onboarding, signature collection) lives in the
|
|
11
|
+
* passkey-quorum custody surface (M5.5).
|
|
12
|
+
*
|
|
13
|
+
* Constraints:
|
|
14
|
+
* - 1 ≤ k ≤ n
|
|
15
|
+
* - n ≤ 7 (exchange-grade; UX gets unwieldy beyond this — ship a higher
|
|
16
|
+
* cap only when there's a documented enterprise need)
|
|
17
|
+
* - delegates list contains exactly `n` distinct DIDs
|
|
18
|
+
* - the wallet's own DID cannot appear in the delegate list (prevents
|
|
19
|
+
* a self-recovery loop where the wallet is also a delegate of itself)
|
|
20
|
+
*/
|
|
21
|
+
import type { TdipDid } from '../types/identity.js';
|
|
22
|
+
export interface DelegateSetConfig {
|
|
23
|
+
readonly k: number;
|
|
24
|
+
readonly n: number;
|
|
25
|
+
/** Exactly `n` distinct delegate DIDs. Order is the canonical signing order. */
|
|
26
|
+
readonly delegates: readonly TdipDid[];
|
|
27
|
+
}
|
|
28
|
+
/** Argent-style default. */
|
|
29
|
+
export declare const DELEGATE_SET_DEFAULT_K = 3;
|
|
30
|
+
export declare const DELEGATE_SET_DEFAULT_N = 5;
|
|
31
|
+
export declare const DELEGATE_SET_MAX_N = 7;
|
|
32
|
+
export interface DelegateSetSizeOption {
|
|
33
|
+
readonly k: number;
|
|
34
|
+
readonly n: number;
|
|
35
|
+
readonly label: string;
|
|
36
|
+
readonly tier: 'friendly' | 'standard' | 'exchange-grade';
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* UX-validated options the social-recovery UI offers. The user can also
|
|
40
|
+
* roll a custom k/n inside the constraints. These three are the curated
|
|
41
|
+
* presets.
|
|
42
|
+
*/
|
|
43
|
+
export declare const DELEGATE_SET_OPTIONS: readonly DelegateSetSizeOption[];
|
|
44
|
+
/**
|
|
45
|
+
* Validate a `DelegateSetConfig` against the recovery rules. Returns the
|
|
46
|
+
* config unchanged on success; throws with a specific reason otherwise.
|
|
47
|
+
*
|
|
48
|
+
* `selfDid` is the wallet's own DID; if provided, the validator rejects
|
|
49
|
+
* configs where the wallet is in its own delegate list.
|
|
50
|
+
*/
|
|
51
|
+
export declare function validateDelegateSet(cfg: DelegateSetConfig, selfDid?: TdipDid): DelegateSetConfig;
|
|
52
|
+
/**
|
|
53
|
+
* Build the default 3-of-5 delegate set from a list of candidate delegate
|
|
54
|
+
* DIDs. Throws if fewer than 5 delegates are supplied.
|
|
55
|
+
*/
|
|
56
|
+
export declare function defaultDelegateSet(delegates: readonly TdipDid[], selfDid?: TdipDid): DelegateSetConfig;
|
|
57
|
+
//# sourceMappingURL=delegate-set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegate-set.d.ts","sourceRoot":"","sources":["../../src/identity/delegate-set.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,QAAQ,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAC;CACxC;AAED,4BAA4B;AAC5B,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,gBAAgB,CAAC;CAC3D;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,qBAAqB,EAIhE,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAkChG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,OAAO,EAAE,EAC7B,OAAO,CAAC,EAAE,OAAO,GAChB,iBAAiB,CAcnB"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TDIP social-recovery delegate set — `k of n` configuration.
|
|
3
|
+
*
|
|
4
|
+
* Per DESIGN.md §4.3.6 + §11.10 (deferred): users designate `n` delegates
|
|
5
|
+
* (TDIP-rooted DIDs of trusted parties — friends, family, institutions) and
|
|
6
|
+
* recovery requires `k` of them to co-sign. We ship a 3-of-5 default that
|
|
7
|
+
* matches Argent's model, with k/n configurable at delegate-set creation.
|
|
8
|
+
*
|
|
9
|
+
* The kernel exposes the *shape* + validation here; the actual recovery
|
|
10
|
+
* flow (UI, delegate-onboarding, signature collection) lives in the
|
|
11
|
+
* passkey-quorum custody surface (M5.5).
|
|
12
|
+
*
|
|
13
|
+
* Constraints:
|
|
14
|
+
* - 1 ≤ k ≤ n
|
|
15
|
+
* - n ≤ 7 (exchange-grade; UX gets unwieldy beyond this — ship a higher
|
|
16
|
+
* cap only when there's a documented enterprise need)
|
|
17
|
+
* - delegates list contains exactly `n` distinct DIDs
|
|
18
|
+
* - the wallet's own DID cannot appear in the delegate list (prevents
|
|
19
|
+
* a self-recovery loop where the wallet is also a delegate of itself)
|
|
20
|
+
*/
|
|
21
|
+
/** Argent-style default. */
|
|
22
|
+
export const DELEGATE_SET_DEFAULT_K = 3;
|
|
23
|
+
export const DELEGATE_SET_DEFAULT_N = 5;
|
|
24
|
+
export const DELEGATE_SET_MAX_N = 7;
|
|
25
|
+
/**
|
|
26
|
+
* UX-validated options the social-recovery UI offers. The user can also
|
|
27
|
+
* roll a custom k/n inside the constraints. These three are the curated
|
|
28
|
+
* presets.
|
|
29
|
+
*/
|
|
30
|
+
export const DELEGATE_SET_OPTIONS = [
|
|
31
|
+
{ k: 2, n: 3, label: '2 of 3 (friendly)', tier: 'friendly' },
|
|
32
|
+
{ k: 3, n: 5, label: '3 of 5 (standard)', tier: 'standard' },
|
|
33
|
+
{ k: 5, n: 7, label: '5 of 7 (exchange-grade)', tier: 'exchange-grade' },
|
|
34
|
+
];
|
|
35
|
+
/**
|
|
36
|
+
* Validate a `DelegateSetConfig` against the recovery rules. Returns the
|
|
37
|
+
* config unchanged on success; throws with a specific reason otherwise.
|
|
38
|
+
*
|
|
39
|
+
* `selfDid` is the wallet's own DID; if provided, the validator rejects
|
|
40
|
+
* configs where the wallet is in its own delegate list.
|
|
41
|
+
*/
|
|
42
|
+
export function validateDelegateSet(cfg, selfDid) {
|
|
43
|
+
if (!Number.isInteger(cfg.k) || !Number.isInteger(cfg.n)) {
|
|
44
|
+
throw new Error(`validateDelegateSet: k and n must be integers; got ${cfg.k}/${cfg.n}`);
|
|
45
|
+
}
|
|
46
|
+
if (cfg.k < 1) {
|
|
47
|
+
throw new Error(`validateDelegateSet: k must be ≥ 1; got ${cfg.k}`);
|
|
48
|
+
}
|
|
49
|
+
if (cfg.k > cfg.n) {
|
|
50
|
+
throw new Error(`validateDelegateSet: k (${cfg.k}) cannot exceed n (${cfg.n})`);
|
|
51
|
+
}
|
|
52
|
+
if (cfg.n > DELEGATE_SET_MAX_N) {
|
|
53
|
+
throw new Error(`validateDelegateSet: n (${cfg.n}) exceeds DELEGATE_SET_MAX_N (${DELEGATE_SET_MAX_N}); ` +
|
|
54
|
+
'open an issue if your use case requires more');
|
|
55
|
+
}
|
|
56
|
+
if (cfg.delegates.length !== cfg.n) {
|
|
57
|
+
throw new Error(`validateDelegateSet: expected exactly ${cfg.n} delegates, got ${cfg.delegates.length}`);
|
|
58
|
+
}
|
|
59
|
+
const seen = new Set();
|
|
60
|
+
for (const d of cfg.delegates) {
|
|
61
|
+
if (seen.has(d)) {
|
|
62
|
+
throw new Error(`validateDelegateSet: duplicate delegate ${d}`);
|
|
63
|
+
}
|
|
64
|
+
seen.add(d);
|
|
65
|
+
}
|
|
66
|
+
if (selfDid !== undefined && seen.has(selfDid)) {
|
|
67
|
+
throw new Error(`validateDelegateSet: wallet DID ${selfDid} cannot appear in its own delegate list`);
|
|
68
|
+
}
|
|
69
|
+
return cfg;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Build the default 3-of-5 delegate set from a list of candidate delegate
|
|
73
|
+
* DIDs. Throws if fewer than 5 delegates are supplied.
|
|
74
|
+
*/
|
|
75
|
+
export function defaultDelegateSet(delegates, selfDid) {
|
|
76
|
+
if (delegates.length < DELEGATE_SET_DEFAULT_N) {
|
|
77
|
+
throw new Error(`defaultDelegateSet: need ${DELEGATE_SET_DEFAULT_N} delegates for the default config, got ${delegates.length}`);
|
|
78
|
+
}
|
|
79
|
+
return validateDelegateSet({
|
|
80
|
+
k: DELEGATE_SET_DEFAULT_K,
|
|
81
|
+
n: DELEGATE_SET_DEFAULT_N,
|
|
82
|
+
delegates: delegates.slice(0, DELEGATE_SET_DEFAULT_N),
|
|
83
|
+
}, selfDid);
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=delegate-set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegate-set.js","sourceRoot":"","sources":["../../src/identity/delegate-set.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TDIP DID parsing/formatting. Pure functions, no side effects.
|
|
3
|
+
*
|
|
4
|
+
* Forms:
|
|
5
|
+
* did:tenzro:human:{uuid}
|
|
6
|
+
* did:tenzro:machine:{uuid} — autonomous
|
|
7
|
+
* did:tenzro:machine:{controller-did-uuid}:{uuid} — controlled-machine
|
|
8
|
+
*/
|
|
9
|
+
import type { TdipDid, TdipDidParts, TdipKind } from '../types/identity.js';
|
|
10
|
+
export declare function asTdipDid(s: string): TdipDid;
|
|
11
|
+
export declare function parseTdipDid(s: string): TdipDidParts;
|
|
12
|
+
export declare function formatTdipDid(parts: {
|
|
13
|
+
kind: TdipKind;
|
|
14
|
+
controller?: TdipDid | undefined;
|
|
15
|
+
uuid: string;
|
|
16
|
+
}): TdipDid;
|
|
17
|
+
//# sourceMappingURL=did.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"did.d.ts","sourceRoot":"","sources":["../../src/identity/did.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAI5E,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAG5C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CA+BpD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAYV"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TDIP DID parsing/formatting. Pure functions, no side effects.
|
|
3
|
+
*
|
|
4
|
+
* Forms:
|
|
5
|
+
* did:tenzro:human:{uuid}
|
|
6
|
+
* did:tenzro:machine:{uuid} — autonomous
|
|
7
|
+
* did:tenzro:machine:{controller-did-uuid}:{uuid} — controlled-machine
|
|
8
|
+
*/
|
|
9
|
+
const DID_PREFIX = 'did:tenzro:';
|
|
10
|
+
export function asTdipDid(s) {
|
|
11
|
+
parseTdipDid(s); // throws if malformed
|
|
12
|
+
return s;
|
|
13
|
+
}
|
|
14
|
+
export function parseTdipDid(s) {
|
|
15
|
+
if (!s.startsWith(DID_PREFIX)) {
|
|
16
|
+
throw new Error(`not a tenzro DID: ${s}`);
|
|
17
|
+
}
|
|
18
|
+
const rest = s.slice(DID_PREFIX.length);
|
|
19
|
+
const parts = rest.split(':');
|
|
20
|
+
const [kindRaw, ...tail] = parts;
|
|
21
|
+
switch (kindRaw) {
|
|
22
|
+
case 'human': {
|
|
23
|
+
if (tail.length !== 1 || !tail[0])
|
|
24
|
+
throw new Error(`malformed human DID: ${s}`);
|
|
25
|
+
return { method: 'tenzro', kind: 'human', uuid: tail[0] };
|
|
26
|
+
}
|
|
27
|
+
case 'machine': {
|
|
28
|
+
if (tail.length === 1 && tail[0]) {
|
|
29
|
+
return { method: 'tenzro', kind: 'autonomous-machine', uuid: tail[0] };
|
|
30
|
+
}
|
|
31
|
+
if (tail.length === 2 && tail[0] && tail[1]) {
|
|
32
|
+
const controller = `${DID_PREFIX}human:${tail[0]}`;
|
|
33
|
+
return {
|
|
34
|
+
method: 'tenzro',
|
|
35
|
+
kind: 'controlled-machine',
|
|
36
|
+
controller,
|
|
37
|
+
uuid: tail[1],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
throw new Error(`malformed machine DID: ${s}`);
|
|
41
|
+
}
|
|
42
|
+
default:
|
|
43
|
+
throw new Error(`unknown TDIP kind: ${kindRaw}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export function formatTdipDid(parts) {
|
|
47
|
+
switch (parts.kind) {
|
|
48
|
+
case 'human':
|
|
49
|
+
return `${DID_PREFIX}human:${parts.uuid}`;
|
|
50
|
+
case 'autonomous-machine':
|
|
51
|
+
return `${DID_PREFIX}machine:${parts.uuid}`;
|
|
52
|
+
case 'controlled-machine': {
|
|
53
|
+
if (!parts.controller)
|
|
54
|
+
throw new Error('controlled-machine requires controller');
|
|
55
|
+
const ctrl = parseTdipDid(parts.controller);
|
|
56
|
+
return `${DID_PREFIX}machine:${ctrl.uuid}:${parts.uuid}`;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=did.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"did.js","sourceRoot":"","sources":["../../src/identity/did.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,UAAU,GAAG,aAAa,CAAC;AAEjC,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;IACvC,OAAO,CAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;IAEjC,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;YAChF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5C,MAAM,UAAU,GAAG,GAAG,UAAU,SAAS,IAAI,CAAC,CAAC,CAAC,EAAa,CAAC;gBAC9D,OAAO;oBACL,MAAM,EAAE,QAAQ;oBAChB,IAAI,EAAE,oBAAoB;oBAC1B,UAAU;oBACV,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;iBACd,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAI7B;IACC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,GAAG,UAAU,SAAS,KAAK,CAAC,IAAI,EAAa,CAAC;QACvD,KAAK,oBAAoB;YACvB,OAAO,GAAG,UAAU,WAAW,KAAK,CAAC,IAAI,EAAa,CAAC;QACzD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YACjF,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC5C,OAAO,GAAG,UAAU,WAAW,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAa,CAAC;QACtE,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { asTdipDid, formatTdipDid, parseTdipDid } from './did.js';
|
|
2
|
+
export { provisionIdentity } from './provision.js';
|
|
3
|
+
export type { ProvisionOptions } from './provision.js';
|
|
4
|
+
export { DELEGATE_SET_DEFAULT_K, DELEGATE_SET_DEFAULT_N, DELEGATE_SET_MAX_N, DELEGATE_SET_OPTIONS, defaultDelegateSet, validateDelegateSet, } from './delegate-set.js';
|
|
5
|
+
export type { DelegateSetConfig, DelegateSetSizeOption, } from './delegate-set.js';
|
|
6
|
+
export { walletNew } from './wallet-new.js';
|
|
7
|
+
export type { DeviceShareStore, PasskeyEnroller, PasskeyEnrolment, ProvisioningPort, WalletNewOptions, WalletNewResult, WalletThresholdRecord, WrappedDeviceShare, } from './wallet-new.js';
|
|
8
|
+
export { walletRecover } from './wallet-recover.js';
|
|
9
|
+
export type { RecoveryPort, RecoveryProof, WalletRecoverOptions, WalletRecoverResult, } from './wallet-recover.js';
|
|
10
|
+
export { ProvisioningHttpAdapter, ProvisioningHttpError } from './provisioning-http-adapter.js';
|
|
11
|
+
export type { ProvisioningHttpConfig } from './provisioning-http-adapter.js';
|
|
12
|
+
export { RecoveryHttpAdapter, RecoveryHttpError } from './recovery-http-adapter.js';
|
|
13
|
+
export type { RecoveryHttpConfig } from './recovery-http-adapter.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAChG,YAAY,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpF,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { asTdipDid, formatTdipDid, parseTdipDid } from "./did.js";
|
|
2
|
+
export { provisionIdentity } from "./provision.js";
|
|
3
|
+
export { DELEGATE_SET_DEFAULT_K, DELEGATE_SET_DEFAULT_N, DELEGATE_SET_MAX_N, DELEGATE_SET_OPTIONS, defaultDelegateSet, validateDelegateSet, } from "./delegate-set.js";
|
|
4
|
+
export { walletNew } from "./wallet-new.js";
|
|
5
|
+
export { walletRecover } from "./wallet-recover.js";
|
|
6
|
+
export { ProvisioningHttpAdapter, ProvisioningHttpError } from "./provisioning-http-adapter.js";
|
|
7
|
+
export { RecoveryHttpAdapter, RecoveryHttpError } from "./recovery-http-adapter.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAW5C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOpD,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEhG,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provision a new TDIP identity. M1: deterministic mock — generates a uuid,
|
|
3
|
+
* derives placeholder per-surface keys. M2 swaps in real key derivation inside
|
|
4
|
+
* the MPC quorum.
|
|
5
|
+
*/
|
|
6
|
+
import type { TdipIdentity, TdipKind } from '../types/identity.js';
|
|
7
|
+
export interface ProvisionOptions {
|
|
8
|
+
readonly kind?: TdipKind;
|
|
9
|
+
/** For deterministic test fixtures. */
|
|
10
|
+
readonly uuid?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function provisionIdentity(opts?: ProvisionOptions): Promise<TdipIdentity>;
|
|
13
|
+
//# sourceMappingURL=provision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../../src/identity/provision.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAA+B,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhG,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IACzB,uCAAuC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CA4C1F"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provision a new TDIP identity. M1: deterministic mock — generates a uuid,
|
|
3
|
+
* derives placeholder per-surface keys. M2 swaps in real key derivation inside
|
|
4
|
+
* the MPC quorum.
|
|
5
|
+
*/
|
|
6
|
+
import { cantonFingerprint } from "../ports/canton/fingerprint.js";
|
|
7
|
+
import { formatTdipDid } from "./did.js";
|
|
8
|
+
export async function provisionIdentity(opts = {}) {
|
|
9
|
+
const kind = opts.kind ?? 'human';
|
|
10
|
+
const uuid = opts.uuid ?? newUuid();
|
|
11
|
+
const did = formatTdipDid({ kind, uuid });
|
|
12
|
+
// M1: each surface gets a deterministic mock key. M2 derives real keys via
|
|
13
|
+
// the MPC quorum (BIP32-like derivation paths inside the threshold scheme).
|
|
14
|
+
const seed = new TextEncoder().encode(did);
|
|
15
|
+
const nativePub = derive(seed, 'native', 32);
|
|
16
|
+
const svmPub = derive(seed, 'svm', 32);
|
|
17
|
+
const cantonInternal = await cantonPartyKey(seed, 'internal', 'tenzro-internal-synchronizer::1220');
|
|
18
|
+
const cantonExternal = await cantonPartyKey(seed, 'external', 'global-domain::1220');
|
|
19
|
+
const keys = new Map([
|
|
20
|
+
[
|
|
21
|
+
'tenzro-native',
|
|
22
|
+
{
|
|
23
|
+
surface: 'tenzro-native',
|
|
24
|
+
scheme: 'ed25519',
|
|
25
|
+
publicKey: nativePub,
|
|
26
|
+
address: base58Encode(nativePub),
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
[
|
|
30
|
+
'evm-on-tenzro',
|
|
31
|
+
{ surface: 'evm-on-tenzro', scheme: 'secp256k1', address: deriveEvmAddress(seed) },
|
|
32
|
+
],
|
|
33
|
+
[
|
|
34
|
+
'svm-on-tenzro',
|
|
35
|
+
{
|
|
36
|
+
surface: 'svm-on-tenzro',
|
|
37
|
+
scheme: 'ed25519',
|
|
38
|
+
publicKey: svmPub,
|
|
39
|
+
address: base58Encode(svmPub),
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
['canton-internal', cantonInternal],
|
|
43
|
+
['canton-external', cantonExternal],
|
|
44
|
+
]);
|
|
45
|
+
return { did, parts: { method: 'tenzro', kind, uuid }, keys, createdAt: Date.now() };
|
|
46
|
+
}
|
|
47
|
+
// --- helpers ---
|
|
48
|
+
/**
|
|
49
|
+
* Generate an RFC 4122 v4 UUID. Uses `crypto.randomUUID()` (universally
|
|
50
|
+
* available in WebCrypto-capable runtimes — browsers, Node 19+, Workers).
|
|
51
|
+
* M2 will move provisioning into the MPC ceremony where the quorum agrees
|
|
52
|
+
* on the uuid as part of the threshold key generation; this lives here
|
|
53
|
+
* until then.
|
|
54
|
+
*/
|
|
55
|
+
function newUuid() {
|
|
56
|
+
if (!globalThis.crypto?.randomUUID) {
|
|
57
|
+
throw new Error('provisionIdentity: crypto.randomUUID unavailable on this runtime');
|
|
58
|
+
}
|
|
59
|
+
return globalThis.crypto.randomUUID();
|
|
60
|
+
}
|
|
61
|
+
function derive(seed, label, len) {
|
|
62
|
+
const labelBytes = new TextEncoder().encode(label);
|
|
63
|
+
const out = new Uint8Array(len);
|
|
64
|
+
for (let i = 0; i < len; i++) {
|
|
65
|
+
out[i] =
|
|
66
|
+
((seed[i % seed.length] ?? 0) ^ (labelBytes[i % labelBytes.length] ?? 0) ^ (i * 31)) & 0xff;
|
|
67
|
+
}
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
function deriveEvmAddress(seed) {
|
|
71
|
+
const bytes = derive(seed, 'evm', 20);
|
|
72
|
+
let hex = '0x';
|
|
73
|
+
for (const b of bytes)
|
|
74
|
+
hex += b.toString(16).padStart(2, '0');
|
|
75
|
+
return hex;
|
|
76
|
+
}
|
|
77
|
+
function partyIdFor(hint, namespaceFingerprint) {
|
|
78
|
+
// PartyId is `<hint>::<namespace-fingerprint>`. The fingerprint is the
|
|
79
|
+
// multihash-prefixed SHA-256 of the namespace public key, so the party id
|
|
80
|
+
// is bound to the namespace key — rotating signing keys never changes it.
|
|
81
|
+
return `${hint}::${namespaceFingerprint}`;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Build the canton-internal/canton-external SurfaceKey shape with the new
|
|
85
|
+
* two-key model (per DESIGN.md §4.5.4 and identity.ts:CantonPartyKey).
|
|
86
|
+
*
|
|
87
|
+
* M1 placeholders: namespace + signing keys are deterministic 32-byte
|
|
88
|
+
* derivations from the DID seed, threshold = 1, single signing key. M5+
|
|
89
|
+
* onboarding-flow work replaces this with real Ed25519 keys produced under
|
|
90
|
+
* the passkey-quorum and a M-of-N signing-key set registered via
|
|
91
|
+
* `PartyToKeyMapping`.
|
|
92
|
+
*
|
|
93
|
+
* `synchronizerHostPrefix` is the Canton synchronizer id minus the trailing
|
|
94
|
+
* fingerprint — `global-domain::1220` for external (MainNet),
|
|
95
|
+
* `tenzro-internal-synchronizer::1220` for internal. The full id is
|
|
96
|
+
* completed with a derived 32-byte fingerprint.
|
|
97
|
+
*/
|
|
98
|
+
async function cantonPartyKey(seed, label, synchronizerHostPrefix) {
|
|
99
|
+
const namespacePub = derive(seed, `canton-${label}-namespace`, 32);
|
|
100
|
+
const signingPub = derive(seed, `canton-${label}-signing`, 32);
|
|
101
|
+
const namespaceFingerprint = await cantonFingerprint(namespacePub);
|
|
102
|
+
const signingFingerprint = await cantonFingerprint(signingPub);
|
|
103
|
+
const synchronizerFp = derive(seed, `canton-${label}-synchronizer-fp`, 32);
|
|
104
|
+
let synchronizerHex = '';
|
|
105
|
+
for (const b of synchronizerFp)
|
|
106
|
+
synchronizerHex += b.toString(16).padStart(2, '0');
|
|
107
|
+
const signingScheme = 'ed25519';
|
|
108
|
+
return {
|
|
109
|
+
surface: label === 'internal' ? 'canton-internal' : 'canton-external',
|
|
110
|
+
partyId: partyIdFor(`tenzro-wallet-${label}`, namespaceFingerprint),
|
|
111
|
+
synchronizerId: `${synchronizerHostPrefix}${synchronizerHex.slice(0, 64)}`,
|
|
112
|
+
hostingParticipantId: `tenzro-validator::1220${synchronizerHex.slice(0, 64)}`,
|
|
113
|
+
namespaceKey: {
|
|
114
|
+
scheme: 'ed25519',
|
|
115
|
+
publicKey: namespacePub,
|
|
116
|
+
fingerprint: namespaceFingerprint,
|
|
117
|
+
},
|
|
118
|
+
signingKeys: [
|
|
119
|
+
{ scheme: signingScheme, publicKey: signingPub, fingerprint: signingFingerprint },
|
|
120
|
+
],
|
|
121
|
+
threshold: 1,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Base58 encoding (Bitcoin alphabet). Tenzro uses Base58 for native and SVM
|
|
126
|
+
* addresses (per `Address` typedef in tenzro-sdk/types.ts). This is a tiny
|
|
127
|
+
* pure-JS implementation; M5 swaps it for the canonical encoder used by
|
|
128
|
+
* the threshold-key derivation routine.
|
|
129
|
+
*/
|
|
130
|
+
function base58Encode(bytes) {
|
|
131
|
+
const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
|
132
|
+
// Convert bytes to a big integer.
|
|
133
|
+
let n = 0n;
|
|
134
|
+
for (const b of bytes)
|
|
135
|
+
n = (n << 8n) + BigInt(b);
|
|
136
|
+
// Encode.
|
|
137
|
+
let out = '';
|
|
138
|
+
while (n > 0n) {
|
|
139
|
+
const r = Number(n % 58n);
|
|
140
|
+
out = ALPHABET[r] + out;
|
|
141
|
+
n /= 58n;
|
|
142
|
+
}
|
|
143
|
+
// Preserve leading zero-bytes as '1' chars per Base58 convention.
|
|
144
|
+
for (const b of bytes) {
|
|
145
|
+
if (b !== 0)
|
|
146
|
+
break;
|
|
147
|
+
out = '1' + out;
|
|
148
|
+
}
|
|
149
|
+
return out;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=provision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision.js","sourceRoot":"","sources":["../../src/identity/provision.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAQzC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAyB,EAAE;IACjE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1C,2EAA2E;IAC3E,4EAA4E;IAC5E,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG,MAAM,cAAc,CACzC,IAAI,EACJ,UAAU,EACV,oCAAoC,CACrC,CAAC;IACF,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,qBAAqB,CAAC,CAAC;IACrF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAoC;QACtD;YACE,eAAe;YACf;gBACE,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,SAAS;gBACpB,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC;aACjC;SACF;QACD;YACE,eAAe;YACf,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE;SACnF;QACD;YACE,eAAe;YACf;gBACE,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,MAAM;gBACjB,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC;aAC9B;SACF;QACD,CAAC,iBAAiB,EAAE,cAAc,CAAC;QACnC,CAAC,iBAAiB,EAAE,cAAc,CAAC;KACpC,CAAC,CAAC;IAEH,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AACvF,CAAC;AAED,kBAAkB;AAElB;;;;;;GAMG;AACH,SAAS,OAAO;IACd,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,MAAM,CAAC,IAAgB,EAAE,KAAa,EAAE,GAAW;IAC1D,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,GAAG,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAChG,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAgB;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IACtC,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9D,OAAO,GAAoB,CAAC;AAC9B,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,oBAA4B;IAC5D,uEAAuE;IACvE,0EAA0E;IAC1E,0EAA0E;IAC1E,OAAO,GAAG,IAAI,KAAK,oBAAoB,EAAE,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,cAAc,CAC3B,IAAgB,EAChB,KAA8B,EAC9B,sBAA8B;IAE9B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,EAAE,UAAU,KAAK,YAAY,EAAE,EAAE,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,UAAU,KAAK,UAAU,EAAE,EAAE,CAAC,CAAC;IAC/D,MAAM,oBAAoB,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACnE,MAAM,kBAAkB,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC/D,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,EAAE,UAAU,KAAK,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAC3E,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,cAAc;QAAE,eAAe,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnF,MAAM,aAAa,GAAoB,SAAS,CAAC;IACjD,OAAO;QACL,OAAO,EAAE,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB;QACrE,OAAO,EAAE,UAAU,CAAC,iBAAiB,KAAK,EAAE,EAAE,oBAAoB,CAAC;QACnE,cAAc,EAAE,GAAG,sBAAsB,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;QAC1E,oBAAoB,EAAE,yBAAyB,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;QAC7E,YAAY,EAAE;YACZ,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,YAAY;YACvB,WAAW,EAAE,oBAAoB;SAClC;QACD,WAAW,EAAE;YACX,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE;SAClF;QACD,SAAS,EAAE,CAAC;KACb,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,KAAiB;IACrC,MAAM,QAAQ,GAAG,4DAA4D,CAAC;IAC9E,kCAAkC;IAClC,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACjD,UAAU;IACV,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAC1B,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACxB,CAAC,IAAI,GAAG,CAAC;IACX,CAAC;IACD,kEAAkE;IAClE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC;YAAE,MAAM;QACnB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|