@fhevm/sdk 1.1.0-alpha.4 → 1.1.0-alpha.5
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/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/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 +31 -7
- package/_cjs/core/kms/TransportKeyPair-p.js.map +1 -1
- package/_cjs/core/kms/createKmsUserDecryptEip712.js +4 -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 +40 -19
- 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 +63 -24
- 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/loadTfheLib.js.map +1 -1
- package/_cjs/wasm/tfhe/v1.5.3/tfhe.d.ts +4 -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/tfhe.d.ts +4 -0
- package/_cjs/wasm/tfhe/v1.6.1/tfhe.js +6 -1
- package/_cjs/wasm/tfhe/v1.6.1/tfhe.js.map +2 -2
- 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 +23 -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/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/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 +32 -7
- package/_esm/core/kms/TransportKeyPair-p.js.map +1 -1
- package/_esm/core/kms/createKmsUserDecryptEip712.js +4 -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 +41 -19
- 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 +69 -29
- 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/v1.5.3/tfhe.d.ts +4 -0
- package/_esm/wasm/tfhe/v1.5.3/tfhe.js +8 -0
- package/_esm/wasm/tfhe/v1.6.1/tfhe.d.ts +4 -0
- package/_esm/wasm/tfhe/v1.6.1/tfhe.js +8 -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 +69 -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/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/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/v1.5.3/tfhe.d.ts +4 -0
- package/_types/wasm/tfhe/v1.6.1/tfhe.d.ts +4 -0
- 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/object.ts +38 -0
- package/core/base/semver.ts +231 -0
- package/core/base/uint.ts +33 -4
- 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 +56 -10
- package/core/kms/createKmsUserDecryptEip712.ts +4 -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 +60 -28
- 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 +99 -40
- 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 +6 -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/v1.5.3/tfhe.d.ts +4 -0
- package/wasm/tfhe/v1.5.3/tfhe.js +8 -0
- package/wasm/tfhe/v1.6.0-dev/tfhe.d.ts +4 -0
- package/wasm/tfhe/v1.6.0-dev/tfhe.js +8 -0
- package/wasm/tfhe/v1.6.1/tfhe.d.ts +4 -0
- package/wasm/tfhe/v1.6.1/tfhe.js +8 -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 +69 -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/_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/_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
|
@@ -1,12 +1,16 @@
|
|
|
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
9
|
import type { TfheAssetMetadata, TfheVersion } from '../../../../wasm/tfhe/loadTfheLib.js';
|
|
5
10
|
import { isomorphicCompileVerifiedWasm, isomorphicCompileWasmFromBase64 } from '../../../base/wasm.js';
|
|
6
11
|
import { isBlobWorkerSupported, isBrowserLike } from '../../../base/isomorphicWorker.js';
|
|
7
12
|
import { threads } from 'wasm-feature-detect';
|
|
8
13
|
import { assertIsFhevmRuntime } from '../../../runtime/CoreFhevmRuntime-p.js';
|
|
9
|
-
import { resolveTfheModuleVersion } from '../../../../wasm/tfheModuleVersion-p.js';
|
|
10
14
|
// Pure JS file (not compiled by tsc) — provides cross-platform base URL
|
|
11
15
|
// for resolving WASM paths. Uses import.meta.url in ESM, __filename in CJS.
|
|
12
16
|
import { wasmBaseUrl } from '../../../../wasm/wasmBaseUrl.js';
|
|
@@ -23,7 +27,7 @@ const nodeDefaultLocateFile = (file: string): URL => {
|
|
|
23
27
|
|
|
24
28
|
type TfheInitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
|
|
25
29
|
|
|
26
|
-
type
|
|
30
|
+
type TfheLibInitAsyncParameters = {
|
|
27
31
|
readonly module_or_path: TfheInitInput | Promise<TfheInitInput>;
|
|
28
32
|
readonly memory?: WebAssembly.Memory;
|
|
29
33
|
readonly thread_stack_size?: number;
|
|
@@ -62,29 +66,37 @@ type ResolvedTfheModuleConfig = {
|
|
|
62
66
|
readonly supportsThreads: boolean | undefined;
|
|
63
67
|
};
|
|
64
68
|
|
|
65
|
-
|
|
66
|
-
|
|
69
|
+
const resolvedTfheModuleConfigByVersion = new Map<TfheVersion, ResolvedTfheModuleConfig>();
|
|
70
|
+
const resolvingTfheModuleConfigPromiseByVersion = new Map<TfheVersion, Promise<ResolvedTfheModuleConfig>>();
|
|
67
71
|
|
|
68
72
|
/**
|
|
69
73
|
* @internal
|
|
70
|
-
* Returns the existing resolved config, or resolves it from
|
|
74
|
+
* Returns the existing resolved config for a TFHE version, or resolves it from
|
|
75
|
+
* the runtime config.
|
|
71
76
|
*/
|
|
72
|
-
async function _getOrResolveTfheModuleConfig(
|
|
77
|
+
async function _getOrResolveTfheModuleConfig(
|
|
78
|
+
runtime: FhevmRuntime,
|
|
79
|
+
tfheVersion: TfheVersion,
|
|
80
|
+
): Promise<ResolvedTfheModuleConfig> {
|
|
81
|
+
const resolvedTfheModuleConfig = resolvedTfheModuleConfigByVersion.get(tfheVersion);
|
|
73
82
|
if (resolvedTfheModuleConfig !== undefined) {
|
|
74
83
|
return resolvedTfheModuleConfig;
|
|
75
84
|
}
|
|
76
85
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
let resolvingTfheModuleConfigPromise = resolvingTfheModuleConfigPromiseByVersion.get(tfheVersion);
|
|
87
|
+
if (resolvingTfheModuleConfigPromise === undefined) {
|
|
88
|
+
resolvingTfheModuleConfigPromise = _resolveTfheModuleConfig(runtime.config, tfheVersion)
|
|
89
|
+
.then((cfg) => {
|
|
90
|
+
resolvedTfheModuleConfigByVersion.set(tfheVersion, cfg);
|
|
91
|
+
return cfg;
|
|
92
|
+
})
|
|
93
|
+
.catch((error: unknown) => {
|
|
94
|
+
resolvingTfheModuleConfigPromiseByVersion.delete(tfheVersion);
|
|
95
|
+
throw error;
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
resolvingTfheModuleConfigPromiseByVersion.set(tfheVersion, resolvingTfheModuleConfigPromise);
|
|
99
|
+
}
|
|
88
100
|
|
|
89
101
|
return resolvingTfheModuleConfigPromise;
|
|
90
102
|
}
|
|
@@ -187,30 +199,54 @@ async function _resolveTfheModuleConfig(
|
|
|
187
199
|
// initTfheModule
|
|
188
200
|
////////////////////////////////////////////////////////////////////////////////
|
|
189
201
|
|
|
190
|
-
|
|
191
|
-
|
|
202
|
+
const ownerUidByVersion = new Map<TfheVersion, string>();
|
|
203
|
+
const cachedTfheModulePromiseByVersion = new Map<TfheVersion, Promise<TfheLibApi>>();
|
|
204
|
+
const moduleInfoByVersion = new Map<TfheVersion, TfheModuleInfo>();
|
|
205
|
+
|
|
206
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
207
|
+
// Version-tagged native wrappers
|
|
208
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
209
|
+
|
|
210
|
+
export const TFHE_VERSION_TAG: unique symbol = Symbol('TFHE.version');
|
|
211
|
+
|
|
212
|
+
export type VersionTaggedTfheNative = {
|
|
213
|
+
readonly [TFHE_VERSION_TAG]: TfheVersion;
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
export function getTaggedTfheVersion(value: VersionTaggedTfheNative): TfheVersion {
|
|
217
|
+
return value[TFHE_VERSION_TAG];
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export function assertTaggedTfheVersion(value: VersionTaggedTfheNative, expectedVersion: TfheVersion): void {
|
|
221
|
+
const actualVersion = getTaggedTfheVersion(value);
|
|
222
|
+
if (actualVersion !== expectedVersion) {
|
|
223
|
+
throw new Error(`Unexpected TFHE native wrapper version '${actualVersion}', expected '${expectedVersion}'.`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
192
226
|
|
|
193
227
|
/**
|
|
194
228
|
* Initializes the TFHE module and returns the loaded lib bindings.
|
|
195
|
-
* Idempotent: subsequent calls return the same cached lib instance.
|
|
229
|
+
* Idempotent per TFHE version: subsequent calls return the same cached lib instance.
|
|
196
230
|
*/
|
|
197
|
-
export async function initTfheModule(runtime: FhevmRuntime): Promise<TfheLibApi> {
|
|
231
|
+
export async function initTfheModule(runtime: FhevmRuntime, parameters: InitTfheModuleParameters): Promise<TfheLibApi> {
|
|
198
232
|
assertIsFhevmRuntime(runtime, {});
|
|
199
233
|
|
|
234
|
+
const ownerUid = ownerUidByVersion.get(parameters.tfheVersion);
|
|
200
235
|
if (ownerUid !== undefined && runtime.uid !== ownerUid) {
|
|
201
236
|
throw new Error(
|
|
202
237
|
`Encrypt WASM module is already owned by runtime '${ownerUid}' and cannot be shared with runtime '${runtime.uid}'`,
|
|
203
238
|
);
|
|
204
239
|
}
|
|
205
240
|
|
|
206
|
-
|
|
241
|
+
ownerUidByVersion.set(parameters.tfheVersion, runtime.uid);
|
|
207
242
|
|
|
208
243
|
// Cache the whole initialization promise before the first await. Several
|
|
209
244
|
// clients may call initTfheModule concurrently during startup; if the promise
|
|
210
245
|
// were assigned after resolving the config, each caller could enter
|
|
211
246
|
// _initTfheModule and try to start the global TFHE worker pool independently.
|
|
212
|
-
//
|
|
213
|
-
// one-shot, so
|
|
247
|
+
// Each TFHE version has its own JS glue module and worker pool, and each
|
|
248
|
+
// version's startWorkers() is intentionally one-shot, so concurrent callers
|
|
249
|
+
// for the same version must await the same promise.
|
|
214
250
|
//
|
|
215
251
|
// Retry is not supported:
|
|
216
252
|
// -----------------------
|
|
@@ -220,20 +256,20 @@ export async function initTfheModule(runtime: FhevmRuntime): Promise<TfheLibApi>
|
|
|
220
256
|
// original initialization error instead of retrying against half-initialized
|
|
221
257
|
// state and producing secondary errors such as "Already started".
|
|
222
258
|
|
|
223
|
-
|
|
259
|
+
let cachedTfheModulePromise = cachedTfheModulePromiseByVersion.get(parameters.tfheVersion);
|
|
224
260
|
if (cachedTfheModulePromise === undefined) {
|
|
225
261
|
cachedTfheModulePromise = (async () => {
|
|
226
262
|
// resolve is async
|
|
227
|
-
const cfg = await _getOrResolveTfheModuleConfig(runtime);
|
|
263
|
+
const cfg = await _getOrResolveTfheModuleConfig(runtime, parameters.tfheVersion);
|
|
228
264
|
return await _initTfheModule(cfg);
|
|
229
265
|
})();
|
|
266
|
+
|
|
267
|
+
cachedTfheModulePromiseByVersion.set(parameters.tfheVersion, cachedTfheModulePromise);
|
|
230
268
|
}
|
|
231
269
|
|
|
232
270
|
return cachedTfheModulePromise;
|
|
233
271
|
}
|
|
234
272
|
|
|
235
|
-
let moduleInfo: TfheModuleInfo | undefined = undefined;
|
|
236
|
-
|
|
237
273
|
async function _initTfheModule(cfg: ResolvedTfheModuleConfig): Promise<TfheLibApi> {
|
|
238
274
|
const tfheLib = await loadTfheLib(cfg.version);
|
|
239
275
|
|
|
@@ -248,7 +284,7 @@ async function _initTfheModule(cfg: ResolvedTfheModuleConfig): Promise<TfheLibAp
|
|
|
248
284
|
wasmModule = await isomorphicCompileWasmFromBase64(tfheWasmBase64, tfheWasmBase64CompressionFormat);
|
|
249
285
|
}
|
|
250
286
|
|
|
251
|
-
const input:
|
|
287
|
+
const input: TfheLibInitAsyncParameters = { module_or_path: wasmModule };
|
|
252
288
|
|
|
253
289
|
// 2. Load and instantiate the TFHE WASM binary
|
|
254
290
|
await tfheLib.initAsync(input);
|
|
@@ -263,15 +299,24 @@ async function _initTfheModule(cfg: ResolvedTfheModuleConfig): Promise<TfheLibAp
|
|
|
263
299
|
}
|
|
264
300
|
|
|
265
301
|
const wasmInfo = tfheLib.getWasmInfo();
|
|
302
|
+
const memory = { byteLength: 0, pages: 0 };
|
|
303
|
+
if (wasmInfo.memory !== undefined) {
|
|
304
|
+
memory.byteLength = wasmInfo.memory.byteLength;
|
|
305
|
+
memory.pages = wasmInfo.memory.pages;
|
|
306
|
+
}
|
|
266
307
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
308
|
+
moduleInfoByVersion.set(
|
|
309
|
+
cfg.version,
|
|
310
|
+
Object.freeze({
|
|
311
|
+
wasmUrl: cfg.wasm.url ? new URL(cfg.wasm.url) : undefined,
|
|
312
|
+
version: wasmInfo.version,
|
|
313
|
+
name: wasmInfo.name,
|
|
314
|
+
workerUrl: cfg.worker.url ? new URL(cfg.worker.url) : undefined,
|
|
315
|
+
numberOfThreads: cfg.singleThread ? 0 : cfg.numberOfThreads,
|
|
316
|
+
threadsAvailable: cfg.supportsThreads,
|
|
317
|
+
memory,
|
|
318
|
+
}),
|
|
319
|
+
);
|
|
275
320
|
|
|
276
321
|
return tfheLib;
|
|
277
322
|
}
|
|
@@ -280,6 +325,20 @@ async function _initTfheModule(cfg: ResolvedTfheModuleConfig): Promise<TfheLibAp
|
|
|
280
325
|
// getTfheModuleInfo
|
|
281
326
|
////////////////////////////////////////////////////////////////////////////////
|
|
282
327
|
|
|
283
|
-
export function getTfheModuleInfo(): GetTfheModuleInfoReturnType {
|
|
284
|
-
|
|
328
|
+
export async function getTfheModuleInfo(parameters: GetTfheModuleInfoParameters): Promise<GetTfheModuleInfoReturnType> {
|
|
329
|
+
const tfheLib = await loadTfheLib(parameters.tfheVersion);
|
|
330
|
+
const stored = moduleInfoByVersion.get(parameters.tfheVersion);
|
|
331
|
+
if (stored === undefined) {
|
|
332
|
+
throw new Error(`getTfheModuleInfo: no module info recorded for version "${parameters.tfheVersion}"`);
|
|
333
|
+
}
|
|
334
|
+
const memory: { byteLength: number; pages: number } = {
|
|
335
|
+
byteLength: stored.memory.byteLength,
|
|
336
|
+
pages: stored.memory.pages,
|
|
337
|
+
};
|
|
338
|
+
const wasmInfo = tfheLib.getWasmInfo();
|
|
339
|
+
if (wasmInfo.memory !== undefined) {
|
|
340
|
+
memory.byteLength = wasmInfo.memory.byteLength;
|
|
341
|
+
memory.pages = wasmInfo.memory.pages;
|
|
342
|
+
}
|
|
343
|
+
return { ...stored, memory };
|
|
285
344
|
}
|
|
@@ -10,6 +10,7 @@ import type {
|
|
|
10
10
|
} from '../../types/fheEncryptionKey.js';
|
|
11
11
|
import type { Prettify } from '../../types/utils.js';
|
|
12
12
|
import type { FhevmRuntime } from '../../types/coreFhevmRuntime.js';
|
|
13
|
+
import type { TfheVersion } from '../../../wasm/tfhe/TfheApi.js';
|
|
13
14
|
|
|
14
15
|
////////////////////////////////////////////////////////////////////////////////
|
|
15
16
|
//
|
|
@@ -39,8 +40,12 @@ Worker creation (how to spawn thread pool workers):
|
|
|
39
40
|
// initTfheModuleFunction
|
|
40
41
|
////////////////////////////////////////////////////////////////////////////////
|
|
41
42
|
|
|
43
|
+
export type InitTfheModuleParameters = {
|
|
44
|
+
readonly tfheVersion: TfheVersion;
|
|
45
|
+
};
|
|
46
|
+
|
|
42
47
|
export type InitTfheModuleFunction = {
|
|
43
|
-
initTfheModule(): Promise<void>;
|
|
48
|
+
initTfheModule(parameters: InitTfheModuleParameters): Promise<void>;
|
|
44
49
|
};
|
|
45
50
|
|
|
46
51
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -73,6 +78,25 @@ export type TfheModuleInfo = {
|
|
|
73
78
|
* - `false` — multi-threading was requested but unavailable; fell back to single-threaded.
|
|
74
79
|
*/
|
|
75
80
|
readonly threadsAvailable: boolean | undefined;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Current size of the TFHE WASM linear memory.
|
|
84
|
+
* This is the size of the underlying `WebAssembly.Memory` buffer, not live heap usage.
|
|
85
|
+
*/
|
|
86
|
+
readonly memory: {
|
|
87
|
+
/**
|
|
88
|
+
* Current memory buffer size in bytes.
|
|
89
|
+
*/
|
|
90
|
+
readonly byteLength: number;
|
|
91
|
+
/**
|
|
92
|
+
* Current memory buffer size in 64 KiB WASM pages.
|
|
93
|
+
*/
|
|
94
|
+
readonly pages: number;
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
export type GetTfheModuleInfoParameters = {
|
|
99
|
+
readonly tfheVersion: TfheVersion;
|
|
76
100
|
};
|
|
77
101
|
|
|
78
102
|
export type GetTfheModuleInfoReturnType = TfheModuleInfo | undefined;
|
|
@@ -82,7 +106,7 @@ export type GetTfheModuleInfoFunction = {
|
|
|
82
106
|
* Returns {@link TfheModuleInfo} when the module is initialized,
|
|
83
107
|
* or `undefined` if the module has not completed initialization.
|
|
84
108
|
*/
|
|
85
|
-
getTfheModuleInfo(): GetTfheModuleInfoReturnType
|
|
109
|
+
getTfheModuleInfo(parameters: GetTfheModuleInfoParameters): Promise<GetTfheModuleInfoReturnType>;
|
|
86
110
|
};
|
|
87
111
|
|
|
88
112
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -91,6 +115,7 @@ export type GetTfheModuleInfoFunction = {
|
|
|
91
115
|
|
|
92
116
|
export type ParseTFHEProvenCompactCiphertextListParameters = {
|
|
93
117
|
readonly ciphertextWithZkProof: Uint8Array | string;
|
|
118
|
+
readonly tfheVersion: TfheVersion;
|
|
94
119
|
};
|
|
95
120
|
|
|
96
121
|
export type ParseTFHEProvenCompactCiphertextListReturnType = {
|
|
@@ -113,11 +138,13 @@ export type BuildWithProofPackedParameters = {
|
|
|
113
138
|
readonly typedValues: TypedValue[];
|
|
114
139
|
readonly metaData: Uint8Array;
|
|
115
140
|
readonly extraData: BytesHex;
|
|
141
|
+
readonly tfheVersion: TfheVersion;
|
|
116
142
|
};
|
|
117
143
|
|
|
118
144
|
export type BuildWithProofPackedReturnType = {
|
|
119
145
|
readonly ciphertextWithZKProofBytes: Uint8Array;
|
|
120
146
|
readonly extraData: BytesHex;
|
|
147
|
+
readonly tfheVersion: TfheVersion;
|
|
121
148
|
};
|
|
122
149
|
|
|
123
150
|
export type BuildWithProofPackedModuleFunction = {
|
|
@@ -130,6 +157,7 @@ export type BuildWithProofPackedModuleFunction = {
|
|
|
130
157
|
|
|
131
158
|
export type SerializeFheEncryptionKeyParameters = {
|
|
132
159
|
readonly fheEncryptionKey: FheEncryptionKeyWasm;
|
|
160
|
+
readonly tfheVersion: TfheVersion;
|
|
133
161
|
};
|
|
134
162
|
|
|
135
163
|
export type SerializeFheEncryptionKeyReturnType = FheEncryptionKeyBytes;
|
|
@@ -146,6 +174,7 @@ export type SerializeFheEncryptionKeyModuleFunction = {
|
|
|
146
174
|
|
|
147
175
|
export type SerializeFheEncryptionPublicKeyParameters = {
|
|
148
176
|
readonly publicKey: FheEncryptionPublicKey;
|
|
177
|
+
readonly tfheVersion: TfheVersion;
|
|
149
178
|
};
|
|
150
179
|
|
|
151
180
|
export type SerializeFheEncryptionPublicKeyReturnType = FheEncryptionPublicKeyBytes;
|
|
@@ -162,6 +191,7 @@ export type SerializeFheEncryptionPublicKeyModuleFunction = {
|
|
|
162
191
|
|
|
163
192
|
export type SerializeFheEncryptionCrsParameters = {
|
|
164
193
|
readonly crs: FheEncryptionCrs;
|
|
194
|
+
readonly tfheVersion: TfheVersion;
|
|
165
195
|
};
|
|
166
196
|
|
|
167
197
|
export type SerializeFheEncryptionCrsReturnType = FheEncryptionCrsBytes;
|
|
@@ -178,6 +208,7 @@ export type SerializeFheEncryptionCrsModuleFunction = {
|
|
|
178
208
|
|
|
179
209
|
export type DeserializeFheEncryptionPublicKeyParameters = {
|
|
180
210
|
readonly publicKeyBytes: FheEncryptionPublicKeyBytes;
|
|
211
|
+
readonly tfheVersion: TfheVersion;
|
|
181
212
|
};
|
|
182
213
|
|
|
183
214
|
export type DeserializeFheEncryptionPublicKeyReturnType = FheEncryptionPublicKey;
|
|
@@ -194,6 +225,7 @@ export type DeserializeFheEncryptionPublicKeyModuleFunction = {
|
|
|
194
225
|
|
|
195
226
|
export type DeserializeFheEncryptionCrsParameters = {
|
|
196
227
|
readonly crsBytes: FheEncryptionCrsBytes;
|
|
228
|
+
readonly tfheVersion: TfheVersion;
|
|
197
229
|
};
|
|
198
230
|
|
|
199
231
|
export type DeserializeFheEncryptionCrsReturnType = FheEncryptionCrs;
|
|
@@ -7,7 +7,7 @@ import type {
|
|
|
7
7
|
RelayerClientWithRuntime,
|
|
8
8
|
} from '../types.js';
|
|
9
9
|
import { remove0x } from '../../../base/string.js';
|
|
10
|
-
import { asUint32BigInt,
|
|
10
|
+
import { asUint32BigInt, tryParseUintBigIntString, randomUniqueUints } from '../../../base/uint.js';
|
|
11
11
|
import { getTrustedClient } from '../../../runtime/CoreFhevm-p.js';
|
|
12
12
|
import { userDecryptResultToKmsSigncryptedShares } from '../utils.js';
|
|
13
13
|
import { getKmsSignersPrivateKeyMap } from './signers.js';
|
|
@@ -139,7 +139,7 @@ export async function fetchDelegatedUserDecrypt(
|
|
|
139
139
|
////////////////////////////////////////////////////////////////////////////////
|
|
140
140
|
|
|
141
141
|
function _parseUintBigIntString(label: string, value: string): bigint {
|
|
142
|
-
const bn =
|
|
142
|
+
const bn = tryParseUintBigIntString(value);
|
|
143
143
|
if (bn === undefined) {
|
|
144
144
|
throw new Error(`${label} is not a valid uint string, got ${JSON.stringify(value)}`);
|
|
145
145
|
}
|
|
@@ -3,7 +3,7 @@ import type { FetchUserDecryptResultItem } from '../../../types/relayer.js';
|
|
|
3
3
|
import type { CleartextEthereumModule } from '../../ethereum/types-ct.js';
|
|
4
4
|
import type { FetchUserDecryptParameters, FetchUserDecryptReturnType, RelayerClientWithRuntime } from '../types.js';
|
|
5
5
|
import { remove0x } from '../../../base/string.js';
|
|
6
|
-
import { asUint32BigInt,
|
|
6
|
+
import { asUint32BigInt, tryParseUintBigIntString, randomUniqueUints } from '../../../base/uint.js';
|
|
7
7
|
import { getTrustedClient } from '../../../runtime/CoreFhevm-p.js';
|
|
8
8
|
import { userDecryptResultToKmsSigncryptedShares } from '../utils.js';
|
|
9
9
|
import { getKmsSignersPrivateKeyMap } from './signers.js';
|
|
@@ -133,7 +133,7 @@ export async function fetchUserDecrypt(
|
|
|
133
133
|
////////////////////////////////////////////////////////////////////////////////
|
|
134
134
|
|
|
135
135
|
function _parseUintBigIntString(label: string, value: string): bigint {
|
|
136
|
-
const bn =
|
|
136
|
+
const bn = tryParseUintBigIntString(value);
|
|
137
137
|
if (bn === undefined) {
|
|
138
138
|
throw new Error(`${label} is not a valid uint string, got ${JSON.stringify(value)}`);
|
|
139
139
|
}
|
|
@@ -65,6 +65,7 @@ import {
|
|
|
65
65
|
assertIsRelayerPostResponse202Queued,
|
|
66
66
|
} from './guards/RelayerResponseQueued.js';
|
|
67
67
|
import { assertIsRelayerUserDecryptSucceeded } from './guards/RelayerUserDecryptSucceeded.js';
|
|
68
|
+
import { readErrorMessage } from './readErrorMessage.js';
|
|
68
69
|
|
|
69
70
|
/*
|
|
70
71
|
Actions:
|
|
@@ -490,6 +491,15 @@ export class RelayerAsyncRequest {
|
|
|
490
491
|
|
|
491
492
|
// At this stage: `terminated` is guaranteed to be `false`.
|
|
492
493
|
|
|
494
|
+
// 403 is not part of the typed relayer contract: it is emitted by an
|
|
495
|
+
// edge proxy (Cloudflare/Kong), typically on a missing/invalid
|
|
496
|
+
// `x-api-key`. Intercept it before the typed switch, read the JSON body,
|
|
497
|
+
// and surface the edge message instead of discarding it.
|
|
498
|
+
if (response.status === 403) {
|
|
499
|
+
const { message } = await readErrorMessage(response);
|
|
500
|
+
this._throwUnexpectedStatusError(403, message);
|
|
501
|
+
}
|
|
502
|
+
|
|
493
503
|
const responseStatus: RelayerPostResponseStatus = response.status as RelayerPostResponseStatus;
|
|
494
504
|
|
|
495
505
|
switch (responseStatus) {
|
|
@@ -564,7 +574,10 @@ export class RelayerAsyncRequest {
|
|
|
564
574
|
// RelayerApiError401
|
|
565
575
|
// falls through
|
|
566
576
|
case 401: {
|
|
567
|
-
|
|
577
|
+
// Surface the message the origin (Kong/relayer) actually sent for a
|
|
578
|
+
// missing/invalid `x-api-key`, falling back to the canned string.
|
|
579
|
+
const { message } = await readErrorMessage(response);
|
|
580
|
+
this._throwUnauthorizedError(responseStatus, message);
|
|
568
581
|
}
|
|
569
582
|
// RelayerResponseFailed
|
|
570
583
|
// RelayerApiError429
|
|
@@ -724,6 +737,15 @@ export class RelayerAsyncRequest {
|
|
|
724
737
|
|
|
725
738
|
// At this stage: `terminated` is guaranteed to be `false`.
|
|
726
739
|
|
|
740
|
+
// 403 is not part of the typed relayer contract: it is emitted by an
|
|
741
|
+
// edge proxy (Cloudflare/Kong), typically on a missing/invalid
|
|
742
|
+
// `x-api-key`. Intercept it before the typed switch, read the JSON body,
|
|
743
|
+
// and surface the edge message instead of discarding it.
|
|
744
|
+
if (response.status === 403) {
|
|
745
|
+
const { message } = await readErrorMessage(response);
|
|
746
|
+
this._throwUnexpectedStatusError(403, message);
|
|
747
|
+
}
|
|
748
|
+
|
|
727
749
|
const responseStatus: RelayerGetResponseStatus = response.status as RelayerGetResponseStatus;
|
|
728
750
|
|
|
729
751
|
switch (responseStatus) {
|
|
@@ -961,7 +983,10 @@ export class RelayerAsyncRequest {
|
|
|
961
983
|
}
|
|
962
984
|
// falls through
|
|
963
985
|
case 401: {
|
|
964
|
-
|
|
986
|
+
// Surface the message the origin (Kong/relayer) actually sent for a
|
|
987
|
+
// missing/invalid `x-api-key`, falling back to the canned string.
|
|
988
|
+
const { message } = await readErrorMessage(response);
|
|
989
|
+
this._throwUnauthorizedError(responseStatus, message);
|
|
965
990
|
}
|
|
966
991
|
// falls through
|
|
967
992
|
case 404: {
|
|
@@ -1601,18 +1626,49 @@ export class RelayerAsyncRequest {
|
|
|
1601
1626
|
|
|
1602
1627
|
/**
|
|
1603
1628
|
* Throws an unauthorized error for 401 responses.
|
|
1629
|
+
*
|
|
1630
|
+
* The `message` surfaced from the response body (the relayer/edge JSON error)
|
|
1631
|
+
* is used when present; otherwise the canned string is kept. The
|
|
1632
|
+
* `'unauthorized'` label and error shape are preserved so downstream
|
|
1633
|
+
* consumers reading `relayerApiError.message`/`.label` keep working.
|
|
1634
|
+
*
|
|
1635
|
+
* @param status - The 401 status.
|
|
1636
|
+
* @param surfacedMessage - The message read from the response body, if any.
|
|
1604
1637
|
* @throws {RelayerResponseApiError} Always throws with 'unauthorized' label.
|
|
1605
1638
|
*/
|
|
1606
|
-
private _throwUnauthorizedError(status: Extract<RelayerFailureStatus, 401
|
|
1639
|
+
private _throwUnauthorizedError(status: Extract<RelayerFailureStatus, 401>, surfacedMessage?: string): never {
|
|
1607
1640
|
this._throwRelayerResponseApiError({
|
|
1608
1641
|
status,
|
|
1609
1642
|
relayerApiError: {
|
|
1610
1643
|
label: 'unauthorized',
|
|
1611
|
-
message: 'Unauthorized, missing or invalid Zama Fhevm API Key.',
|
|
1644
|
+
message: surfacedMessage ?? 'Unauthorized, missing or invalid Zama Fhevm API Key.',
|
|
1612
1645
|
},
|
|
1613
1646
|
});
|
|
1614
1647
|
}
|
|
1615
1648
|
|
|
1649
|
+
/**
|
|
1650
|
+
* Throws for an HTTP status that is not part of the typed relayer contract —
|
|
1651
|
+
* e.g. a 403 emitted by an edge proxy (Cloudflare/Kong). The `message`
|
|
1652
|
+
* surfaced from the JSON body is appended to the error when present.
|
|
1653
|
+
*
|
|
1654
|
+
* @param status - The unexpected HTTP status.
|
|
1655
|
+
* @param surfacedMessage - The message read from the response body, if any.
|
|
1656
|
+
* @throws {RelayerResponseStatusError} Always throws.
|
|
1657
|
+
*/
|
|
1658
|
+
private _throwUnexpectedStatusError(status: number, surfacedMessage?: string): never {
|
|
1659
|
+
throw new RelayerResponseStatusError({
|
|
1660
|
+
fetchMethod: this._fetchMethod as unknown as RelayerFetchMethod,
|
|
1661
|
+
status,
|
|
1662
|
+
url: this._url,
|
|
1663
|
+
...(this._jobId !== undefined ? { jobId: this._jobId } : {}),
|
|
1664
|
+
operation: this._relayerOperation,
|
|
1665
|
+
elapsed: this._elapsed,
|
|
1666
|
+
retryCount: this._retryCount,
|
|
1667
|
+
state: { ...this._state },
|
|
1668
|
+
...(surfacedMessage !== undefined ? { responseMessage: surfacedMessage } : {}),
|
|
1669
|
+
});
|
|
1670
|
+
}
|
|
1671
|
+
|
|
1616
1672
|
// private _throwRelayerResponseApiErrorLoose(params: { status: number; bodyJson: Record<string, unknown> }): never {
|
|
1617
1673
|
// // body is considered ok if:
|
|
1618
1674
|
// // body.error exists
|
|
@@ -11,6 +11,7 @@ import { fetchWithRetry, normalizeHeaders } from '../../../base/fetch.js';
|
|
|
11
11
|
import { sdkName, version } from '../../../_version.js';
|
|
12
12
|
import { assertRecordStringArrayProperty, assertRecordStringProperty } from '../../../base/string.js';
|
|
13
13
|
import { buildRelayerUrlString, validateRelayerBaseUrl } from './relayerUrl.js';
|
|
14
|
+
import { readErrorMessage } from './readErrorMessage.js';
|
|
14
15
|
import { assert } from '../../../base/errors/InternalError.js';
|
|
15
16
|
|
|
16
17
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -59,9 +60,16 @@ export async function fetchFheEncryptionKeySource(
|
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
if (!response.ok) {
|
|
63
|
+
// Surface the message the relayer/edge (Cloudflare/Kong) actually sent for
|
|
64
|
+
// a 401/403 — e.g. a missing/invalid `x-api-key` — instead of discarding
|
|
65
|
+
// the body behind a generic "HTTP error! status: X".
|
|
66
|
+
const { message } = await readErrorMessage(response);
|
|
62
67
|
_throwFetchError({
|
|
63
68
|
url,
|
|
64
|
-
message:
|
|
69
|
+
message:
|
|
70
|
+
message !== undefined
|
|
71
|
+
? `HTTP error! status: ${response.status} on ${response.url}: ${message}`
|
|
72
|
+
: `HTTP error! status: ${response.status} on ${response.url}`,
|
|
65
73
|
});
|
|
66
74
|
}
|
|
67
75
|
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { isNonEmptyString, isRecordStringProperty } from '../../../base/string.js';
|
|
2
|
+
|
|
3
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
4
|
+
// readErrorMessage
|
|
5
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Best-effort reader that surfaces the message a relayer or an intermediary
|
|
9
|
+
* edge proxy (Cloudflare/Kong) actually sent in a non-2xx JSON error body.
|
|
10
|
+
*
|
|
11
|
+
* Two body shapes are recognized:
|
|
12
|
+
* - relayer: `{ "error": { "message": "...", "label": "..." } }`
|
|
13
|
+
* - Cloudflare / Kong: `{ "message": "...", "label": "..." }` (flat)
|
|
14
|
+
*
|
|
15
|
+
* The body is read at most once and only surfaced when it parses as JSON. A
|
|
16
|
+
* non-JSON body (a bare `"Forbidden"`/`"Rate Limit"` string, an HTML error
|
|
17
|
+
* page, ...) intentionally surfaces nothing, so the previous behavior for those
|
|
18
|
+
* responses is preserved and no noise leaks into error messages.
|
|
19
|
+
*
|
|
20
|
+
* This function never throws.
|
|
21
|
+
*
|
|
22
|
+
* Empty-string `message`/`label` values are treated as absent.
|
|
23
|
+
*
|
|
24
|
+
* @param response - The non-2xx fetch {@link Response} to inspect.
|
|
25
|
+
* @returns The surfaced non-empty `message` and/or `label`, or an empty object
|
|
26
|
+
* when the body is missing, unreadable, not JSON, or carries neither.
|
|
27
|
+
*/
|
|
28
|
+
export async function readErrorMessage(
|
|
29
|
+
response: Response,
|
|
30
|
+
): Promise<{ message?: string | undefined; label?: string | undefined }> {
|
|
31
|
+
let text: string;
|
|
32
|
+
try {
|
|
33
|
+
text = await response.text();
|
|
34
|
+
} catch {
|
|
35
|
+
return {};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (text.length === 0) {
|
|
39
|
+
return {};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
try {
|
|
43
|
+
const json: unknown = JSON.parse(text);
|
|
44
|
+
const err: unknown = typeof json === 'object' && json !== null && 'error' in json ? json.error : json;
|
|
45
|
+
// Treat empty strings as absent so callers can use `?? <fallback>` safely.
|
|
46
|
+
const message = isRecordStringProperty(err, 'message') && isNonEmptyString(err.message) ? err.message : undefined;
|
|
47
|
+
const label = isRecordStringProperty(err, 'label') && isNonEmptyString(err.label) ? err.label : undefined;
|
|
48
|
+
if (message !== undefined || label !== undefined) {
|
|
49
|
+
return { message, label };
|
|
50
|
+
}
|
|
51
|
+
} catch {
|
|
52
|
+
// Body wasn't JSON — surface nothing and leave the non-JSON behavior unchanged.
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return {};
|
|
56
|
+
}
|