@orbinum/sdk 0.24.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1718,6 +1718,46 @@ interface SelfEphWindowEntry {
1718
1718
  */
1719
1719
  declare function selfEphWindow(spendingKey: bigint, ivkPacked: Uint8Array, from: number, count: number): SelfEphWindowEntry[];
1720
1720
 
1721
+ /**
1722
+ * The secret shared by a sender/receiver pair: ECDH between one side's viewing
1723
+ * SECRET key and the other side's viewing PUBLIC key. Symmetric — both parties
1724
+ * compute the same 32 bytes from opposite inputs, which is what lets the
1725
+ * sender choose an ephemeral the receiver can predict.
1726
+ *
1727
+ * @param myViewingSk 32-byte viewing secret key (from `deriveViewingSecretKey`).
1728
+ * @param theirIvkPacked 32-byte LE packed viewing public key of the other party.
1729
+ */
1730
+ declare function derivePairwiseSharedSecret(myViewingSk: Uint8Array, theirIvkPacked: Uint8Array): Uint8Array;
1731
+ /**
1732
+ * The ephemeral secret for the `index`-th note between this pair. Feed it to
1733
+ * `EncryptedMemo.encrypt` / `NoteBuilder.build` as `ephSkOverride`.
1734
+ */
1735
+ declare function derivePairwiseEphSk(pairSecret: Uint8Array, index: number): Uint8Array;
1736
+ /** One precomputed pairwise window entry — same shape as `SelfEphWindowEntry`. */
1737
+ interface PairwiseEphWindowEntry {
1738
+ index: number;
1739
+ /** 0x-prefixed LE-packed ephPk — byte-identical to the memo's last 32 bytes. */
1740
+ ephPkHex: string;
1741
+ /** ECDH shared secret vs the RECEIVER's ivk — feeds decryptWithSharedSecret. */
1742
+ sharedSecret: Uint8Array;
1743
+ }
1744
+ /**
1745
+ * Precomputes the discovery window [from, from+count) for one counterparty:
1746
+ * for each index, the ephPk that party would publish and the secret needed to
1747
+ * open the memo. One EC pass per sender up front; the scan then matches by hex
1748
+ * equality with no per-hint EC work.
1749
+ *
1750
+ * The cost is paid once per sender and reused across every page of the scan,
1751
+ * which is what makes it worth building — unlike a per-hint precompute, which
1752
+ * measured 26× SLOWER than just doing the multiplication.
1753
+ *
1754
+ * @param pairSecret From `derivePairwiseSharedSecret`.
1755
+ * @param receiverIvkPacked The RECEIVER's packed viewing public key — the memo
1756
+ * is encrypted to it, so the shared secret is against
1757
+ * that key regardless of which side is precomputing.
1758
+ */
1759
+ declare function pairwiseEphWindow(pairSecret: Uint8Array, receiverIvkPacked: Uint8Array, from: number, count: number): PairwiseEphWindowEntry[];
1760
+
1721
1761
  /**
1722
1762
  * NoteDecryptor
1723
1763
  *
@@ -3564,4 +3604,4 @@ interface ExtrinsicFailedData {
3564
3604
  dispatch_info: DispatchInfo;
3565
3605
  }
3566
3606
 
3567
- export { type ActiveVersionSetEvent, type AssetRegisteredEvent, type AssetUnverifiedEvent, type AssetVerifiedEvent, BABYJUB_SUBORDER, BN254_R, type BatchRegisterVerificationKeysArgs, type BatchVerificationKeysRegisteredEvent, type BlockInfo, type Bytes32, CURRENT_CIRCUIT_VERSION, type ChainInfo, CircuitId, CircuitId as CircuitIdType, CircuitVersionResolver, type ClaimShieldedFeesParams, type ClientProviderConfig, type CommitmentsInsertedEvent, type CommitmentsInsertedEventData, type ConnectionStatus, CryptoPrecompiles, type DecodedBatchArgs, type DecodedEthereumTransactArgs, type DecodedEvmCallArgs, type DecodedPrecompile, type DecodedPrivateTransferArgs, type DecodedRemarkArgs, type DecodedShieldArgs, type DecodedShieldBatchArgs, type DecodedShieldBatchOperation, type DecodedSudoArgs, type DecodedTransferAllArgs, type DecodedTransferArgs, type DecodedTransferKeepAliveArgs, type DecodedUnshieldArgs, type DecryptedMemo, type DispatchError, type DispatchInfo, type DynamicBuilder, ENCRYPTED_MEMO_SIZE, EncryptedMemo, type EncryptedNoteRecord, type EndowedEventData, type EthereumExecutedData, type EventData, type EventPhase, type EventRecord, type EvmAddressInfo, type EvmBlock, EvmClient, type EvmExecutedData, type EvmExitReason, EvmExplorer, type EvmLog, type EvmSigner, type EvmTransaction, type EvmTxRequest, type EvmTxSummary, type ExtrinsicDecoder, type ExtrinsicFailedData, type ExtrinsicSuccessData, type FeeClaimProofInputs, type FormatOptions, KNOWN_PRECOMPILES, type KnownPrecompileInfo, MIN_SIGNATURE_BYTES, type MerkleRootUpdatedData, type MerkleRootUpdatedEvent, type MerkleTreeInfo, NoteBuilder, type NoteDisclosure, type NoteInput, type NoteStatusUpdate, type NullifiersSpentEvent, type NullifiersSpentEventData, OrbinumClient, type OrbinumClientConfig, OrbinumClientProvider, PRECOMPILE_ADDR, PrivacyKeyManager, type PrivacyMerkleProof, PrivacyModule, type PrivateTransferArgs, type PrivateTransferInput, type PrivateTransferOutput, type PrivateTransferParams, type PrivateTransferProofInputs, type ProofVerificationFailedEvent, type ProofVerifiedEvent, type RawBlock, type RawBlockHeader, type RawTransferInput, type RawTransferOutput, type RegisterAssetArgs, type RegisterVerificationKeyArgs, type RelayerInfo, RelayerStatusModule, type RemoveVerificationKeyArgs, type ReservedEventData, type ResolvedSpendVersion, type RpcV2MerkleProof, type RpcV2NullifierStatus, type RpcV2PoolAssetBalance, type RpcV2PoolStats, SPENDING_KEY_VERIFYING_CONTRACT, SPENDING_KEY_WARNING, type ScanCommitment, type SelfEphWindowEntry, type SetActiveVersionArgs, type ShieldArgs, type ShieldBatchArgs, type ShieldBatchItem, type ShieldBatchParams, type ShieldOperation, type ShieldParams, type ShieldedEvent, type ShieldedEventData, type ShieldedPoolCall, type ShieldedPoolEvent, ShieldedPoolModule, ShieldedPoolPrecompile, type SpendingKeyTypedData, type StatusChangeEvent, type StatusListener, SubstrateClient, type SystemHealth, type TokenInfo, type TokenTransfer, type TransferEventData, type TransferInputNote, type TransferOutputNote, type TryDecryptOptions, type TxResult, type UnsafeTxOptions, type UnshieldArgs, type UnshieldParams, type UnshieldProofInputs, type UnshieldedEvent, type UnshieldedEventData, type UnverifyAssetArgs, VaultLockedError, type VerificationKeyRegisteredEvent, type VerificationKeyRemovedEvent, type VerifyAssetArgs, type VerifyProofArgs, type VkEntry, type ZkNote, type ZkVerifierCall, type ZkVerifierCircuitVersionInfo, type ZkVerifierEvent, type ZkVerifierHistoricalVersion, ZkVerifierModule, type ZkVerifierVersionStats, type ZkVerifierVkHash, accountIdHexToSs58, addressToAccountIdHex, applyNoteStatus, bigintTo32Be, bigintTo32Le, bigintTo32LeArr, blindTag, buildDummyTransferInput, bytesToBigintLE, canonicalAccountId, computeNoteCommitment, computeNullifier, computePathIndices, createNoteDisclosureKey, decodeNoteDisclosureKey, decodePrecompileCalldata, decryptJson, decryptNoteRecord, deriveMasterKeyBytes, deriveOwnerPk, deriveSelfEphSk, deriveSpendingKeyFromSignature, deriveSpendingKeyMessageV2, deriveSpendingKeyTypedData, deriveStealthOwnerPk, deriveStealthSk, deriveVaultBlindKey, deriveVaultKey, deriveViewTag, deriveViewingPublicKey, deriveViewingSecretKey, encryptJson, encryptNote, ensureHexPrefix, evmAddressToAccountId, evmToImplicitSubstrate, evmToMappedAccountHex, evmToSubstrate, formatBalance, formatORB, fromBase64, fromHex, generateFeeClaimProof, generateTransferProof, generateUnshieldProof, getPrecompileLabel, hexToBigint, hexToNumber, implicitSubstrateToEvm, isEvmAddress, isImplicitEvmAccount, isSs58, isSubstrateAddress, isUnifiedAddress, leHexToBigint, mapExtrinsicArgs, mapZkEventData, normalizeEvmAddress, noteBlindTag, randomBlinding, recoverOwnerPkPoint, selectNotes, selfEphWindow, shortHash, substrateSs58ToAccountIdHex, substrateToEvm, toBase64, toHex, toTxResult, treeIdOf, truncateMiddle, tryDecryptNote, tryDecryptNoteVerbose, vaultReplacer, vaultReviver };
3607
+ export { type ActiveVersionSetEvent, type AssetRegisteredEvent, type AssetUnverifiedEvent, type AssetVerifiedEvent, BABYJUB_SUBORDER, BN254_R, type BatchRegisterVerificationKeysArgs, type BatchVerificationKeysRegisteredEvent, type BlockInfo, type Bytes32, CURRENT_CIRCUIT_VERSION, type ChainInfo, CircuitId, CircuitId as CircuitIdType, CircuitVersionResolver, type ClaimShieldedFeesParams, type ClientProviderConfig, type CommitmentsInsertedEvent, type CommitmentsInsertedEventData, type ConnectionStatus, CryptoPrecompiles, type DecodedBatchArgs, type DecodedEthereumTransactArgs, type DecodedEvmCallArgs, type DecodedPrecompile, type DecodedPrivateTransferArgs, type DecodedRemarkArgs, type DecodedShieldArgs, type DecodedShieldBatchArgs, type DecodedShieldBatchOperation, type DecodedSudoArgs, type DecodedTransferAllArgs, type DecodedTransferArgs, type DecodedTransferKeepAliveArgs, type DecodedUnshieldArgs, type DecryptedMemo, type DispatchError, type DispatchInfo, type DynamicBuilder, ENCRYPTED_MEMO_SIZE, EncryptedMemo, type EncryptedNoteRecord, type EndowedEventData, type EthereumExecutedData, type EventData, type EventPhase, type EventRecord, type EvmAddressInfo, type EvmBlock, EvmClient, type EvmExecutedData, type EvmExitReason, EvmExplorer, type EvmLog, type EvmSigner, type EvmTransaction, type EvmTxRequest, type EvmTxSummary, type ExtrinsicDecoder, type ExtrinsicFailedData, type ExtrinsicSuccessData, type FeeClaimProofInputs, type FormatOptions, KNOWN_PRECOMPILES, type KnownPrecompileInfo, MIN_SIGNATURE_BYTES, type MerkleRootUpdatedData, type MerkleRootUpdatedEvent, type MerkleTreeInfo, NoteBuilder, type NoteDisclosure, type NoteInput, type NoteStatusUpdate, type NullifiersSpentEvent, type NullifiersSpentEventData, OrbinumClient, type OrbinumClientConfig, OrbinumClientProvider, PRECOMPILE_ADDR, type PairwiseEphWindowEntry, PrivacyKeyManager, type PrivacyMerkleProof, PrivacyModule, type PrivateTransferArgs, type PrivateTransferInput, type PrivateTransferOutput, type PrivateTransferParams, type PrivateTransferProofInputs, type ProofVerificationFailedEvent, type ProofVerifiedEvent, type RawBlock, type RawBlockHeader, type RawTransferInput, type RawTransferOutput, type RegisterAssetArgs, type RegisterVerificationKeyArgs, type RelayerInfo, RelayerStatusModule, type RemoveVerificationKeyArgs, type ReservedEventData, type ResolvedSpendVersion, type RpcV2MerkleProof, type RpcV2NullifierStatus, type RpcV2PoolAssetBalance, type RpcV2PoolStats, SPENDING_KEY_VERIFYING_CONTRACT, SPENDING_KEY_WARNING, type ScanCommitment, type SelfEphWindowEntry, type SetActiveVersionArgs, type ShieldArgs, type ShieldBatchArgs, type ShieldBatchItem, type ShieldBatchParams, type ShieldOperation, type ShieldParams, type ShieldedEvent, type ShieldedEventData, type ShieldedPoolCall, type ShieldedPoolEvent, ShieldedPoolModule, ShieldedPoolPrecompile, type SpendingKeyTypedData, type StatusChangeEvent, type StatusListener, SubstrateClient, type SystemHealth, type TokenInfo, type TokenTransfer, type TransferEventData, type TransferInputNote, type TransferOutputNote, type TryDecryptOptions, type TxResult, type UnsafeTxOptions, type UnshieldArgs, type UnshieldParams, type UnshieldProofInputs, type UnshieldedEvent, type UnshieldedEventData, type UnverifyAssetArgs, VaultLockedError, type VerificationKeyRegisteredEvent, type VerificationKeyRemovedEvent, type VerifyAssetArgs, type VerifyProofArgs, type VkEntry, type ZkNote, type ZkVerifierCall, type ZkVerifierCircuitVersionInfo, type ZkVerifierEvent, type ZkVerifierHistoricalVersion, ZkVerifierModule, type ZkVerifierVersionStats, type ZkVerifierVkHash, accountIdHexToSs58, addressToAccountIdHex, applyNoteStatus, bigintTo32Be, bigintTo32Le, bigintTo32LeArr, blindTag, buildDummyTransferInput, bytesToBigintLE, canonicalAccountId, computeNoteCommitment, computeNullifier, computePathIndices, createNoteDisclosureKey, decodeNoteDisclosureKey, decodePrecompileCalldata, decryptJson, decryptNoteRecord, deriveMasterKeyBytes, deriveOwnerPk, derivePairwiseEphSk, derivePairwiseSharedSecret, deriveSelfEphSk, deriveSpendingKeyFromSignature, deriveSpendingKeyMessageV2, deriveSpendingKeyTypedData, deriveStealthOwnerPk, deriveStealthSk, deriveVaultBlindKey, deriveVaultKey, deriveViewTag, deriveViewingPublicKey, deriveViewingSecretKey, encryptJson, encryptNote, ensureHexPrefix, evmAddressToAccountId, evmToImplicitSubstrate, evmToMappedAccountHex, evmToSubstrate, formatBalance, formatORB, fromBase64, fromHex, generateFeeClaimProof, generateTransferProof, generateUnshieldProof, getPrecompileLabel, hexToBigint, hexToNumber, implicitSubstrateToEvm, isEvmAddress, isImplicitEvmAccount, isSs58, isSubstrateAddress, isUnifiedAddress, leHexToBigint, mapExtrinsicArgs, mapZkEventData, normalizeEvmAddress, noteBlindTag, pairwiseEphWindow, randomBlinding, recoverOwnerPkPoint, selectNotes, selfEphWindow, shortHash, substrateSs58ToAccountIdHex, substrateToEvm, toBase64, toHex, toTxResult, treeIdOf, truncateMiddle, tryDecryptNote, tryDecryptNoteVerbose, vaultReplacer, vaultReviver };
package/dist/index.d.ts CHANGED
@@ -1718,6 +1718,46 @@ interface SelfEphWindowEntry {
1718
1718
  */
1719
1719
  declare function selfEphWindow(spendingKey: bigint, ivkPacked: Uint8Array, from: number, count: number): SelfEphWindowEntry[];
1720
1720
 
1721
+ /**
1722
+ * The secret shared by a sender/receiver pair: ECDH between one side's viewing
1723
+ * SECRET key and the other side's viewing PUBLIC key. Symmetric — both parties
1724
+ * compute the same 32 bytes from opposite inputs, which is what lets the
1725
+ * sender choose an ephemeral the receiver can predict.
1726
+ *
1727
+ * @param myViewingSk 32-byte viewing secret key (from `deriveViewingSecretKey`).
1728
+ * @param theirIvkPacked 32-byte LE packed viewing public key of the other party.
1729
+ */
1730
+ declare function derivePairwiseSharedSecret(myViewingSk: Uint8Array, theirIvkPacked: Uint8Array): Uint8Array;
1731
+ /**
1732
+ * The ephemeral secret for the `index`-th note between this pair. Feed it to
1733
+ * `EncryptedMemo.encrypt` / `NoteBuilder.build` as `ephSkOverride`.
1734
+ */
1735
+ declare function derivePairwiseEphSk(pairSecret: Uint8Array, index: number): Uint8Array;
1736
+ /** One precomputed pairwise window entry — same shape as `SelfEphWindowEntry`. */
1737
+ interface PairwiseEphWindowEntry {
1738
+ index: number;
1739
+ /** 0x-prefixed LE-packed ephPk — byte-identical to the memo's last 32 bytes. */
1740
+ ephPkHex: string;
1741
+ /** ECDH shared secret vs the RECEIVER's ivk — feeds decryptWithSharedSecret. */
1742
+ sharedSecret: Uint8Array;
1743
+ }
1744
+ /**
1745
+ * Precomputes the discovery window [from, from+count) for one counterparty:
1746
+ * for each index, the ephPk that party would publish and the secret needed to
1747
+ * open the memo. One EC pass per sender up front; the scan then matches by hex
1748
+ * equality with no per-hint EC work.
1749
+ *
1750
+ * The cost is paid once per sender and reused across every page of the scan,
1751
+ * which is what makes it worth building — unlike a per-hint precompute, which
1752
+ * measured 26× SLOWER than just doing the multiplication.
1753
+ *
1754
+ * @param pairSecret From `derivePairwiseSharedSecret`.
1755
+ * @param receiverIvkPacked The RECEIVER's packed viewing public key — the memo
1756
+ * is encrypted to it, so the shared secret is against
1757
+ * that key regardless of which side is precomputing.
1758
+ */
1759
+ declare function pairwiseEphWindow(pairSecret: Uint8Array, receiverIvkPacked: Uint8Array, from: number, count: number): PairwiseEphWindowEntry[];
1760
+
1721
1761
  /**
1722
1762
  * NoteDecryptor
1723
1763
  *
@@ -3564,4 +3604,4 @@ interface ExtrinsicFailedData {
3564
3604
  dispatch_info: DispatchInfo;
3565
3605
  }
3566
3606
 
3567
- export { type ActiveVersionSetEvent, type AssetRegisteredEvent, type AssetUnverifiedEvent, type AssetVerifiedEvent, BABYJUB_SUBORDER, BN254_R, type BatchRegisterVerificationKeysArgs, type BatchVerificationKeysRegisteredEvent, type BlockInfo, type Bytes32, CURRENT_CIRCUIT_VERSION, type ChainInfo, CircuitId, CircuitId as CircuitIdType, CircuitVersionResolver, type ClaimShieldedFeesParams, type ClientProviderConfig, type CommitmentsInsertedEvent, type CommitmentsInsertedEventData, type ConnectionStatus, CryptoPrecompiles, type DecodedBatchArgs, type DecodedEthereumTransactArgs, type DecodedEvmCallArgs, type DecodedPrecompile, type DecodedPrivateTransferArgs, type DecodedRemarkArgs, type DecodedShieldArgs, type DecodedShieldBatchArgs, type DecodedShieldBatchOperation, type DecodedSudoArgs, type DecodedTransferAllArgs, type DecodedTransferArgs, type DecodedTransferKeepAliveArgs, type DecodedUnshieldArgs, type DecryptedMemo, type DispatchError, type DispatchInfo, type DynamicBuilder, ENCRYPTED_MEMO_SIZE, EncryptedMemo, type EncryptedNoteRecord, type EndowedEventData, type EthereumExecutedData, type EventData, type EventPhase, type EventRecord, type EvmAddressInfo, type EvmBlock, EvmClient, type EvmExecutedData, type EvmExitReason, EvmExplorer, type EvmLog, type EvmSigner, type EvmTransaction, type EvmTxRequest, type EvmTxSummary, type ExtrinsicDecoder, type ExtrinsicFailedData, type ExtrinsicSuccessData, type FeeClaimProofInputs, type FormatOptions, KNOWN_PRECOMPILES, type KnownPrecompileInfo, MIN_SIGNATURE_BYTES, type MerkleRootUpdatedData, type MerkleRootUpdatedEvent, type MerkleTreeInfo, NoteBuilder, type NoteDisclosure, type NoteInput, type NoteStatusUpdate, type NullifiersSpentEvent, type NullifiersSpentEventData, OrbinumClient, type OrbinumClientConfig, OrbinumClientProvider, PRECOMPILE_ADDR, PrivacyKeyManager, type PrivacyMerkleProof, PrivacyModule, type PrivateTransferArgs, type PrivateTransferInput, type PrivateTransferOutput, type PrivateTransferParams, type PrivateTransferProofInputs, type ProofVerificationFailedEvent, type ProofVerifiedEvent, type RawBlock, type RawBlockHeader, type RawTransferInput, type RawTransferOutput, type RegisterAssetArgs, type RegisterVerificationKeyArgs, type RelayerInfo, RelayerStatusModule, type RemoveVerificationKeyArgs, type ReservedEventData, type ResolvedSpendVersion, type RpcV2MerkleProof, type RpcV2NullifierStatus, type RpcV2PoolAssetBalance, type RpcV2PoolStats, SPENDING_KEY_VERIFYING_CONTRACT, SPENDING_KEY_WARNING, type ScanCommitment, type SelfEphWindowEntry, type SetActiveVersionArgs, type ShieldArgs, type ShieldBatchArgs, type ShieldBatchItem, type ShieldBatchParams, type ShieldOperation, type ShieldParams, type ShieldedEvent, type ShieldedEventData, type ShieldedPoolCall, type ShieldedPoolEvent, ShieldedPoolModule, ShieldedPoolPrecompile, type SpendingKeyTypedData, type StatusChangeEvent, type StatusListener, SubstrateClient, type SystemHealth, type TokenInfo, type TokenTransfer, type TransferEventData, type TransferInputNote, type TransferOutputNote, type TryDecryptOptions, type TxResult, type UnsafeTxOptions, type UnshieldArgs, type UnshieldParams, type UnshieldProofInputs, type UnshieldedEvent, type UnshieldedEventData, type UnverifyAssetArgs, VaultLockedError, type VerificationKeyRegisteredEvent, type VerificationKeyRemovedEvent, type VerifyAssetArgs, type VerifyProofArgs, type VkEntry, type ZkNote, type ZkVerifierCall, type ZkVerifierCircuitVersionInfo, type ZkVerifierEvent, type ZkVerifierHistoricalVersion, ZkVerifierModule, type ZkVerifierVersionStats, type ZkVerifierVkHash, accountIdHexToSs58, addressToAccountIdHex, applyNoteStatus, bigintTo32Be, bigintTo32Le, bigintTo32LeArr, blindTag, buildDummyTransferInput, bytesToBigintLE, canonicalAccountId, computeNoteCommitment, computeNullifier, computePathIndices, createNoteDisclosureKey, decodeNoteDisclosureKey, decodePrecompileCalldata, decryptJson, decryptNoteRecord, deriveMasterKeyBytes, deriveOwnerPk, deriveSelfEphSk, deriveSpendingKeyFromSignature, deriveSpendingKeyMessageV2, deriveSpendingKeyTypedData, deriveStealthOwnerPk, deriveStealthSk, deriveVaultBlindKey, deriveVaultKey, deriveViewTag, deriveViewingPublicKey, deriveViewingSecretKey, encryptJson, encryptNote, ensureHexPrefix, evmAddressToAccountId, evmToImplicitSubstrate, evmToMappedAccountHex, evmToSubstrate, formatBalance, formatORB, fromBase64, fromHex, generateFeeClaimProof, generateTransferProof, generateUnshieldProof, getPrecompileLabel, hexToBigint, hexToNumber, implicitSubstrateToEvm, isEvmAddress, isImplicitEvmAccount, isSs58, isSubstrateAddress, isUnifiedAddress, leHexToBigint, mapExtrinsicArgs, mapZkEventData, normalizeEvmAddress, noteBlindTag, randomBlinding, recoverOwnerPkPoint, selectNotes, selfEphWindow, shortHash, substrateSs58ToAccountIdHex, substrateToEvm, toBase64, toHex, toTxResult, treeIdOf, truncateMiddle, tryDecryptNote, tryDecryptNoteVerbose, vaultReplacer, vaultReviver };
3607
+ export { type ActiveVersionSetEvent, type AssetRegisteredEvent, type AssetUnverifiedEvent, type AssetVerifiedEvent, BABYJUB_SUBORDER, BN254_R, type BatchRegisterVerificationKeysArgs, type BatchVerificationKeysRegisteredEvent, type BlockInfo, type Bytes32, CURRENT_CIRCUIT_VERSION, type ChainInfo, CircuitId, CircuitId as CircuitIdType, CircuitVersionResolver, type ClaimShieldedFeesParams, type ClientProviderConfig, type CommitmentsInsertedEvent, type CommitmentsInsertedEventData, type ConnectionStatus, CryptoPrecompiles, type DecodedBatchArgs, type DecodedEthereumTransactArgs, type DecodedEvmCallArgs, type DecodedPrecompile, type DecodedPrivateTransferArgs, type DecodedRemarkArgs, type DecodedShieldArgs, type DecodedShieldBatchArgs, type DecodedShieldBatchOperation, type DecodedSudoArgs, type DecodedTransferAllArgs, type DecodedTransferArgs, type DecodedTransferKeepAliveArgs, type DecodedUnshieldArgs, type DecryptedMemo, type DispatchError, type DispatchInfo, type DynamicBuilder, ENCRYPTED_MEMO_SIZE, EncryptedMemo, type EncryptedNoteRecord, type EndowedEventData, type EthereumExecutedData, type EventData, type EventPhase, type EventRecord, type EvmAddressInfo, type EvmBlock, EvmClient, type EvmExecutedData, type EvmExitReason, EvmExplorer, type EvmLog, type EvmSigner, type EvmTransaction, type EvmTxRequest, type EvmTxSummary, type ExtrinsicDecoder, type ExtrinsicFailedData, type ExtrinsicSuccessData, type FeeClaimProofInputs, type FormatOptions, KNOWN_PRECOMPILES, type KnownPrecompileInfo, MIN_SIGNATURE_BYTES, type MerkleRootUpdatedData, type MerkleRootUpdatedEvent, type MerkleTreeInfo, NoteBuilder, type NoteDisclosure, type NoteInput, type NoteStatusUpdate, type NullifiersSpentEvent, type NullifiersSpentEventData, OrbinumClient, type OrbinumClientConfig, OrbinumClientProvider, PRECOMPILE_ADDR, type PairwiseEphWindowEntry, PrivacyKeyManager, type PrivacyMerkleProof, PrivacyModule, type PrivateTransferArgs, type PrivateTransferInput, type PrivateTransferOutput, type PrivateTransferParams, type PrivateTransferProofInputs, type ProofVerificationFailedEvent, type ProofVerifiedEvent, type RawBlock, type RawBlockHeader, type RawTransferInput, type RawTransferOutput, type RegisterAssetArgs, type RegisterVerificationKeyArgs, type RelayerInfo, RelayerStatusModule, type RemoveVerificationKeyArgs, type ReservedEventData, type ResolvedSpendVersion, type RpcV2MerkleProof, type RpcV2NullifierStatus, type RpcV2PoolAssetBalance, type RpcV2PoolStats, SPENDING_KEY_VERIFYING_CONTRACT, SPENDING_KEY_WARNING, type ScanCommitment, type SelfEphWindowEntry, type SetActiveVersionArgs, type ShieldArgs, type ShieldBatchArgs, type ShieldBatchItem, type ShieldBatchParams, type ShieldOperation, type ShieldParams, type ShieldedEvent, type ShieldedEventData, type ShieldedPoolCall, type ShieldedPoolEvent, ShieldedPoolModule, ShieldedPoolPrecompile, type SpendingKeyTypedData, type StatusChangeEvent, type StatusListener, SubstrateClient, type SystemHealth, type TokenInfo, type TokenTransfer, type TransferEventData, type TransferInputNote, type TransferOutputNote, type TryDecryptOptions, type TxResult, type UnsafeTxOptions, type UnshieldArgs, type UnshieldParams, type UnshieldProofInputs, type UnshieldedEvent, type UnshieldedEventData, type UnverifyAssetArgs, VaultLockedError, type VerificationKeyRegisteredEvent, type VerificationKeyRemovedEvent, type VerifyAssetArgs, type VerifyProofArgs, type VkEntry, type ZkNote, type ZkVerifierCall, type ZkVerifierCircuitVersionInfo, type ZkVerifierEvent, type ZkVerifierHistoricalVersion, ZkVerifierModule, type ZkVerifierVersionStats, type ZkVerifierVkHash, accountIdHexToSs58, addressToAccountIdHex, applyNoteStatus, bigintTo32Be, bigintTo32Le, bigintTo32LeArr, blindTag, buildDummyTransferInput, bytesToBigintLE, canonicalAccountId, computeNoteCommitment, computeNullifier, computePathIndices, createNoteDisclosureKey, decodeNoteDisclosureKey, decodePrecompileCalldata, decryptJson, decryptNoteRecord, deriveMasterKeyBytes, deriveOwnerPk, derivePairwiseEphSk, derivePairwiseSharedSecret, deriveSelfEphSk, deriveSpendingKeyFromSignature, deriveSpendingKeyMessageV2, deriveSpendingKeyTypedData, deriveStealthOwnerPk, deriveStealthSk, deriveVaultBlindKey, deriveVaultKey, deriveViewTag, deriveViewingPublicKey, deriveViewingSecretKey, encryptJson, encryptNote, ensureHexPrefix, evmAddressToAccountId, evmToImplicitSubstrate, evmToMappedAccountHex, evmToSubstrate, formatBalance, formatORB, fromBase64, fromHex, generateFeeClaimProof, generateTransferProof, generateUnshieldProof, getPrecompileLabel, hexToBigint, hexToNumber, implicitSubstrateToEvm, isEvmAddress, isImplicitEvmAccount, isSs58, isSubstrateAddress, isUnifiedAddress, leHexToBigint, mapExtrinsicArgs, mapZkEventData, normalizeEvmAddress, noteBlindTag, pairwiseEphWindow, randomBlinding, recoverOwnerPkPoint, selectNotes, selfEphWindow, shortHash, substrateSs58ToAccountIdHex, substrateToEvm, toBase64, toHex, toTxResult, treeIdOf, truncateMiddle, tryDecryptNote, tryDecryptNoteVerbose, vaultReplacer, vaultReviver };
package/dist/index.js CHANGED
@@ -74,6 +74,8 @@ __export(index_exports, {
74
74
  decryptNoteRecord: () => decryptNoteRecord,
75
75
  deriveMasterKeyBytes: () => deriveMasterKeyBytes,
76
76
  deriveOwnerPk: () => deriveOwnerPk,
77
+ derivePairwiseEphSk: () => derivePairwiseEphSk,
78
+ derivePairwiseSharedSecret: () => derivePairwiseSharedSecret,
77
79
  deriveSelfEphSk: () => deriveSelfEphSk,
78
80
  deriveSpendingKeyFromSignature: () => deriveSpendingKeyFromSignature,
79
81
  deriveSpendingKeyMessageV2: () => deriveSpendingKeyMessageV2,
@@ -117,6 +119,7 @@ __export(index_exports, {
117
119
  mapZkEventData: () => mapZkEventData,
118
120
  normalizeEvmAddress: () => normalizeEvmAddress,
119
121
  noteBlindTag: () => noteBlindTag,
122
+ pairwiseEphWindow: () => pairwiseEphWindow,
120
123
  randomBlinding: () => randomBlinding,
121
124
  recoverOwnerPkPoint: () => recoverOwnerPkPoint,
122
125
  selectNotes: () => selectNotes,
@@ -3307,6 +3310,42 @@ function selfEphWindow(spendingKey, ivkPacked, from, count) {
3307
3310
  return entries;
3308
3311
  }
3309
3312
 
3313
+ // src/shielded-pool/protocol/pairwiseEph.ts
3314
+ var import_sha24 = require("@noble/hashes/sha2.js");
3315
+ var import_baby_jubjub6 = require("@zk-kit/baby-jubjub");
3316
+ var PAIRWISE_EPH_DOMAIN = new TextEncoder().encode("orbinum-pairwise-eph-v1");
3317
+ function derivePairwiseSharedSecret(myViewingSk, theirIvkPacked) {
3318
+ const theirPoint = (0, import_baby_jubjub6.unpackPoint)(bytesToBigintLE(theirIvkPacked));
3319
+ if (!theirPoint) throw new Error("derivePairwiseSharedSecret: invalid viewing public key");
3320
+ const shared = fastMulPoint(theirPoint, bytesToBjjScalar(myViewingSk));
3321
+ return bigintTo32Le(shared[0]);
3322
+ }
3323
+ function derivePairwiseEphSk(pairSecret, index) {
3324
+ const h = import_sha24.sha256.create();
3325
+ h.update(PAIRWISE_EPH_DOMAIN);
3326
+ h.update(pairSecret);
3327
+ const idx = new Uint8Array(4);
3328
+ new DataView(idx.buffer).setUint32(0, index >>> 0, true);
3329
+ h.update(idx);
3330
+ return h.digest();
3331
+ }
3332
+ function pairwiseEphWindow(pairSecret, receiverIvkPacked, from, count) {
3333
+ const ivkPoint = (0, import_baby_jubjub6.unpackPoint)(bytesToBigintLE(receiverIvkPacked));
3334
+ if (!ivkPoint) throw new Error("pairwiseEphWindow: invalid viewing public key");
3335
+ const entries = [];
3336
+ for (let i = from; i < from + count; i++) {
3337
+ const scalar = bytesToBjjScalar(derivePairwiseEphSk(pairSecret, i));
3338
+ const ephPk = fastMulBase(scalar);
3339
+ const sharedPoint = fastMulPoint(ivkPoint, scalar);
3340
+ entries.push({
3341
+ index: i,
3342
+ ephPkHex: toHex(bigintTo32Le((0, import_baby_jubjub6.packPoint)(ephPk))),
3343
+ sharedSecret: bigintTo32Le(sharedPoint[0])
3344
+ });
3345
+ }
3346
+ return entries;
3347
+ }
3348
+
3310
3349
  // src/shielded-pool/protocol/NoteDecryptor.ts
3311
3350
  var import_poseidon_lite2 = require("poseidon-lite");
3312
3351
  function computeNullifier(commitment, spendingKey) {
@@ -3539,8 +3578,8 @@ ${canonicalAccountId(address)}`;
3539
3578
 
3540
3579
  // src/privacy-keys/PrivacyKeys.ts
3541
3580
  var import_hkdf2 = require("@noble/hashes/hkdf.js");
3542
- var import_sha24 = require("@noble/hashes/sha2.js");
3543
- var import_baby_jubjub6 = require("@zk-kit/baby-jubjub");
3581
+ var import_sha25 = require("@noble/hashes/sha2.js");
3582
+ var import_baby_jubjub7 = require("@zk-kit/baby-jubjub");
3544
3583
  var IVK_DOMAIN = new TextEncoder().encode("orbinum-ivk-v1");
3545
3584
  var KEY_VERSION = "v2";
3546
3585
  var MIN_SIGNATURE_BYTES = 32;
@@ -3557,7 +3596,7 @@ async function deriveMasterKeyBytes(signatureHex, chainId, address) {
3557
3596
  const info = new TextEncoder().encode(
3558
3597
  `orbinum-sk-${KEY_VERSION}:${chainId}:${canonicalAccountId(address)}`
3559
3598
  );
3560
- return (0, import_hkdf2.hkdf)(import_sha24.sha256, sigBytes, new Uint8Array(0), info, 32);
3599
+ return (0, import_hkdf2.hkdf)(import_sha25.sha256, sigBytes, new Uint8Array(0), info, 32);
3561
3600
  }
3562
3601
  async function deriveSpendingKeyFromSignature(signatureHex, chainId, address) {
3563
3602
  const masterBytes = await deriveMasterKeyBytes(signatureHex, chainId, address);
@@ -3566,12 +3605,12 @@ async function deriveSpendingKeyFromSignature(signatureHex, chainId, address) {
3566
3605
  }
3567
3606
  function deriveViewingSecretKey(spendingKey) {
3568
3607
  const ikm = bigintTo32Le(spendingKey);
3569
- return (0, import_hkdf2.hkdf)(import_sha24.sha256, ikm, void 0, IVK_DOMAIN, 32);
3608
+ return (0, import_hkdf2.hkdf)(import_sha25.sha256, ikm, void 0, IVK_DOMAIN, 32);
3570
3609
  }
3571
3610
  function deriveViewingPublicKey(ivsk) {
3572
3611
  const ivskScalar = BigInt(toHex(ivsk)) % BABYJUB_SUBORDER || 1n;
3573
3612
  const ivkPoint = fastMulBase(ivskScalar);
3574
- const packed = (0, import_baby_jubjub6.packPoint)(ivkPoint);
3613
+ const packed = (0, import_baby_jubjub7.packPoint)(ivkPoint);
3575
3614
  return bigintTo32Le(packed);
3576
3615
  }
3577
3616
  function deriveOwnerPk(spendingKey) {
@@ -3885,7 +3924,7 @@ async function noteBlindTag(blindKey, hex) {
3885
3924
  // src/proof-generator/unshield.ts
3886
3925
  var import_proof_generator2 = require("@orbinum/proof-generator");
3887
3926
  var import_utils3 = require("@noble/ciphers/utils.js");
3888
- var import_baby_jubjub7 = require("@zk-kit/baby-jubjub");
3927
+ var import_baby_jubjub8 = require("@zk-kit/baby-jubjub");
3889
3928
  var import_poseidon_lite4 = require("poseidon-lite");
3890
3929
 
3891
3930
  // src/proof-generator/merkle.ts
@@ -3908,7 +3947,7 @@ async function generateUnshieldProof(inputs, options = {}) {
3908
3947
  if (changeValue < 0n) {
3909
3948
  throw new Error("changeValue must be >= 0.");
3910
3949
  }
3911
- const changeOwnerPubkey = inputs.changeOwnerPubkey ?? (0, import_baby_jubjub7.mulPointEscalar)(import_baby_jubjub7.Base8, inputs.spendingKey)[0];
3950
+ const changeOwnerPubkey = inputs.changeOwnerPubkey ?? (0, import_baby_jubjub8.mulPointEscalar)(import_baby_jubjub8.Base8, inputs.spendingKey)[0];
3912
3951
  const changeBlinding = inputs.changeBlinding ?? (changeValue > 0n ? bytesToBigintLE((0, import_utils3.randomBytes)(32)) : 0n);
3913
3952
  const changeCommitment = changeValue > 0n ? (0, import_poseidon_lite4.poseidon4)([changeValue, inputs.assetId, changeOwnerPubkey, changeBlinding]) : 0n;
3914
3953
  const circuitInputs = {
@@ -4619,6 +4658,8 @@ var import_polkadot_api4 = require("polkadot-api");
4619
4658
  decryptNoteRecord,
4620
4659
  deriveMasterKeyBytes,
4621
4660
  deriveOwnerPk,
4661
+ derivePairwiseEphSk,
4662
+ derivePairwiseSharedSecret,
4622
4663
  deriveSelfEphSk,
4623
4664
  deriveSpendingKeyFromSignature,
4624
4665
  deriveSpendingKeyMessageV2,
@@ -4662,6 +4703,7 @@ var import_polkadot_api4 = require("polkadot-api");
4662
4703
  mapZkEventData,
4663
4704
  normalizeEvmAddress,
4664
4705
  noteBlindTag,
4706
+ pairwiseEphWindow,
4665
4707
  randomBlinding,
4666
4708
  recoverOwnerPkPoint,
4667
4709
  selectNotes,
package/dist/index.mjs CHANGED
@@ -3173,6 +3173,42 @@ function selfEphWindow(spendingKey, ivkPacked, from, count) {
3173
3173
  return entries;
3174
3174
  }
3175
3175
 
3176
+ // src/shielded-pool/protocol/pairwiseEph.ts
3177
+ import { sha256 as sha2564 } from "@noble/hashes/sha2.js";
3178
+ import { packPoint as packPoint3, unpackPoint as unpackPoint4 } from "@zk-kit/baby-jubjub";
3179
+ var PAIRWISE_EPH_DOMAIN = new TextEncoder().encode("orbinum-pairwise-eph-v1");
3180
+ function derivePairwiseSharedSecret(myViewingSk, theirIvkPacked) {
3181
+ const theirPoint = unpackPoint4(bytesToBigintLE(theirIvkPacked));
3182
+ if (!theirPoint) throw new Error("derivePairwiseSharedSecret: invalid viewing public key");
3183
+ const shared = fastMulPoint(theirPoint, bytesToBjjScalar(myViewingSk));
3184
+ return bigintTo32Le(shared[0]);
3185
+ }
3186
+ function derivePairwiseEphSk(pairSecret, index) {
3187
+ const h = sha2564.create();
3188
+ h.update(PAIRWISE_EPH_DOMAIN);
3189
+ h.update(pairSecret);
3190
+ const idx = new Uint8Array(4);
3191
+ new DataView(idx.buffer).setUint32(0, index >>> 0, true);
3192
+ h.update(idx);
3193
+ return h.digest();
3194
+ }
3195
+ function pairwiseEphWindow(pairSecret, receiverIvkPacked, from, count) {
3196
+ const ivkPoint = unpackPoint4(bytesToBigintLE(receiverIvkPacked));
3197
+ if (!ivkPoint) throw new Error("pairwiseEphWindow: invalid viewing public key");
3198
+ const entries = [];
3199
+ for (let i = from; i < from + count; i++) {
3200
+ const scalar = bytesToBjjScalar(derivePairwiseEphSk(pairSecret, i));
3201
+ const ephPk = fastMulBase(scalar);
3202
+ const sharedPoint = fastMulPoint(ivkPoint, scalar);
3203
+ entries.push({
3204
+ index: i,
3205
+ ephPkHex: toHex(bigintTo32Le(packPoint3(ephPk))),
3206
+ sharedSecret: bigintTo32Le(sharedPoint[0])
3207
+ });
3208
+ }
3209
+ return entries;
3210
+ }
3211
+
3176
3212
  // src/shielded-pool/protocol/NoteDecryptor.ts
3177
3213
  import { poseidon2 as poseidon22, poseidon4 as poseidon42 } from "poseidon-lite";
3178
3214
  function computeNullifier(commitment, spendingKey) {
@@ -3405,8 +3441,8 @@ ${canonicalAccountId(address)}`;
3405
3441
 
3406
3442
  // src/privacy-keys/PrivacyKeys.ts
3407
3443
  import { hkdf as hkdf2 } from "@noble/hashes/hkdf.js";
3408
- import { sha256 as sha2564 } from "@noble/hashes/sha2.js";
3409
- import { packPoint as packPoint3 } from "@zk-kit/baby-jubjub";
3444
+ import { sha256 as sha2565 } from "@noble/hashes/sha2.js";
3445
+ import { packPoint as packPoint4 } from "@zk-kit/baby-jubjub";
3410
3446
  var IVK_DOMAIN = new TextEncoder().encode("orbinum-ivk-v1");
3411
3447
  var KEY_VERSION = "v2";
3412
3448
  var MIN_SIGNATURE_BYTES = 32;
@@ -3423,7 +3459,7 @@ async function deriveMasterKeyBytes(signatureHex, chainId, address) {
3423
3459
  const info = new TextEncoder().encode(
3424
3460
  `orbinum-sk-${KEY_VERSION}:${chainId}:${canonicalAccountId(address)}`
3425
3461
  );
3426
- return hkdf2(sha2564, sigBytes, new Uint8Array(0), info, 32);
3462
+ return hkdf2(sha2565, sigBytes, new Uint8Array(0), info, 32);
3427
3463
  }
3428
3464
  async function deriveSpendingKeyFromSignature(signatureHex, chainId, address) {
3429
3465
  const masterBytes = await deriveMasterKeyBytes(signatureHex, chainId, address);
@@ -3432,12 +3468,12 @@ async function deriveSpendingKeyFromSignature(signatureHex, chainId, address) {
3432
3468
  }
3433
3469
  function deriveViewingSecretKey(spendingKey) {
3434
3470
  const ikm = bigintTo32Le(spendingKey);
3435
- return hkdf2(sha2564, ikm, void 0, IVK_DOMAIN, 32);
3471
+ return hkdf2(sha2565, ikm, void 0, IVK_DOMAIN, 32);
3436
3472
  }
3437
3473
  function deriveViewingPublicKey(ivsk) {
3438
3474
  const ivskScalar = BigInt(toHex(ivsk)) % BABYJUB_SUBORDER || 1n;
3439
3475
  const ivkPoint = fastMulBase(ivskScalar);
3440
- const packed = packPoint3(ivkPoint);
3476
+ const packed = packPoint4(ivkPoint);
3441
3477
  return bigintTo32Le(packed);
3442
3478
  }
3443
3479
  function deriveOwnerPk(spendingKey) {
@@ -4507,6 +4543,8 @@ export {
4507
4543
  decryptNoteRecord,
4508
4544
  deriveMasterKeyBytes,
4509
4545
  deriveOwnerPk,
4546
+ derivePairwiseEphSk,
4547
+ derivePairwiseSharedSecret,
4510
4548
  deriveSelfEphSk,
4511
4549
  deriveSpendingKeyFromSignature,
4512
4550
  deriveSpendingKeyMessageV2,
@@ -4550,6 +4588,7 @@ export {
4550
4588
  mapZkEventData,
4551
4589
  normalizeEvmAddress,
4552
4590
  noteBlindTag,
4591
+ pairwiseEphWindow,
4553
4592
  randomBlinding,
4554
4593
  recoverOwnerPkPoint,
4555
4594
  selectNotes,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orbinum/sdk",
3
- "version": "0.24.0",
3
+ "version": "0.25.0",
4
4
  "description": "Official TypeScript SDK for Orbinum.",
5
5
  "author": "Orbinum",
6
6
  "license": "MIT",