@fhevm/sdk 1.1.0-alpha.4 → 1.1.0-alpha.6
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/canDecryptPublicValue.js +1 -1
- package/_cjs/core/actions/base/canDecryptPublicValue.js.map +1 -1
- package/_cjs/core/actions/base/canDecryptPublicValues.js +1 -1
- package/_cjs/core/actions/base/canDecryptPublicValues.js.map +1 -1
- package/_cjs/core/actions/base/{fetchKmsSignedcryptedShares.js → fetchKmsSigncryptedShares.js} +5 -5
- package/_cjs/core/actions/base/fetchKmsSigncryptedShares.js.map +1 -0
- package/_cjs/core/actions/base/index.js +3 -3
- package/_cjs/core/actions/base/index.js.map +1 -1
- package/_cjs/core/actions/base/readKmsSignersContext.js +2 -1
- package/_cjs/core/actions/base/readKmsSignersContext.js.map +1 -1
- package/_cjs/core/actions/chain/parseTransportKeyPair.js.map +1 -1
- package/_cjs/core/actions/decrypt/decryptKmsSigncryptedShares.js +13 -0
- package/_cjs/core/actions/decrypt/decryptKmsSigncryptedShares.js.map +1 -0
- package/_cjs/core/actions/decrypt/decryptValue.js +3 -1
- package/_cjs/core/actions/decrypt/decryptValue.js.map +1 -1
- package/_cjs/core/actions/decrypt/decryptValues.js +3 -1
- package/_cjs/core/actions/decrypt/decryptValues.js.map +1 -1
- package/_cjs/core/actions/decrypt/decryptValuesFromPairs.js +3 -1
- package/_cjs/core/actions/decrypt/decryptValuesFromPairs.js.map +1 -1
- package/_cjs/core/actions/decrypt/generateTransportKeyPair.js +3 -1
- package/_cjs/core/actions/decrypt/generateTransportKeyPair.js.map +1 -1
- package/_cjs/core/actions/decrypt/index.js +3 -3
- package/_cjs/core/actions/decrypt/index.js.map +1 -1
- package/_cjs/core/actions/encrypt/encryptValue.js +3 -1
- package/_cjs/core/actions/encrypt/encryptValue.js.map +1 -1
- package/_cjs/core/actions/encrypt/encryptValues.js +3 -1
- package/_cjs/core/actions/encrypt/encryptValues.js.map +1 -1
- package/_cjs/core/actions/encrypt/generateZkProof.js +5 -1
- package/_cjs/core/actions/encrypt/generateZkProof.js.map +1 -1
- package/_cjs/core/actions/host/readFhevmExecutorContractData.js +7 -7
- package/_cjs/core/actions/host/readFhevmExecutorContractData.js.map +1 -1
- package/_cjs/core/actions/host/readInputVerifierContractData.js +1 -1
- package/_cjs/core/actions/host/readInputVerifierContractData.js.map +1 -1
- package/_cjs/core/actions/host/readKmsVerifierContractData.js +6 -5
- package/_cjs/core/actions/host/readKmsVerifierContractData.js.map +1 -1
- package/_cjs/core/actions/host/resolveFhevmConfig.js +7 -1
- package/_cjs/core/actions/host/resolveFhevmConfig.js.map +1 -1
- package/_cjs/core/base/bytes.js +2 -1
- package/_cjs/core/base/bytes.js.map +1 -1
- package/_cjs/core/base/environment.js +122 -0
- package/_cjs/core/base/environment.js.map +1 -0
- package/_cjs/core/base/errors/Sha256VerificationError.js +15 -0
- package/_cjs/core/base/errors/Sha256VerificationError.js.map +1 -0
- package/_cjs/core/base/inflate.js +282 -0
- package/_cjs/core/base/inflate.js.map +1 -0
- package/_cjs/core/base/isomorphicFs.js +24 -0
- package/_cjs/core/base/isomorphicFs.js.map +1 -0
- package/_cjs/core/base/isomorphicWorker.js +42 -111
- package/_cjs/core/base/isomorphicWorker.js.map +1 -1
- package/_cjs/core/base/object.js +23 -0
- package/_cjs/core/base/object.js.map +1 -1
- package/_cjs/core/base/semver.js +166 -0
- package/_cjs/core/base/semver.js.map +1 -0
- package/_cjs/core/base/uint.js +20 -3
- package/_cjs/core/base/uint.js.map +1 -1
- package/_cjs/core/base/wasm.js +15 -55
- package/_cjs/core/base/wasm.js.map +1 -1
- package/_cjs/core/chains/definitions/localTestnet.js +3 -0
- package/_cjs/core/chains/definitions/localTestnet.js.map +1 -1
- package/_cjs/core/chains/definitions/mainnet.js +1 -0
- package/_cjs/core/chains/definitions/mainnet.js.map +1 -1
- package/_cjs/core/chains/definitions/sepolia.js +1 -0
- package/_cjs/core/chains/definitions/sepolia.js.map +1 -1
- package/_cjs/core/clients/decorators/base.js +5 -0
- package/_cjs/core/clients/decorators/base.js.map +1 -1
- package/_cjs/core/clients/decorators/decrypt-p.js +13 -0
- package/_cjs/core/clients/decorators/decrypt-p.js.map +1 -0
- package/_cjs/core/clients/decorators/decrypt.js +4 -7
- package/_cjs/core/clients/decorators/decrypt.js.map +1 -1
- package/_cjs/core/clients/decorators/encrypt-p.js +5 -1
- package/_cjs/core/clients/decorators/encrypt-p.js.map +1 -1
- package/_cjs/core/clients/decorators/encrypt.js.map +1 -1
- package/_cjs/core/coprocessor/ZkProof-p.js +4 -2
- package/_cjs/core/coprocessor/ZkProof-p.js.map +1 -1
- package/_cjs/core/coprocessor/ZkProofBuilder-p.js +2 -1
- package/_cjs/core/coprocessor/ZkProofBuilder-p.js.map +1 -1
- package/_cjs/core/coprocessor/encrypt.js +1 -1
- package/_cjs/core/coprocessor/encrypt.js.map +1 -1
- package/_cjs/core/errors/RelayerResponseStatusError.js +3 -2
- package/_cjs/core/errors/RelayerResponseStatusError.js.map +1 -1
- package/_cjs/core/host-contracts/HostContractVersion-p.js +26 -4
- package/_cjs/core/host-contracts/HostContractVersion-p.js.map +1 -1
- package/_cjs/core/host-contracts/KmsSignersContext-p.js +23 -5
- package/_cjs/core/host-contracts/KmsSignersContext-p.js.map +1 -1
- package/_cjs/core/host-contracts/abi-fragments/fragments.js +21 -1
- package/_cjs/core/host-contracts/abi-fragments/fragments.js.map +1 -1
- package/_cjs/core/host-contracts/canDecryptValuesFromPairs.js +1 -1
- package/_cjs/core/host-contracts/canDecryptValuesFromPairs.js.map +1 -1
- package/_cjs/core/host-contracts/checkAllowedForDecryption.js +2 -2
- package/_cjs/core/host-contracts/checkAllowedForDecryption.js.map +1 -1
- package/_cjs/core/host-contracts/checkDelegation.js +8 -8
- package/_cjs/core/host-contracts/checkDelegation.js.map +1 -1
- package/_cjs/core/host-contracts/checkPersistAllowed.js +9 -9
- package/_cjs/core/host-contracts/checkPersistAllowed.js.map +1 -1
- package/_cjs/core/host-contracts/getAclAddress-p.js +1 -2
- package/_cjs/core/host-contracts/getAclAddress-p.js.map +1 -1
- package/_cjs/core/host-contracts/getCurrentKmsContextAndEpoch-p.js +51 -0
- package/_cjs/core/host-contracts/getCurrentKmsContextAndEpoch-p.js.map +1 -0
- package/_cjs/core/host-contracts/getCurrentKmsContextId-p.js +4 -5
- package/_cjs/core/host-contracts/getCurrentKmsContextId-p.js.map +1 -1
- package/_cjs/core/host-contracts/getFhevmExecutorAddress-p.js +1 -1
- package/_cjs/core/host-contracts/getFhevmExecutorAddress-p.js.map +1 -1
- package/_cjs/core/host-contracts/getHandleVersion-p.js +1 -2
- package/_cjs/core/host-contracts/getHandleVersion-p.js.map +1 -1
- package/_cjs/core/host-contracts/getHcuLimitAddress-p.js +1 -2
- package/_cjs/core/host-contracts/getHcuLimitAddress-p.js.map +1 -1
- package/_cjs/core/host-contracts/getInputVerifierAddress-p.js +1 -2
- package/_cjs/core/host-contracts/getInputVerifierAddress-p.js.map +1 -1
- package/_cjs/core/host-contracts/getKmsContextSignersAndThreshold-p.js +5 -7
- package/_cjs/core/host-contracts/getKmsContextSignersAndThreshold-p.js.map +1 -1
- package/_cjs/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js +4 -5
- package/_cjs/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js.map +1 -1
- package/_cjs/core/host-contracts/getSignersForKmsContext-p.js +3 -5
- package/_cjs/core/host-contracts/getSignersForKmsContext-p.js.map +1 -1
- package/_cjs/core/host-contracts/isAllowedForDecryption.js +4 -4
- package/_cjs/core/host-contracts/isAllowedForDecryption.js.map +1 -1
- package/_cjs/core/host-contracts/isHandleDelegatedForUserDecryption-p.js +5 -5
- package/_cjs/core/host-contracts/isHandleDelegatedForUserDecryption-p.js.map +1 -1
- package/_cjs/core/host-contracts/isUserDecryptable.js +2 -2
- package/_cjs/core/host-contracts/isUserDecryptable.js.map +1 -1
- package/_cjs/core/host-contracts/persistAllowed.js +4 -4
- package/_cjs/core/host-contracts/persistAllowed.js.map +1 -1
- package/_cjs/core/host-contracts/readKmsSignersContext-p.js +74 -25
- package/_cjs/core/host-contracts/readKmsSignersContext-p.js.map +1 -1
- package/_cjs/core/key/FheEncryptionKeyWasm-p.js +12 -4
- package/_cjs/core/key/FheEncryptionKeyWasm-p.js.map +1 -1
- package/_cjs/core/key/deserializeFheEncryptionKey.js +3 -0
- package/_cjs/core/key/deserializeFheEncryptionKey.js.map +1 -1
- package/_cjs/core/key/fetchFheEncryptionKey.js +1 -1
- package/_cjs/core/key/fetchFheEncryptionKey.js.map +1 -1
- package/_cjs/core/key/fetchFheEncryptionKeyBytes.js.map +1 -1
- package/_cjs/core/key/serializeFheEncryptionKey.js +4 -1
- package/_cjs/core/key/serializeFheEncryptionKey.js.map +1 -1
- package/_cjs/core/kms/KmsSigncryptedShares-p.js +9 -1
- package/_cjs/core/kms/KmsSigncryptedShares-p.js.map +1 -1
- package/_cjs/core/kms/SignedDecryptionPermit-p.js +5 -1
- package/_cjs/core/kms/SignedDecryptionPermit-p.js.map +1 -1
- package/_cjs/core/kms/TransportKeyPair-p.js +27 -7
- package/_cjs/core/kms/TransportKeyPair-p.js.map +1 -1
- package/_cjs/core/kms/createKmsUserDecryptEip712.js +8 -0
- package/_cjs/core/kms/createKmsUserDecryptEip712.js.map +1 -1
- package/_cjs/core/kms/createKmsUserDecryptEip712V2.js +97 -0
- package/_cjs/core/kms/createKmsUserDecryptEip712V2.js.map +1 -0
- package/_cjs/core/kms/{decryptKmsSignedcryptedShares-p.js → decryptKmsSigncryptedShares-p.js} +10 -3
- package/_cjs/core/kms/decryptKmsSigncryptedShares-p.js.map +1 -0
- package/_cjs/core/kms/decryptValuesFromPairs.js +4 -4
- package/_cjs/core/kms/decryptValuesFromPairs.js.map +1 -1
- package/_cjs/core/kms/{fetchKmsSignedcryptedShares-p.js → fetchKmsSigncryptedShares-p.js} +10 -6
- package/_cjs/core/kms/fetchKmsSigncryptedShares-p.js.map +1 -0
- package/_cjs/core/kms/kmsExtraData.js +53 -10
- package/_cjs/core/kms/kmsExtraData.js.map +1 -1
- package/_cjs/core/kms/kmsUserDecryptEip712V2Types.js +25 -0
- package/_cjs/core/kms/kmsUserDecryptEip712V2Types.js.map +1 -0
- package/_cjs/core/kms/publicDecrypt.js +5 -3
- package/_cjs/core/kms/publicDecrypt.js.map +1 -1
- package/_cjs/core/modules/decrypt/mock.js +1 -23
- package/_cjs/core/modules/decrypt/mock.js.map +1 -1
- package/_cjs/core/modules/decrypt/module/api-p.js +51 -23
- package/_cjs/core/modules/decrypt/module/api-p.js.map +1 -1
- package/_cjs/core/modules/decrypt/module/index.js +5 -27
- package/_cjs/core/modules/decrypt/module/index.js.map +1 -1
- package/_cjs/core/modules/decrypt/module/init-p.js +155 -49
- package/_cjs/core/modules/decrypt/module/init-p.js.map +1 -1
- package/_cjs/core/modules/encrypt/mock.js +26 -8
- package/_cjs/core/modules/encrypt/mock.js.map +1 -1
- package/_cjs/core/modules/encrypt/module/api-p.js +50 -21
- package/_cjs/core/modules/encrypt/module/api-p.js.map +1 -1
- package/_cjs/core/modules/encrypt/module/index.js +3 -3
- package/_cjs/core/modules/encrypt/module/index.js.map +1 -1
- package/_cjs/core/modules/encrypt/module/init-p.js +211 -69
- package/_cjs/core/modules/encrypt/module/init-p.js.map +1 -1
- package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js +1 -1
- package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +1 -1
- package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js +1 -1
- package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -1
- package/_cjs/core/modules/relayer/module/RelayerAsyncRequest.js +28 -4
- package/_cjs/core/modules/relayer/module/RelayerAsyncRequest.js.map +1 -1
- package/_cjs/core/modules/relayer/module/fetchFheEncryptionKeySource.js +5 -1
- package/_cjs/core/modules/relayer/module/fetchFheEncryptionKeySource.js.map +1 -1
- package/_cjs/core/modules/relayer/module/readErrorMessage.js +29 -0
- package/_cjs/core/modules/relayer/module/readErrorMessage.js.map +1 -0
- package/_cjs/core/runtime/CoreFhevm-p.js +171 -5
- package/_cjs/core/runtime/CoreFhevm-p.js.map +1 -1
- package/_cjs/core/runtime/HyperWasmSolver-p.js +187 -0
- package/_cjs/core/runtime/HyperWasmSolver-p.js.map +1 -0
- package/_cjs/core/runtime/ProtocolVersionResolver-p.js +270 -0
- package/_cjs/core/runtime/ProtocolVersionResolver-p.js.map +1 -0
- package/_cjs/core/runtime/initFhevmDecryptRuntime-p.js +1 -1
- package/_cjs/core/runtime/initFhevmDecryptRuntime-p.js.map +1 -1
- package/_cjs/core/runtime/initFhevmEncryptRuntime-p.js +1 -1
- package/_cjs/core/runtime/initFhevmEncryptRuntime-p.js.map +1 -1
- package/_cjs/core/runtime/initFhevmRuntime-p.js +4 -1
- package/_cjs/core/runtime/initFhevmRuntime-p.js.map +1 -1
- package/_cjs/core/runtime/resolveFhevmVersions-p.js +48 -0
- package/_cjs/core/runtime/resolveFhevmVersions-p.js.map +1 -0
- package/_cjs/core/runtimeConfig-p.js +10 -0
- package/_cjs/core/runtimeConfig-p.js.map +1 -1
- package/_cjs/core/types/{zkProofBuilder.js → moduleVersions.js} +1 -1
- package/_cjs/core/types/moduleVersions.js.map +1 -0
- package/_cjs/core/types/{fhevmUser.js → wasmAssets.js} +1 -1
- package/_cjs/core/types/wasmAssets.js.map +1 -0
- package/_cjs/core/types/{fhevmDecryptionKey.js → zkProofBuilder-p.js} +1 -1
- package/_cjs/core/types/zkProofBuilder-p.js.map +1 -0
- package/_cjs/core/utils-p/decrypt/verifyTkmsPublicKey.js +1 -0
- package/_cjs/core/utils-p/decrypt/verifyTkmsPublicKey.js.map +1 -1
- package/_cjs/ethers/internal/config.js +1 -18
- package/_cjs/ethers/internal/config.js.map +1 -1
- package/_cjs/viem/internal/config.js +1 -18
- package/_cjs/viem/internal/config.js.map +1 -1
- package/_cjs/wasm/tfhe/TfheApi.d.ts +12 -12
- package/_cjs/wasm/tfhe/loadTfheLib.js +11 -11
- package/_cjs/wasm/tfhe/loadTfheLib.js.map +2 -2
- package/_cjs/wasm/tfhe/v1.5.3/startWorkers.js +26 -9
- package/_cjs/wasm/tfhe/v1.5.3/startWorkers.js.map +2 -2
- package/_cjs/wasm/tfhe/v1.5.3/tfhe.d.ts +7 -0
- package/_cjs/wasm/tfhe/v1.5.3/tfhe.js +6 -1
- package/_cjs/wasm/tfhe/v1.5.3/tfhe.js.map +2 -2
- package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/startWorkers.js +28 -11
- package/_cjs/wasm/tfhe/v1.6.2/startWorkers.js.map +7 -0
- package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe-worker.mjs +40 -40
- package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.d.ts +92 -85
- package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.js +251 -443
- package/_cjs/wasm/tfhe/v1.6.2/tfhe.js.map +7 -0
- package/_cjs/wasm/tfhe/v1.6.2/tfhe_bg.wasm +0 -0
- package/_cjs/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js +35 -0
- package/_cjs/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js.map +7 -0
- package/_cjs/wasm/tkms/loadKmsLib.js.map +1 -1
- package/_cjs/wasm/tkms/v0.13.10/kms_lib.d.ts +4 -0
- package/_cjs/wasm/tkms/v0.13.10/kms_lib.js +6 -1
- package/_cjs/wasm/tkms/v0.13.10/kms_lib.js.map +2 -2
- package/_cjs/wasm/tkms/v0.13.20-0/kms_lib.d.ts +4 -0
- package/_cjs/wasm/tkms/v0.13.20-0/kms_lib.js +6 -1
- package/_cjs/wasm/tkms/v0.13.20-0/kms_lib.js.map +2 -2
- package/_cjs/wasm/wasmBaseUrl.js +12 -7
- package/_cjs/wasm/wasmBaseUrl.js.map +2 -2
- package/_esm/core/_version.js +1 -1
- package/_esm/core/actions/base/canDecryptPublicValue.js +1 -1
- package/_esm/core/actions/base/canDecryptPublicValue.js.map +1 -1
- package/_esm/core/actions/base/canDecryptPublicValues.js +1 -1
- package/_esm/core/actions/base/canDecryptPublicValues.js.map +1 -1
- package/_esm/core/actions/base/{fetchKmsSignedcryptedShares.js → fetchKmsSigncryptedShares.js} +4 -4
- package/_esm/core/actions/base/fetchKmsSigncryptedShares.js.map +1 -0
- package/_esm/core/actions/base/index.js +1 -1
- package/_esm/core/actions/base/index.js.map +1 -1
- package/_esm/core/actions/base/readKmsSignersContext.js +2 -1
- package/_esm/core/actions/base/readKmsSignersContext.js.map +1 -1
- package/_esm/core/actions/chain/parseTransportKeyPair.js.map +1 -1
- package/_esm/core/actions/decrypt/decryptKmsSigncryptedShares.js +11 -0
- package/_esm/core/actions/decrypt/decryptKmsSigncryptedShares.js.map +1 -0
- package/_esm/core/actions/decrypt/decryptValue.js +3 -1
- package/_esm/core/actions/decrypt/decryptValue.js.map +1 -1
- package/_esm/core/actions/decrypt/decryptValues.js +3 -1
- package/_esm/core/actions/decrypt/decryptValues.js.map +1 -1
- package/_esm/core/actions/decrypt/decryptValuesFromPairs.js +3 -1
- package/_esm/core/actions/decrypt/decryptValuesFromPairs.js.map +1 -1
- package/_esm/core/actions/decrypt/generateTransportKeyPair.js +3 -1
- package/_esm/core/actions/decrypt/generateTransportKeyPair.js.map +1 -1
- package/_esm/core/actions/decrypt/index.js +1 -1
- package/_esm/core/actions/decrypt/index.js.map +1 -1
- package/_esm/core/actions/encrypt/encryptValue.js +3 -1
- package/_esm/core/actions/encrypt/encryptValue.js.map +1 -1
- package/_esm/core/actions/encrypt/encryptValues.js +3 -1
- package/_esm/core/actions/encrypt/encryptValues.js.map +1 -1
- package/_esm/core/actions/encrypt/generateZkProof.js +5 -1
- package/_esm/core/actions/encrypt/generateZkProof.js.map +1 -1
- package/_esm/core/actions/host/readFhevmExecutorContractData.js +8 -8
- package/_esm/core/actions/host/readFhevmExecutorContractData.js.map +1 -1
- package/_esm/core/actions/host/readInputVerifierContractData.js +2 -2
- package/_esm/core/actions/host/readInputVerifierContractData.js.map +1 -1
- package/_esm/core/actions/host/readKmsVerifierContractData.js +7 -6
- package/_esm/core/actions/host/readKmsVerifierContractData.js.map +1 -1
- package/_esm/core/actions/host/resolveFhevmConfig.js +7 -1
- package/_esm/core/actions/host/resolveFhevmConfig.js.map +1 -1
- package/_esm/core/base/bytes.js +2 -1
- package/_esm/core/base/bytes.js.map +1 -1
- package/_esm/core/base/environment.js +164 -0
- package/_esm/core/base/environment.js.map +1 -0
- package/_esm/core/base/errors/Sha256VerificationError.js +11 -0
- package/_esm/core/base/errors/Sha256VerificationError.js.map +1 -0
- package/_esm/core/base/inflate.js +337 -0
- package/_esm/core/base/inflate.js.map +1 -0
- package/_esm/core/base/isomorphicFs.js +21 -0
- package/_esm/core/base/isomorphicFs.js.map +1 -0
- package/_esm/core/base/isomorphicWorker.js +92 -85
- package/_esm/core/base/isomorphicWorker.js.map +1 -1
- package/_esm/core/base/object.js +28 -0
- package/_esm/core/base/object.js.map +1 -1
- package/_esm/core/base/semver.js +164 -0
- package/_esm/core/base/semver.js.map +1 -0
- package/_esm/core/base/uint.js +23 -2
- package/_esm/core/base/uint.js.map +1 -1
- package/_esm/core/base/wasm.js +25 -31
- package/_esm/core/base/wasm.js.map +1 -1
- package/_esm/core/chains/definitions/localTestnet.js +3 -0
- package/_esm/core/chains/definitions/localTestnet.js.map +1 -1
- package/_esm/core/chains/definitions/mainnet.js +1 -0
- package/_esm/core/chains/definitions/mainnet.js.map +1 -1
- package/_esm/core/chains/definitions/sepolia.js +1 -0
- package/_esm/core/chains/definitions/sepolia.js.map +1 -1
- package/_esm/core/clients/decorators/base.js +6 -1
- package/_esm/core/clients/decorators/base.js.map +1 -1
- package/_esm/core/clients/decorators/decrypt-p.js +11 -0
- package/_esm/core/clients/decorators/decrypt-p.js.map +1 -0
- package/_esm/core/clients/decorators/decrypt.js +3 -7
- package/_esm/core/clients/decorators/decrypt.js.map +1 -1
- package/_esm/core/clients/decorators/encrypt-p.js +6 -2
- package/_esm/core/clients/decorators/encrypt-p.js.map +1 -1
- package/_esm/core/clients/decorators/encrypt.js.map +1 -1
- package/_esm/core/coprocessor/ZkProof-p.js +4 -2
- package/_esm/core/coprocessor/ZkProof-p.js.map +1 -1
- package/_esm/core/coprocessor/ZkProofBuilder-p.js +2 -1
- package/_esm/core/coprocessor/ZkProofBuilder-p.js.map +1 -1
- package/_esm/core/coprocessor/encrypt.js +1 -1
- package/_esm/core/coprocessor/encrypt.js.map +1 -1
- package/_esm/core/errors/RelayerResponseStatusError.js +7 -2
- package/_esm/core/errors/RelayerResponseStatusError.js.map +1 -1
- package/_esm/core/host-contracts/HostContractVersion-p.js +34 -3
- package/_esm/core/host-contracts/HostContractVersion-p.js.map +1 -1
- package/_esm/core/host-contracts/KmsSignersContext-p.js +24 -6
- package/_esm/core/host-contracts/KmsSignersContext-p.js.map +1 -1
- package/_esm/core/host-contracts/abi-fragments/fragments.js +24 -0
- package/_esm/core/host-contracts/abi-fragments/fragments.js.map +1 -1
- package/_esm/core/host-contracts/canDecryptValuesFromPairs.js +1 -1
- package/_esm/core/host-contracts/canDecryptValuesFromPairs.js.map +1 -1
- package/_esm/core/host-contracts/checkAllowedForDecryption.js +2 -2
- package/_esm/core/host-contracts/checkAllowedForDecryption.js.map +1 -1
- package/_esm/core/host-contracts/checkDelegation.js +8 -8
- package/_esm/core/host-contracts/checkDelegation.js.map +1 -1
- package/_esm/core/host-contracts/checkPersistAllowed.js +9 -9
- package/_esm/core/host-contracts/checkPersistAllowed.js.map +1 -1
- package/_esm/core/host-contracts/getAclAddress-p.js +1 -2
- package/_esm/core/host-contracts/getAclAddress-p.js.map +1 -1
- package/_esm/core/host-contracts/getCurrentKmsContextAndEpoch-p.js +63 -0
- package/_esm/core/host-contracts/getCurrentKmsContextAndEpoch-p.js.map +1 -0
- package/_esm/core/host-contracts/getCurrentKmsContextId-p.js +6 -7
- package/_esm/core/host-contracts/getCurrentKmsContextId-p.js.map +1 -1
- package/_esm/core/host-contracts/getFhevmExecutorAddress-p.js +1 -1
- package/_esm/core/host-contracts/getFhevmExecutorAddress-p.js.map +1 -1
- package/_esm/core/host-contracts/getHandleVersion-p.js +1 -2
- package/_esm/core/host-contracts/getHandleVersion-p.js.map +1 -1
- package/_esm/core/host-contracts/getHcuLimitAddress-p.js +1 -2
- package/_esm/core/host-contracts/getHcuLimitAddress-p.js.map +1 -1
- package/_esm/core/host-contracts/getInputVerifierAddress-p.js +1 -2
- package/_esm/core/host-contracts/getInputVerifierAddress-p.js.map +1 -1
- package/_esm/core/host-contracts/getKmsContextSignersAndThreshold-p.js +6 -8
- package/_esm/core/host-contracts/getKmsContextSignersAndThreshold-p.js.map +1 -1
- package/_esm/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js +5 -6
- package/_esm/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js.map +1 -1
- package/_esm/core/host-contracts/getSignersForKmsContext-p.js +5 -7
- package/_esm/core/host-contracts/getSignersForKmsContext-p.js.map +1 -1
- package/_esm/core/host-contracts/isAllowedForDecryption.js +4 -4
- package/_esm/core/host-contracts/isAllowedForDecryption.js.map +1 -1
- package/_esm/core/host-contracts/isHandleDelegatedForUserDecryption-p.js +5 -5
- package/_esm/core/host-contracts/isHandleDelegatedForUserDecryption-p.js.map +1 -1
- package/_esm/core/host-contracts/isUserDecryptable.js +2 -2
- package/_esm/core/host-contracts/isUserDecryptable.js.map +1 -1
- package/_esm/core/host-contracts/persistAllowed.js +4 -4
- package/_esm/core/host-contracts/persistAllowed.js.map +1 -1
- package/_esm/core/host-contracts/readKmsSignersContext-p.js +89 -29
- package/_esm/core/host-contracts/readKmsSignersContext-p.js.map +1 -1
- package/_esm/core/key/FheEncryptionKeyWasm-p.js +12 -4
- package/_esm/core/key/FheEncryptionKeyWasm-p.js.map +1 -1
- package/_esm/core/key/deserializeFheEncryptionKey.js +3 -0
- package/_esm/core/key/deserializeFheEncryptionKey.js.map +1 -1
- package/_esm/core/key/fetchFheEncryptionKey.js +1 -1
- package/_esm/core/key/fetchFheEncryptionKey.js.map +1 -1
- package/_esm/core/key/fetchFheEncryptionKeyBytes.js.map +1 -1
- package/_esm/core/key/serializeFheEncryptionKey.js +4 -1
- package/_esm/core/key/serializeFheEncryptionKey.js.map +1 -1
- package/_esm/core/kms/KmsSigncryptedShares-p.js +9 -1
- package/_esm/core/kms/KmsSigncryptedShares-p.js.map +1 -1
- package/_esm/core/kms/SignedDecryptionPermit-p.js +5 -1
- package/_esm/core/kms/SignedDecryptionPermit-p.js.map +1 -1
- package/_esm/core/kms/TransportKeyPair-p.js +28 -7
- package/_esm/core/kms/TransportKeyPair-p.js.map +1 -1
- package/_esm/core/kms/createKmsUserDecryptEip712.js +8 -0
- package/_esm/core/kms/createKmsUserDecryptEip712.js.map +1 -1
- package/_esm/core/kms/createKmsUserDecryptEip712V2.js +98 -0
- package/_esm/core/kms/createKmsUserDecryptEip712V2.js.map +1 -0
- package/_esm/core/kms/{decryptKmsSignedcryptedShares-p.js → decryptKmsSigncryptedShares-p.js} +9 -2
- package/_esm/core/kms/decryptKmsSigncryptedShares-p.js.map +1 -0
- package/_esm/core/kms/decryptValuesFromPairs.js +4 -4
- package/_esm/core/kms/decryptValuesFromPairs.js.map +1 -1
- package/_esm/core/kms/{fetchKmsSignedcryptedShares-p.js → fetchKmsSigncryptedShares-p.js} +12 -6
- package/_esm/core/kms/fetchKmsSigncryptedShares-p.js.map +1 -0
- package/_esm/core/kms/kmsExtraData.js +70 -12
- package/_esm/core/kms/kmsExtraData.js.map +1 -1
- package/_esm/core/kms/kmsUserDecryptEip712V2Types.js +28 -0
- package/_esm/core/kms/kmsUserDecryptEip712V2Types.js.map +1 -0
- package/_esm/core/kms/publicDecrypt.js +5 -3
- package/_esm/core/kms/publicDecrypt.js.map +1 -1
- package/_esm/core/modules/decrypt/mock.js +0 -24
- package/_esm/core/modules/decrypt/mock.js.map +1 -1
- package/_esm/core/modules/decrypt/module/api-p.js +51 -23
- package/_esm/core/modules/decrypt/module/api-p.js.map +1 -1
- package/_esm/core/modules/decrypt/module/index.js +31 -25
- package/_esm/core/modules/decrypt/module/index.js.map +1 -1
- package/_esm/core/modules/decrypt/module/init-p.js +141 -64
- package/_esm/core/modules/decrypt/module/init-p.js.map +1 -1
- package/_esm/core/modules/encrypt/mock.js +26 -9
- package/_esm/core/modules/encrypt/mock.js.map +1 -1
- package/_esm/core/modules/encrypt/module/api-p.js +50 -21
- package/_esm/core/modules/encrypt/module/api-p.js.map +1 -1
- package/_esm/core/modules/encrypt/module/index.js +3 -3
- package/_esm/core/modules/encrypt/module/index.js.map +1 -1
- package/_esm/core/modules/encrypt/module/init-p.js +369 -82
- package/_esm/core/modules/encrypt/module/init-p.js.map +1 -1
- package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js +2 -2
- package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +1 -1
- package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js +2 -2
- package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -1
- package/_esm/core/modules/relayer/module/RelayerAsyncRequest.js +57 -4
- package/_esm/core/modules/relayer/module/RelayerAsyncRequest.js.map +1 -1
- package/_esm/core/modules/relayer/module/fetchFheEncryptionKeySource.js +8 -1
- package/_esm/core/modules/relayer/module/fetchFheEncryptionKeySource.js.map +1 -1
- package/_esm/core/modules/relayer/module/readErrorMessage.js +52 -0
- package/_esm/core/modules/relayer/module/readErrorMessage.js.map +1 -0
- package/_esm/core/runtime/CoreFhevm-p.js +167 -5
- package/_esm/core/runtime/CoreFhevm-p.js.map +1 -1
- package/_esm/core/runtime/HyperWasmSolver-p.js +268 -0
- package/_esm/core/runtime/HyperWasmSolver-p.js.map +1 -0
- package/_esm/core/runtime/ProtocolVersionResolver-p.js +326 -0
- package/_esm/core/runtime/ProtocolVersionResolver-p.js.map +1 -0
- package/_esm/core/runtime/initFhevmDecryptRuntime-p.js +1 -1
- package/_esm/core/runtime/initFhevmDecryptRuntime-p.js.map +1 -1
- package/_esm/core/runtime/initFhevmEncryptRuntime-p.js +1 -1
- package/_esm/core/runtime/initFhevmEncryptRuntime-p.js.map +1 -1
- package/_esm/core/runtime/initFhevmRuntime-p.js +4 -1
- package/_esm/core/runtime/initFhevmRuntime-p.js.map +1 -1
- package/_esm/core/runtime/resolveFhevmVersions-p.js +62 -0
- package/_esm/core/runtime/resolveFhevmVersions-p.js.map +1 -0
- package/_esm/core/runtimeConfig-p.js +9 -0
- package/_esm/core/runtimeConfig-p.js.map +1 -1
- package/_esm/core/types/moduleVersions.js +2 -0
- package/_esm/core/types/moduleVersions.js.map +1 -0
- package/_esm/core/types/wasmAssets.js +2 -0
- package/_esm/core/types/wasmAssets.js.map +1 -0
- package/_esm/core/types/zkProofBuilder-p.js +2 -0
- package/_esm/core/types/zkProofBuilder-p.js.map +1 -0
- package/_esm/core/utils-p/decrypt/verifyTkmsPublicKey.js +1 -0
- package/_esm/core/utils-p/decrypt/verifyTkmsPublicKey.js.map +1 -1
- package/_esm/ethers/internal/config.js +1 -18
- package/_esm/ethers/internal/config.js.map +1 -1
- package/_esm/viem/internal/config.js +1 -18
- package/_esm/viem/internal/config.js.map +1 -1
- package/_esm/wasm/tfhe/TfheApi.d.ts +12 -12
- package/_esm/wasm/tfhe/loadTfheLib.js +11 -11
- package/_esm/wasm/tfhe/v1.5.3/startWorkers.js +41 -20
- package/_esm/wasm/tfhe/v1.5.3/tfhe.d.ts +7 -0
- package/_esm/wasm/tfhe/v1.5.3/tfhe.js +8 -0
- package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/startWorkers.js +46 -25
- package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe-worker.mjs +40 -40
- package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.d.ts +92 -85
- package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.js +253 -442
- package/_esm/wasm/tfhe/v1.6.2/tfhe_bg.wasm +0 -0
- package/_esm/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js +7 -0
- package/_esm/wasm/tkms/v0.13.10/kms_lib.d.ts +4 -0
- package/_esm/wasm/tkms/v0.13.10/kms_lib.js +8 -0
- package/_esm/wasm/tkms/v0.13.20-0/kms_lib.d.ts +4 -0
- package/_esm/wasm/tkms/v0.13.20-0/kms_lib.js +8 -0
- package/_esm/wasm/wasmBaseUrl.js +32 -4
- package/_types/core/actions/base/{fetchKmsSignedcryptedShares.d.ts → fetchKmsSigncryptedShares.d.ts} +7 -7
- package/_types/core/actions/base/fetchKmsSigncryptedShares.d.ts.map +1 -0
- package/_types/core/actions/base/index.d.ts +1 -1
- package/_types/core/actions/base/index.d.ts.map +1 -1
- package/_types/core/actions/base/readKmsSignersContext.d.ts.map +1 -1
- package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts +2 -2
- package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts.map +1 -1
- package/_types/core/actions/chain/parseTransportKeyPair.d.ts +1 -1
- package/_types/core/actions/chain/parseTransportKeyPair.d.ts.map +1 -1
- package/_types/core/actions/decrypt/{decryptKmsSignedcryptedShares.d.ts → decryptKmsSigncryptedShares.d.ts} +4 -4
- package/_types/core/actions/decrypt/decryptKmsSigncryptedShares.d.ts.map +1 -0
- package/_types/core/actions/decrypt/decryptValue.d.ts.map +1 -1
- package/_types/core/actions/decrypt/decryptValues.d.ts.map +1 -1
- package/_types/core/actions/decrypt/decryptValuesFromPairs.d.ts.map +1 -1
- package/_types/core/actions/decrypt/generateTransportKeyPair.d.ts +2 -2
- package/_types/core/actions/decrypt/generateTransportKeyPair.d.ts.map +1 -1
- package/_types/core/actions/decrypt/index.d.ts +1 -1
- package/_types/core/actions/decrypt/index.d.ts.map +1 -1
- package/_types/core/actions/encrypt/encryptValue.d.ts.map +1 -1
- package/_types/core/actions/encrypt/encryptValues.d.ts.map +1 -1
- package/_types/core/actions/encrypt/generateZkProof.d.ts.map +1 -1
- package/_types/core/actions/host/readKmsVerifierContractData.d.ts +1 -0
- package/_types/core/actions/host/readKmsVerifierContractData.d.ts.map +1 -1
- package/_types/core/actions/host/resolveFhevmConfig.d.ts +2 -0
- package/_types/core/actions/host/resolveFhevmConfig.d.ts.map +1 -1
- package/_types/core/base/bytes.d.ts.map +1 -1
- package/_types/core/base/environment.d.ts +92 -0
- package/_types/core/base/environment.d.ts.map +1 -0
- package/_types/core/base/errors/Sha256VerificationError.d.ts +14 -0
- package/_types/core/base/errors/Sha256VerificationError.d.ts.map +1 -0
- package/_types/core/base/inflate.d.ts +25 -0
- package/_types/core/base/inflate.d.ts.map +1 -0
- package/_types/core/base/isomorphicFs.d.ts +2 -0
- package/_types/core/base/isomorphicFs.d.ts.map +1 -0
- package/_types/core/base/isomorphicWorker.d.ts +27 -43
- package/_types/core/base/isomorphicWorker.d.ts.map +1 -1
- package/_types/core/base/object.d.ts +7 -0
- package/_types/core/base/object.d.ts.map +1 -1
- package/_types/core/base/semver.d.ts +39 -0
- package/_types/core/base/semver.d.ts.map +1 -0
- package/_types/core/base/uint.d.ts +13 -2
- package/_types/core/base/uint.d.ts.map +1 -1
- package/_types/core/base/wasm.d.ts +0 -8
- package/_types/core/base/wasm.d.ts.map +1 -1
- package/_types/core/chains/definitions/localTestnet.d.ts +3 -0
- package/_types/core/chains/definitions/localTestnet.d.ts.map +1 -1
- package/_types/core/chains/definitions/mainnet.d.ts +1 -0
- package/_types/core/chains/definitions/mainnet.d.ts.map +1 -1
- package/_types/core/chains/definitions/sepolia.d.ts.map +1 -1
- package/_types/core/clients/decorators/base.d.ts.map +1 -1
- package/_types/core/clients/decorators/decrypt-p.d.ts +4 -0
- package/_types/core/clients/decorators/decrypt-p.d.ts.map +1 -0
- package/_types/core/clients/decorators/decrypt.d.ts +4 -2
- package/_types/core/clients/decorators/decrypt.d.ts.map +1 -1
- package/_types/core/clients/decorators/encrypt-p.d.ts +2 -3
- package/_types/core/clients/decorators/encrypt-p.d.ts.map +1 -1
- package/_types/core/clients/decorators/encrypt.d.ts +4 -2
- package/_types/core/clients/decorators/encrypt.d.ts.map +1 -1
- package/_types/core/coprocessor/ZkProof-p.d.ts +9 -2
- package/_types/core/coprocessor/ZkProof-p.d.ts.map +1 -1
- package/_types/core/coprocessor/ZkProofBuilder-p.d.ts +3 -1
- package/_types/core/coprocessor/ZkProofBuilder-p.d.ts.map +1 -1
- package/_types/core/coprocessor/encrypt.d.ts +2 -0
- package/_types/core/coprocessor/encrypt.d.ts.map +1 -1
- package/_types/core/errors/RelayerResponseStatusError.d.ts +7 -1
- package/_types/core/errors/RelayerResponseStatusError.d.ts.map +1 -1
- package/_types/core/host-contracts/HostContractVersion-p.d.ts +18 -1
- package/_types/core/host-contracts/HostContractVersion-p.d.ts.map +1 -1
- package/_types/core/host-contracts/KmsSignersContext-p.d.ts +2 -1
- package/_types/core/host-contracts/KmsSignersContext-p.d.ts.map +1 -1
- package/_types/core/host-contracts/abi-fragments/fragments.d.ts +5 -0
- package/_types/core/host-contracts/abi-fragments/fragments.d.ts.map +1 -1
- package/_types/core/host-contracts/checkAllowedForDecryption.d.ts +1 -1
- package/_types/core/host-contracts/checkAllowedForDecryption.d.ts.map +1 -1
- package/_types/core/host-contracts/checkDelegation.d.ts +1 -1
- package/_types/core/host-contracts/checkDelegation.d.ts.map +1 -1
- package/_types/core/host-contracts/checkPersistAllowed.d.ts +1 -1
- package/_types/core/host-contracts/checkPersistAllowed.d.ts.map +1 -1
- package/_types/core/host-contracts/getAclAddress-p.d.ts +1 -1
- package/_types/core/host-contracts/getAclAddress-p.d.ts.map +1 -1
- package/_types/core/host-contracts/getCurrentKmsContextAndEpoch-p.d.ts +30 -0
- package/_types/core/host-contracts/getCurrentKmsContextAndEpoch-p.d.ts.map +1 -0
- package/_types/core/host-contracts/getCurrentKmsContextId-p.d.ts +1 -1
- package/_types/core/host-contracts/getCurrentKmsContextId-p.d.ts.map +1 -1
- package/_types/core/host-contracts/getFhevmExecutorAddress-p.d.ts +1 -1
- package/_types/core/host-contracts/getFhevmExecutorAddress-p.d.ts.map +1 -1
- package/_types/core/host-contracts/getHandleVersion-p.d.ts +1 -1
- package/_types/core/host-contracts/getHandleVersion-p.d.ts.map +1 -1
- package/_types/core/host-contracts/getHcuLimitAddress-p.d.ts +1 -1
- package/_types/core/host-contracts/getHcuLimitAddress-p.d.ts.map +1 -1
- package/_types/core/host-contracts/getInputVerifierAddress-p.d.ts +1 -1
- package/_types/core/host-contracts/getInputVerifierAddress-p.d.ts.map +1 -1
- package/_types/core/host-contracts/getKmsContextSignersAndThreshold-p.d.ts +1 -1
- package/_types/core/host-contracts/getKmsContextSignersAndThreshold-p.d.ts.map +1 -1
- package/_types/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.d.ts +1 -1
- package/_types/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.d.ts.map +1 -1
- package/_types/core/host-contracts/getSignersForKmsContext-p.d.ts +2 -2
- package/_types/core/host-contracts/getSignersForKmsContext-p.d.ts.map +1 -1
- package/_types/core/host-contracts/isAllowedForDecryption.d.ts +1 -1
- package/_types/core/host-contracts/isAllowedForDecryption.d.ts.map +1 -1
- package/_types/core/host-contracts/isHandleDelegatedForUserDecryption-p.d.ts +1 -1
- package/_types/core/host-contracts/isHandleDelegatedForUserDecryption-p.d.ts.map +1 -1
- package/_types/core/host-contracts/isUserDecryptable.d.ts +1 -1
- package/_types/core/host-contracts/isUserDecryptable.d.ts.map +1 -1
- package/_types/core/host-contracts/persistAllowed.d.ts +1 -1
- package/_types/core/host-contracts/persistAllowed.d.ts.map +1 -1
- package/_types/core/host-contracts/readKmsSignersContext-p.d.ts +25 -7
- package/_types/core/host-contracts/readKmsSignersContext-p.d.ts.map +1 -1
- package/_types/core/key/FheEncryptionKeyWasm-p.d.ts +3 -1
- package/_types/core/key/FheEncryptionKeyWasm-p.d.ts.map +1 -1
- package/_types/core/key/deserializeFheEncryptionKey.d.ts +2 -0
- package/_types/core/key/deserializeFheEncryptionKey.d.ts.map +1 -1
- package/_types/core/key/fetchFheEncryptionKey.d.ts +3 -1
- package/_types/core/key/fetchFheEncryptionKey.d.ts.map +1 -1
- package/_types/core/key/fetchFheEncryptionKeyBytes.d.ts.map +1 -1
- package/_types/core/key/serializeFheEncryptionKey.d.ts.map +1 -1
- package/_types/core/kms/KmsSigncryptedShares-p.d.ts.map +1 -1
- package/_types/core/kms/SignedDecryptionPermit-p.d.ts.map +1 -1
- package/_types/core/kms/TransportKeyPair-p.d.ts +9 -0
- package/_types/core/kms/TransportKeyPair-p.d.ts.map +1 -1
- package/_types/core/kms/createKmsUserDecryptEip712.d.ts.map +1 -1
- package/_types/core/kms/createKmsUserDecryptEip712V2.d.ts +15 -0
- package/_types/core/kms/createKmsUserDecryptEip712V2.d.ts.map +1 -0
- package/_types/core/kms/{decryptKmsSignedcryptedShares-p.d.ts → decryptKmsSigncryptedShares-p.d.ts} +4 -2
- package/_types/core/kms/decryptKmsSigncryptedShares-p.d.ts.map +1 -0
- package/_types/core/kms/decryptValuesFromPairs.d.ts +2 -0
- package/_types/core/kms/decryptValuesFromPairs.d.ts.map +1 -1
- package/_types/core/kms/{fetchKmsSignedcryptedShares-p.d.ts → fetchKmsSigncryptedShares-p.d.ts} +2 -2
- package/_types/core/kms/fetchKmsSigncryptedShares-p.d.ts.map +1 -0
- package/_types/core/kms/kmsExtraData.d.ts +9 -2
- package/_types/core/kms/kmsExtraData.d.ts.map +1 -1
- package/_types/core/kms/kmsUserDecryptEip712V2Types.d.ts +3 -0
- package/_types/core/kms/kmsUserDecryptEip712V2Types.d.ts.map +1 -0
- package/_types/core/kms/publicDecrypt.d.ts.map +1 -1
- package/_types/core/modules/decrypt/mock.d.ts +1 -2
- package/_types/core/modules/decrypt/mock.d.ts.map +1 -1
- package/_types/core/modules/decrypt/module/api-p.d.ts +2 -2
- package/_types/core/modules/decrypt/module/api-p.d.ts.map +1 -1
- package/_types/core/modules/decrypt/module/index.d.ts +1 -2
- package/_types/core/modules/decrypt/module/index.d.ts.map +1 -1
- package/_types/core/modules/decrypt/module/init-p.d.ts +3 -3
- package/_types/core/modules/decrypt/module/init-p.d.ts.map +1 -1
- package/_types/core/modules/decrypt/types.d.ts +33 -34
- package/_types/core/modules/decrypt/types.d.ts.map +1 -1
- 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/module/index.d.ts.map +1 -1
- package/_types/core/modules/encrypt/module/init-p.d.ts +11 -4
- package/_types/core/modules/encrypt/module/init-p.d.ts.map +1 -1
- package/_types/core/modules/encrypt/types.d.ts +31 -2
- package/_types/core/modules/encrypt/types.d.ts.map +1 -1
- package/_types/core/modules/relayer/module/RelayerAsyncRequest.d.ts +18 -0
- package/_types/core/modules/relayer/module/RelayerAsyncRequest.d.ts.map +1 -1
- package/_types/core/modules/relayer/module/fetchFheEncryptionKeySource.d.ts.map +1 -1
- package/_types/core/modules/relayer/module/readErrorMessage.d.ts +26 -0
- package/_types/core/modules/relayer/module/readErrorMessage.d.ts.map +1 -0
- package/_types/core/runtime/CoreFhevm-p.d.ts +15 -4
- package/_types/core/runtime/CoreFhevm-p.d.ts.map +1 -1
- package/_types/core/runtime/HyperWasmSolver-p.d.ts +71 -0
- package/_types/core/runtime/HyperWasmSolver-p.d.ts.map +1 -0
- package/_types/core/runtime/ProtocolVersionResolver-p.d.ts +29 -0
- package/_types/core/runtime/ProtocolVersionResolver-p.d.ts.map +1 -0
- package/_types/core/runtime/initFhevmRuntime-p.d.ts.map +1 -1
- package/_types/core/runtime/resolveFhevmVersions-p.d.ts +21 -0
- package/_types/core/runtime/resolveFhevmVersions-p.d.ts.map +1 -0
- package/_types/core/runtimeConfig-p.d.ts +3 -2
- package/_types/core/runtimeConfig-p.d.ts.map +1 -1
- package/_types/core/types/auth.d.ts +12 -1
- package/_types/core/types/auth.d.ts.map +1 -1
- package/_types/core/types/coreFhevmClient.d.ts +72 -2
- package/_types/core/types/coreFhevmClient.d.ts.map +1 -1
- package/_types/core/types/coreFhevmRuntime.d.ts +3 -9
- package/_types/core/types/coreFhevmRuntime.d.ts.map +1 -1
- package/_types/core/types/fheEncryptionKey.d.ts +2 -0
- package/_types/core/types/fheEncryptionKey.d.ts.map +1 -1
- package/_types/core/types/fhevmChain.d.ts +3 -0
- package/_types/core/types/fhevmChain.d.ts.map +1 -1
- package/_types/core/types/hostContract.d.ts +1 -0
- package/_types/core/types/hostContract.d.ts.map +1 -1
- package/_types/core/types/index.d.ts +1 -1
- package/_types/core/types/index.d.ts.map +1 -1
- package/_types/core/types/kms-p.d.ts +2 -0
- package/_types/core/types/kms-p.d.ts.map +1 -1
- package/_types/core/types/kms.d.ts +71 -21
- package/_types/core/types/kms.d.ts.map +1 -1
- package/_types/core/types/kmsSignersContext.d.ts +8 -0
- package/_types/core/types/kmsSignersContext.d.ts.map +1 -1
- package/_types/core/types/logger.d.ts +1 -0
- package/_types/core/types/logger.d.ts.map +1 -1
- package/_types/core/types/moduleVersions.d.ts +25 -0
- package/_types/core/types/moduleVersions.d.ts.map +1 -0
- package/_types/core/types/tkms-p.d.ts +2 -0
- package/_types/core/types/tkms-p.d.ts.map +1 -1
- package/_types/core/types/wasmAssets.d.ts +2 -0
- package/_types/core/types/wasmAssets.d.ts.map +1 -0
- package/_types/core/types/{zkProofBuilder.d.ts → zkProofBuilder-p.d.ts} +8 -3
- package/_types/core/types/zkProofBuilder-p.d.ts.map +1 -0
- package/_types/core/utils-p/decrypt/verifyTkmsPublicKey.d.ts +2 -0
- package/_types/core/utils-p/decrypt/verifyTkmsPublicKey.d.ts.map +1 -1
- package/_types/ethers/cleartext/createFhevmCleartextDecryptClient.d.ts +2 -2
- package/_types/ethers/cleartext/createFhevmCleartextDecryptClient.d.ts.map +1 -1
- package/_types/ethers/cleartext/createFhevmCleartextEncryptClient.d.ts +2 -2
- package/_types/ethers/cleartext/createFhevmCleartextEncryptClient.d.ts.map +1 -1
- package/_types/ethers/clients/createFhevmDecryptClient.d.ts +2 -2
- package/_types/ethers/clients/createFhevmDecryptClient.d.ts.map +1 -1
- package/_types/ethers/clients/createFhevmEncryptClient.d.ts +2 -2
- package/_types/ethers/clients/createFhevmEncryptClient.d.ts.map +1 -1
- package/_types/viem/cleartext/createFhevmCleartextDecryptClient.d.ts +2 -2
- package/_types/viem/cleartext/createFhevmCleartextDecryptClient.d.ts.map +1 -1
- package/_types/viem/cleartext/createFhevmCleartextEncryptClient.d.ts +2 -2
- package/_types/viem/cleartext/createFhevmCleartextEncryptClient.d.ts.map +1 -1
- package/_types/viem/clients/createFhevmDecryptClient.d.ts +2 -2
- package/_types/viem/clients/createFhevmDecryptClient.d.ts.map +1 -1
- package/_types/viem/clients/createFhevmEncryptClient.d.ts +2 -2
- package/_types/viem/clients/createFhevmEncryptClient.d.ts.map +1 -1
- package/_types/wasm/tfhe/TfheApi.d.ts +12 -12
- package/_types/wasm/tfhe/v1.5.3/tfhe.d.ts +7 -0
- package/_types/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.d.ts +92 -85
- package/_types/wasm/tfheModuleVersion-p.d.ts +1 -1
- package/_types/wasm/tfheModuleVersion-p.d.ts.map +1 -1
- package/_types/wasm/tkms/v0.13.10/kms_lib.d.ts +4 -0
- package/_types/wasm/tkms/v0.13.20-0/kms_lib.d.ts +4 -0
- package/_types/wasm/tkmsModuleVersion-p.d.ts +1 -1
- package/_types/wasm/tkmsModuleVersion-p.d.ts.map +1 -1
- package/core/_version.ts +1 -1
- package/core/actions/base/canDecryptPublicValue.ts +1 -1
- package/core/actions/base/canDecryptPublicValues.ts +1 -1
- package/core/actions/base/{fetchKmsSignedcryptedShares.ts → fetchKmsSigncryptedShares.ts} +16 -16
- package/core/actions/base/index.ts +5 -5
- package/core/actions/base/readKmsSignersContext.ts +2 -1
- package/core/actions/chain/parseSignedDecryptionPermit.ts +2 -2
- package/core/actions/chain/parseTransportKeyPair.ts +2 -1
- package/core/actions/decrypt/{decryptKmsSignedcryptedShares.ts → decryptKmsSigncryptedShares.ts} +12 -9
- package/core/actions/decrypt/decryptValue.ts +4 -1
- package/core/actions/decrypt/decryptValues.ts +4 -1
- package/core/actions/decrypt/decryptValuesFromPairs.ts +4 -1
- package/core/actions/decrypt/generateTransportKeyPair.ts +5 -3
- package/core/actions/decrypt/index.ts +4 -4
- package/core/actions/encrypt/encryptValue.ts +4 -1
- package/core/actions/encrypt/encryptValues.ts +4 -1
- package/core/actions/encrypt/generateZkProof.ts +9 -1
- package/core/actions/host/readFhevmExecutorContractData.ts +8 -8
- package/core/actions/host/readInputVerifierContractData.ts +2 -2
- package/core/actions/host/readKmsVerifierContractData.ts +8 -6
- package/core/actions/host/resolveFhevmConfig.ts +10 -1
- package/core/base/bytes.ts +2 -1
- package/core/base/environment.ts +210 -0
- package/core/base/errors/Sha256VerificationError.ts +22 -0
- package/core/base/inflate.ts +373 -0
- package/core/base/isomorphicFs.ts +23 -0
- package/core/base/isomorphicWorker.ts +96 -123
- package/core/base/object.ts +38 -0
- package/core/base/semver.ts +231 -0
- package/core/base/uint.ts +33 -4
- package/core/base/wasm.ts +28 -35
- package/core/chains/definitions/localTestnet.ts +3 -0
- package/core/chains/definitions/mainnet.ts +1 -0
- package/core/chains/definitions/sepolia.ts +6 -6
- package/core/clients/decorators/base.ts +8 -1
- package/core/clients/decorators/decrypt-p.ts +18 -0
- package/core/clients/decorators/decrypt.ts +10 -15
- package/core/clients/decorators/encrypt-p.ts +12 -7
- package/core/clients/decorators/encrypt.ts +6 -4
- package/core/coprocessor/ZkProof-p.ts +17 -5
- package/core/coprocessor/ZkProofBuilder-p.ts +5 -2
- package/core/coprocessor/encrypt.ts +6 -1
- package/core/errors/RelayerResponseStatusError.ts +14 -2
- package/core/host-contracts/HostContractVersion-p.ts +60 -3
- package/core/host-contracts/KmsSignersContext-p.ts +36 -5
- package/core/host-contracts/abi-fragments/fragments.ts +28 -0
- package/core/host-contracts/canDecryptValuesFromPairs.ts +1 -1
- package/core/host-contracts/checkAllowedForDecryption.ts +3 -3
- package/core/host-contracts/checkDelegation.ts +9 -9
- package/core/host-contracts/checkPersistAllowed.ts +10 -10
- package/core/host-contracts/getAclAddress-p.ts +2 -3
- package/core/host-contracts/getCurrentKmsContextAndEpoch-p.ts +92 -0
- package/core/host-contracts/getCurrentKmsContextId-p.ts +8 -8
- package/core/host-contracts/getFhevmExecutorAddress-p.ts +2 -2
- package/core/host-contracts/getHandleVersion-p.ts +2 -3
- package/core/host-contracts/getHcuLimitAddress-p.ts +2 -3
- package/core/host-contracts/getInputVerifierAddress-p.ts +2 -3
- package/core/host-contracts/getKmsContextSignersAndThreshold-p.ts +7 -9
- package/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.ts +6 -7
- package/core/host-contracts/getSignersForKmsContext-p.ts +6 -8
- package/core/host-contracts/isAllowedForDecryption.ts +6 -6
- package/core/host-contracts/isHandleDelegatedForUserDecryption-p.ts +7 -7
- package/core/host-contracts/isUserDecryptable.ts +3 -3
- package/core/host-contracts/persistAllowed.ts +6 -6
- package/core/host-contracts/readKmsSignersContext-p.ts +131 -41
- package/core/key/FheEncryptionKeyWasm-p.ts +24 -3
- package/core/key/deserializeFheEncryptionKey.ts +8 -1
- package/core/key/fetchFheEncryptionKey.ts +8 -4
- package/core/key/fetchFheEncryptionKeyBytes.ts +4 -2
- package/core/key/serializeFheEncryptionKey.ts +8 -2
- package/core/kms/KmsSigncryptedShares-p.ts +11 -1
- package/core/kms/SignedDecryptionPermit-p.ts +6 -1
- package/core/kms/TransportKeyPair-p.ts +52 -11
- package/core/kms/createKmsUserDecryptEip712.ts +11 -0
- package/core/kms/createKmsUserDecryptEip712V2.ts +159 -0
- package/core/kms/{decryptKmsSignedcryptedShares-p.ts → decryptKmsSigncryptedShares-p.ts} +12 -2
- package/core/kms/decryptValuesFromPairs.ts +6 -4
- package/core/kms/{fetchKmsSignedcryptedShares-p.ts → fetchKmsSigncryptedShares-p.ts} +12 -5
- package/core/kms/kmsExtraData.ts +82 -13
- package/core/kms/kmsUserDecryptEip712V2Types.ts +31 -0
- package/core/kms/publicDecrypt.ts +5 -3
- package/core/modules/decrypt/mock.ts +0 -35
- package/core/modules/decrypt/module/api-p.ts +88 -17
- package/core/modules/decrypt/module/index.ts +37 -34
- package/core/modules/decrypt/module/init-p.ts +194 -73
- package/core/modules/decrypt/types.ts +37 -65
- package/core/modules/encrypt/mock.ts +34 -4
- package/core/modules/encrypt/module/api-p.ts +66 -15
- package/core/modules/encrypt/module/index.ts +5 -3
- package/core/modules/encrypt/module/init-p.ts +465 -101
- package/core/modules/encrypt/types.ts +34 -2
- package/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.ts +2 -2
- package/core/modules/relayer/cleartext/fetchUserDecrypt.ts +2 -2
- package/core/modules/relayer/module/RelayerAsyncRequest.ts +60 -4
- package/core/modules/relayer/module/fetchFheEncryptionKeySource.ts +9 -1
- package/core/modules/relayer/module/readErrorMessage.ts +56 -0
- package/core/runtime/CoreFhevm-p.ts +247 -22
- package/core/runtime/HyperWasmSolver-p.ts +417 -0
- package/core/runtime/ProtocolVersionResolver-p.ts +463 -0
- package/core/runtime/initFhevmDecryptRuntime-p.ts +1 -1
- package/core/runtime/initFhevmEncryptRuntime-p.ts +1 -1
- package/core/runtime/initFhevmRuntime-p.ts +4 -1
- package/core/runtime/resolveFhevmVersions-p.ts +85 -0
- package/core/runtimeConfig-p.ts +17 -2
- package/core/types/auth.ts +12 -1
- package/core/types/coreFhevmClient.ts +89 -4
- package/core/types/coreFhevmRuntime.ts +3 -18
- package/core/types/fheEncryptionKey.ts +2 -0
- package/core/types/fhevmChain.ts +3 -0
- package/core/types/hostContract.ts +1 -0
- package/core/types/index.ts +1 -1
- package/core/types/kms-p.ts +2 -0
- package/core/types/kms.ts +48 -18
- package/core/types/kmsSignersContext.ts +8 -0
- package/core/types/logger.ts +1 -0
- package/core/types/moduleVersions.ts +35 -0
- package/core/types/tkms-p.ts +3 -0
- package/core/types/wasmAssets.ts +64 -0
- package/core/types/{zkProofBuilder.ts → zkProofBuilder-p.ts} +3 -2
- package/core/utils-p/decrypt/verifyTkmsPublicKey.ts +3 -1
- package/ethers/cleartext/createFhevmCleartextDecryptClient.ts +2 -2
- package/ethers/cleartext/createFhevmCleartextEncryptClient.ts +2 -2
- package/ethers/clients/createFhevmDecryptClient.ts +2 -2
- package/ethers/clients/createFhevmEncryptClient.ts +2 -2
- package/ethers/internal/config.ts +2 -30
- package/package.json +1 -1
- package/viem/cleartext/createFhevmCleartextDecryptClient.ts +2 -2
- package/viem/cleartext/createFhevmCleartextEncryptClient.ts +2 -2
- package/viem/clients/createFhevmDecryptClient.ts +2 -2
- package/viem/clients/createFhevmEncryptClient.ts +2 -2
- package/viem/internal/config.ts +2 -30
- package/wasm/tfhe/TfheApi.d.ts +12 -12
- package/wasm/tfhe/loadTfheLib.js +11 -11
- package/wasm/tfhe/v1.5.3/startWorkers.js +41 -20
- package/wasm/tfhe/v1.5.3/tfhe.d.ts +7 -0
- package/wasm/tfhe/v1.5.3/tfhe.js +8 -0
- package/wasm/tfhe/v1.6.0-dev/startWorkers.js +41 -20
- package/wasm/tfhe/v1.6.0-dev/tfhe.d.ts +7 -0
- package/wasm/tfhe/v1.6.0-dev/tfhe.js +8 -0
- package/wasm/tfhe/{v1.6.1 → v1.6.2}/startWorkers.js +46 -25
- package/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe-worker.mjs +40 -40
- package/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.d.ts +92 -85
- package/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.js +253 -442
- package/wasm/tfhe/v1.6.2/tfhe_bg.wasm +0 -0
- package/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js +7 -0
- package/wasm/tfheModuleVersion-p.ts +1 -1
- package/wasm/tkms/v0.13.10/kms_lib.d.ts +4 -0
- package/wasm/tkms/v0.13.10/kms_lib.js +8 -0
- package/wasm/tkms/v0.13.20-0/kms_lib.d.ts +4 -0
- package/wasm/tkms/v0.13.20-0/kms_lib.js +8 -0
- package/wasm/tkmsModuleVersion-p.ts +1 -1
- package/wasm/wasmBaseUrl.js +32 -4
- package/_cjs/core/actions/base/fetchKmsSignedcryptedShares.js.map +0 -1
- package/_cjs/core/actions/decrypt/decryptKmsSignedcryptedShares.js +0 -11
- package/_cjs/core/actions/decrypt/decryptKmsSignedcryptedShares.js.map +0 -1
- package/_cjs/core/kms/decryptKmsSignedcryptedShares-p.js.map +0 -1
- package/_cjs/core/kms/fetchKmsSignedcryptedShares-p.js.map +0 -1
- package/_cjs/core/types/fhevmDecryptionKey.js.map +0 -1
- package/_cjs/core/types/fhevmUser.js.map +0 -1
- package/_cjs/core/types/zkProofBuilder.js.map +0 -1
- package/_cjs/wasm/tfhe/v1.6.1/startWorkers.js.map +0 -7
- package/_cjs/wasm/tfhe/v1.6.1/tfhe.js.map +0 -7
- package/_cjs/wasm/tfhe/v1.6.1/tfhe_bg.wasm +0 -0
- package/_cjs/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js +0 -35
- package/_cjs/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js.map +0 -7
- package/_esm/core/actions/base/fetchKmsSignedcryptedShares.js.map +0 -1
- package/_esm/core/actions/decrypt/decryptKmsSignedcryptedShares.js +0 -9
- package/_esm/core/actions/decrypt/decryptKmsSignedcryptedShares.js.map +0 -1
- package/_esm/core/kms/decryptKmsSignedcryptedShares-p.js.map +0 -1
- package/_esm/core/kms/fetchKmsSignedcryptedShares-p.js.map +0 -1
- package/_esm/core/types/fhevmDecryptionKey.js +0 -2
- package/_esm/core/types/fhevmDecryptionKey.js.map +0 -1
- package/_esm/core/types/fhevmUser.js +0 -2
- package/_esm/core/types/fhevmUser.js.map +0 -1
- package/_esm/core/types/zkProofBuilder.js +0 -2
- package/_esm/core/types/zkProofBuilder.js.map +0 -1
- package/_esm/wasm/tfhe/v1.6.1/tfhe_bg.wasm +0 -0
- package/_esm/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js +0 -7
- package/_types/core/actions/base/fetchKmsSignedcryptedShares.d.ts.map +0 -1
- package/_types/core/actions/decrypt/decryptKmsSignedcryptedShares.d.ts.map +0 -1
- package/_types/core/kms/decryptKmsSignedcryptedShares-p.d.ts.map +0 -1
- package/_types/core/kms/fetchKmsSignedcryptedShares-p.d.ts.map +0 -1
- package/_types/core/types/fhevmDecryptionKey.d.ts +0 -4
- package/_types/core/types/fhevmDecryptionKey.d.ts.map +0 -1
- package/_types/core/types/fhevmUser.d.ts +0 -7
- package/_types/core/types/fhevmUser.d.ts.map +0 -1
- package/_types/core/types/zkProofBuilder.d.ts.map +0 -1
- package/core/types/fhevmDecryptionKey.ts +0 -8
- package/core/types/fhevmUser.ts +0 -7
- package/wasm/tfhe/v1.6.1/tfhe_bg.wasm +0 -0
- package/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js +0 -7
- /package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
- /package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
- /package/_types/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
- /package/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
|
@@ -1,21 +1,117 @@
|
|
|
1
1
|
import type { FhevmRuntime, FhevmRuntimeConfig } from '../../../types/coreFhevmRuntime.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type {
|
|
3
|
+
GetTfheModuleInfoParameters,
|
|
4
|
+
GetTfheModuleInfoReturnType,
|
|
5
|
+
InitTfheModuleParameters,
|
|
6
|
+
TfheModuleInfo,
|
|
7
|
+
} from '../types.js';
|
|
3
8
|
import type { TfheLibApi } from '../../../../wasm/tfhe/TfheApi.js';
|
|
4
|
-
import type { TfheAssetMetadata, TfheVersion } from '../../../../wasm/tfhe/loadTfheLib.js';
|
|
9
|
+
import type { TfheAssetMetadata, TfheAssets, TfheVersion } from '../../../../wasm/tfhe/loadTfheLib.js';
|
|
10
|
+
import type { WasmAssetLoadMode } from '../../../types/wasmAssets.js';
|
|
5
11
|
import { isomorphicCompileVerifiedWasm, isomorphicCompileWasmFromBase64 } from '../../../base/wasm.js';
|
|
6
|
-
import { isBlobWorkerSupported
|
|
12
|
+
import { isBlobWorkerSupported } from '../../../base/isomorphicWorker.js';
|
|
13
|
+
import { isBrowserLike } from '../../../base/environment.js';
|
|
7
14
|
import { threads } from 'wasm-feature-detect';
|
|
8
15
|
import { assertIsFhevmRuntime } from '../../../runtime/CoreFhevmRuntime-p.js';
|
|
9
|
-
import { resolveTfheModuleVersion } from '../../../../wasm/tfheModuleVersion-p.js';
|
|
10
|
-
// Pure JS file (not compiled by tsc) — provides cross-platform base URL
|
|
11
|
-
// for resolving WASM paths. Uses import.meta.url in ESM, __filename in CJS.
|
|
12
|
-
import { wasmBaseUrl } from '../../../../wasm/wasmBaseUrl.js';
|
|
13
16
|
import { loadTfheLib, loadTfheWasmBase64, tfheAssetsWithVersion } from '../../../../wasm/tfhe/loadTfheLib.js';
|
|
17
|
+
import { isomorphicFileUrlExists } from '../../../base/isomorphicFs.js';
|
|
18
|
+
|
|
19
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* TFHE asset loading rules
|
|
23
|
+
*
|
|
24
|
+
* 1. Asset URL resolution
|
|
25
|
+
* - If `locateFile` is provided:
|
|
26
|
+
* - `URL` return value: that asset has a URL.
|
|
27
|
+
* - `null` / `undefined`: that asset has no URL and must use embedded base64
|
|
28
|
+
* if the selected load path allows it.
|
|
29
|
+
* - Any other value: invalid `locateFile` result.
|
|
30
|
+
* - Each asset is resolved independently; advanced callers may intentionally
|
|
31
|
+
* mix URL and embedded-base64 asset loading.
|
|
32
|
+
* - User-provided URLs are not checked for on-disk existence, even when
|
|
33
|
+
* they use the `file:` protocol. They are explicit caller input and fail
|
|
34
|
+
* later during read/fetch/SHA verification if wrong.
|
|
35
|
+
* - If `locateFile` is not provided:
|
|
36
|
+
* - Node: derive default `file://` URLs as an all-or-none set. If any
|
|
37
|
+
* auto-derived file is missing, clear all TFHE URLs and fall back to
|
|
38
|
+
* embedded base64. This preserves predictable behavior for unexpected
|
|
39
|
+
* bundler/package relocation.
|
|
40
|
+
* - Browser: no asset URL; use embedded base64 paths.
|
|
41
|
+
*
|
|
42
|
+
* 2. WASM module loading
|
|
43
|
+
* - If the WASM asset has a URL: load, SHA-verify, and compile from that URL.
|
|
44
|
+
* - If the WASM asset has no URL: compile from embedded base64.
|
|
45
|
+
* - `wasmAssetLoadMode` does not control WASM module loading.
|
|
46
|
+
*
|
|
47
|
+
* 3. Worker script loading
|
|
48
|
+
* - If single-threaded: no worker is loaded.
|
|
49
|
+
* - If threaded: `wasmAssetLoadMode` controls how the worker script is loaded.
|
|
50
|
+
* - The worker URL only makes a URL-backed worker mode possible; it does not
|
|
51
|
+
* force the worker to use that URL.
|
|
52
|
+
*
|
|
53
|
+
* 4. Worker mode precedence
|
|
54
|
+
* - `embedded-base64`: ignore any worker URL and use embedded worker source.
|
|
55
|
+
* - `verified-blob`: require worker URL, SHA-verify fetched bytes, execute those bytes.
|
|
56
|
+
* - `precheck-direct-url`: require worker URL, SHA precheck, then execute URL directly.
|
|
57
|
+
* - `trusted-direct-url`: require worker URL, execute URL directly without SDK verification.
|
|
58
|
+
* - `auto`: if worker URL exists, try `verified-blob`; on non-SHA failure, fall back
|
|
59
|
+
* to embedded base64. If no worker URL exists, use embedded base64.
|
|
60
|
+
*
|
|
61
|
+
* 5. Failure
|
|
62
|
+
* - Explicit URL worker modes with no worker URL: throw.
|
|
63
|
+
* - SHA mismatch: always throw, never fall back.
|
|
64
|
+
* - Explicit worker-mode runtime failures are surfaced by `startWorkers.js`.
|
|
65
|
+
*
|
|
66
|
+
* 6. Degradation:
|
|
67
|
+
* - Auto-derived Node URLs are best effort only. If either the WASM or worker
|
|
68
|
+
* file is missing on disk, both URLs are cleared and the SDK falls back to the
|
|
69
|
+
* no-URL paths.
|
|
70
|
+
* - With no WASM URL, the WASM module compiles from embedded base64.
|
|
71
|
+
* - With no worker URL, `auto` and `embedded-base64` worker modes use embedded
|
|
72
|
+
* worker source; explicit URL worker modes throw.
|
|
73
|
+
* - If threads are unsupported, unavailable, or configured with zero threads,
|
|
74
|
+
* TFHE runs single-threaded.
|
|
75
|
+
* - If `auto` mode would need a blob/eval worker but blob/eval workers are
|
|
76
|
+
* unavailable, TFHE runs single-threaded.
|
|
77
|
+
* - Single-threaded TFHE never loads a worker; WASM still loads from its resolved
|
|
78
|
+
* URL or embedded base64.
|
|
79
|
+
*
|
|
80
|
+
* 7. Security model:
|
|
81
|
+
* - Mixed transports are allowed for user-resolved assets when chosen explicitly.
|
|
82
|
+
* - External WASM URLs are SHA-verified before compilation.
|
|
83
|
+
* - `verified-blob` verifies and executes the exact worker bytes.
|
|
84
|
+
* - `precheck-direct-url` and `trusted-direct-url` intentionally trust the runtime
|
|
85
|
+
* worker URL fetch semantics described in `startWorkers.js`.
|
|
86
|
+
*
|
|
87
|
+
* Turbopack / relocated package behavior:
|
|
88
|
+
* - In Node, without `locateFile`, the SDK derives default `file://` URLs from
|
|
89
|
+
* the package's wasm base URL.
|
|
90
|
+
* - Some bundlers can relocate/package the JS in a way that makes those derived
|
|
91
|
+
* `file://` URLs point to paths that do not exist on disk.
|
|
92
|
+
* - Passing such URLs to the WASM or worker loaders would fail at runtime instead
|
|
93
|
+
* of using the embedded assets.
|
|
94
|
+
* - To avoid that, auto-derived Node URLs are checked as an all-or-none set before
|
|
95
|
+
* loading: if either the WASM or worker file is missing, both URLs are cleared.
|
|
96
|
+
* - Once cleared, WASM loads from embedded base64 and worker loading follows
|
|
97
|
+
* `wasmAssetLoadMode` with no worker URL available.
|
|
98
|
+
* - User-provided `locateFile` URLs, including `file:` URLs, are not probed here;
|
|
99
|
+
* they are explicit caller input and fail loud later if wrong.
|
|
100
|
+
*/
|
|
101
|
+
|
|
102
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
103
|
+
|
|
104
|
+
function _requiresAssetUrl(wasmAssetLoadMode: WasmAssetLoadMode | undefined): boolean {
|
|
105
|
+
return wasmAssetLoadMode !== undefined && wasmAssetLoadMode !== 'auto' && wasmAssetLoadMode !== 'embedded-base64';
|
|
106
|
+
}
|
|
14
107
|
|
|
15
108
|
////////////////////////////////////////////////////////////////////////////////
|
|
16
109
|
|
|
17
110
|
// (Node only) Path relative to src/wasm/ where wasmBaseUrl is anchored
|
|
18
|
-
const nodeDefaultLocateFile = (file: string): URL => {
|
|
111
|
+
const nodeDefaultLocateFile = async (file: string): Promise<URL> => {
|
|
112
|
+
// Pure JS file (not compiled by tsc) — provides cross-platform base URL
|
|
113
|
+
// for resolving WASM paths. Uses import.meta.url in ESM, __filename in CJS.
|
|
114
|
+
const { wasmBaseUrl } = await import('../../../../wasm/wasmBaseUrl.js');
|
|
19
115
|
return new URL(`./tfhe/${file}`, wasmBaseUrl);
|
|
20
116
|
};
|
|
21
117
|
|
|
@@ -23,27 +119,113 @@ const nodeDefaultLocateFile = (file: string): URL => {
|
|
|
23
119
|
|
|
24
120
|
type TfheInitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
|
|
25
121
|
|
|
26
|
-
type
|
|
122
|
+
type TfheLibInitAsyncParameters = {
|
|
27
123
|
readonly module_or_path: TfheInitInput | Promise<TfheInitInput>;
|
|
28
124
|
readonly memory?: WebAssembly.Memory;
|
|
29
125
|
readonly thread_stack_size?: number;
|
|
30
126
|
readonly num_threads?: number;
|
|
31
127
|
};
|
|
32
128
|
|
|
129
|
+
type TfheAssetResolution = 'user' | 'node' | 'none';
|
|
33
130
|
type ResolvedTfheAsset = TfheAssetMetadata & {
|
|
34
131
|
readonly url: URL | undefined;
|
|
132
|
+
readonly resolution: TfheAssetResolution;
|
|
35
133
|
};
|
|
36
134
|
|
|
37
|
-
|
|
135
|
+
type ResolvedTfheAssets = {
|
|
136
|
+
readonly wasm: ResolvedTfheAsset;
|
|
137
|
+
readonly worker: ResolvedTfheAsset;
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
async function _resolveSingleTfheAsset(
|
|
141
|
+
asset: TfheAssetMetadata,
|
|
142
|
+
locateFile: FhevmRuntimeConfig['locateFile'],
|
|
143
|
+
): Promise<ResolvedTfheAsset> {
|
|
38
144
|
let url: URL | undefined;
|
|
145
|
+
let resolution: TfheAssetResolution = 'none';
|
|
39
146
|
|
|
40
147
|
if (locateFile !== undefined) {
|
|
41
|
-
|
|
148
|
+
const located = locateFile(asset.filename) as unknown;
|
|
149
|
+
if (located === null || located === undefined) {
|
|
150
|
+
url = undefined;
|
|
151
|
+
} else if (located instanceof URL) {
|
|
152
|
+
url = located;
|
|
153
|
+
} else {
|
|
154
|
+
throw new TypeError(
|
|
155
|
+
`Invalid locateFile result for TFHE asset '${asset.filename}': expected URL, null, or undefined.`,
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
resolution = 'user';
|
|
42
159
|
} else if (!isBrowserLike()) {
|
|
43
|
-
url = nodeDefaultLocateFile(asset.localRelativePath);
|
|
160
|
+
url = await nodeDefaultLocateFile(asset.localRelativePath);
|
|
161
|
+
resolution = 'node';
|
|
44
162
|
}
|
|
45
163
|
|
|
46
|
-
return Object.freeze({ ...asset, url });
|
|
164
|
+
return Object.freeze({ ...asset, url, resolution });
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Resolves TFHE asset URLs for wasm and worker scripts.
|
|
169
|
+
*
|
|
170
|
+
* With user `locateFile` resolution, each asset is independent: returning a URL
|
|
171
|
+
* opts that asset into URL loading, while returning null/undefined opts that asset
|
|
172
|
+
* into embedded base64 when its selected load path supports it.
|
|
173
|
+
*
|
|
174
|
+
* For `'node'` resolution (auto-derived `file://` URLs), every URL is validated
|
|
175
|
+
* on disk: if any one is missing — e.g. a bundler such as Turbopack relocated the
|
|
176
|
+
* package and the derived `file://ROOT/...` path no longer exists — then ALL URLs
|
|
177
|
+
* are cleared so the whole set falls back to embedded base64 consistently.
|
|
178
|
+
*
|
|
179
|
+
* `'none'` has no URL to validate.
|
|
180
|
+
*/
|
|
181
|
+
async function _resolveTfheAssets(
|
|
182
|
+
assets: TfheAssets,
|
|
183
|
+
locateFile: FhevmRuntimeConfig['locateFile'],
|
|
184
|
+
): Promise<{ readonly wasm: ResolvedTfheAsset; readonly worker: ResolvedTfheAsset }> {
|
|
185
|
+
let wasm = await _resolveSingleTfheAsset(assets.wasm, locateFile);
|
|
186
|
+
let worker = await _resolveSingleTfheAsset(assets.worker, locateFile);
|
|
187
|
+
|
|
188
|
+
// Only auto-derived ('node') file:// URLs need on-disk validation; the mode is
|
|
189
|
+
// shared across all assets, so checking one is enough to know the set's mode.
|
|
190
|
+
if (wasm.resolution === 'node') {
|
|
191
|
+
const allExist = (
|
|
192
|
+
await Promise.all([isomorphicFileUrlExists(wasm.url), isomorphicFileUrlExists(worker.url)])
|
|
193
|
+
).every(Boolean);
|
|
194
|
+
if (!allExist) {
|
|
195
|
+
wasm = Object.freeze({ ...wasm, url: undefined });
|
|
196
|
+
worker = Object.freeze({ ...worker, url: undefined });
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
return { wasm, worker };
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Emits debug traces describing how the TFHE assets were resolved (user-provided
|
|
205
|
+
* `locateFile`, auto-derived on-disk path, embedded base64, or bundler-relocated
|
|
206
|
+
* fallback). Pure logging — no control flow.
|
|
207
|
+
*/
|
|
208
|
+
function _logResolvedTfheAssets(resolvedAssets: ResolvedTfheAssets, logger: FhevmRuntimeConfig['logger']): void {
|
|
209
|
+
const { wasm, worker } = resolvedAssets;
|
|
210
|
+
if (wasm.resolution === 'user') {
|
|
211
|
+
logger?.debug(`resolve tfhe wasm filename using 'locateFile' function: ${wasm.filename} -> url: ${wasm.url}`);
|
|
212
|
+
logger?.debug(`resolve tfhe worker filename using 'locateFile' function: ${worker.filename} -> url: ${worker.url}`);
|
|
213
|
+
} else if (wasm.resolution === 'node') {
|
|
214
|
+
if (wasm.url === undefined) {
|
|
215
|
+
// Auto-derived assets were missing on disk (e.g. a bundler such as Turbopack
|
|
216
|
+
// relocated the package) and were cleared by _resolveTfheAssets -> base64.
|
|
217
|
+
logger?.debug(
|
|
218
|
+
`tfhe auto-derived assets not found on disk (bundler relocation?); using embedded base64 ` +
|
|
219
|
+
`(wasm: ${wasm.localRelativePath}, worker: ${worker.localRelativePath})`,
|
|
220
|
+
);
|
|
221
|
+
} else {
|
|
222
|
+
logger?.debug(`resolve tfhe wasm local path: ${wasm.localRelativePath} -> url: ${wasm.url}`);
|
|
223
|
+
logger?.debug(`resolve tfhe worker local path: ${worker.localRelativePath} -> url: ${worker.url}`);
|
|
224
|
+
}
|
|
225
|
+
} else {
|
|
226
|
+
// 'none': browser zero-config (no 'locateFile', not Node) -> embedded base64.
|
|
227
|
+
logger?.debug(`resolve tfhe assets using embedded base64 (browser, no 'locateFile')`);
|
|
228
|
+
}
|
|
47
229
|
}
|
|
48
230
|
|
|
49
231
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -52,9 +234,8 @@ function _resolveTfheAsset(asset: TfheAssetMetadata, locateFile: FhevmRuntimeCon
|
|
|
52
234
|
|
|
53
235
|
type ResolvedTfheModuleConfig = {
|
|
54
236
|
readonly version: TfheVersion;
|
|
55
|
-
readonly
|
|
237
|
+
readonly assets: ResolvedTfheAssets;
|
|
56
238
|
readonly wasmAssetLoadMode: FhevmRuntimeConfig['wasmAssetLoadMode'];
|
|
57
|
-
readonly wasm: ResolvedTfheAsset;
|
|
58
239
|
/* if `true`, then `numberOfThreads` is 0, if `false` then `numberOfThreads` > 0 */
|
|
59
240
|
readonly singleThread: boolean;
|
|
60
241
|
readonly numberOfThreads: number;
|
|
@@ -62,82 +243,124 @@ type ResolvedTfheModuleConfig = {
|
|
|
62
243
|
readonly supportsThreads: boolean | undefined;
|
|
63
244
|
};
|
|
64
245
|
|
|
65
|
-
|
|
66
|
-
|
|
246
|
+
const resolvedTfheModuleConfigByVersion = new Map<TfheVersion, ResolvedTfheModuleConfig>();
|
|
247
|
+
const resolvingTfheModuleConfigPromiseByVersion = new Map<TfheVersion, Promise<ResolvedTfheModuleConfig>>();
|
|
67
248
|
|
|
68
249
|
/**
|
|
69
250
|
* @internal
|
|
70
|
-
* Returns the existing resolved config, or resolves it from
|
|
251
|
+
* Returns the existing resolved config for a TFHE version, or resolves it from
|
|
252
|
+
* the runtime config.
|
|
71
253
|
*/
|
|
72
|
-
async function _getOrResolveTfheModuleConfig(
|
|
254
|
+
async function _getOrResolveTfheModuleConfig(
|
|
255
|
+
runtime: FhevmRuntime,
|
|
256
|
+
tfheVersion: TfheVersion,
|
|
257
|
+
): Promise<ResolvedTfheModuleConfig> {
|
|
258
|
+
const resolvedTfheModuleConfig = resolvedTfheModuleConfigByVersion.get(tfheVersion);
|
|
73
259
|
if (resolvedTfheModuleConfig !== undefined) {
|
|
74
260
|
return resolvedTfheModuleConfig;
|
|
75
261
|
}
|
|
76
262
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
263
|
+
let resolvingTfheModuleConfigPromise = resolvingTfheModuleConfigPromiseByVersion.get(tfheVersion);
|
|
264
|
+
if (resolvingTfheModuleConfigPromise === undefined) {
|
|
265
|
+
resolvingTfheModuleConfigPromise = _resolveTfheModuleConfig(runtime.config, tfheVersion)
|
|
266
|
+
.then((cfg) => {
|
|
267
|
+
resolvedTfheModuleConfigByVersion.set(tfheVersion, cfg);
|
|
268
|
+
return cfg;
|
|
269
|
+
})
|
|
270
|
+
.catch((error: unknown) => {
|
|
271
|
+
resolvingTfheModuleConfigPromiseByVersion.delete(tfheVersion);
|
|
272
|
+
throw error;
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
resolvingTfheModuleConfigPromiseByVersion.set(tfheVersion, resolvingTfheModuleConfigPromise);
|
|
276
|
+
}
|
|
88
277
|
|
|
89
278
|
return resolvingTfheModuleConfigPromise;
|
|
90
279
|
}
|
|
91
280
|
|
|
92
281
|
/**
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
282
|
+
* Fails fast on impossible / contradictory TFHE configurations, before any
|
|
283
|
+
* wasm or worker work begins.
|
|
284
|
+
*
|
|
285
|
+
* Only genuinely unsatisfiable configs throw here. Recoverable situations —
|
|
286
|
+
* missing SAB/thread support, or `auto` mode without blob/eval worker support —
|
|
287
|
+
* degrade to single-threaded later. Single-threaded TFHE needs no worker, and
|
|
288
|
+
* wasm still loads from its resolved URL or embedded base64. Do not add
|
|
289
|
+
* degradable cases to this function.
|
|
96
290
|
*/
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
): Promise<ResolvedTfheModuleConfig> {
|
|
101
|
-
const {
|
|
102
|
-
locateFile,
|
|
103
|
-
wasmAssetLoadMode,
|
|
104
|
-
singleThread: singleThreadConfig,
|
|
105
|
-
numberOfThreads: numberOfThreadsConfig,
|
|
106
|
-
} = parameters;
|
|
291
|
+
function _assertSatisfiableTfheConfig(resolvedAssets: ResolvedTfheAssets, parameters: FhevmRuntimeConfig): void {
|
|
292
|
+
const { wasmAssetLoadMode, numberOfThreads } = parameters;
|
|
293
|
+
const { wasm, worker } = resolvedAssets;
|
|
107
294
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
295
|
+
if (wasm.resolution !== worker.resolution) {
|
|
296
|
+
// internal error
|
|
297
|
+
throw new Error('Internal error');
|
|
111
298
|
}
|
|
112
299
|
|
|
113
|
-
|
|
300
|
+
// (1) Auto-derived Node URLs must remain all-or-none. User `locateFile`
|
|
301
|
+
// resolution may intentionally mix URL and embedded-base64 assets, but a
|
|
302
|
+
// partial Node file set means the package/bundler layout is inconsistent.
|
|
303
|
+
if (wasm.resolution === 'node') {
|
|
304
|
+
if ((wasm.url === undefined) !== (worker.url === undefined)) {
|
|
305
|
+
throw new Error(
|
|
306
|
+
`Inconsistent auto-derived TFHE asset URLs: Node resolution must resolve both the wasm and worker assets, or neither ` +
|
|
307
|
+
`(wasm: ${wasm.url ? 'url' : 'none'}, worker: ${worker.url ? 'url' : 'none'}).`,
|
|
308
|
+
);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
114
311
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
312
|
+
// (2) A URL-requiring worker mode (verified-blob / precheck-direct-url /
|
|
313
|
+
// trusted-direct-url) was selected, but no worker URL is available.
|
|
314
|
+
// We refuse to silently downgrade an explicit URL/verification choice to base64.
|
|
315
|
+
if (worker.url === undefined && _requiresAssetUrl(wasmAssetLoadMode)) {
|
|
316
|
+
throw new Error(
|
|
317
|
+
`wasmAssetLoadMode '${wasmAssetLoadMode}' requires a resolvable worker URL, but none is available. ` +
|
|
318
|
+
`Use 'auto' or 'embedded-base64', or provide a worker URL via 'locateFile'.`,
|
|
319
|
+
);
|
|
320
|
+
}
|
|
118
321
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
if run in Node only, use defaultLocateFile!
|
|
125
|
-
*/
|
|
126
|
-
if (isBrowserLike()) {
|
|
127
|
-
if (!canUseBlob) {
|
|
128
|
-
throw new Error('Missing locate file function');
|
|
129
|
-
}
|
|
130
|
-
} else {
|
|
131
|
-
parameters.logger?.debug(`resolve tfhe wasm local path: ${wasm.localRelativePath} -> url: ${wasm.url}`);
|
|
132
|
-
parameters.logger?.debug(`resolve tfhe worker local path: ${worker.localRelativePath} -> url: ${worker.url}`);
|
|
133
|
-
}
|
|
322
|
+
// (3) Invalid thread count: must be a non-negative integer when provided.
|
|
323
|
+
// (Negative / NaN would otherwise be silently coerced to single-threaded,
|
|
324
|
+
// hiding the caller's mistake.)
|
|
325
|
+
if (numberOfThreads !== undefined && (!Number.isInteger(numberOfThreads) || numberOfThreads < 0)) {
|
|
326
|
+
throw new Error(`numberOfThreads must be a non-negative integer, received: ${String(numberOfThreads)}`);
|
|
134
327
|
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
331
|
+
|
|
332
|
+
type ResolvedThreadConfig = {
|
|
333
|
+
readonly singleThread: boolean;
|
|
334
|
+
readonly numberOfThreads: number;
|
|
335
|
+
readonly supportsThreads: boolean | undefined;
|
|
336
|
+
};
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* Resolves the effective threading config. Degrades to single-threaded when
|
|
340
|
+
* multi-threading is requested but cannot run — no SharedArrayBuffer/COOP-COEP
|
|
341
|
+
* support, or no way to spawn a worker. Never throws: single-threaded always works
|
|
342
|
+
* (it needs no worker, and the wasm still loads via URL or embedded base64).
|
|
343
|
+
*/
|
|
344
|
+
async function _resolveThreadConfig(args: {
|
|
345
|
+
readonly preferredSingleThread: boolean;
|
|
346
|
+
readonly numberOfThreadsConfig: number | undefined;
|
|
347
|
+
readonly wasmAssetLoadMode: WasmAssetLoadMode;
|
|
348
|
+
readonly canUseBlob: boolean;
|
|
349
|
+
readonly logger: FhevmRuntimeConfig['logger'];
|
|
350
|
+
}): Promise<ResolvedThreadConfig> {
|
|
351
|
+
const { preferredSingleThread, numberOfThreadsConfig, wasmAssetLoadMode, canUseBlob, logger } = args;
|
|
135
352
|
|
|
136
|
-
let
|
|
353
|
+
let singleThread = preferredSingleThread;
|
|
354
|
+
let numberOfThreads = 0;
|
|
137
355
|
let supportsThreads: boolean | undefined;
|
|
138
356
|
|
|
139
357
|
if (!singleThread) {
|
|
140
|
-
|
|
358
|
+
// `navigator` is absent in some edge runtimes (and Node <21); guard it so a
|
|
359
|
+
// missing global degrades to single-threaded (0) instead of a ReferenceError.
|
|
360
|
+
// This single-threaded fallback is also the only viable mode on edge anyway:
|
|
361
|
+
// Cloudflare Workers and Vercel Edge support neither Web Workers (`new Worker`)
|
|
362
|
+
// nor `node:worker_threads`, so the worker pool could not be spawned there.
|
|
363
|
+
numberOfThreads = numberOfThreadsConfig ?? (typeof navigator !== 'undefined' ? navigator.hardwareConcurrency : 0);
|
|
141
364
|
|
|
142
365
|
if (numberOfThreads > 0) {
|
|
143
366
|
// SharedArrayBuffer requires COOP/COEP headers in browsers.
|
|
@@ -151,28 +374,115 @@ async function _resolveTfheModuleConfig(
|
|
|
151
374
|
);
|
|
152
375
|
singleThread = true;
|
|
153
376
|
numberOfThreads = 0;
|
|
377
|
+
} else if (!canUseBlob && wasmAssetLoadMode === 'auto') {
|
|
378
|
+
// Threads are supported, but the selected mode spawns its worker from code
|
|
379
|
+
// (embedded-base64 / verified-blob / auto — blob in browser, eval in Node),
|
|
380
|
+
// and blob/eval workers are unavailable here. The direct-url modes use
|
|
381
|
+
// `new Worker(url)` and don't need blob support, so they're exempt.
|
|
382
|
+
// Degrade to single-threaded (single-threaded TFHE needs no worker).
|
|
383
|
+
logger?.warn?.(
|
|
384
|
+
`Cannot spawn a '${wasmAssetLoadMode}' worker (blob/eval workers unavailable); running single-threaded.`,
|
|
385
|
+
);
|
|
386
|
+
singleThread = true;
|
|
387
|
+
numberOfThreads = 0;
|
|
154
388
|
}
|
|
155
389
|
} else {
|
|
156
390
|
singleThread = true;
|
|
157
391
|
numberOfThreads = 0;
|
|
158
392
|
}
|
|
159
|
-
} else {
|
|
160
|
-
numberOfThreads = 0;
|
|
161
393
|
}
|
|
162
394
|
|
|
395
|
+
return { singleThread, numberOfThreads, supportsThreads };
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* @internal
|
|
400
|
+
* Resolves user-provided {@link FhevmRuntimeConfig} into a fully resolved config
|
|
401
|
+
* (thread count, worker URL, WASM URL). Must be called before WASM initialization.
|
|
402
|
+
*/
|
|
403
|
+
async function _resolveTfheModuleConfig(
|
|
404
|
+
parameters: FhevmRuntimeConfig,
|
|
405
|
+
version: TfheVersion,
|
|
406
|
+
): Promise<ResolvedTfheModuleConfig> {
|
|
407
|
+
const {
|
|
408
|
+
locateFile,
|
|
409
|
+
wasmAssetLoadMode: requestedWasmAssetLoadMode,
|
|
410
|
+
singleThread: preferredSingleThread,
|
|
411
|
+
numberOfThreads: numberOfThreadsConfig,
|
|
412
|
+
} = parameters;
|
|
413
|
+
|
|
414
|
+
const wasmAssetLoadMode = requestedWasmAssetLoadMode ?? 'auto';
|
|
415
|
+
const canUseBlob = await isBlobWorkerSupported();
|
|
416
|
+
|
|
417
|
+
const assets = tfheAssetsWithVersion(version);
|
|
418
|
+
|
|
419
|
+
const resolvedAssets = await _resolveTfheAssets(assets, locateFile);
|
|
420
|
+
|
|
421
|
+
// ── TFHE asset resolution & degradation rules ───────────────────────────────
|
|
422
|
+
//
|
|
423
|
+
// POLICY: user-resolved assets may intentionally mix transports (e.g. URL
|
|
424
|
+
// wasm + embedded worker). Auto-derived Node assets remain all-or-none because
|
|
425
|
+
// missing local files are unexpected and usually mean bundler/package relocation.
|
|
426
|
+
//
|
|
427
|
+
// Asset URL resolution:
|
|
428
|
+
//
|
|
429
|
+
// locateFile runtime / on-disk resolution asset url policy
|
|
430
|
+
// ---------- --------------------- ---------- -------------- --------------------------
|
|
431
|
+
// provided any 'user' per asset caller controls each asset
|
|
432
|
+
// none Node, files present 'node' file://… all TFHE URLs kept
|
|
433
|
+
// none Node, files missing * 'node' undefined all TFHE URLs cleared
|
|
434
|
+
// none browser 'none' undefined embedded base64
|
|
435
|
+
// * e.g. a bundler (Turbopack) relocated the package; URLs cleared by _resolveTfheAssets.
|
|
436
|
+
//
|
|
437
|
+
// Worker load mode (wasmAssetLoadMode) requirements:
|
|
438
|
+
//
|
|
439
|
+
// mode needs URL? needs blob/eval worker (canUseBlob)?
|
|
440
|
+
// ------------------- ---------- ------------------------------------
|
|
441
|
+
// embedded-base64 no yes
|
|
442
|
+
// verified-blob yes yes
|
|
443
|
+
// auto no yes (verified-blob if URL, else embedded)
|
|
444
|
+
// precheck-direct-url yes no (new Worker(url))
|
|
445
|
+
// trusted-direct-url yes no (new Worker(url))
|
|
446
|
+
//
|
|
447
|
+
// Failure / degradation (in order):
|
|
448
|
+
// 1. explicit URL mode but no URL is available -> throw (unsatisfiable config)
|
|
449
|
+
// 2. threads requested but unsupported (no SAB) -> degrade to single-threaded
|
|
450
|
+
// 3. auto mode cannot spawn blob/eval workers -> degrade to single-threaded
|
|
451
|
+
//
|
|
452
|
+
// Explicit worker modes are not downgraded here:
|
|
453
|
+
// startWorkers.js owns their worker-loading behavior and surfaces their failures.
|
|
454
|
+
// Single-threaded never needs a worker; wasm still loads (URL or embedded base64).
|
|
455
|
+
|
|
456
|
+
// Early validation: throw on impossible/contradictory configs. Recoverable
|
|
457
|
+
// cases (no worker source, no thread support) degrade later — they are NOT here.
|
|
458
|
+
_assertSatisfiableTfheConfig(resolvedAssets, parameters);
|
|
459
|
+
|
|
460
|
+
_logResolvedTfheAssets(resolvedAssets, parameters.logger);
|
|
461
|
+
|
|
462
|
+
const { singleThread, numberOfThreads, supportsThreads } = await _resolveThreadConfig({
|
|
463
|
+
preferredSingleThread: preferredSingleThread ?? false,
|
|
464
|
+
numberOfThreadsConfig,
|
|
465
|
+
wasmAssetLoadMode,
|
|
466
|
+
canUseBlob,
|
|
467
|
+
logger: parameters.logger,
|
|
468
|
+
});
|
|
469
|
+
|
|
163
470
|
const tfheLib = await loadTfheLib(version);
|
|
471
|
+
|
|
164
472
|
tfheLib.setWorkerUrlConfig({
|
|
165
|
-
workerUrl: worker.url,
|
|
473
|
+
workerUrl: resolvedAssets.worker.url,
|
|
166
474
|
wasmAssetLoadMode,
|
|
475
|
+
// Single source of truth for browser-vs-Node, resolved on the main thread
|
|
476
|
+
// (robust to bundler `process` shims) — the worker bootstrap no longer detects it.
|
|
477
|
+
isBrowserLike: isBrowserLike(),
|
|
167
478
|
logger: parameters.logger,
|
|
168
479
|
});
|
|
169
480
|
|
|
170
481
|
const cfg = {
|
|
171
482
|
version,
|
|
172
483
|
numberOfThreads,
|
|
173
|
-
|
|
484
|
+
assets: resolvedAssets,
|
|
174
485
|
wasmAssetLoadMode,
|
|
175
|
-
wasm,
|
|
176
486
|
singleThread,
|
|
177
487
|
logger: parameters.logger,
|
|
178
488
|
supportsThreads,
|
|
@@ -187,30 +497,54 @@ async function _resolveTfheModuleConfig(
|
|
|
187
497
|
// initTfheModule
|
|
188
498
|
////////////////////////////////////////////////////////////////////////////////
|
|
189
499
|
|
|
190
|
-
|
|
191
|
-
|
|
500
|
+
const ownerUidByVersion = new Map<TfheVersion, string>();
|
|
501
|
+
const cachedTfheModulePromiseByVersion = new Map<TfheVersion, Promise<TfheLibApi>>();
|
|
502
|
+
const moduleInfoByVersion = new Map<TfheVersion, TfheModuleInfo>();
|
|
503
|
+
|
|
504
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
505
|
+
// Version-tagged native wrappers
|
|
506
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
507
|
+
|
|
508
|
+
export const TFHE_VERSION_TAG: unique symbol = Symbol('TFHE.version');
|
|
509
|
+
|
|
510
|
+
export type VersionTaggedTfheNative = {
|
|
511
|
+
readonly [TFHE_VERSION_TAG]: TfheVersion;
|
|
512
|
+
};
|
|
513
|
+
|
|
514
|
+
export function getTaggedTfheVersion(value: VersionTaggedTfheNative): TfheVersion {
|
|
515
|
+
return value[TFHE_VERSION_TAG];
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
export function assertTaggedTfheVersion(value: VersionTaggedTfheNative, expectedVersion: TfheVersion): void {
|
|
519
|
+
const actualVersion = getTaggedTfheVersion(value);
|
|
520
|
+
if (actualVersion !== expectedVersion) {
|
|
521
|
+
throw new Error(`Unexpected TFHE native wrapper version '${actualVersion}', expected '${expectedVersion}'.`);
|
|
522
|
+
}
|
|
523
|
+
}
|
|
192
524
|
|
|
193
525
|
/**
|
|
194
526
|
* Initializes the TFHE module and returns the loaded lib bindings.
|
|
195
|
-
* Idempotent: subsequent calls return the same cached lib instance.
|
|
527
|
+
* Idempotent per TFHE version: subsequent calls return the same cached lib instance.
|
|
196
528
|
*/
|
|
197
|
-
export async function initTfheModule(runtime: FhevmRuntime): Promise<TfheLibApi> {
|
|
529
|
+
export async function initTfheModule(runtime: FhevmRuntime, parameters: InitTfheModuleParameters): Promise<TfheLibApi> {
|
|
198
530
|
assertIsFhevmRuntime(runtime, {});
|
|
199
531
|
|
|
532
|
+
const ownerUid = ownerUidByVersion.get(parameters.tfheVersion);
|
|
200
533
|
if (ownerUid !== undefined && runtime.uid !== ownerUid) {
|
|
201
534
|
throw new Error(
|
|
202
535
|
`Encrypt WASM module is already owned by runtime '${ownerUid}' and cannot be shared with runtime '${runtime.uid}'`,
|
|
203
536
|
);
|
|
204
537
|
}
|
|
205
538
|
|
|
206
|
-
|
|
539
|
+
ownerUidByVersion.set(parameters.tfheVersion, runtime.uid);
|
|
207
540
|
|
|
208
541
|
// Cache the whole initialization promise before the first await. Several
|
|
209
542
|
// clients may call initTfheModule concurrently during startup; if the promise
|
|
210
543
|
// were assigned after resolving the config, each caller could enter
|
|
211
544
|
// _initTfheModule and try to start the global TFHE worker pool independently.
|
|
212
|
-
//
|
|
213
|
-
// one-shot, so
|
|
545
|
+
// Each TFHE version has its own JS glue module and worker pool, and each
|
|
546
|
+
// version's startWorkers() is intentionally one-shot, so concurrent callers
|
|
547
|
+
// for the same version must await the same promise.
|
|
214
548
|
//
|
|
215
549
|
// Retry is not supported:
|
|
216
550
|
// -----------------------
|
|
@@ -220,35 +554,42 @@ export async function initTfheModule(runtime: FhevmRuntime): Promise<TfheLibApi>
|
|
|
220
554
|
// original initialization error instead of retrying against half-initialized
|
|
221
555
|
// state and producing secondary errors such as "Already started".
|
|
222
556
|
|
|
223
|
-
|
|
557
|
+
let cachedTfheModulePromise = cachedTfheModulePromiseByVersion.get(parameters.tfheVersion);
|
|
224
558
|
if (cachedTfheModulePromise === undefined) {
|
|
225
559
|
cachedTfheModulePromise = (async () => {
|
|
226
560
|
// resolve is async
|
|
227
|
-
const cfg = await _getOrResolveTfheModuleConfig(runtime);
|
|
561
|
+
const cfg = await _getOrResolveTfheModuleConfig(runtime, parameters.tfheVersion);
|
|
228
562
|
return await _initTfheModule(cfg);
|
|
229
563
|
})();
|
|
564
|
+
|
|
565
|
+
cachedTfheModulePromiseByVersion.set(parameters.tfheVersion, cachedTfheModulePromise);
|
|
230
566
|
}
|
|
231
567
|
|
|
232
568
|
return cachedTfheModulePromise;
|
|
233
569
|
}
|
|
234
570
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
async function _initTfheModule(cfg: ResolvedTfheModuleConfig): Promise<TfheLibApi> {
|
|
238
|
-
const tfheLib = await loadTfheLib(cfg.version);
|
|
239
|
-
|
|
240
|
-
// Compile WASM module (see matrix in types.ts)
|
|
571
|
+
async function _compileWasmModule(cfg: ResolvedTfheModuleConfig): Promise<WebAssembly.Module> {
|
|
241
572
|
let wasmModule;
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
573
|
+
|
|
574
|
+
if (cfg.assets.wasm.url !== undefined) {
|
|
575
|
+
cfg.logger?.debug(`compile verified wasm at: ${cfg.assets.wasm.url}`);
|
|
576
|
+
wasmModule = await isomorphicCompileVerifiedWasm(cfg.assets.wasm.url, cfg.assets.wasm.sha256);
|
|
245
577
|
} else {
|
|
246
578
|
const { tfheWasmBase64, tfheWasmBase64CompressionFormat } = await loadTfheWasmBase64(cfg.version);
|
|
247
579
|
cfg.logger?.debug(`compile wasm from embedded base64 (compression:${tfheWasmBase64CompressionFormat ?? 'none'})`);
|
|
248
580
|
wasmModule = await isomorphicCompileWasmFromBase64(tfheWasmBase64, tfheWasmBase64CompressionFormat);
|
|
249
581
|
}
|
|
250
582
|
|
|
251
|
-
|
|
583
|
+
return wasmModule;
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
async function _initTfheModule(cfg: ResolvedTfheModuleConfig): Promise<TfheLibApi> {
|
|
587
|
+
const tfheLib = await loadTfheLib(cfg.version);
|
|
588
|
+
|
|
589
|
+
// 1. Compile WASM module
|
|
590
|
+
const wasmModule = await _compileWasmModule(cfg);
|
|
591
|
+
|
|
592
|
+
const input: TfheLibInitAsyncParameters = { module_or_path: wasmModule };
|
|
252
593
|
|
|
253
594
|
// 2. Load and instantiate the TFHE WASM binary
|
|
254
595
|
await tfheLib.initAsync(input);
|
|
@@ -263,15 +604,24 @@ async function _initTfheModule(cfg: ResolvedTfheModuleConfig): Promise<TfheLibAp
|
|
|
263
604
|
}
|
|
264
605
|
|
|
265
606
|
const wasmInfo = tfheLib.getWasmInfo();
|
|
607
|
+
const memory = { byteLength: 0, pages: 0 };
|
|
608
|
+
if (wasmInfo.memory !== undefined) {
|
|
609
|
+
memory.byteLength = wasmInfo.memory.byteLength;
|
|
610
|
+
memory.pages = wasmInfo.memory.pages;
|
|
611
|
+
}
|
|
266
612
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
613
|
+
moduleInfoByVersion.set(
|
|
614
|
+
cfg.version,
|
|
615
|
+
Object.freeze({
|
|
616
|
+
wasmUrl: cfg.assets.wasm.url ? new URL(cfg.assets.wasm.url) : undefined,
|
|
617
|
+
version: wasmInfo.version,
|
|
618
|
+
name: wasmInfo.name,
|
|
619
|
+
workerUrl: cfg.assets.worker.url ? new URL(cfg.assets.worker.url) : undefined,
|
|
620
|
+
numberOfThreads: cfg.singleThread ? 0 : cfg.numberOfThreads,
|
|
621
|
+
threadsAvailable: cfg.supportsThreads,
|
|
622
|
+
memory,
|
|
623
|
+
}),
|
|
624
|
+
);
|
|
275
625
|
|
|
276
626
|
return tfheLib;
|
|
277
627
|
}
|
|
@@ -280,6 +630,20 @@ async function _initTfheModule(cfg: ResolvedTfheModuleConfig): Promise<TfheLibAp
|
|
|
280
630
|
// getTfheModuleInfo
|
|
281
631
|
////////////////////////////////////////////////////////////////////////////////
|
|
282
632
|
|
|
283
|
-
export function getTfheModuleInfo(): GetTfheModuleInfoReturnType {
|
|
284
|
-
|
|
633
|
+
export async function getTfheModuleInfo(parameters: GetTfheModuleInfoParameters): Promise<GetTfheModuleInfoReturnType> {
|
|
634
|
+
const tfheLib = await loadTfheLib(parameters.tfheVersion);
|
|
635
|
+
const stored = moduleInfoByVersion.get(parameters.tfheVersion);
|
|
636
|
+
if (stored === undefined) {
|
|
637
|
+
throw new Error(`getTfheModuleInfo: no module info recorded for version "${parameters.tfheVersion}"`);
|
|
638
|
+
}
|
|
639
|
+
const memory: { byteLength: number; pages: number } = {
|
|
640
|
+
byteLength: stored.memory.byteLength,
|
|
641
|
+
pages: stored.memory.pages,
|
|
642
|
+
};
|
|
643
|
+
const wasmInfo = tfheLib.getWasmInfo();
|
|
644
|
+
if (wasmInfo.memory !== undefined) {
|
|
645
|
+
memory.byteLength = wasmInfo.memory.byteLength;
|
|
646
|
+
memory.pages = wasmInfo.memory.pages;
|
|
647
|
+
}
|
|
648
|
+
return { ...stored, memory };
|
|
285
649
|
}
|