@fhevm/sdk 1.0.0-alpha.1 → 1.0.0-alpha.3
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/_cjs/core/_version.js +1 -1
- package/_cjs/core/actions/base/fetchVerifiedInputProof.js +1 -1
- package/_cjs/core/actions/base/fetchVerifiedInputProof.js.map +1 -1
- package/_cjs/core/actions/base/signDecryptionPermit.js.map +1 -1
- package/_cjs/core/actions/chain/index.js +5 -5
- package/_cjs/core/actions/chain/index.js.map +1 -1
- package/_cjs/core/actions/chain/parseSignedDecryptionPermit.js +2 -3
- package/_cjs/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
- package/_cjs/core/actions/chain/parseTransportKeypair.js +1 -2
- package/_cjs/core/actions/chain/parseTransportKeypair.js.map +1 -1
- package/_cjs/core/actions/decrypt/decryptValue.js +4 -1
- package/_cjs/core/actions/decrypt/decryptValue.js.map +1 -1
- package/_cjs/core/actions/decrypt/decryptValues.js +4 -1
- package/_cjs/core/actions/decrypt/decryptValues.js.map +1 -1
- package/_cjs/core/actions/decrypt/decryptValuesFromPairs.js +4 -1
- package/_cjs/core/actions/decrypt/decryptValuesFromPairs.js.map +1 -1
- package/_cjs/core/actions/decrypt/index.js.map +1 -1
- package/_cjs/core/actions/host/getUserDecryptionDelegationExpirationDate.js +12 -14
- package/_cjs/core/actions/host/getUserDecryptionDelegationExpirationDate.js.map +1 -1
- package/_cjs/core/base/bytes.js +8 -0
- package/_cjs/core/base/bytes.js.map +1 -1
- package/_cjs/core/base/sign.js +50 -0
- package/_cjs/core/base/sign.js.map +1 -0
- package/_cjs/core/base/typedValue.js +17 -0
- package/_cjs/core/base/typedValue.js.map +1 -1
- package/_cjs/core/base/uint.js +29 -0
- package/_cjs/core/base/uint.js.map +1 -1
- package/_cjs/core/clients/decorators/decrypt.js +3 -3
- package/_cjs/core/clients/decorators/decrypt.js.map +1 -1
- package/_cjs/core/coprocessor/ZkProof-p.js +17 -11
- package/_cjs/core/coprocessor/ZkProof-p.js.map +1 -1
- package/_cjs/core/coprocessor/ZkProofBuilder-p.js +6 -4
- package/_cjs/core/coprocessor/ZkProofBuilder-p.js.map +1 -1
- package/_cjs/core/coprocessor/encrypt.js +1 -3
- package/_cjs/core/coprocessor/encrypt.js.map +1 -1
- package/_cjs/core/coprocessor/fetchVerifiedInputProof.js +3 -4
- package/_cjs/core/coprocessor/fetchVerifiedInputProof.js.map +1 -1
- package/_cjs/core/handle/FheType.js +5 -2
- package/_cjs/core/handle/FheType.js.map +1 -1
- package/_cjs/core/host-contracts/KmsSignersContext-p.js +1 -1
- package/_cjs/core/host-contracts/KmsSignersContext-p.js.map +1 -1
- package/_cjs/core/host-contracts/checkDelegation.js +74 -0
- package/_cjs/core/host-contracts/checkDelegation.js.map +1 -0
- package/_cjs/core/host-contracts/getUserDecryptionDelegationExpirationDate.js +21 -0
- package/_cjs/core/host-contracts/getUserDecryptionDelegationExpirationDate.js.map +1 -0
- package/_cjs/core/host-contracts/isHandleDelegatedForUserDecryption-p.js +33 -0
- package/_cjs/core/host-contracts/isHandleDelegatedForUserDecryption-p.js.map +1 -0
- package/_cjs/core/host-contracts/persistAllowed.js +1 -1
- package/_cjs/core/host-contracts/persistAllowed.js.map +1 -1
- package/_cjs/core/kms/fetchKmsSignedcryptedShares-p.js +18 -8
- package/_cjs/core/kms/fetchKmsSignedcryptedShares-p.js.map +1 -1
- package/_cjs/core/kms/publicDecrypt.js +1 -4
- package/_cjs/core/kms/publicDecrypt.js.map +1 -1
- package/_cjs/core/modules/decrypt/mock.js +93 -10
- package/_cjs/core/modules/decrypt/mock.js.map +1 -1
- package/_cjs/core/modules/encrypt/mock.js +142 -12
- package/_cjs/core/modules/encrypt/mock.js.map +1 -1
- package/_cjs/core/modules/encrypt/module/api-p.js +7 -2
- package/_cjs/core/modules/encrypt/module/api-p.js.map +1 -1
- package/_cjs/core/modules/ethereum/types-ct.js +3 -0
- package/_cjs/core/modules/ethereum/types-ct.js.map +1 -0
- package/_cjs/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js +68 -0
- package/_cjs/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js.map +1 -0
- package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js +119 -0
- package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +1 -0
- package/_cjs/core/modules/relayer/cleartext/fetchPublicDecrypt.js +52 -0
- package/_cjs/core/modules/relayer/cleartext/fetchPublicDecrypt.js.map +1 -0
- package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js +117 -0
- package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -0
- package/_cjs/core/modules/relayer/cleartext/mock.js +40 -0
- package/_cjs/core/modules/relayer/cleartext/mock.js.map +1 -0
- package/_cjs/core/modules/relayer/cleartext/signers.js +34 -0
- package/_cjs/core/modules/relayer/cleartext/signers.js.map +1 -0
- package/_cjs/core/modules/relayer/module/fetchCoprocessorSignatures.js +2 -2
- package/_cjs/core/modules/relayer/module/fetchCoprocessorSignatures.js.map +1 -1
- package/_cjs/core/modules/relayer/module/fetchDelegatedUserDecrypt.js +1 -1
- package/_cjs/core/modules/relayer/module/fetchDelegatedUserDecrypt.js.map +1 -1
- package/_cjs/core/modules/relayer/module/fetchPublicDecrypt.js +1 -1
- package/_cjs/core/modules/relayer/module/fetchPublicDecrypt.js.map +1 -1
- package/_cjs/core/modules/relayer/module/fetchUserDecrypt.js +1 -1
- package/_cjs/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
- package/_cjs/core/modules/relayer/utils.js +16 -0
- package/_cjs/core/modules/relayer/utils.js.map +1 -0
- package/_cjs/ethers/cleartext/createFhevmCleartextBaseClient.js +17 -0
- package/_cjs/ethers/cleartext/createFhevmCleartextBaseClient.js.map +1 -0
- package/_cjs/ethers/cleartext/createFhevmCleartextClient.js +11 -0
- package/_cjs/ethers/cleartext/createFhevmCleartextClient.js.map +1 -0
- package/_cjs/ethers/cleartext/createFhevmCleartextDecryptClient.js +10 -0
- package/_cjs/ethers/cleartext/createFhevmCleartextDecryptClient.js.map +1 -0
- package/_cjs/ethers/cleartext/createFhevmCleartextEncryptClient.js +10 -0
- package/_cjs/ethers/cleartext/createFhevmCleartextEncryptClient.js.map +1 -0
- package/_cjs/ethers/cleartext/decorators/decrypt.js +9 -0
- package/_cjs/ethers/cleartext/decorators/decrypt.js.map +1 -0
- package/_cjs/ethers/cleartext/decorators/encrypt.js +9 -0
- package/_cjs/ethers/cleartext/decorators/encrypt.js.map +1 -0
- package/_cjs/ethers/cleartext/index.js +12 -0
- package/_cjs/ethers/cleartext/index.js.map +1 -0
- package/_cjs/ethers/clients/createFhevmBaseClient.js +2 -1
- package/_cjs/ethers/clients/createFhevmBaseClient.js.map +1 -1
- package/_cjs/ethers/clients/createFhevmClient.js +2 -2
- package/_cjs/ethers/clients/createFhevmClient.js.map +1 -1
- package/_cjs/ethers/clients/createFhevmDecryptClient.js +1 -1
- package/_cjs/ethers/clients/createFhevmDecryptClient.js.map +1 -1
- package/_cjs/ethers/clients/createFhevmEncryptClient.js +1 -1
- package/_cjs/ethers/clients/createFhevmEncryptClient.js.map +1 -1
- package/_cjs/{viem → ethers/clients}/decorators/decrypt.js +2 -2
- package/_cjs/ethers/clients/decorators/decrypt.js.map +1 -0
- package/_cjs/ethers/{decorators → clients/decorators}/encrypt.js +2 -2
- package/_cjs/ethers/clients/decorators/encrypt.js.map +1 -0
- package/_cjs/ethers/index.js +4 -3
- package/_cjs/ethers/index.js.map +1 -1
- package/_cjs/ethers/internal/config.js +32 -0
- package/_cjs/ethers/internal/config.js.map +1 -0
- package/_cjs/ethers/internal/ethereum-ct.js +42 -0
- package/_cjs/ethers/internal/ethereum-ct.js.map +1 -0
- package/_cjs/ethers/internal/ethers-p.js +0 -32
- package/_cjs/ethers/internal/ethers-p.js.map +1 -1
- package/_cjs/ethers/internal/runtime-ct.js +22 -0
- package/_cjs/ethers/internal/runtime-ct.js.map +1 -0
- package/_cjs/ethers/internal/runtime.js +22 -0
- package/_cjs/ethers/internal/runtime.js.map +1 -0
- package/_cjs/ethers/runtime/initFhevmDecryptRuntime.js +3 -2
- package/_cjs/ethers/runtime/initFhevmDecryptRuntime.js.map +1 -1
- package/_cjs/ethers/runtime/initFhevmEncryptRuntime.js +3 -2
- package/_cjs/ethers/runtime/initFhevmEncryptRuntime.js.map +1 -1
- package/_cjs/ethers/runtime/initFhevmRuntime.js +3 -2
- package/_cjs/ethers/runtime/initFhevmRuntime.js.map +1 -1
- package/_cjs/index.js +2 -0
- package/_cjs/index.js.map +1 -0
- package/_cjs/viem/cleartext/createFhevmCleartextBaseClient.js +17 -0
- package/_cjs/viem/cleartext/createFhevmCleartextBaseClient.js.map +1 -0
- package/_cjs/viem/cleartext/createFhevmCleartextClient.js +11 -0
- package/_cjs/viem/cleartext/createFhevmCleartextClient.js.map +1 -0
- package/_cjs/viem/cleartext/createFhevmCleartextDecryptClient.js +10 -0
- package/_cjs/viem/cleartext/createFhevmCleartextDecryptClient.js.map +1 -0
- package/_cjs/viem/cleartext/createFhevmCleartextEncryptClient.js +10 -0
- package/_cjs/viem/cleartext/createFhevmCleartextEncryptClient.js.map +1 -0
- package/_cjs/viem/cleartext/decorators/decrypt.js +9 -0
- package/_cjs/viem/cleartext/decorators/decrypt.js.map +1 -0
- package/_cjs/viem/cleartext/decorators/encrypt.js +9 -0
- package/_cjs/viem/cleartext/decorators/encrypt.js.map +1 -0
- package/_cjs/viem/cleartext/index.js +12 -0
- package/_cjs/viem/cleartext/index.js.map +1 -0
- package/_cjs/viem/clients/createFhevmBaseClient.js +2 -1
- package/_cjs/viem/clients/createFhevmBaseClient.js.map +1 -1
- package/_cjs/viem/clients/createFhevmClient.js +2 -2
- package/_cjs/viem/clients/createFhevmClient.js.map +1 -1
- package/_cjs/viem/clients/createFhevmDecryptClient.js +1 -1
- package/_cjs/viem/clients/createFhevmDecryptClient.js.map +1 -1
- package/_cjs/viem/clients/createFhevmEncryptClient.js +1 -1
- package/_cjs/viem/clients/createFhevmEncryptClient.js.map +1 -1
- package/_cjs/{ethers → viem/clients}/decorators/decrypt.js +2 -2
- package/_cjs/viem/clients/decorators/decrypt.js.map +1 -0
- package/_cjs/viem/{decorators → clients/decorators}/encrypt.js +2 -2
- package/_cjs/viem/clients/decorators/encrypt.js.map +1 -0
- package/_cjs/viem/index.js +6 -5
- package/_cjs/viem/index.js.map +1 -1
- package/_cjs/viem/internal/config.js +32 -0
- package/_cjs/viem/internal/config.js.map +1 -0
- package/_cjs/viem/internal/ethereum-ct.js +42 -0
- package/_cjs/viem/internal/ethereum-ct.js.map +1 -0
- package/_cjs/viem/internal/runtime-ct.js +22 -0
- package/_cjs/viem/internal/runtime-ct.js.map +1 -0
- package/_cjs/viem/internal/runtime.js +22 -0
- package/_cjs/viem/internal/runtime.js.map +1 -0
- package/_cjs/viem/internal/viem-p.js +0 -32
- package/_cjs/viem/internal/viem-p.js.map +1 -1
- package/_cjs/viem/runtime/initFhevmDecryptRuntime.js +2 -1
- package/_cjs/viem/runtime/initFhevmDecryptRuntime.js.map +1 -1
- package/_cjs/viem/runtime/initFhevmEncryptRuntime.js +2 -1
- package/_cjs/viem/runtime/initFhevmEncryptRuntime.js.map +1 -1
- package/_cjs/viem/runtime/initFhevmRuntime.js +2 -1
- package/_cjs/viem/runtime/initFhevmRuntime.js.map +1 -1
- package/_cjs/wasm/tfhe/startWorkers.v1.5.3.js +279 -426
- package/_cjs/wasm/tfhe/startWorkers.v1.5.3.js.map +7 -0
- package/_cjs/wasm/tfhe/tfhe.v1.5.3.js +2779 -3032
- package/_cjs/wasm/tfhe/tfhe.v1.5.3.js.map +7 -0
- package/_cjs/wasm/tfhe/tfhe_bg.v1.5.3.wasm.base64.js +29 -1
- package/_cjs/wasm/tfhe/tfhe_bg.v1.5.3.wasm.base64.js.map +7 -0
- package/_cjs/wasm/tkms/kms_lib.v0.13.10.js +1793 -1985
- package/_cjs/wasm/tkms/kms_lib.v0.13.10.js.map +7 -0
- package/_cjs/wasm/tkms/kms_lib_bg.v0.13.10.wasm.base64.js +29 -3
- package/_cjs/wasm/tkms/kms_lib_bg.v0.13.10.wasm.base64.js.map +7 -0
- package/_cjs/wasm/wasmBaseUrl.js +36 -14
- package/_cjs/wasm/wasmBaseUrl.js.map +7 -0
- package/_esm/core/_version.js +1 -1
- package/_esm/core/actions/base/fetchVerifiedInputProof.js +1 -1
- package/_esm/core/actions/base/fetchVerifiedInputProof.js.map +1 -1
- package/_esm/core/actions/base/signDecryptionPermit.js.map +1 -1
- package/_esm/core/actions/chain/index.js +4 -4
- package/_esm/core/actions/chain/index.js.map +1 -1
- package/_esm/core/actions/chain/parseSignedDecryptionPermit.js +2 -3
- package/_esm/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
- package/_esm/core/actions/chain/parseTransportKeypair.js +1 -3
- package/_esm/core/actions/chain/parseTransportKeypair.js.map +1 -1
- package/_esm/core/actions/chain/serializeTransportKeypair.js +0 -1
- package/_esm/core/actions/chain/serializeTransportKeypair.js.map +1 -1
- package/_esm/core/actions/decrypt/decryptValue.js +5 -1
- package/_esm/core/actions/decrypt/decryptValue.js.map +1 -1
- package/_esm/core/actions/decrypt/decryptValues.js +5 -1
- package/_esm/core/actions/decrypt/decryptValues.js.map +1 -1
- package/_esm/core/actions/decrypt/decryptValuesFromPairs.js +5 -1
- package/_esm/core/actions/decrypt/decryptValuesFromPairs.js.map +1 -1
- package/_esm/core/actions/decrypt/index.js +2 -2
- package/_esm/core/actions/decrypt/index.js.map +1 -1
- package/_esm/core/actions/host/getUserDecryptionDelegationExpirationDate.js +13 -14
- package/_esm/core/actions/host/getUserDecryptionDelegationExpirationDate.js.map +1 -1
- package/_esm/core/base/bytes.js +7 -0
- package/_esm/core/base/bytes.js.map +1 -1
- package/_esm/core/base/sign.js +58 -0
- package/_esm/core/base/sign.js.map +1 -0
- package/_esm/core/base/typedValue.js +16 -0
- package/_esm/core/base/typedValue.js.map +1 -1
- package/_esm/core/base/uint.js +30 -0
- package/_esm/core/base/uint.js.map +1 -1
- package/_esm/core/clients/decorators/decrypt.js +3 -3
- package/_esm/core/clients/decorators/decrypt.js.map +1 -1
- package/_esm/core/coprocessor/InputProof-p.js +2 -2
- package/_esm/core/coprocessor/InputProof-p.js.map +1 -1
- package/_esm/core/coprocessor/ZkProof-p.js +19 -12
- package/_esm/core/coprocessor/ZkProof-p.js.map +1 -1
- package/_esm/core/coprocessor/ZkProofBuilder-p.js +7 -5
- package/_esm/core/coprocessor/ZkProofBuilder-p.js.map +1 -1
- package/_esm/core/coprocessor/encrypt.js +1 -3
- package/_esm/core/coprocessor/encrypt.js.map +1 -1
- package/_esm/core/coprocessor/fetchVerifiedInputProof.js +3 -4
- package/_esm/core/coprocessor/fetchVerifiedInputProof.js.map +1 -1
- package/_esm/core/handle/FheType.js +4 -2
- package/_esm/core/handle/FheType.js.map +1 -1
- package/_esm/core/host-contracts/KmsSignersContext-p.js +1 -1
- package/_esm/core/host-contracts/KmsSignersContext-p.js.map +1 -1
- package/_esm/core/host-contracts/checkDelegation.js +81 -0
- package/_esm/core/host-contracts/checkDelegation.js.map +1 -0
- package/_esm/core/host-contracts/getUserDecryptionDelegationExpirationDate.js +19 -0
- package/_esm/core/host-contracts/getUserDecryptionDelegationExpirationDate.js.map +1 -0
- package/_esm/core/host-contracts/isHandleDelegatedForUserDecryption-p.js +32 -0
- package/_esm/core/host-contracts/isHandleDelegatedForUserDecryption-p.js.map +1 -0
- package/_esm/core/host-contracts/persistAllowed.js +1 -1
- package/_esm/core/host-contracts/persistAllowed.js.map +1 -1
- package/_esm/core/kms/fetchKmsSignedcryptedShares-p.js +18 -8
- package/_esm/core/kms/fetchKmsSignedcryptedShares-p.js.map +1 -1
- package/_esm/core/kms/publicDecrypt.js +1 -4
- package/_esm/core/kms/publicDecrypt.js.map +1 -1
- package/_esm/core/modules/decrypt/mock.js +96 -10
- package/_esm/core/modules/decrypt/mock.js.map +1 -1
- package/_esm/core/modules/encrypt/mock.js +151 -12
- package/_esm/core/modules/encrypt/mock.js.map +1 -1
- package/_esm/core/modules/encrypt/module/api-p.js +7 -2
- package/_esm/core/modules/encrypt/module/api-p.js.map +1 -1
- package/_esm/core/modules/ethereum/types-ct.js +2 -0
- package/_esm/core/modules/ethereum/types-ct.js.map +1 -0
- package/_esm/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js +75 -0
- package/_esm/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js.map +1 -0
- package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js +121 -0
- package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +1 -0
- package/_esm/core/modules/relayer/cleartext/fetchPublicDecrypt.js +52 -0
- package/_esm/core/modules/relayer/cleartext/fetchPublicDecrypt.js.map +1 -0
- package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js +119 -0
- package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -0
- package/_esm/core/modules/relayer/cleartext/mock.js +39 -0
- package/_esm/core/modules/relayer/cleartext/mock.js.map +1 -0
- package/_esm/core/modules/relayer/cleartext/signers.js +34 -0
- package/_esm/core/modules/relayer/cleartext/signers.js.map +1 -0
- package/_esm/core/modules/relayer/module/fetchCoprocessorSignatures.js +2 -2
- package/_esm/core/modules/relayer/module/fetchCoprocessorSignatures.js.map +1 -1
- package/_esm/core/modules/relayer/module/fetchDelegatedUserDecrypt.js +1 -1
- package/_esm/core/modules/relayer/module/fetchDelegatedUserDecrypt.js.map +1 -1
- package/_esm/core/modules/relayer/module/fetchPublicDecrypt.js +1 -1
- package/_esm/core/modules/relayer/module/fetchPublicDecrypt.js.map +1 -1
- package/_esm/core/modules/relayer/module/fetchUserDecrypt.js +1 -1
- package/_esm/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
- package/_esm/core/modules/relayer/utils.js +13 -0
- package/_esm/core/modules/relayer/utils.js.map +1 -0
- package/_esm/ethers/cleartext/createFhevmCleartextBaseClient.js +15 -0
- package/_esm/ethers/cleartext/createFhevmCleartextBaseClient.js.map +1 -0
- package/_esm/ethers/cleartext/createFhevmCleartextClient.js +9 -0
- package/_esm/ethers/cleartext/createFhevmCleartextClient.js.map +1 -0
- package/_esm/ethers/cleartext/createFhevmCleartextDecryptClient.js +8 -0
- package/_esm/ethers/cleartext/createFhevmCleartextDecryptClient.js.map +1 -0
- package/_esm/ethers/cleartext/createFhevmCleartextEncryptClient.js +8 -0
- package/_esm/ethers/cleartext/createFhevmCleartextEncryptClient.js.map +1 -0
- package/_esm/ethers/cleartext/decorators/decrypt.js +7 -0
- package/_esm/ethers/cleartext/decorators/decrypt.js.map +1 -0
- package/_esm/ethers/cleartext/decorators/encrypt.js +7 -0
- package/_esm/ethers/cleartext/decorators/encrypt.js.map +1 -0
- package/_esm/ethers/cleartext/index.js +5 -0
- package/_esm/ethers/cleartext/index.js.map +1 -0
- package/_esm/ethers/clients/createFhevmBaseClient.js +2 -1
- package/_esm/ethers/clients/createFhevmBaseClient.js.map +1 -1
- package/_esm/ethers/clients/createFhevmClient.js +2 -2
- package/_esm/ethers/clients/createFhevmClient.js.map +1 -1
- package/_esm/ethers/clients/createFhevmDecryptClient.js +1 -1
- package/_esm/ethers/clients/createFhevmDecryptClient.js.map +1 -1
- package/_esm/ethers/clients/createFhevmEncryptClient.js +1 -1
- package/_esm/ethers/clients/createFhevmEncryptClient.js.map +1 -1
- package/_esm/ethers/clients/decorators/decrypt.js +7 -0
- package/_esm/ethers/clients/decorators/decrypt.js.map +1 -0
- package/_esm/ethers/clients/decorators/encrypt.js +7 -0
- package/_esm/ethers/clients/decorators/encrypt.js.map +1 -0
- package/_esm/ethers/index.js +1 -1
- package/_esm/ethers/index.js.map +1 -1
- package/_esm/ethers/internal/config.js +38 -0
- package/_esm/ethers/internal/config.js.map +1 -0
- package/_esm/ethers/internal/ethereum-ct.js +39 -0
- package/_esm/ethers/internal/ethereum-ct.js.map +1 -0
- package/_esm/ethers/internal/ethers-p.js +0 -43
- package/_esm/ethers/internal/ethers-p.js.map +1 -1
- package/_esm/ethers/internal/runtime-ct.js +21 -0
- package/_esm/ethers/internal/runtime-ct.js.map +1 -0
- package/_esm/ethers/internal/runtime.js +21 -0
- package/_esm/ethers/internal/runtime.js.map +1 -0
- package/_esm/ethers/runtime/initFhevmDecryptRuntime.js +2 -1
- package/_esm/ethers/runtime/initFhevmDecryptRuntime.js.map +1 -1
- package/_esm/ethers/runtime/initFhevmEncryptRuntime.js +2 -1
- package/_esm/ethers/runtime/initFhevmEncryptRuntime.js.map +1 -1
- package/_esm/ethers/runtime/initFhevmRuntime.js +2 -1
- package/_esm/ethers/runtime/initFhevmRuntime.js.map +1 -1
- package/_esm/index.js +2 -0
- package/_esm/index.js.map +1 -0
- package/_esm/viem/cleartext/createFhevmCleartextBaseClient.js +15 -0
- package/_esm/viem/cleartext/createFhevmCleartextBaseClient.js.map +1 -0
- package/_esm/viem/cleartext/createFhevmCleartextClient.js +9 -0
- package/_esm/viem/cleartext/createFhevmCleartextClient.js.map +1 -0
- package/_esm/viem/cleartext/createFhevmCleartextDecryptClient.js +8 -0
- package/_esm/viem/cleartext/createFhevmCleartextDecryptClient.js.map +1 -0
- package/_esm/viem/cleartext/createFhevmCleartextEncryptClient.js +8 -0
- package/_esm/viem/cleartext/createFhevmCleartextEncryptClient.js.map +1 -0
- package/_esm/viem/cleartext/decorators/decrypt.js +7 -0
- package/_esm/viem/cleartext/decorators/decrypt.js.map +1 -0
- package/_esm/viem/cleartext/decorators/encrypt.js +7 -0
- package/_esm/viem/cleartext/decorators/encrypt.js.map +1 -0
- package/_esm/viem/cleartext/index.js +5 -0
- package/_esm/viem/cleartext/index.js.map +1 -0
- package/_esm/viem/clients/createFhevmBaseClient.js +2 -1
- package/_esm/viem/clients/createFhevmBaseClient.js.map +1 -1
- package/_esm/viem/clients/createFhevmClient.js +2 -2
- package/_esm/viem/clients/createFhevmClient.js.map +1 -1
- package/_esm/viem/clients/createFhevmDecryptClient.js +1 -1
- package/_esm/viem/clients/createFhevmDecryptClient.js.map +1 -1
- package/_esm/viem/clients/createFhevmEncryptClient.js +1 -2
- package/_esm/viem/clients/createFhevmEncryptClient.js.map +1 -1
- package/_esm/viem/clients/decorators/decrypt.js +7 -0
- package/_esm/viem/clients/decorators/decrypt.js.map +1 -0
- package/_esm/viem/clients/decorators/encrypt.js +7 -0
- package/_esm/viem/clients/decorators/encrypt.js.map +1 -0
- package/_esm/viem/index.js +2 -2
- package/_esm/viem/index.js.map +1 -1
- package/_esm/viem/internal/config.js +38 -0
- package/_esm/viem/internal/config.js.map +1 -0
- package/_esm/viem/internal/ethereum-ct.js +39 -0
- package/_esm/viem/internal/ethereum-ct.js.map +1 -0
- package/_esm/viem/internal/runtime-ct.js +21 -0
- package/_esm/viem/internal/runtime-ct.js.map +1 -0
- package/_esm/viem/internal/runtime.js +21 -0
- package/_esm/viem/internal/runtime.js.map +1 -0
- package/_esm/viem/internal/viem-p.js +0 -43
- package/_esm/viem/internal/viem-p.js.map +1 -1
- package/_esm/viem/runtime/initFhevmDecryptRuntime.js +2 -1
- package/_esm/viem/runtime/initFhevmDecryptRuntime.js.map +1 -1
- package/_esm/viem/runtime/initFhevmEncryptRuntime.js +2 -1
- package/_esm/viem/runtime/initFhevmEncryptRuntime.js.map +1 -1
- package/_esm/viem/runtime/initFhevmRuntime.js +2 -1
- package/_esm/viem/runtime/initFhevmRuntime.js.map +1 -1
- package/_types/core/actions/base/signDecryptionPermit.d.ts.map +1 -1
- package/_types/core/actions/chain/index.d.ts +4 -4
- package/_types/core/actions/chain/index.d.ts.map +1 -1
- package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts +7 -2
- package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts.map +1 -1
- package/_types/core/actions/chain/parseTransportKeypair.d.ts +2 -2
- package/_types/core/actions/chain/parseTransportKeypair.d.ts.map +1 -1
- package/_types/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.d.ts +1 -1
- package/_types/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.d.ts.map +1 -1
- package/_types/core/actions/decrypt/decryptValue.d.ts +5 -13
- package/_types/core/actions/decrypt/decryptValue.d.ts.map +1 -1
- package/_types/core/actions/decrypt/decryptValues.d.ts +5 -13
- package/_types/core/actions/decrypt/decryptValues.d.ts.map +1 -1
- package/_types/core/actions/decrypt/decryptValuesFromPairs.d.ts +5 -13
- package/_types/core/actions/decrypt/decryptValuesFromPairs.d.ts.map +1 -1
- package/_types/core/actions/decrypt/index.d.ts +3 -3
- package/_types/core/actions/decrypt/index.d.ts.map +1 -1
- package/_types/core/actions/host/getUserDecryptionDelegationExpirationDate.d.ts +5 -2
- package/_types/core/actions/host/getUserDecryptionDelegationExpirationDate.d.ts.map +1 -1
- package/_types/core/base/bytes.d.ts +1 -0
- package/_types/core/base/bytes.d.ts.map +1 -1
- package/_types/core/base/sign.d.ts +10 -0
- package/_types/core/base/sign.d.ts.map +1 -0
- package/_types/core/base/typedValue.d.ts +2 -1
- package/_types/core/base/typedValue.d.ts.map +1 -1
- package/_types/core/base/uint.d.ts +3 -0
- package/_types/core/base/uint.d.ts.map +1 -1
- package/_types/core/clients/decorators/decrypt.d.ts +6 -15
- package/_types/core/clients/decorators/decrypt.d.ts.map +1 -1
- package/_types/core/coprocessor/ZkProof-p.d.ts +2 -2
- package/_types/core/coprocessor/ZkProof-p.d.ts.map +1 -1
- package/_types/core/coprocessor/ZkProofBuilder-p.d.ts +2 -1
- package/_types/core/coprocessor/ZkProofBuilder-p.d.ts.map +1 -1
- package/_types/core/coprocessor/encrypt.d.ts.map +1 -1
- package/_types/core/coprocessor/fetchVerifiedInputProof.d.ts +0 -2
- package/_types/core/coprocessor/fetchVerifiedInputProof.d.ts.map +1 -1
- package/_types/core/handle/FheType.d.ts +1 -0
- package/_types/core/handle/FheType.d.ts.map +1 -1
- package/_types/core/host-contracts/checkDelegation.d.ts +22 -0
- package/_types/core/host-contracts/checkDelegation.d.ts.map +1 -0
- package/_types/core/host-contracts/getUserDecryptionDelegationExpirationDate.d.ts +19 -0
- package/_types/core/host-contracts/getUserDecryptionDelegationExpirationDate.d.ts.map +1 -0
- package/_types/core/host-contracts/isHandleDelegatedForUserDecryption-p.d.ts +20 -0
- package/_types/core/host-contracts/isHandleDelegatedForUserDecryption-p.d.ts.map +1 -0
- package/_types/core/kms/fetchKmsSignedcryptedShares-p.d.ts.map +1 -1
- package/_types/core/kms/publicDecrypt.d.ts.map +1 -1
- package/_types/core/modules/decrypt/mock.d.ts +5 -5
- package/_types/core/modules/decrypt/mock.d.ts.map +1 -1
- package/_types/core/modules/encrypt/mock.d.ts +6 -6
- package/_types/core/modules/encrypt/mock.d.ts.map +1 -1
- package/_types/core/modules/encrypt/module/api-p.d.ts.map +1 -1
- package/_types/core/modules/encrypt/types.d.ts +6 -2
- package/_types/core/modules/encrypt/types.d.ts.map +1 -1
- package/_types/core/modules/ethereum/types-ct.d.ts +46 -0
- package/_types/core/modules/ethereum/types-ct.d.ts.map +1 -0
- package/_types/core/modules/relayer/cleartext/fetchCoprocessorSignatures.d.ts +3 -0
- package/_types/core/modules/relayer/cleartext/fetchCoprocessorSignatures.d.ts.map +1 -0
- package/_types/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.d.ts +3 -0
- package/_types/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.d.ts.map +1 -0
- package/_types/core/modules/relayer/cleartext/fetchPublicDecrypt.d.ts +3 -0
- package/_types/core/modules/relayer/cleartext/fetchPublicDecrypt.d.ts.map +1 -0
- package/_types/core/modules/relayer/cleartext/fetchUserDecrypt.d.ts +3 -0
- package/_types/core/modules/relayer/cleartext/fetchUserDecrypt.d.ts.map +1 -0
- package/_types/core/modules/relayer/cleartext/mock.d.ts +3 -0
- package/_types/core/modules/relayer/cleartext/mock.d.ts.map +1 -0
- package/_types/core/modules/relayer/cleartext/signers.d.ts +7 -0
- package/_types/core/modules/relayer/cleartext/signers.d.ts.map +1 -0
- package/_types/core/modules/relayer/module/fetchCoprocessorSignatures.d.ts +2 -2
- package/_types/core/modules/relayer/module/fetchCoprocessorSignatures.d.ts.map +1 -1
- package/_types/core/modules/relayer/module/fetchDelegatedUserDecrypt.d.ts +2 -2
- package/_types/core/modules/relayer/module/fetchDelegatedUserDecrypt.d.ts.map +1 -1
- package/_types/core/modules/relayer/module/fetchPublicDecrypt.d.ts +2 -2
- package/_types/core/modules/relayer/module/fetchPublicDecrypt.d.ts.map +1 -1
- package/_types/core/modules/relayer/module/fetchUserDecrypt.d.ts +2 -2
- package/_types/core/modules/relayer/module/fetchUserDecrypt.d.ts.map +1 -1
- package/_types/core/modules/relayer/types.d.ts +14 -5
- package/_types/core/modules/relayer/types.d.ts.map +1 -1
- package/_types/core/modules/relayer/utils.d.ts +4 -0
- package/_types/core/modules/relayer/utils.d.ts.map +1 -0
- package/_types/core/types/index.d.ts +1 -0
- package/_types/core/types/index.d.ts.map +1 -1
- package/_types/core/types/kms.d.ts +21 -0
- package/_types/core/types/kms.d.ts.map +1 -1
- package/_types/core/types/zkProof-p.d.ts +2 -1
- package/_types/core/types/zkProof-p.d.ts.map +1 -1
- package/_types/ethers/cleartext/createFhevmCleartextBaseClient.d.ts +11 -0
- package/_types/ethers/cleartext/createFhevmCleartextBaseClient.d.ts.map +1 -0
- package/_types/ethers/cleartext/createFhevmCleartextClient.d.ts +11 -0
- package/_types/ethers/cleartext/createFhevmCleartextClient.d.ts.map +1 -0
- package/_types/ethers/cleartext/createFhevmCleartextDecryptClient.d.ts +11 -0
- package/_types/ethers/cleartext/createFhevmCleartextDecryptClient.d.ts.map +1 -0
- package/_types/ethers/cleartext/createFhevmCleartextEncryptClient.d.ts +11 -0
- package/_types/ethers/cleartext/createFhevmCleartextEncryptClient.d.ts.map +1 -0
- package/_types/ethers/cleartext/decorators/decrypt.d.ts +6 -0
- package/_types/ethers/cleartext/decorators/decrypt.d.ts.map +1 -0
- package/_types/ethers/cleartext/decorators/encrypt.d.ts +6 -0
- package/_types/ethers/cleartext/decorators/encrypt.d.ts.map +1 -0
- package/_types/ethers/cleartext/index.d.ts +5 -0
- package/_types/ethers/cleartext/index.d.ts.map +1 -0
- package/_types/ethers/clients/createFhevmBaseClient.d.ts.map +1 -1
- package/_types/ethers/clients/decorators/decrypt.d.ts +6 -0
- package/_types/ethers/clients/decorators/decrypt.d.ts.map +1 -0
- package/_types/ethers/clients/decorators/encrypt.d.ts +6 -0
- package/_types/ethers/clients/decorators/encrypt.d.ts.map +1 -0
- package/_types/ethers/index.d.ts +1 -1
- package/_types/ethers/index.d.ts.map +1 -1
- package/_types/ethers/internal/config.d.ts +15 -0
- package/_types/ethers/internal/config.d.ts.map +1 -0
- package/_types/ethers/internal/ethereum-ct.d.ts +3 -0
- package/_types/ethers/internal/ethereum-ct.d.ts.map +1 -0
- package/_types/ethers/internal/ethers-p.d.ts +1 -13
- package/_types/ethers/internal/ethers-p.d.ts.map +1 -1
- package/_types/ethers/internal/runtime-ct.d.ts +3 -0
- package/_types/ethers/internal/runtime-ct.d.ts.map +1 -0
- package/_types/ethers/internal/runtime.d.ts +3 -0
- package/_types/ethers/internal/runtime.d.ts.map +1 -0
- package/_types/ethers/runtime/initFhevmDecryptRuntime.d.ts.map +1 -1
- package/_types/ethers/runtime/initFhevmEncryptRuntime.d.ts.map +1 -1
- package/_types/ethers/runtime/initFhevmRuntime.d.ts.map +1 -1
- package/_types/index.d.ts +2 -0
- package/_types/index.d.ts.map +1 -0
- package/_types/viem/cleartext/createFhevmCleartextBaseClient.d.ts +11 -0
- package/_types/viem/cleartext/createFhevmCleartextBaseClient.d.ts.map +1 -0
- package/_types/viem/cleartext/createFhevmCleartextClient.d.ts +11 -0
- package/_types/viem/cleartext/createFhevmCleartextClient.d.ts.map +1 -0
- package/_types/viem/cleartext/createFhevmCleartextDecryptClient.d.ts +11 -0
- package/_types/viem/cleartext/createFhevmCleartextDecryptClient.d.ts.map +1 -0
- package/_types/viem/cleartext/createFhevmCleartextEncryptClient.d.ts +11 -0
- package/_types/viem/cleartext/createFhevmCleartextEncryptClient.d.ts.map +1 -0
- package/_types/viem/cleartext/decorators/decrypt.d.ts +6 -0
- package/_types/viem/cleartext/decorators/decrypt.d.ts.map +1 -0
- package/_types/viem/cleartext/decorators/encrypt.d.ts +6 -0
- package/_types/viem/cleartext/decorators/encrypt.d.ts.map +1 -0
- package/_types/viem/cleartext/index.d.ts +5 -0
- package/_types/viem/cleartext/index.d.ts.map +1 -0
- package/_types/viem/clients/createFhevmBaseClient.d.ts.map +1 -1
- package/_types/viem/clients/decorators/decrypt.d.ts +6 -0
- package/_types/viem/clients/decorators/decrypt.d.ts.map +1 -0
- package/_types/viem/clients/decorators/encrypt.d.ts +6 -0
- package/_types/viem/clients/decorators/encrypt.d.ts.map +1 -0
- package/_types/viem/index.d.ts +2 -2
- package/_types/viem/index.d.ts.map +1 -1
- package/_types/viem/internal/config.d.ts +15 -0
- package/_types/viem/internal/config.d.ts.map +1 -0
- package/_types/viem/internal/ethereum-ct.d.ts +3 -0
- package/_types/viem/internal/ethereum-ct.d.ts.map +1 -0
- package/_types/viem/internal/runtime-ct.d.ts +3 -0
- package/_types/viem/internal/runtime-ct.d.ts.map +1 -0
- package/_types/viem/internal/runtime.d.ts +3 -0
- package/_types/viem/internal/runtime.d.ts.map +1 -0
- package/_types/viem/internal/viem-p.d.ts +1 -13
- package/_types/viem/internal/viem-p.d.ts.map +1 -1
- package/_types/viem/runtime/initFhevmDecryptRuntime.d.ts.map +1 -1
- package/_types/viem/runtime/initFhevmEncryptRuntime.d.ts.map +1 -1
- package/_types/viem/runtime/initFhevmRuntime.d.ts.map +1 -1
- package/core/_version.ts +1 -1
- package/core/actions/base/fetchVerifiedInputProof.ts +1 -1
- package/core/actions/base/signDecryptionPermit.ts +2 -0
- package/core/actions/chain/index.ts +11 -11
- package/core/actions/chain/parseSignedDecryptionPermit.ts +9 -6
- package/core/actions/chain/parseTransportKeypair.ts +3 -7
- package/core/actions/chain/serializeTransportKeypair.ts +0 -2
- package/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.ts +1 -1
- package/core/actions/decrypt/decryptValue.ts +9 -28
- package/core/actions/decrypt/decryptValues.ts +9 -28
- package/core/actions/decrypt/decryptValuesFromPairs.ts +9 -28
- package/core/actions/decrypt/index.ts +3 -14
- package/core/actions/host/getUserDecryptionDelegationExpirationDate.ts +22 -18
- package/core/base/bytes.ts +8 -0
- package/core/base/sign.ts +75 -0
- package/core/base/typedValue.ts +18 -0
- package/core/base/uint.ts +32 -0
- package/core/clients/decorators/decrypt.ts +12 -28
- package/core/coprocessor/InputProof-p.ts +2 -2
- package/core/coprocessor/ZkProof-p.ts +21 -9
- package/core/coprocessor/ZkProofBuilder-p.ts +15 -8
- package/core/coprocessor/encrypt.ts +1 -3
- package/core/coprocessor/fetchVerifiedInputProof.ts +7 -13
- package/core/handle/FheType.ts +5 -2
- package/core/host-contracts/KmsSignersContext-p.ts +1 -1
- package/core/host-contracts/checkDelegation.ts +114 -0
- package/core/host-contracts/getUserDecryptionDelegationExpirationDate.ts +45 -0
- package/core/host-contracts/isHandleDelegatedForUserDecryption-p.ts +77 -0
- package/core/host-contracts/persistAllowed.ts +1 -1
- package/core/kms/fetchKmsSignedcryptedShares-p.ts +31 -29
- package/core/kms/publicDecrypt.ts +6 -12
- package/core/modules/decrypt/mock.ts +126 -13
- package/core/modules/encrypt/mock.ts +206 -12
- package/core/modules/encrypt/module/api-p.ts +7 -2
- package/core/modules/encrypt/types.ts +6 -2
- package/core/modules/ethereum/types-ct.ts +89 -0
- package/core/modules/relayer/cleartext/fetchCoprocessorSignatures.ts +94 -0
- package/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.ts +147 -0
- package/core/modules/relayer/cleartext/fetchPublicDecrypt.ts +67 -0
- package/core/modules/relayer/cleartext/fetchUserDecrypt.ts +141 -0
- package/core/modules/relayer/cleartext/mock.ts +54 -0
- package/core/modules/relayer/cleartext/signers.ts +52 -0
- package/core/modules/relayer/module/fetchCoprocessorSignatures.ts +4 -4
- package/core/modules/relayer/module/fetchDelegatedUserDecrypt.ts +3 -3
- package/core/modules/relayer/module/fetchPublicDecrypt.ts +3 -3
- package/core/modules/relayer/module/fetchUserDecrypt.ts +3 -3
- package/core/modules/relayer/types.ts +13 -5
- package/core/modules/relayer/utils.ts +17 -0
- package/core/types/index.ts +1 -0
- package/core/types/kms.ts +19 -0
- package/core/types/zkProof-p.ts +3 -1
- package/ethers/cleartext/createFhevmCleartextBaseClient.ts +25 -0
- package/ethers/cleartext/createFhevmCleartextClient.ts +20 -0
- package/ethers/cleartext/createFhevmCleartextDecryptClient.ts +18 -0
- package/ethers/cleartext/createFhevmCleartextEncryptClient.ts +19 -0
- package/ethers/cleartext/decorators/decrypt.ts +12 -0
- package/ethers/cleartext/decorators/encrypt.ts +12 -0
- package/ethers/cleartext/index.ts +4 -0
- package/ethers/cleartext/package.json +6 -0
- package/ethers/clients/createFhevmBaseClient.ts +2 -1
- package/ethers/clients/createFhevmClient.ts +2 -2
- package/ethers/clients/createFhevmDecryptClient.ts +1 -1
- package/ethers/clients/createFhevmEncryptClient.ts +1 -1
- package/ethers/clients/decorators/decrypt.ts +12 -0
- package/ethers/clients/decorators/encrypt.ts +12 -0
- package/ethers/index.ts +1 -1
- package/ethers/internal/config.ts +50 -0
- package/ethers/internal/ethereum-ct.ts +61 -0
- package/ethers/internal/ethers-p.ts +1 -56
- package/ethers/internal/runtime-ct.ts +28 -0
- package/ethers/internal/runtime.ts +28 -0
- package/ethers/runtime/initFhevmDecryptRuntime.ts +2 -1
- package/ethers/runtime/initFhevmEncryptRuntime.ts +2 -1
- package/ethers/runtime/initFhevmRuntime.ts +2 -1
- package/index.ts +0 -0
- package/package.json +14 -2
- package/viem/cleartext/createFhevmCleartextBaseClient.ts +28 -0
- package/viem/cleartext/createFhevmCleartextClient.ts +20 -0
- package/viem/cleartext/createFhevmCleartextDecryptClient.ts +21 -0
- package/viem/cleartext/createFhevmCleartextEncryptClient.ts +22 -0
- package/viem/cleartext/decorators/decrypt.ts +12 -0
- package/viem/cleartext/decorators/encrypt.ts +12 -0
- package/viem/cleartext/index.ts +4 -0
- package/viem/cleartext/package.json +6 -0
- package/viem/clients/createFhevmBaseClient.ts +2 -1
- package/viem/clients/createFhevmClient.ts +2 -2
- package/viem/clients/createFhevmDecryptClient.ts +1 -1
- package/viem/clients/createFhevmEncryptClient.ts +1 -3
- package/viem/clients/decorators/decrypt.ts +12 -0
- package/viem/clients/decorators/encrypt.ts +12 -0
- package/viem/index.ts +2 -2
- package/viem/internal/config.ts +50 -0
- package/viem/internal/ethereum-ct.ts +61 -0
- package/viem/internal/runtime-ct.ts +28 -0
- package/viem/internal/runtime.ts +28 -0
- package/viem/internal/viem-p.ts +1 -56
- package/viem/runtime/initFhevmDecryptRuntime.ts +2 -1
- package/viem/runtime/initFhevmEncryptRuntime.ts +2 -1
- package/viem/runtime/initFhevmRuntime.ts +2 -1
- package/_cjs/core/modules/relayer/mock.js +0 -29
- package/_cjs/core/modules/relayer/mock.js.map +0 -1
- package/_cjs/ethers/decorators/decrypt.js.map +0 -1
- package/_cjs/ethers/decorators/encrypt.js.map +0 -1
- package/_cjs/viem/decorators/decrypt.js.map +0 -1
- package/_cjs/viem/decorators/encrypt.js.map +0 -1
- package/_esm/core/modules/relayer/mock.js +0 -28
- package/_esm/core/modules/relayer/mock.js.map +0 -1
- package/_esm/ethers/decorators/decrypt.js +0 -7
- package/_esm/ethers/decorators/decrypt.js.map +0 -1
- package/_esm/ethers/decorators/encrypt.js +0 -7
- package/_esm/ethers/decorators/encrypt.js.map +0 -1
- package/_esm/viem/decorators/decrypt.js +0 -7
- package/_esm/viem/decorators/decrypt.js.map +0 -1
- package/_esm/viem/decorators/encrypt.js +0 -7
- package/_esm/viem/decorators/encrypt.js.map +0 -1
- package/_types/core/modules/relayer/mock.d.ts +0 -3
- package/_types/core/modules/relayer/mock.d.ts.map +0 -1
- package/_types/ethers/decorators/decrypt.d.ts +0 -6
- package/_types/ethers/decorators/decrypt.d.ts.map +0 -1
- package/_types/ethers/decorators/encrypt.d.ts +0 -6
- package/_types/ethers/decorators/encrypt.d.ts.map +0 -1
- package/_types/viem/decorators/decrypt.d.ts +0 -6
- package/_types/viem/decorators/decrypt.d.ts.map +0 -1
- package/_types/viem/decorators/encrypt.d.ts +0 -6
- package/_types/viem/decorators/encrypt.d.ts.map +0 -1
- package/core/modules/relayer/mock.ts +0 -47
- package/ethers/decorators/decrypt.ts +0 -12
- package/ethers/decorators/encrypt.ts +0 -12
- package/viem/decorators/decrypt.ts +0 -12
- package/viem/decorators/encrypt.ts +0 -12
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/unified-signatures */
|
|
2
1
|
import type { Fhevm, FhevmBase, FhevmExtension, OptionalNativeClient } from '../../types/coreFhevmClient.js';
|
|
3
2
|
import type { FhevmRuntime, WithDecrypt } from '../../types/coreFhevmRuntime.js';
|
|
4
3
|
import type { FhevmChain } from '../../types/fhevmChain.js';
|
|
@@ -8,38 +7,29 @@ import { asFhevmClientWith, assertIsFhevmClientWith } from '../../runtime/CoreFh
|
|
|
8
7
|
import { generateTransportKeypair } from '../../kms/TransportKeypair-p.js';
|
|
9
8
|
import {
|
|
10
9
|
decryptValue,
|
|
11
|
-
type
|
|
12
|
-
type DecryptDelegatedValueParameters,
|
|
10
|
+
type DecryptValueParameters,
|
|
13
11
|
type DecryptValueReturnType,
|
|
14
12
|
} from '../../actions/decrypt/decryptValue.js';
|
|
15
13
|
import {
|
|
16
14
|
decryptValues,
|
|
17
|
-
type
|
|
18
|
-
type DecryptSelfValuesParameters,
|
|
15
|
+
type DecryptValuesParameters,
|
|
19
16
|
type DecryptValuesReturnType,
|
|
20
17
|
} from '../../actions/decrypt/decryptValues.js';
|
|
21
18
|
import {
|
|
22
19
|
decryptValuesFromPairs,
|
|
23
|
-
type
|
|
24
|
-
type DecryptDelegatedValuesFromPairsParameters,
|
|
20
|
+
type DecryptValuesFromPairsParameters,
|
|
25
21
|
type DecryptValuesFromPairsReturnType,
|
|
26
22
|
} from '../../actions/decrypt/decryptValuesFromPairs.js';
|
|
27
23
|
|
|
28
24
|
////////////////////////////////////////////////////////////////////////////////
|
|
29
25
|
|
|
30
26
|
export type DecryptActions = {
|
|
31
|
-
readonly decryptValue:
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
(parameters: DecryptDelegatedValuesParameters): Promise<DecryptValuesReturnType>;
|
|
38
|
-
};
|
|
39
|
-
readonly decryptValuesFromPairs: {
|
|
40
|
-
(parameters: DecryptSelfValuesFromPairsParameters): Promise<DecryptValuesFromPairsReturnType>;
|
|
41
|
-
(parameters: DecryptDelegatedValuesFromPairsParameters): Promise<DecryptValuesFromPairsReturnType>;
|
|
42
|
-
};
|
|
27
|
+
readonly decryptValue: (parameters: DecryptValueParameters) => Promise<DecryptValueReturnType>;
|
|
28
|
+
readonly decryptValues: (parameters: DecryptValuesParameters) => Promise<DecryptValuesReturnType>;
|
|
29
|
+
|
|
30
|
+
readonly decryptValuesFromPairs: (
|
|
31
|
+
parameters: DecryptValuesFromPairsParameters,
|
|
32
|
+
) => Promise<DecryptValuesFromPairsReturnType>;
|
|
43
33
|
readonly generateTransportKeypair: () => Promise<GenerateTransportKeypairReturnType>;
|
|
44
34
|
};
|
|
45
35
|
|
|
@@ -49,15 +39,9 @@ function _decryptActions(fhevm: Fhevm<FhevmChain, WithDecrypt>): DecryptActions
|
|
|
49
39
|
// Preserve the original action overloads on the decorated client API.
|
|
50
40
|
// Runtime behavior is unchanged: this is a direct pass-through wrapper.
|
|
51
41
|
return {
|
|
52
|
-
decryptValue: (
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
decryptValues(fhevm, parameters as DecryptSelfValuesParameters)) as DecryptActions['decryptValues'],
|
|
56
|
-
decryptValuesFromPairs: ((parameters) =>
|
|
57
|
-
decryptValuesFromPairs(
|
|
58
|
-
fhevm,
|
|
59
|
-
parameters as DecryptSelfValuesFromPairsParameters,
|
|
60
|
-
)) as DecryptActions['decryptValuesFromPairs'],
|
|
42
|
+
decryptValue: (parameters) => decryptValue(fhevm, parameters),
|
|
43
|
+
decryptValues: (parameters) => decryptValues(fhevm, parameters),
|
|
44
|
+
decryptValuesFromPairs: (parameters) => decryptValuesFromPairs(fhevm, parameters),
|
|
61
45
|
generateTransportKeypair: () => generateTransportKeypair(fhevm),
|
|
62
46
|
};
|
|
63
47
|
}
|
|
@@ -208,9 +208,9 @@ export function createInputProofFromInputHandles({
|
|
|
208
208
|
// Proof format :
|
|
209
209
|
// ==============
|
|
210
210
|
//
|
|
211
|
-
// <len(handles)><len(signatures)><concat(handles)><concat(signatures)>
|
|
211
|
+
// <len(handles)><len(signatures)><concat(handles)><concat(signatures)><extraData>
|
|
212
212
|
//
|
|
213
|
-
// size: Byte1 + Byte1 + len(handles)*Bytes32 + len(signatures)*Bytes65
|
|
213
|
+
// size: Byte1 + Byte1 + len(handles)*Bytes32 + len(signatures)*Bytes65 + BytesN(extraData)
|
|
214
214
|
//
|
|
215
215
|
|
|
216
216
|
let proof: string = '';
|
|
@@ -7,6 +7,7 @@ import type {
|
|
|
7
7
|
Uint64,
|
|
8
8
|
Bytes21Hex,
|
|
9
9
|
Uint8Number,
|
|
10
|
+
BytesHex,
|
|
10
11
|
} from '../types/primitives.js';
|
|
11
12
|
import type { ZkProofLike, ZkProof } from '../types/zkProof-p.js';
|
|
12
13
|
import type { ErrorMetadataParams } from '../base/errors/ErrorBase.js';
|
|
@@ -49,27 +50,32 @@ class ZkProofImpl implements ZkProof {
|
|
|
49
50
|
readonly #fheTypeIds: readonly FheTypeId[]; // Can be empty
|
|
50
51
|
#inputHandles: InputHandle[] | undefined;
|
|
51
52
|
|
|
53
|
+
// In theory, 'extraData' is not part of the ZkProof
|
|
54
|
+
readonly #extraData: BytesHex;
|
|
55
|
+
|
|
52
56
|
constructor(
|
|
53
57
|
privateToken: symbol,
|
|
54
|
-
|
|
58
|
+
parameters: {
|
|
55
59
|
readonly chainId: Uint64BigInt;
|
|
56
60
|
readonly aclContractAddress: ChecksummedAddress;
|
|
57
61
|
readonly contractAddress: ChecksummedAddress;
|
|
58
62
|
readonly userAddress: ChecksummedAddress;
|
|
59
63
|
readonly ciphertextWithZkProof: Bytes;
|
|
60
64
|
readonly encryptionBits: readonly EncryptionBits[];
|
|
65
|
+
readonly extraData: BytesHex;
|
|
61
66
|
},
|
|
62
67
|
) {
|
|
63
68
|
if (privateToken !== PRIVATE_TOKEN) {
|
|
64
69
|
throw new Error('Unauthorized');
|
|
65
70
|
}
|
|
66
|
-
this.#chainId =
|
|
67
|
-
this.#aclContractAddress =
|
|
68
|
-
this.#contractAddress =
|
|
69
|
-
this.#userAddress =
|
|
70
|
-
this.#ciphertextWithZkProof =
|
|
71
|
-
this.#encryptionBits = Object.freeze([...
|
|
71
|
+
this.#chainId = parameters.chainId;
|
|
72
|
+
this.#aclContractAddress = parameters.aclContractAddress;
|
|
73
|
+
this.#contractAddress = parameters.contractAddress;
|
|
74
|
+
this.#userAddress = parameters.userAddress;
|
|
75
|
+
this.#ciphertextWithZkProof = parameters.ciphertextWithZkProof;
|
|
76
|
+
this.#encryptionBits = Object.freeze([...parameters.encryptionBits]);
|
|
72
77
|
this.#fheTypeIds = Object.freeze(this.#encryptionBits.map(fheTypeIdFromEncryptionBits));
|
|
78
|
+
this.#extraData = parameters.extraData;
|
|
73
79
|
Object.freeze(this);
|
|
74
80
|
}
|
|
75
81
|
|
|
@@ -145,6 +151,10 @@ class ZkProofImpl implements ZkProof {
|
|
|
145
151
|
return this.#inputHandles;
|
|
146
152
|
}
|
|
147
153
|
|
|
154
|
+
public getExtraData(): BytesHex {
|
|
155
|
+
return this.#extraData;
|
|
156
|
+
}
|
|
157
|
+
|
|
148
158
|
//////////////////////////////////////////////////////////////////////////////
|
|
149
159
|
// JSON
|
|
150
160
|
//////////////////////////////////////////////////////////////////////////////
|
|
@@ -218,6 +228,7 @@ export function assertIsZkProof(
|
|
|
218
228
|
*/
|
|
219
229
|
export async function toZkProof(
|
|
220
230
|
zkProofLike: ZkProofLike,
|
|
231
|
+
extraData: BytesHex,
|
|
221
232
|
options?: {
|
|
222
233
|
readonly zkProofParser?: ParseTFHEProvenCompactCiphertextListModuleFunction;
|
|
223
234
|
readonly copy?: boolean;
|
|
@@ -265,8 +276,9 @@ export async function toZkProof(
|
|
|
265
276
|
aclContractAddress,
|
|
266
277
|
contractAddress,
|
|
267
278
|
userAddress,
|
|
268
|
-
ciphertextWithZkProof
|
|
279
|
+
ciphertextWithZkProof,
|
|
269
280
|
encryptionBits,
|
|
281
|
+
extraData,
|
|
270
282
|
});
|
|
271
283
|
}
|
|
272
284
|
|
|
@@ -440,7 +452,7 @@ async function _getOrParseEncryptionBits(
|
|
|
440
452
|
* assert_eq!(handle.len(), 32);
|
|
441
453
|
* ```
|
|
442
454
|
*
|
|
443
|
-
* @see https://github.com/zama-ai/fhevm/blob/
|
|
455
|
+
* @see https://github.com/zama-ai/fhevm/blob/322748569f0b5eb100b8cc1a58f691cfe88d17c4/coprocessor/fhevm-engine/zkproof-worker/src/verifier.rs#L538
|
|
444
456
|
* @internal
|
|
445
457
|
*/
|
|
446
458
|
function _computeInputHash21(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Bytes20, Bytes32, ChecksummedAddress, UintNumber } from '../types/primitives.js';
|
|
1
|
+
import type { Bytes20, Bytes32, BytesHex, ChecksummedAddress, UintNumber } from '../types/primitives.js';
|
|
2
2
|
import type { ZkProof } from '../types/zkProof-p.js';
|
|
3
3
|
import type { EncryptionBits, FheType } from '../types/fheType.js';
|
|
4
4
|
import type { ZkProofBuilder } from '../types/zkProofBuilder.js';
|
|
@@ -18,7 +18,7 @@ import type {
|
|
|
18
18
|
import { assert } from '../base/errors/InternalError.js';
|
|
19
19
|
import { isUint64, uint256ToBytes32 } from '../base/uint.js';
|
|
20
20
|
import { isAddress } from '../base/address.js';
|
|
21
|
-
import { hexToBytes20 } from '../base/bytes.js';
|
|
21
|
+
import { asBytesHex, hexToBytes20 } from '../base/bytes.js';
|
|
22
22
|
import { ZkProofError } from '../errors/ZkProofError.js';
|
|
23
23
|
import { createTypedValue, TypedValueArrayBuilder } from '../base/typedValue.js';
|
|
24
24
|
import { toZkProof } from './ZkProof-p.js';
|
|
@@ -142,9 +142,11 @@ class ZkProofBuilderImpl implements ZkProofBuilder {
|
|
|
142
142
|
{
|
|
143
143
|
contractAddress,
|
|
144
144
|
userAddress,
|
|
145
|
+
extraData,
|
|
145
146
|
}: {
|
|
146
147
|
readonly contractAddress: string;
|
|
147
148
|
readonly userAddress: string;
|
|
149
|
+
readonly extraData: string;
|
|
148
150
|
},
|
|
149
151
|
): Promise<ZkProof> {
|
|
150
152
|
// Fetch the FheEncryptionKey (in wasm format) from the global cache.
|
|
@@ -211,11 +213,13 @@ class ZkProofBuilderImpl implements ZkProofBuilder {
|
|
|
211
213
|
|
|
212
214
|
assert(metaData.length - chainIdBytes32.length === 60);
|
|
213
215
|
|
|
214
|
-
const ciphertextWithZKProofBytes:
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
216
|
+
const { ciphertextWithZKProofBytes, extraData: finalExtraData } =
|
|
217
|
+
await context.runtime.encrypt.buildWithProofPacked({
|
|
218
|
+
typedValues: [...this.#builder.build()],
|
|
219
|
+
fheEncryptionKey: fheEncryptionKeyWasm,
|
|
220
|
+
metaData,
|
|
221
|
+
extraData: asBytesHex(extraData),
|
|
222
|
+
});
|
|
219
223
|
|
|
220
224
|
return toZkProof(
|
|
221
225
|
{
|
|
@@ -226,6 +230,7 @@ class ZkProofBuilderImpl implements ZkProofBuilder {
|
|
|
226
230
|
ciphertextWithZkProof: ciphertextWithZKProofBytes,
|
|
227
231
|
encryptionBits: this.#bits,
|
|
228
232
|
},
|
|
233
|
+
finalExtraData,
|
|
229
234
|
{ copy: false }, // Take ownership
|
|
230
235
|
);
|
|
231
236
|
}
|
|
@@ -273,9 +278,10 @@ export async function createZkProof(
|
|
|
273
278
|
readonly values: readonly TypedValue[];
|
|
274
279
|
readonly contractAddress: ChecksummedAddress;
|
|
275
280
|
readonly userAddress: ChecksummedAddress;
|
|
281
|
+
readonly extraData: BytesHex;
|
|
276
282
|
},
|
|
277
283
|
): Promise<ZkProof> {
|
|
278
|
-
const { contractAddress, userAddress, values } = parameters;
|
|
284
|
+
const { contractAddress, userAddress, values, extraData } = parameters;
|
|
279
285
|
|
|
280
286
|
const builder = new ZkProofBuilderImpl(PRIVATE_TOKEN, {
|
|
281
287
|
ciphertextCapacity: TFHE_ZKPROOF_CIPHERTEXT_CAPACITY,
|
|
@@ -289,6 +295,7 @@ export async function createZkProof(
|
|
|
289
295
|
const zkProof = await builder.build(context, {
|
|
290
296
|
contractAddress,
|
|
291
297
|
userAddress,
|
|
298
|
+
extraData,
|
|
292
299
|
});
|
|
293
300
|
|
|
294
301
|
return zkProof;
|
|
@@ -3,7 +3,6 @@ import type { FhevmChain } from '../types/fhevmChain.js';
|
|
|
3
3
|
import type { BytesHex, ChecksummedAddress, TypedValue } from '../types/primitives.js';
|
|
4
4
|
import type { RelayerInputProofOptions } from '../types/relayer.js';
|
|
5
5
|
import type { InputHandle } from '../types/encryptedTypes-p.js';
|
|
6
|
-
import { asBytesHex } from '../base/bytes.js';
|
|
7
6
|
import { fetchVerifiedInputProof } from './fetchVerifiedInputProof.js';
|
|
8
7
|
import { createZkProof } from './ZkProofBuilder-p.js';
|
|
9
8
|
|
|
@@ -33,11 +32,10 @@ type ReturnType = {
|
|
|
33
32
|
export async function encrypt(context: Context, parameters: Parameters): Promise<ReturnType> {
|
|
34
33
|
const hardCodedExtraData = '0x00' as BytesHex;
|
|
35
34
|
|
|
36
|
-
const zkProof = await createZkProof(context, parameters);
|
|
35
|
+
const zkProof = await createZkProof(context, { ...parameters, extraData: hardCodedExtraData });
|
|
37
36
|
|
|
38
37
|
const inputProof = await fetchVerifiedInputProof(context, {
|
|
39
38
|
zkProof,
|
|
40
|
-
extraData: asBytesHex(hardCodedExtraData),
|
|
41
39
|
options: parameters.options,
|
|
42
40
|
});
|
|
43
41
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { RelayerInputProofOptions } from '../types/relayer.js';
|
|
2
2
|
import type { FhevmChain } from '../types/fhevmChain.js';
|
|
3
3
|
import type { VerifiedInputProof } from '../types/inputProof.js';
|
|
4
|
-
import type { BytesHex } from '../types/primitives.js';
|
|
5
4
|
import type { ZkProof } from '../types/zkProof-p.js';
|
|
6
5
|
import type { FhevmRuntime } from '../types/coreFhevmRuntime.js';
|
|
7
6
|
import type { InputHandle } from '../types/encryptedTypes-p.js';
|
|
@@ -22,7 +21,6 @@ type Context = {
|
|
|
22
21
|
|
|
23
22
|
type Parameters = {
|
|
24
23
|
readonly zkProof: ZkProof;
|
|
25
|
-
readonly extraData: BytesHex;
|
|
26
24
|
readonly options?: RelayerInputProofOptions | undefined;
|
|
27
25
|
};
|
|
28
26
|
|
|
@@ -31,7 +29,7 @@ type ReturnType = VerifiedInputProof;
|
|
|
31
29
|
////////////////////////////////////////////////////////////////////////////////
|
|
32
30
|
|
|
33
31
|
export async function fetchVerifiedInputProof(context: Context, parameters: Parameters): Promise<ReturnType> {
|
|
34
|
-
const { zkProof,
|
|
32
|
+
const { zkProof, options } = parameters;
|
|
35
33
|
|
|
36
34
|
assertIsZkProof(zkProof, {});
|
|
37
35
|
|
|
@@ -52,16 +50,12 @@ export async function fetchVerifiedInputProof(context: Context, parameters: Para
|
|
|
52
50
|
|
|
53
51
|
// 2. Request coprocessor signatures from the relayer for the given ZK proof
|
|
54
52
|
const { handles: coprocessorSignedHandles, coprocessorEip712Signatures: coprocessorSignatures } =
|
|
55
|
-
await context.runtime.relayer.fetchCoprocessorSignatures(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
payload: {
|
|
59
|
-
zkProof,
|
|
60
|
-
extraData,
|
|
61
|
-
},
|
|
62
|
-
options: relayerOptions,
|
|
53
|
+
await context.runtime.relayer.fetchCoprocessorSignatures(context, {
|
|
54
|
+
payload: {
|
|
55
|
+
zkProof,
|
|
63
56
|
},
|
|
64
|
-
|
|
57
|
+
options: relayerOptions,
|
|
58
|
+
});
|
|
65
59
|
|
|
66
60
|
// 3. Check that the handles and the one in the fetch result
|
|
67
61
|
// Note: this check is theoretically unnecessary
|
|
@@ -73,7 +67,7 @@ export async function fetchVerifiedInputProof(context: Context, parameters: Para
|
|
|
73
67
|
const inputProof = createInputProofFromInputHandles({
|
|
74
68
|
coprocessorEip712Signatures: coprocessorSignatures,
|
|
75
69
|
inputHandles,
|
|
76
|
-
extraData,
|
|
70
|
+
extraData: zkProof.getExtraData(),
|
|
77
71
|
signedHandleAccess: {
|
|
78
72
|
userAddress: zkProof.userAddress,
|
|
79
73
|
contractAddress: zkProof.contractAddress,
|
package/core/handle/FheType.ts
CHANGED
|
@@ -418,8 +418,7 @@ function _assertMinimumEncryptionBitWidth(bw: number): void {
|
|
|
418
418
|
);
|
|
419
419
|
}
|
|
420
420
|
|
|
421
|
-
export function
|
|
422
|
-
const bn = bytesToBigInt(bytes);
|
|
421
|
+
export function bigintToClearValueType<etype extends FheType>(fheType: etype, bn: bigint): ClearValueType<etype> {
|
|
423
422
|
// needed to type narrowing
|
|
424
423
|
const ft: FheType = fheType;
|
|
425
424
|
|
|
@@ -455,6 +454,10 @@ export function bytesToClearValueType<etype extends FheType>(fheType: etype, byt
|
|
|
455
454
|
}
|
|
456
455
|
}
|
|
457
456
|
|
|
457
|
+
export function bytesToClearValueType<etype extends FheType>(fheType: etype, bytes: Bytes): ClearValueType<etype> {
|
|
458
|
+
return bigintToClearValueType(fheType, bytesToBigInt(bytes));
|
|
459
|
+
}
|
|
460
|
+
|
|
458
461
|
/**
|
|
459
462
|
* Asserts that `value` is already the correct JS type for the given `fheTypeName`
|
|
460
463
|
* and returns it narrowed. No conversion is performed.
|
|
@@ -70,7 +70,7 @@ class KmsSignersContextImpl implements KmsSignersContext {
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
public has(signer: string): boolean {
|
|
73
|
-
return this.#kmsSignersSet.has(signer);
|
|
73
|
+
return this.#kmsSignersSet.has(signer.toLowerCase());
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
public static [VERIFY_FUNC](instance: unknown, owner: FhevmRuntime): void {
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { FhevmRuntime } from '../types/coreFhevmRuntime.js';
|
|
2
|
+
import type { Handle } from '../types/encryptedTypes-p.js';
|
|
3
|
+
import type { ChecksummedAddress } from '../types/primitives.js';
|
|
4
|
+
import type { HandleContractPair } from '../types/other-p.js';
|
|
5
|
+
import { AclUserDecryptionError } from '../errors/AclError.js';
|
|
6
|
+
import { isHandleDelegatedForUserDecryption } from './isHandleDelegatedForUserDecryption-p.js';
|
|
7
|
+
|
|
8
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
9
|
+
|
|
10
|
+
type Context = {
|
|
11
|
+
readonly runtime: FhevmRuntime;
|
|
12
|
+
readonly client: NonNullable<object>;
|
|
13
|
+
readonly options: { readonly batchRpcCalls: boolean };
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
type Parameters = {
|
|
17
|
+
readonly address: ChecksummedAddress;
|
|
18
|
+
readonly delegator: ChecksummedAddress;
|
|
19
|
+
readonly delegate: ChecksummedAddress;
|
|
20
|
+
readonly handleContractPairs: ReadonlyArray<{
|
|
21
|
+
readonly handle: Handle;
|
|
22
|
+
readonly contractAddress: ChecksummedAddress;
|
|
23
|
+
}>;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
27
|
+
|
|
28
|
+
export async function checkDelegation(context: Context, parameters: Parameters): Promise<void> {
|
|
29
|
+
const { address, delegator, delegate, handleContractPairs } = parameters;
|
|
30
|
+
|
|
31
|
+
if (handleContractPairs.length === 0) {
|
|
32
|
+
throw new Error('checkDelegation requires at least one (handle, contractAddress) pair');
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// runtime defensive check, use lowercase
|
|
36
|
+
function getKey(addr: string, handleBytes32Hex: string): string {
|
|
37
|
+
return `${addr}:${handleBytes32Hex}`.toLowerCase();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// 1. Verify rule: delegator !== delegate
|
|
41
|
+
if (delegator.toLowerCase() === delegate.toLowerCase()) {
|
|
42
|
+
throw new AclUserDecryptionError({
|
|
43
|
+
contractAddress: address,
|
|
44
|
+
message: `delegator ${delegator} cannot be equal to delegate`,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// 2. Verify rules: delegator !== contractAddress & delegate !== contractAddress
|
|
49
|
+
for (const pair of handleContractPairs) {
|
|
50
|
+
if (delegator.toLowerCase() === pair.contractAddress.toLowerCase()) {
|
|
51
|
+
throw new AclUserDecryptionError({
|
|
52
|
+
contractAddress: address,
|
|
53
|
+
message: `delegator ${delegator} cannot be equal to contractAddress`,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
if (delegate.toLowerCase() === pair.contractAddress.toLowerCase()) {
|
|
57
|
+
throw new AclUserDecryptionError({
|
|
58
|
+
contractAddress: address,
|
|
59
|
+
message: `delegate ${delegate} cannot be equal to contractAddress`,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// 3. Collect all unique (contractAddress, handle) pairs to avoid duplicate RPC calls
|
|
65
|
+
const allChecks: HandleContractPair[] = [];
|
|
66
|
+
const seenKeys = new Set<string>();
|
|
67
|
+
|
|
68
|
+
for (const pair of handleContractPairs) {
|
|
69
|
+
// runtime defensive check, use lowercase
|
|
70
|
+
const key = getKey(pair.contractAddress, pair.handle.bytes32Hex);
|
|
71
|
+
if (!seenKeys.has(key)) {
|
|
72
|
+
seenKeys.add(key);
|
|
73
|
+
allChecks.push({
|
|
74
|
+
handle: pair.handle,
|
|
75
|
+
contractAddress: pair.contractAddress,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (allChecks.length === 0) {
|
|
81
|
+
throw new Error('checkDelegation: no delegation checks to perform (unexpected empty dedup result)');
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// 4. Single batched RPC call for all unique checks
|
|
85
|
+
const allResults = await isHandleDelegatedForUserDecryption(context, {
|
|
86
|
+
address,
|
|
87
|
+
delegator,
|
|
88
|
+
delegate,
|
|
89
|
+
pairs: allChecks,
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
// 5. Build result map for lookup
|
|
93
|
+
const resultMap = new Map<string, boolean>();
|
|
94
|
+
for (const [i, check] of allChecks.entries()) {
|
|
95
|
+
const result = allResults[i];
|
|
96
|
+
// tsc: noUncheckedIndexedAccess
|
|
97
|
+
if (result === undefined) {
|
|
98
|
+
throw new Error(`Missing result at index ${i}`);
|
|
99
|
+
}
|
|
100
|
+
const key = getKey(check.contractAddress, check.handle.bytes32Hex);
|
|
101
|
+
resultMap.set(key, result);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// 6. Verify delegation for each requested pair
|
|
105
|
+
for (const pair of handleContractPairs) {
|
|
106
|
+
const key = getKey(pair.contractAddress, pair.handle.bytes32Hex);
|
|
107
|
+
if (resultMap.get(key) !== true) {
|
|
108
|
+
throw new AclUserDecryptionError({
|
|
109
|
+
contractAddress: address,
|
|
110
|
+
message: `Delegate ${delegate} is not delegated by ${delegator} to user decrypt handle ${pair.handle.bytes32Hex} on contract ${pair.contractAddress}!`,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { FhevmRuntime } from '../types/coreFhevmRuntime.js';
|
|
2
|
+
import type { ChecksummedAddress, Uint64BigInt } from '../types/primitives.js';
|
|
3
|
+
import { isUint64 } from '../base/uint.js';
|
|
4
|
+
import { getUserDecryptionDelegationExpirationDateAbi } from '../host-contracts/abi-fragments/fragments.js';
|
|
5
|
+
import { getTrustedClient } from '../runtime/CoreFhevm-p.js';
|
|
6
|
+
|
|
7
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
8
|
+
|
|
9
|
+
type Context = {
|
|
10
|
+
readonly runtime: FhevmRuntime;
|
|
11
|
+
readonly client: NonNullable<object>;
|
|
12
|
+
readonly options: { readonly batchRpcCalls: boolean };
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
type Parameters = {
|
|
16
|
+
readonly address: ChecksummedAddress;
|
|
17
|
+
readonly delegator: ChecksummedAddress;
|
|
18
|
+
readonly delegate: ChecksummedAddress;
|
|
19
|
+
readonly contractAddress: ChecksummedAddress;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
type ReturnType = Uint64BigInt;
|
|
23
|
+
|
|
24
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
25
|
+
|
|
26
|
+
export async function getUserDecryptionDelegationExpirationDate(
|
|
27
|
+
context: Context,
|
|
28
|
+
parameters: Parameters,
|
|
29
|
+
): Promise<ReturnType> {
|
|
30
|
+
const trustedClient = getTrustedClient(context);
|
|
31
|
+
const address = parameters.address;
|
|
32
|
+
|
|
33
|
+
const res = await context.runtime.ethereum.readContract(trustedClient, {
|
|
34
|
+
address: address,
|
|
35
|
+
abi: getUserDecryptionDelegationExpirationDateAbi,
|
|
36
|
+
args: [parameters.delegator, parameters.delegate, parameters.contractAddress],
|
|
37
|
+
functionName: getUserDecryptionDelegationExpirationDateAbi[0].name,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
if (!isUint64(res)) {
|
|
41
|
+
throw new Error(`Invalid expiration date.`);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return BigInt(res) as Uint64BigInt;
|
|
45
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { ChecksummedAddress } from '../types/primitives.js';
|
|
2
|
+
import type { FhevmRuntime } from '../types/coreFhevmRuntime.js';
|
|
3
|
+
import type { Handle } from '../types/encryptedTypes-p.js';
|
|
4
|
+
import type { HandleContractPair } from '../types/other-p.js';
|
|
5
|
+
import { isHandleDelegatedForUserDecryptionAbi } from './abi-fragments/fragments.js';
|
|
6
|
+
import { getTrustedClient } from '../runtime/CoreFhevm-p.js';
|
|
7
|
+
import { executeWithBatching } from '../base/promise.js';
|
|
8
|
+
|
|
9
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
10
|
+
|
|
11
|
+
type Context = {
|
|
12
|
+
readonly runtime: FhevmRuntime;
|
|
13
|
+
readonly client: NonNullable<object>;
|
|
14
|
+
readonly options: { readonly batchRpcCalls: boolean };
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
type Parameters = {
|
|
18
|
+
readonly address: ChecksummedAddress;
|
|
19
|
+
readonly delegate: ChecksummedAddress;
|
|
20
|
+
readonly delegator: ChecksummedAddress;
|
|
21
|
+
readonly pairs: readonly HandleContractPair[];
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
type ReturnType = boolean[];
|
|
25
|
+
|
|
26
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
27
|
+
|
|
28
|
+
export async function isHandleDelegatedForUserDecryption(
|
|
29
|
+
context: Context,
|
|
30
|
+
parameters: Parameters,
|
|
31
|
+
): Promise<ReturnType> {
|
|
32
|
+
const { address, delegate, delegator, pairs } = parameters;
|
|
33
|
+
|
|
34
|
+
const rpcCalls = pairs.map(
|
|
35
|
+
(pair) => () =>
|
|
36
|
+
_isHandleDelegatedForUserDecryption(context, {
|
|
37
|
+
address,
|
|
38
|
+
delegate,
|
|
39
|
+
delegator,
|
|
40
|
+
handle: pair.handle,
|
|
41
|
+
contractAddress: pair.contractAddress,
|
|
42
|
+
}),
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
const results = await executeWithBatching(rpcCalls, context.options.batchRpcCalls);
|
|
46
|
+
|
|
47
|
+
return results;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
51
|
+
|
|
52
|
+
async function _isHandleDelegatedForUserDecryption(
|
|
53
|
+
context: Context,
|
|
54
|
+
parameters: {
|
|
55
|
+
readonly address: ChecksummedAddress;
|
|
56
|
+
readonly delegator: ChecksummedAddress;
|
|
57
|
+
readonly delegate: ChecksummedAddress;
|
|
58
|
+
readonly contractAddress: ChecksummedAddress;
|
|
59
|
+
readonly handle: Handle;
|
|
60
|
+
},
|
|
61
|
+
): Promise<boolean> {
|
|
62
|
+
const { address, delegator, delegate, contractAddress, handle } = parameters;
|
|
63
|
+
const trustedClient = getTrustedClient(context);
|
|
64
|
+
|
|
65
|
+
const res = await context.runtime.ethereum.readContract(trustedClient, {
|
|
66
|
+
address: address,
|
|
67
|
+
abi: isHandleDelegatedForUserDecryptionAbi,
|
|
68
|
+
args: [delegator, delegate, contractAddress, handle.bytes32Hex],
|
|
69
|
+
functionName: isHandleDelegatedForUserDecryptionAbi[0].name,
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
if (typeof res !== 'boolean') {
|
|
73
|
+
throw new Error(`Invalid isHandleDelegatedForUserDecryptionAbi result.`);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return res;
|
|
77
|
+
}
|