@skalenetwork/privacy-sdk 0.1.0-develop.0 → 0.1.0-develop.1

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/ConfidentialToken.ts","../src/actions/transfers.ts","../src/abi/confidentialWrapper.ts","../src/actions/funding.ts","../src/actions/decrypt.ts","../src/utils/crypto.ts","../src/actions/access.ts","../src/utils/viewerKey.ts","../src/utils/ctx.ts","../src/ConfidentialWrapper.ts"],"sourcesContent":["export { ConfidentialToken } from \"./ConfidentialToken.js\";\nexport { ConfidentialWrapper } from \"./ConfidentialWrapper.js\";\nexport { confidentialWrapperAbi } from \"./abi/confidentialWrapper.js\";\nexport type { CtxPromise } from \"./utils/ctx.js\";\nexport type {\n ConfidentialTokenConfig,\n Signer,\n UnsignedTx,\n TransferData,\n ViewerKeypair,\n} from \"./types.js\";\nexport type { ActionConfig } from \"./actions/types.js\";\n","import { createPublicClient, http, parseEventLogs, type Hex, type PublicClient } from \"viem\";\nimport { BITE } from \"@skalenetwork/bite\";\n\nimport type { ConfidentialTokenConfig, TransferData } from \"./types.js\";\nimport type { ActionConfig } from \"./actions/types.js\";\nimport * as actions from \"./actions/index.js\";\nimport { confidentialWrapperAbi } from \"./abi/confidentialWrapper.js\";\nimport { createCtxPromise, type CtxPromise, waitForCtx } from \"./utils/ctx.js\";\n\nexport class ConfidentialToken {\n readonly rpcUrl: string;\n readonly address: Hex;\n readonly signer: {\n address: Hex;\n sendTransaction(tx: { to: Hex; data: Hex; value?: bigint }): Promise<Hex>;\n };\n private viewerPrivateKey?: Hex;\n protected client: PublicClient;\n private bite: BITE;\n\n constructor(config: ConfidentialTokenConfig) {\n this.rpcUrl = config.rpcUrl;\n this.address = config.address;\n this.signer = config.signer;\n this.viewerPrivateKey = config.viewerPrivateKey;\n this.client = createPublicClient({ transport: http(config.rpcUrl) }) as PublicClient;\n this.bite = new BITE(config.rpcUrl);\n }\n\n protected get actionConfig(): ActionConfig {\n return {\n rpcUrl: this.rpcUrl,\n address: this.address,\n publicClient: this.client,\n signer: this.signer,\n bite: this.bite,\n };\n }\n\n setViewerPrivateKey(privateKey: Hex): void {\n this.viewerPrivateKey = privateKey;\n }\n\n // --- Standard ERC-20 reads ---\n\n async name(): Promise<string> {\n return (await this.client.readContract({\n address: this.address,\n abi: confidentialWrapperAbi,\n functionName: \"name\",\n })) as string;\n }\n\n async symbol(): Promise<string> {\n return (await this.client.readContract({\n address: this.address,\n abi: confidentialWrapperAbi,\n functionName: \"symbol\",\n })) as string;\n }\n\n async decimals(): Promise<number> {\n return Number(\n await this.client.readContract({\n address: this.address,\n abi: confidentialWrapperAbi,\n functionName: \"decimals\",\n }),\n );\n }\n\n async allowance(owner: Hex, spender: Hex): Promise<bigint> {\n return (await this.client.readContract({\n address: this.address,\n abi: confidentialWrapperAbi,\n functionName: \"allowance\",\n args: [owner, spender],\n })) as bigint;\n }\n\n // --- Privacy-specific reads ---\n\n async viewerAddress(): Promise<Hex> {\n return (await this.client.readContract({\n address: this.address,\n abi: confidentialWrapperAbi,\n functionName: \"viewerAddresses\",\n args: [this.signer.address],\n })) as Hex;\n }\n\n async decryptBalance(): Promise<bigint> {\n if (!this.viewerPrivateKey) {\n throw new Error(\"Viewer key is required to decrypt balance.\");\n }\n return actions.decryptTokenBalance(this.actionConfig, { viewerKey: this.viewerPrivateKey });\n }\n\n // --- Standard ERC-20 writes ---\n\n async approve(spender: Hex, amount: bigint): Promise<Hex> {\n return actions.approve(this.actionConfig, { spender, amount });\n }\n\n // --- Privacy-specific writes ---\n\n transfer(to: Hex, amount: bigint): CtxPromise {\n return createCtxPromise(\n actions.transfer(this.actionConfig, { to, amount }),\n this.client,\n );\n }\n\n // --- Viewer key management ---\n\n async registerViewerPublicKey(publicKey: Hex): Promise<Hex> {\n return actions.registerViewerKey(this.actionConfig, { publicKey });\n }\n\n async authorizeHistoricViewForRange(\n address: Hex,\n fromTimestamp: bigint,\n toTimestamp: bigint,\n ): Promise<Hex> {\n return actions.authorizeHistoricViewForRange(this.actionConfig, {\n address,\n fromTimestamp,\n toTimestamp,\n });\n }\n\n async authorizeHistoricViewForTransfer(address: Hex, transferId: bigint): Promise<Hex> {\n return actions.authorizeHistoricViewForTransfer(this.actionConfig, { address, transferId });\n }\n\n async revokeHistoricView(address: Hex): Promise<Hex> {\n return actions.revokeHistoricView(this.actionConfig, { address });\n }\n\n // --- Decrypt / history ---\n\n async requestTransferDecryption(ctxHash: Hex): Promise<TransferData> {\n if (!this.viewerPrivateKey) {\n throw new Error(\"Viewer key is required to decrypt transfer data.\");\n }\n const txHash = await actions.requestTransferDecryption(this.actionConfig, { ctxHash });\n const { ctxReceipt } = await waitForCtx(txHash, this.client);\n const events = parseEventLogs({\n abi: confidentialWrapperAbi,\n logs: ctxReceipt.logs,\n eventName: \"ReEncryptedTransfer\",\n });\n const event = events[0];\n if (!event) {\n throw new Error(\"CTX receipt does not contain a ReEncryptedTransfer event.\");\n }\n const encryptedData = (event.args as { encryptedTransfer?: Hex }).encryptedTransfer;\n if (!encryptedData) {\n throw new Error(\"CTX receipt does not contain a ReEncryptedTransfer event.\");\n }\n return actions.decryptHistoricTransferData({ encryptedData, viewerKey: this.viewerPrivateKey });\n }\n}\n","import { encodeFunctionData, toHex, type Hex } from \"viem\";\nimport { confidentialWrapperAbi } from \"../abi/confidentialWrapper.js\";\nimport { getValueForCtx } from \"./funding.js\";\nimport type {\n ActionConfig,\n ApproveParams,\n TransferParams,\n WrapParams,\n UnwrapParams,\n} from \"./types.js\";\n\nexport async function approve(config: ActionConfig, params: ApproveParams): Promise<Hex> {\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"approve\",\n args: [params.spender, params.amount],\n });\n return config.signer.sendTransaction({ to: config.address, data });\n}\n\nexport async function transfer(config: ActionConfig, params: TransferParams): Promise<Hex> {\n const value = await getValueForCtx(config);\n\n const valueHex = toHex(params.amount, { size: 32 });\n const encryptedValue = await config.bite.encryptMessageForCTX(valueHex, config.address);\n\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"encryptedTransfer\",\n args: [params.to, encryptedValue as Hex],\n });\n return config.signer.sendTransaction({ to: config.address, data, value });\n}\n\nexport async function wrap(config: ActionConfig, params: WrapParams): Promise<Hex> {\n const value = await getValueForCtx(config);\n\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"depositForWithGasToken\",\n args: [params.receiver, params.amount],\n });\n return config.signer.sendTransaction({ to: config.address, data, value });\n}\n\nexport async function unwrap(config: ActionConfig, params: UnwrapParams): Promise<Hex> {\n const value = await getValueForCtx(config);\n\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"withdrawToWithGasToken\",\n args: [params.receiver, params.amount],\n });\n return config.signer.sendTransaction({ to: config.address, data, value });\n}\n","export const confidentialWrapperAbi = [\n {\n inputs: [\n {\n internalType: \"contract IERC20Metadata\",\n name: \"underlyingToken\",\n type: \"address\",\n },\n {\n internalType: \"string\",\n name: \"version_\",\n type: \"string\",\n },\n {\n internalType: \"address\",\n name: \"initialAuthority\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"authority\",\n type: \"address\",\n },\n ],\n name: \"AccessManagedInvalidAuthority\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"caller\",\n type: \"address\",\n },\n {\n internalType: \"uint32\",\n name: \"delay\",\n type: \"uint32\",\n },\n ],\n name: \"AccessManagedRequiredDelay\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"caller\",\n type: \"address\",\n },\n ],\n name: \"AccessManagedUnauthorized\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"AccessViolation\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ActionNotRecognized\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"validBefore\",\n type: \"uint256\",\n },\n ],\n name: \"AuthorizationIsExpired\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"validAfter\",\n type: \"uint256\",\n },\n ],\n name: \"AuthorizationIsNotYetValid\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"authorizer\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"nonce\",\n type: \"bytes32\",\n },\n ],\n name: \"AuthorizationUsedError\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"CTXAbiToRlpConversionFailed\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"CTXAbiToRlpUnknownError\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"CTXCountNotVerifyTransaction\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"CTXDataOffsetOutOfBounds\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"CTXDataTooShort\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"CTXInputTooShort\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"CTXInvalidDestination\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"CTXInvalidGasLimit\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"CTXInvalidSignature\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"CTXInvalidTransaction\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"CTXUnknownError\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"caller\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"payee\",\n type: \"address\",\n },\n ],\n name: \"CallerMustBeThePayee\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"DataLengthMismatch\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"DecryptionBadFormat\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ECDSAInvalidSignature\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"length\",\n type: \"uint256\",\n },\n ],\n name: \"ECDSAInvalidSignatureLength\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n name: \"ECDSAInvalidSignatureS\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"ECIESEncryptionFailed\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"ECIESInvalidPublicKey\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"allowance\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"needed\",\n type: \"uint256\",\n },\n ],\n name: \"ERC20InsufficientAllowance\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"balance\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"needed\",\n type: \"uint256\",\n },\n ],\n name: \"ERC20InsufficientBalance\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"approver\",\n type: \"address\",\n },\n ],\n name: \"ERC20InvalidApprover\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"receiver\",\n type: \"address\",\n },\n ],\n name: \"ERC20InvalidReceiver\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"ERC20InvalidSender\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n ],\n name: \"ERC20InvalidSpender\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"ERC20InvalidUnderlying\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"deadline\",\n type: \"uint256\",\n },\n ],\n name: \"ERC2612ExpiredSignature\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"signer\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"ERC2612InvalidSigner\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"precompiledContract\",\n type: \"address\",\n },\n ],\n name: \"EmptyReturnData\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"FailedCall\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"precompiledContract\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"expected\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"actual\",\n type: \"uint256\",\n },\n ],\n name: \"IncorrectReturnDataLength\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"InputNot32ByteAligned\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"InputTooLarge\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"InputTooShort\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"balance\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"needed\",\n type: \"uint256\",\n },\n ],\n name: \"InsufficientBalance\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InsufficientBalance\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"required\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"available\",\n type: \"uint256\",\n },\n ],\n name: \"InsufficientGasToken\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"currentNonce\",\n type: \"uint256\",\n },\n ],\n name: \"InvalidAccountNonce\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"InvalidDataOffset\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidPublicKey\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"precompiledContract\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"expectedMin\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"actual\",\n type: \"uint256\",\n },\n ],\n name: \"InvalidReturnDataSize\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidShortString\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"InvalidSignature\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"fromTimestamp\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"toTimestamp\",\n type: \"uint256\",\n },\n ],\n name: \"InvalidTimeRange\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"transferId\",\n type: \"uint256\",\n },\n ],\n name: \"InvalidTransferId\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"holder\",\n type: \"address\",\n },\n ],\n name: \"NoViewerRegisteredForHolder\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"OutdatedMint\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"viewer\",\n type: \"address\",\n },\n ],\n name: \"PublicKeyIsNotRegistered\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"SafeERC20FailedOperation\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"str\",\n type: \"string\",\n },\n ],\n name: \"StringTooLong\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"TrailingPaddingNotZeros\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"errorCode\",\n type: \"uint256\",\n },\n ],\n name: \"UnknownEncryptionError\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"errorData\",\n type: \"bytes\",\n },\n ],\n name: \"UnknownError\",\n type: \"error\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"viewer\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"transferId\",\n type: \"uint256\",\n },\n ],\n name: \"UserIsNotAuthorizedToDecryptTransfer\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ValueIsEncrypted\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ValueWasNotEncryptedCorrectly\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"WrongPlaintextFormat\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ZeroAddress\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ZeroValue\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"authority\",\n type: \"address\",\n },\n ],\n name: \"AuthorityUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"authorizer\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"nonce\",\n type: \"bytes32\",\n },\n ],\n name: \"AuthorizationCanceled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"authorizer\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"nonce\",\n type: \"bytes32\",\n },\n ],\n name: \"AuthorizationUsed\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"callbackSender\",\n type: \"address\",\n },\n ],\n name: \"CTXResubmitted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"callbackSender\",\n type: \"address\",\n },\n ],\n name: \"CTXSubmitted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"newFee\",\n type: \"uint256\",\n },\n ],\n name: \"CallbackFeeChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [],\n name: \"EIP712DomainChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"newAddress\",\n type: \"address\",\n },\n ],\n name: \"EncryptECIESAddressChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"newAddress\",\n type: \"address\",\n },\n ],\n name: \"EncryptTEAddressChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"transferId\",\n type: \"uint256\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"encryptedData\",\n type: \"bytes\",\n },\n ],\n name: \"EncryptedTransfer\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"receiver\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"GasTokenBalanceToppedUp\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"receiver\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"GasTokenWithdrawn\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"holder\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"viewer\",\n type: \"address\",\n },\n ],\n name: \"HistoricViewPermissionsRevoked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"holder\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"viewer\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"fromTimestamp\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"toTimestamp\",\n type: \"uint256\",\n },\n ],\n name: \"HistoricViewTimeRangeAuthorized\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"holder\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"viewer\",\n type: \"address\",\n },\n ],\n name: \"HistoricViewTimeRangeRevoked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"holder\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"viewer\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"transferId\",\n type: \"uint256\",\n },\n ],\n name: \"HistoricViewTransferIdAuthorized\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"holder\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"viewer\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"transferId\",\n type: \"uint256\",\n },\n ],\n name: \"HistoricViewTransferIdRevoked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"viewer\",\n type: \"address\",\n },\n ],\n name: \"PublicKeyRegistered\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"viewer\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"encryptedTransfer\",\n type: \"bytes\",\n },\n ],\n name: \"ReEncryptedTransfer\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"newAddress\",\n type: \"address\",\n },\n ],\n name: \"SubmitCTXAddressChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"transferId\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"encryptedValue\",\n type: \"bytes\",\n },\n ],\n name: \"TransferValueEncryptedForRecipient\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"transferId\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"encryptedValue\",\n type: \"bytes\",\n },\n ],\n name: \"TransferValueEncryptedForSender\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"holder\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newViewer\",\n type: \"address\",\n },\n ],\n name: \"ViewerChanged\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"CANCEL_AUTHORIZATION_TYPEHASH\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"DOMAIN_SEPARATOR\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"ENCRYPTED_RECEIVE_WITH_AUTHORIZATION_TYPEHASH\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"ENCRYPTED_TRANSFER_WITH_AUTHORIZATION_TYPEHASH\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"RECEIVE_WITH_AUTHORIZATION_TYPEHASH\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"TRANSFER_WITH_AUTHORIZATION_TYPEHASH\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n ],\n name: \"allowance\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"authority\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"authorizer\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"nonce\",\n type: \"bytes32\",\n },\n ],\n name: \"authorizationState\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"used\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"viewer\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"fromTimestamp\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"toTimestamp\",\n type: \"uint256\",\n },\n ],\n name: \"authorizeHistoricViewTimeRange\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"success\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"viewer\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"transferId\",\n type: \"uint256\",\n },\n ],\n name: \"authorizeHistoricViewTransferId\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"success\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"balance\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"callbackFee\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"viewer\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"transferId\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"timestamp\",\n type: \"uint256\",\n },\n ],\n name: \"canDecryptHistoricTransfer\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"canDecrypt\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"authorizer\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"nonce\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n name: \"cancelAuthorization\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"decimals\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"decimalsValue\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"depositFor\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"success\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"depositForWithGasToken\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"success\",\n type: \"bool\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"eip712Domain\",\n outputs: [\n {\n internalType: \"bytes1\",\n name: \"fields\",\n type: \"bytes1\",\n },\n {\n internalType: \"string\",\n name: \"name\",\n type: \"string\",\n },\n {\n internalType: \"string\",\n name: \"version\",\n type: \"string\",\n },\n {\n internalType: \"uint256\",\n name: \"chainId\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"verifyingContract\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"salt\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256[]\",\n name: \"extensions\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"encryptECIESAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"encryptTEAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"holder\",\n type: \"address\",\n },\n ],\n name: \"encryptedBalanceOf\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"encryptedBalance\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"value\",\n type: \"bytes\",\n },\n {\n internalType: \"uint256\",\n name: \"validAfter\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"validBefore\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"nonce\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n name: \"encryptedReceiveWithAuthorization\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"value\",\n type: \"bytes\",\n },\n ],\n name: \"encryptedTransfer\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"value\",\n type: \"bytes\",\n },\n ],\n name: \"encryptedTransferFrom\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"value\",\n type: \"bytes\",\n },\n {\n internalType: \"uint256\",\n name: \"validAfter\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"validBefore\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"nonce\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n name: \"encryptedTransferWithAuthorization\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"receiver\",\n type: \"address\",\n },\n ],\n name: \"fundWithGasToken\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"holder\",\n type: \"address\",\n },\n ],\n name: \"gasTokenBalanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"balance\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"isConsumingScheduledOp\",\n outputs: [\n {\n internalType: \"bytes4\",\n name: \"\",\n type: \"bytes4\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"nonces\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes[]\",\n name: \"decryptedArguments\",\n type: \"bytes[]\",\n },\n {\n internalType: \"bytes[]\",\n name: \"plaintextArguments\",\n type: \"bytes[]\",\n },\n ],\n name: \"onDecrypt\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"deadline\",\n type: \"uint256\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n name: \"permit\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"accountAddress\",\n type: \"address\",\n },\n ],\n name: \"publicKeys\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"x\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"y\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"validAfter\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"validBefore\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"nonce\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n name: \"receiveWithAuthorization\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"x\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"y\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct PublicKey\",\n name: \"publicKey\",\n type: \"tuple\",\n },\n ],\n name: \"registerPublicKey\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"releaseTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"viewer\",\n type: \"address\",\n },\n ],\n name: \"removeHistoricViewAuth\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"success\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"viewer\",\n type: \"address\",\n },\n ],\n name: \"removeHistoricViewTimeRange\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"success\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"viewer\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"transferId\",\n type: \"uint256\",\n },\n ],\n name: \"removeHistoricViewTransferId\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"success\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"encryptedTransferData\",\n type: \"bytes\",\n },\n ],\n name: \"requestDecryptHistoricTransfer\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"encryptedTransferData\",\n type: \"bytes\",\n },\n {\n internalType: \"address\",\n name: \"historicViewer\",\n type: \"address\",\n },\n ],\n name: \"requestDecryptHistoricTransferFor\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"holder\",\n type: \"address\",\n },\n ],\n name: \"requestedMints\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n {\n internalType: \"address\",\n name: \"receiver\",\n type: \"address\",\n },\n ],\n name: \"retrieveGasToken\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newAuthority\",\n type: \"address\",\n },\n ],\n name: \"setAuthority\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"newFee\",\n type: \"uint256\",\n },\n ],\n name: \"setCallbackFee\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newAddress\",\n type: \"address\",\n },\n ],\n name: \"setEncryptECIESAddress\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newAddress\",\n type: \"address\",\n },\n ],\n name: \"setEncryptTEAddress\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newAddress\",\n type: \"address\",\n },\n ],\n name: \"setSubmitCTXAddress\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"viewer\",\n type: \"address\",\n },\n ],\n name: \"setViewerAddress\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"x\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"y\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct PublicKey\",\n name: \"publicKey\",\n type: \"tuple\",\n },\n ],\n name: \"setViewerPublicKey\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"submitCTXAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"supply\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"transfer\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"result\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"validAfter\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"validBefore\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"nonce\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint8\",\n name: \"v\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes32\",\n name: \"r\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"s\",\n type: \"bytes32\",\n },\n ],\n name: \"transferWithAuthorization\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"underlying\",\n outputs: [\n {\n internalType: \"contract IERC20\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"holder\",\n type: \"address\",\n },\n ],\n name: \"viewerAddresses\",\n outputs: [\n {\n internalType: \"address\",\n name: \"viewerAddress\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawTo\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"success\",\n type: \"bool\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawToWithGasToken\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"success\",\n type: \"bool\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n] as const;\n","import { encodeFunctionData, type Hex } from \"viem\";\nimport { confidentialWrapperAbi } from \"../abi/confidentialWrapper.js\";\nimport type { ActionConfig, TopUpParams } from \"./types.js\";\n\nconst CTX_RESERVE_THRESHOLD = 1n;\n\nexport async function getCtxBalance(config: ActionConfig): Promise<bigint> {\n return (await config.publicClient.readContract({\n address: config.address,\n abi: confidentialWrapperAbi,\n functionName: \"gasTokenBalanceOf\",\n args: [config.signer.address],\n })) as bigint;\n}\n\nexport async function getCtxFee(config: ActionConfig): Promise<bigint> {\n return (await config.publicClient.readContract({\n address: config.address,\n abi: confidentialWrapperAbi,\n functionName: \"callbackFee\",\n })) as bigint;\n}\n\nexport async function fundCtxBalance(config: ActionConfig, params: TopUpParams): Promise<Hex> {\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"fundWithGasToken\",\n args: [config.signer.address],\n });\n return config.signer.sendTransaction({\n to: config.address,\n data,\n value: params.amount,\n });\n}\n\nexport async function getValueForCtx(config: ActionConfig): Promise<bigint> {\n const [fee, balance] = await Promise.all([getCtxFee(config), getCtxBalance(config)]);\n const topUp = CTX_RESERVE_THRESHOLD * fee - balance;\n return fee + (topUp > 0n ? topUp : 0n);\n}\n","import { bytesToHex, parseEventLogs, type Hex } from \"viem\";\nimport { confidentialWrapperAbi } from \"../abi/confidentialWrapper.js\";\nimport { decryptBalance, decryptTransferData } from \"../utils/crypto.js\";\nimport type {\n ActionConfig,\n DecryptBalanceParams,\n DecryptHistoricTransferDataParams,\n GetTransferIdParams,\n} from \"./types.js\";\nimport type { TransferData } from \"../types.js\";\n\nexport async function decryptTokenBalance(\n config: ActionConfig,\n params: DecryptBalanceParams,\n): Promise<bigint> {\n const raw = await config.publicClient.readContract({\n address: config.address,\n abi: confidentialWrapperAbi,\n functionName: \"encryptedBalanceOf\",\n args: [config.signer.address],\n });\n\n const encryptedHex = (typeof raw === \"string\" ? raw : bytesToHex(raw as Uint8Array)) as Hex;\n\n return decryptBalance(encryptedHex, params.viewerKey);\n}\n\nexport async function decryptHistoricTransferData(\n params: DecryptHistoricTransferDataParams,\n): Promise<TransferData> {\n return decryptTransferData(params.encryptedData, params.viewerKey);\n}\n\nexport async function getTransferId(\n config: ActionConfig,\n params: GetTransferIdParams,\n): Promise<bigint> {\n const receipt = await config.publicClient.waitForTransactionReceipt({ hash: params.ctxHash });\n const events = parseEventLogs({\n abi: confidentialWrapperAbi,\n logs: receipt.logs,\n eventName: \"EncryptedTransfer\",\n });\n\n const event = events[0];\n if (!event) {\n throw new Error(\"CTX receipt does not contain an EncryptedTransfer event.\");\n }\n\n const transferId = (event.args as { transferId?: bigint }).transferId;\n if (transferId === undefined) {\n throw new Error(\"CTX receipt does not contain an EncryptedTransfer event.\");\n }\n\n return transferId;\n}\n","import { secp256k1 } from \"@noble/curves/secp256k1\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { cbc } from \"@noble/ciphers/aes\";\nimport { bytesToHex, decodeAbiParameters, hexToBytes, type Hex } from \"viem\";\n\nimport type { TransferData } from \"../types.js\";\n\nfunction bytesToBigInt(bytes: Uint8Array): bigint {\n if (bytes.length === 0) {\n return 0n;\n }\n const hexValue = bytesToHex(bytes);\n return BigInt(hexValue === \"0x\" ? \"0x0\" : hexValue);\n}\n\nexport function decryptEciesPayload(encryptedHex: Hex, privateKey: Hex): Uint8Array {\n const payload = hexToBytes(encryptedHex);\n\n if (payload.length < 65) {\n throw new Error(\"Encrypted payload is too short.\");\n }\n\n const iv = payload.slice(0, 16);\n const ephemeralCompressedPublicKey = payload.slice(16, 49);\n const ciphertext = payload.slice(49);\n\n if (ephemeralCompressedPublicKey.length !== 33) {\n throw new Error(\"Invalid ephemeral public key length in encrypted payload.\");\n }\n\n if (ciphertext.length === 0 || ciphertext.length % 16 !== 0) {\n throw new Error(\"Invalid AES-CBC ciphertext length.\");\n }\n\n const sharedSecret = secp256k1.getSharedSecret(\n hexToBytes(privateKey),\n ephemeralCompressedPublicKey,\n true,\n );\n const encryptionKey = sha256(sharedSecret.slice(1));\n const keyMaterial = Uint8Array.from(encryptionKey);\n\n return cbc(keyMaterial, iv).decrypt(ciphertext);\n}\n\nfunction tryDecodeTransferData(encoded: Hex): TransferData | undefined {\n try {\n const [from, to, value, timestamp, transferId] = decodeAbiParameters(\n [\n { type: \"address\" },\n { type: \"address\" },\n { type: \"uint256\" },\n { type: \"uint256\" },\n { type: \"uint256\" },\n ],\n encoded,\n );\n\n return { from, to, value, timestamp, transferId };\n } catch {\n return undefined;\n }\n}\n\nexport async function decryptBalance(encryptedHex: Hex, privateKey: Hex): Promise<bigint> {\n const plaintext = decryptEciesPayload(encryptedHex, privateKey);\n\n if (plaintext.length <= 32) {\n return bytesToBigInt(plaintext);\n }\n\n return bytesToBigInt(plaintext.slice(-32));\n}\n\nexport async function decryptTransferData(\n encryptedHex: Hex,\n privateKey: Hex,\n): Promise<TransferData> {\n const plaintext = decryptEciesPayload(encryptedHex, privateKey);\n\n const direct = tryDecodeTransferData(bytesToHex(plaintext));\n if (direct) {\n return direct;\n }\n\n const structSizeBytes = 32 * 5;\n if (plaintext.length >= structSizeBytes) {\n const trailing = plaintext.slice(-structSizeBytes);\n const trailingDecoded = tryDecodeTransferData(bytesToHex(trailing));\n if (trailingDecoded) {\n return trailingDecoded;\n }\n }\n\n throw new Error(\"Unable to decode decrypted transfer payload as TransferData struct.\");\n}\n","import { encodeFunctionData, parseEventLogs, type Hex } from \"viem\";\nimport { confidentialWrapperAbi } from \"../abi/confidentialWrapper.js\";\nimport { parsePublicKeyCoordinates } from \"../utils/viewerKey.js\";\nimport { getValueForCtx } from \"./funding.js\";\nimport type {\n ActionConfig,\n RegisterViewerKeyParams,\n AuthorizeHistoricViewForRangeParams,\n AuthorizeHistoricViewForTransferParams,\n RevokeHistoricViewParams,\n RequestTransferDecryptionParams,\n} from \"./types.js\";\n\nexport async function registerViewerKey(\n config: ActionConfig,\n params: RegisterViewerKeyParams,\n): Promise<Hex> {\n const { x, y } = parsePublicKeyCoordinates(params.publicKey);\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"setViewerPublicKey\",\n args: [{ x, y }],\n });\n return config.signer.sendTransaction({ to: config.address, data });\n}\n\nexport async function authorizeHistoricViewForRange(\n config: ActionConfig,\n params: AuthorizeHistoricViewForRangeParams,\n): Promise<Hex> {\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"authorizeHistoricViewTimeRange\",\n args: [params.address, params.fromTimestamp, params.toTimestamp],\n });\n return config.signer.sendTransaction({ to: config.address, data });\n}\n\nexport async function authorizeHistoricViewForTransfer(\n config: ActionConfig,\n params: AuthorizeHistoricViewForTransferParams,\n): Promise<Hex> {\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"authorizeHistoricViewTransferId\",\n args: [params.address, params.transferId],\n });\n return config.signer.sendTransaction({ to: config.address, data });\n}\n\nexport async function revokeHistoricView(\n config: ActionConfig,\n params: RevokeHistoricViewParams,\n): Promise<Hex> {\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"removeHistoricViewAuth\",\n args: [params.address],\n });\n return config.signer.sendTransaction({ to: config.address, data });\n}\n\nexport async function requestTransferDecryption(\n config: ActionConfig,\n params: RequestTransferDecryptionParams,\n): Promise<Hex> {\n const value = await getValueForCtx(config);\n\n // 1. Get encryptedData from the EncryptedTransfer event\n const receipt = await config.publicClient.waitForTransactionReceipt({ hash: params.ctxHash });\n const events = parseEventLogs({\n abi: confidentialWrapperAbi,\n logs: receipt.logs,\n eventName: \"EncryptedTransfer\",\n });\n\n const event = events[0];\n if (!event) {\n throw new Error(\"CTX receipt does not contain an EncryptedTransfer event.\");\n }\n\n const args = event.args as { encryptedData?: Hex; transferId?: bigint; from?: Hex; to?: Hex };\n const { encryptedData, transferId, from, to } = args;\n\n if (!encryptedData || transferId === undefined || !from || !to) {\n throw new Error(\"CTX receipt does not contain an EncryptedTransfer event.\");\n }\n\n // 2. Check permissions\n const viewerAddress = (await config.publicClient.readContract({\n address: config.address,\n abi: confidentialWrapperAbi,\n functionName: \"viewerAddresses\",\n args: [config.signer.address],\n })) as Hex;\n\n const block = await config.publicClient.getBlock({ blockNumber: receipt.blockNumber });\n const canDecrypt = (await config.publicClient.readContract({\n address: config.address,\n abi: confidentialWrapperAbi,\n functionName: \"canDecryptHistoricTransfer\",\n args: [viewerAddress, transferId, from, to, block.timestamp],\n })) as boolean;\n\n if (!canDecrypt) {\n throw new Error(\"Viewer is not authorized to decrypt this historic transfer.\");\n }\n\n // 3. Request re-encryption\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"requestDecryptHistoricTransferFor\",\n args: [encryptedData, viewerAddress],\n });\n return config.signer.sendTransaction({ to: config.address, data, value });\n}\n","import { type Hex, hexToBytes, isAddressEqual, keccak256, toHex, zeroAddress } from \"viem\";\nimport { publicKeyToAddress } from \"viem/utils\";\nimport { secp256k1 } from \"@noble/curves/secp256k1\";\n\nimport type { ViewerKeypair } from \"../types.js\";\n\nfunction privateKeyFromSignature(signature: Hex): Hex {\n let candidate = keccak256(hexToBytes(signature));\n\n for (let i = 0; i < 16; i += 1) {\n if (secp256k1.utils.isValidSecretKey(hexToBytes(candidate))) {\n return candidate;\n }\n candidate = keccak256(hexToBytes(candidate));\n }\n\n throw new Error(\"Unable to derive a valid deterministic private key from signature.\");\n}\n\nexport function parsePublicKeyCoordinates(publicKey: Hex): { x: Hex; y: Hex } {\n const raw = publicKey.startsWith(\"0x04\") ? publicKey.slice(4) : publicKey.slice(2);\n\n if (raw.length !== 128) {\n throw new Error(\"Public key must be an uncompressed key (65 bytes with 0x04 prefix).\");\n }\n\n return {\n x: `0x${raw.slice(0, 64)}` as Hex,\n y: `0x${raw.slice(64, 128)}` as Hex,\n };\n}\n\nexport function deriveAddressFromPublicKey(publicKey: Hex): Hex {\n const key = publicKey.startsWith(\"0x04\") ? publicKey : (`0x04${publicKey.slice(2)}` as Hex);\n return publicKeyToAddress(key) as Hex;\n}\n\nexport function validateViewerKey(publicKey: Hex, expectedViewerAddress?: Hex): string | undefined {\n if (!expectedViewerAddress) {\n return undefined;\n }\n\n if (isAddressEqual(expectedViewerAddress, zeroAddress)) {\n return undefined;\n }\n\n const derivedViewerAddress = deriveAddressFromPublicKey(publicKey);\n if (!isAddressEqual(derivedViewerAddress, expectedViewerAddress)) {\n return \"Public key does not match the registered viewer address.\";\n }\n\n return undefined;\n}\n\nexport function deriveViewerKeypair(signature: Hex): ViewerKeypair {\n const privateKey = privateKeyFromSignature(signature);\n const publicKey = toHex(secp256k1.getPublicKey(hexToBytes(privateKey), false));\n const { x, y } = parsePublicKeyCoordinates(publicKey);\n\n return { privateKey, publicKey, x, y };\n}\n","import type { Hex, PublicClient, TransactionReceipt } from \"viem\";\n\nexport type CtxResult = {\n originHash: Hex;\n originReceipt: TransactionReceipt;\n ctxHash: Hex;\n ctxReceipt: TransactionReceipt;\n};\n\nexport type CtxPromise = Promise<Hex> & {\n waitForCtx(): Promise<CtxResult>;\n};\n\nexport function createCtxPromise(\n txHashPromise: Promise<Hex>,\n publicClient: PublicClient,\n): CtxPromise {\n const promise = txHashPromise as CtxPromise;\n promise.waitForCtx = async () => {\n const txHash = await txHashPromise;\n return waitForCtx(txHash, publicClient);\n };\n return promise;\n}\n\nfunction normalizeHex(value: string): Hex | undefined {\n const trimmed = value.trim();\n\n if (/^0x[0-9a-fA-F]+$/.test(trimmed)) {\n return trimmed as Hex;\n }\n\n if (/^[0-9a-fA-F]+$/.test(trimmed)) {\n return `0x${trimmed}` as Hex;\n }\n\n return undefined;\n}\n\nfunction findFirstHex(value: unknown): Hex | undefined {\n if (typeof value === \"string\") {\n return normalizeHex(value);\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n const candidate = findFirstHex(item);\n if (candidate) {\n return candidate;\n }\n }\n return undefined;\n }\n\n if (value && typeof value === \"object\") {\n for (const child of Object.values(value)) {\n const candidate = findFirstHex(child);\n if (candidate) {\n return candidate;\n }\n }\n }\n\n return undefined;\n}\n\nfunction collectHexValues(value: unknown, acc: Hex[]): void {\n if (typeof value === \"string\") {\n const normalized = normalizeHex(value);\n if (normalized) {\n acc.push(normalized);\n }\n return;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n collectHexValues(item, acc);\n }\n return;\n }\n\n if (value && typeof value === \"object\") {\n for (const child of Object.values(value)) {\n collectHexValues(child, acc);\n }\n }\n}\n\nasync function callBiteGetCraftedCtxs(publicClient: PublicClient, txHash: Hex): Promise<unknown> {\n return publicClient.request({\n method: \"bite_getCraftedCtxs\" as any,\n params: [txHash] as any,\n });\n}\n\nexport async function getCtxHash(\n publicClient: PublicClient,\n txHash: Hex,\n): Promise<Hex | undefined> {\n const result = await callBiteGetCraftedCtxs(publicClient, txHash);\n return findFirstHex(result);\n}\n\nexport async function getCtxHashes(publicClient: PublicClient, txHash: Hex): Promise<Hex[]> {\n const result = await callBiteGetCraftedCtxs(publicClient, txHash);\n const allHexes: Hex[] = [];\n collectHexValues(result, allHexes);\n\n const deduped = new Map<string, Hex>();\n for (const hash of allHexes) {\n deduped.set(hash.toLowerCase(), hash);\n }\n\n return Array.from(deduped.values());\n}\n\nexport async function waitForCtx(txHash: Hex, publicClient: PublicClient): Promise<CtxResult> {\n // 1. Wait for original tx to be mined\n const originReceipt = await publicClient.waitForTransactionReceipt({ hash: txHash });\n\n // 2. Get CTX hash (deterministic once origin is mined)\n const ctxHash = await getCtxHash(publicClient, txHash);\n if (!ctxHash) {\n throw new Error(`No crafted CTX found for tx ${txHash}.`);\n }\n\n // 3. Wait for CTX to be mined\n const ctxReceipt = await publicClient.waitForTransactionReceipt({ hash: ctxHash });\n\n return { originHash: txHash, originReceipt, ctxHash, ctxReceipt };\n}\n","import type { Hex } from \"viem\";\n\nimport { ConfidentialToken } from \"./ConfidentialToken.js\";\nimport { confidentialWrapperAbi } from \"./abi/confidentialWrapper.js\";\nimport * as actions from \"./actions/index.js\";\nimport { createCtxPromise, type CtxPromise } from \"./utils/ctx.js\";\n\nexport class ConfidentialWrapper extends ConfidentialToken {\n async underlying(): Promise<Hex> {\n return (await this.client.readContract({\n address: this.address,\n abi: confidentialWrapperAbi,\n functionName: \"underlying\",\n })) as Hex;\n }\n\n wrap(receiver: Hex, amount: bigint): CtxPromise {\n return createCtxPromise(actions.wrap(this.actionConfig, { receiver, amount }), this.client);\n }\n\n unwrap(receiver: Hex, amount: bigint): CtxPromise {\n return createCtxPromise(actions.unwrap(this.actionConfig, { receiver, amount }), this.client);\n }\n}\n"],"mappings":"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","names":["import_viem","import_viem","import_viem","import_viem","import_viem","import_viem","import_secp256k1"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/ConfidentialToken.ts","../src/actions/transfers.ts","../src/abi/confidentialWrapper.ts","../src/actions/funding.ts","../src/actions/decrypt.ts","../src/utils/crypto.ts","../src/actions/access.ts","../src/utils/viewerKey.ts","../src/utils/ctx.ts","../src/ConfidentialWrapper.ts"],"sourcesContent":["export { ConfidentialToken } from \"./ConfidentialToken.js\";\nexport { ConfidentialWrapper } from \"./ConfidentialWrapper.js\";\nexport { confidentialWrapperAbi } from \"./abi/confidentialWrapper.js\";\nexport type { CtxPromise } from \"./utils/ctx.js\";\nexport type {\n ConfidentialTokenConfig,\n Signer,\n UnsignedTx,\n TransferData,\n ViewerKeypair,\n} from \"./types.js\";\nexport type { ActionConfig } from \"./actions/types.js\";\n","import { createPublicClient, http, parseEventLogs, type Hex, type PublicClient } from \"viem\";\nimport { BITE } from \"@skalenetwork/bite\";\n\nimport type { ConfidentialTokenConfig, TransferData } from \"./types.js\";\nimport type { ActionConfig } from \"./actions/types.js\";\nimport * as actions from \"./actions/index.js\";\nimport { confidentialWrapperAbi } from \"./abi/confidentialWrapper.js\";\nimport { createCtxPromise, type CtxPromise, waitForCtx } from \"./utils/ctx.js\";\n\nexport class ConfidentialToken {\n readonly rpcUrl: string;\n readonly address: Hex;\n readonly signer: {\n address: Hex;\n sendTransaction(tx: { to: Hex; data: Hex; value?: bigint }): Promise<Hex>;\n };\n private viewerPrivateKey?: Hex;\n protected client: PublicClient;\n private bite: BITE;\n\n constructor(config: ConfidentialTokenConfig) {\n this.rpcUrl = config.rpcUrl;\n this.address = config.address;\n this.signer = config.signer;\n this.viewerPrivateKey = config.viewerPrivateKey;\n this.client = createPublicClient({ transport: http(config.rpcUrl) }) as PublicClient;\n this.bite = new BITE(config.rpcUrl);\n }\n\n protected get actionConfig(): ActionConfig {\n return {\n rpcUrl: this.rpcUrl,\n address: this.address,\n publicClient: this.client,\n signer: this.signer,\n bite: this.bite,\n };\n }\n\n setViewerPrivateKey(privateKey: Hex): void {\n this.viewerPrivateKey = privateKey;\n }\n\n // --- Standard ERC-20 reads ---\n\n async name(): Promise<string> {\n return (await this.client.readContract({\n address: this.address,\n abi: confidentialWrapperAbi,\n functionName: \"name\",\n })) as string;\n }\n\n async symbol(): Promise<string> {\n return (await this.client.readContract({\n address: this.address,\n abi: confidentialWrapperAbi,\n functionName: \"symbol\",\n })) as string;\n }\n\n async decimals(): Promise<number> {\n return Number(\n await this.client.readContract({\n address: this.address,\n abi: confidentialWrapperAbi,\n functionName: \"decimals\",\n }),\n );\n }\n\n async allowance(owner: Hex, spender: Hex): Promise<bigint> {\n return (await this.client.readContract({\n address: this.address,\n abi: confidentialWrapperAbi,\n functionName: \"allowance\",\n args: [owner, spender],\n })) as bigint;\n }\n\n // --- Privacy-specific reads ---\n\n async viewerAddress(): Promise<Hex> {\n return (await this.client.readContract({\n address: this.address,\n abi: confidentialWrapperAbi,\n functionName: \"viewerAddresses\",\n args: [this.signer.address],\n })) as Hex;\n }\n\n async decryptBalance(): Promise<bigint> {\n if (!this.viewerPrivateKey) {\n throw new Error(\"Viewer key is required to decrypt balance.\");\n }\n return actions.decryptTokenBalance(this.actionConfig, { viewerKey: this.viewerPrivateKey });\n }\n\n // --- Standard ERC-20 writes ---\n\n async approve(spender: Hex, amount: bigint): Promise<Hex> {\n return actions.approve(this.actionConfig, { spender, amount });\n }\n\n // --- Privacy-specific writes ---\n\n transfer(to: Hex, amount: bigint): CtxPromise {\n return createCtxPromise(\n actions.transfer(this.actionConfig, { to, amount }),\n this.client,\n );\n }\n\n // --- Viewer key management ---\n\n async registerViewerPublicKey(publicKey: Hex): Promise<Hex> {\n return actions.registerViewerKey(this.actionConfig, { publicKey });\n }\n\n async authorizeHistoricViewForRange(\n address: Hex,\n fromTimestamp: bigint,\n toTimestamp: bigint,\n ): Promise<Hex> {\n return actions.authorizeHistoricViewForRange(this.actionConfig, {\n address,\n fromTimestamp,\n toTimestamp,\n });\n }\n\n async authorizeHistoricViewForTransfer(address: Hex, transferId: bigint): Promise<Hex> {\n return actions.authorizeHistoricViewForTransfer(this.actionConfig, { address, transferId });\n }\n\n async revokeHistoricView(address: Hex): Promise<Hex> {\n return actions.revokeHistoricView(this.actionConfig, { address });\n }\n\n // --- Decrypt / history ---\n\n async requestTransferDecryption(ctxHash: Hex): Promise<TransferData> {\n if (!this.viewerPrivateKey) {\n throw new Error(\"Viewer key is required to decrypt transfer data.\");\n }\n const txHash = await actions.requestTransferDecryption(this.actionConfig, { ctxHash });\n const { ctxReceipt } = await waitForCtx(txHash, this.client);\n const events = parseEventLogs({\n abi: confidentialWrapperAbi,\n logs: ctxReceipt.logs,\n eventName: \"ReEncryptedTransfer\",\n });\n const event = events[0];\n if (!event) {\n throw new Error(\"CTX receipt does not contain a ReEncryptedTransfer event.\");\n }\n const encryptedData = (event.args as { encryptedTransfer?: Hex }).encryptedTransfer;\n if (!encryptedData) {\n throw new Error(\"CTX receipt does not contain a ReEncryptedTransfer event.\");\n }\n return actions.decryptHistoricTransferData({ encryptedData, viewerKey: this.viewerPrivateKey });\n }\n}\n","import { encodeAbiParameters, encodeFunctionData, type Hex } from \"viem\";\nimport { confidentialWrapperAbi } from \"../abi/confidentialWrapper.js\";\nimport { getValueForCtx } from \"./funding.js\";\nimport type {\n ActionConfig,\n ApproveParams,\n TransferParams,\n WrapParams,\n UnwrapParams,\n} from \"./types.js\";\n\nexport async function approve(config: ActionConfig, params: ApproveParams): Promise<Hex> {\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"approve\",\n args: [params.spender, params.amount],\n });\n return config.signer.sendTransaction({ to: config.address, data });\n}\n\nexport async function transfer(config: ActionConfig, params: TransferParams): Promise<Hex> {\n const value = await getValueForCtx(config);\n\n const valueHex = encodeAbiParameters(\n [{ type: \"address\" }, { type: \"uint256\" }],\n [config.signer.address, params.amount],\n );\n const encryptedValue = await config.bite.encryptMessageForCTX(valueHex, config.address);\n\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"encryptedTransfer\",\n args: [params.to, encryptedValue as Hex],\n });\n return config.signer.sendTransaction({ to: config.address, data, value });\n}\n\nexport async function wrap(config: ActionConfig, params: WrapParams): Promise<Hex> {\n const value = await getValueForCtx(config);\n\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"depositForWithGasToken\",\n args: [params.receiver, params.amount],\n });\n return config.signer.sendTransaction({ to: config.address, data, value });\n}\n\nexport async function unwrap(config: ActionConfig, params: UnwrapParams): Promise<Hex> {\n const value = await getValueForCtx(config);\n\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"withdrawToWithGasToken\",\n args: [params.receiver, params.amount],\n });\n return config.signer.sendTransaction({ to: config.address, data, value });\n}\n","export const confidentialWrapperAbi = [\n {\n \"inputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"proxyMode\",\n \"type\": \"bool\"\n },\n {\n \"internalType\": \"contract IERC20Metadata\",\n \"name\": \"underlyingToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"version_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"initialAuthority\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"authority\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AccessManagedInvalidAuthority\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"caller\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"delay\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"AccessManagedRequiredDelay\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"caller\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AccessManagedUnauthorized\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"AccessViolation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ActionNotRecognized\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"validBefore\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"AuthorizationIsExpired\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"validAfter\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"AuthorizationIsNotYetValid\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"authorizer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"nonce\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"AuthorizationUsedError\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"CTXAbiToRlpConversionFailed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"CTXAbiToRlpUnknownError\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"CTXCountNotVerifyTransaction\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"CTXDataOffsetOutOfBounds\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"CTXDataTooShort\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"CTXInputTooShort\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"CTXInvalidDestination\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"CTXInvalidGasLimit\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"CTXInvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"CTXInvalidTransaction\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"CTXUnknownError\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"caller\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"payee\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"CallerMustBeThePayee\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"DataLengthMismatch\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"DecryptionBadFormat\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ECDSAInvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"length\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureLength\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureS\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ECIESEncryptionFailed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ECIESInvalidPublicKey\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"allowance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientAllowance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"approver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidApprover\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidReceiver\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSpender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidUnderlying\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC2612ExpiredSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC2612InvalidSigner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"precompiledContract\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"EmptyReturnData\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"precompiledContract\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"expected\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"actual\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"IncorrectReturnDataLength\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InputNot32ByteAligned\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InputTooLarge\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InputTooShort\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"required\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"available\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InsufficientGasToken\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"currentNonce\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidAccountNonce\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidDataOffset\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidPublicKey\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"precompiledContract\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"expectedMin\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"actual\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidReturnDataSize\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidSaltForTransactionValue\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"fromTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"toTimestamp\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidTimeRange\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"transferId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidTransferId\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"holder\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"NoViewerRegisteredForHolder\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"OutdatedMint\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"viewer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"PublicKeyIsNotRegistered\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"TrailingPaddingNotZeros\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"errorCode\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"UnknownEncryptionError\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"errorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"UnknownError\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"viewer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"transferId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"UserIsNotAuthorizedToDecryptTransfer\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ValueIsEncrypted\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ValueWasNotEncryptedCorrectly\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"WrongInitializer\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"WrongPlaintextFormat\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroAddress\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroValue\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"authority\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AuthorityUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"authorizer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"nonce\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"AuthorizationCanceled\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"authorizer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"nonce\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"AuthorizationUsed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"callbackSender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"CTXResubmitted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"callbackSender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"CTXSubmitted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"newFee\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"CallbackFeeChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [],\n \"name\": \"EIP712DomainChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"EncryptECIESAddressChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"EncryptTEAddressChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"transferId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"encryptedData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"EncryptedTransfer\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"GasTokenBalanceToppedUp\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"GasTokenWithdrawn\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"holder\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"viewer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"HistoricViewPermissionsRevoked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"holder\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"viewer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"fromTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"toTimestamp\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"HistoricViewTimeRangeAuthorized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"holder\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"viewer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"HistoricViewTimeRangeRevoked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"holder\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"viewer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"transferId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"HistoricViewTransferIdAuthorized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"holder\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"viewer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"transferId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"HistoricViewTransferIdRevoked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"viewer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"PublicKeyRegistered\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"viewer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"encryptedTransfer\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"ReEncryptedTransfer\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SubmitCTXAddressChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"transferId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"encryptedValue\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"TransferValueEncryptedForRecipient\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"transferId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"encryptedValue\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"TransferValueEncryptedForSender\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"holder\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newViewer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ViewerChanged\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"CANCEL_AUTHORIZATION_TYPEHASH\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"DOMAIN_SEPARATOR\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"ENCRYPTED_RECEIVE_WITH_AUTHORIZATION_TYPEHASH\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"ENCRYPTED_TRANSFER_WITH_AUTHORIZATION_TYPEHASH\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"RECEIVE_WITH_AUTHORIZATION_TYPEHASH\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"TRANSFER_WITH_AUTHORIZATION_TYPEHASH\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"authority\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"authorizer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"nonce\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"authorizationState\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"used\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"viewer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"fromTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"toTimestamp\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"authorizeHistoricViewTimeRange\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"success\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"viewer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"transferId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"authorizeHistoricViewTransferId\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"success\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"callbackFee\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"viewer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"transferId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"timestamp\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"canDecryptHistoricTransfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"canDecrypt\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"authorizer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"nonce\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"v\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"r\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"cancelAuthorization\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"decimalsValue\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"depositFor\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"success\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"depositForWithGasToken\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"success\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"eip712Domain\",\n \"outputs\": [\n {\n \"internalType\": \"bytes1\",\n \"name\": \"fields\",\n \"type\": \"bytes1\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"verifyingContract\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"salt\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"extensions\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"encryptECIESAddress\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"encryptTEAddress\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"holder\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"encryptValue\",\n \"outputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"encryptedValue\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"holder\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"encryptedBalanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"encryptedBalance\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"value\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"validAfter\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"validBefore\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"nonce\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"v\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"r\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"encryptedReceiveWithAuthorization\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"value\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"encryptedTransfer\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"value\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"encryptedTransferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"value\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"validAfter\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"validBefore\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"nonce\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"v\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"r\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"encryptedTransferWithAuthorization\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"fundWithGasToken\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"holder\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"gasTokenBalanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IERC20Metadata\",\n \"name\": \"underlyingToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"version_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"initialAuthority\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"isConsumingScheduledOp\",\n \"outputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"\",\n \"type\": \"bytes4\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"nonces\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"decryptedArguments\",\n \"type\": \"bytes[]\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"plaintextArguments\",\n \"type\": \"bytes[]\"\n }\n ],\n \"name\": \"onDecrypt\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"v\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"r\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"permit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"accountAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"publicKeys\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"x\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"y\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"validAfter\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"validBefore\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"nonce\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"v\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"r\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"receiveWithAuthorization\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"x\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"y\",\n \"type\": \"bytes32\"\n }\n ],\n \"internalType\": \"struct PublicKey\",\n \"name\": \"publicKey\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"registerPublicKey\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"releaseTo\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"viewer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"removeHistoricViewAuth\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"success\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"viewer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"removeHistoricViewTimeRange\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"success\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"viewer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"transferId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"removeHistoricViewTransferId\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"success\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"encryptedTransferData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"requestDecryptHistoricTransfer\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"encryptedTransferData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"historicViewer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"requestDecryptHistoricTransferFor\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"holder\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"requestedMints\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"retrieveGasToken\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newAuthority\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setAuthority\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"newFee\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setCallbackFee\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setEncryptECIESAddress\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setEncryptTEAddress\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setSubmitCTXAddress\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"viewer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setViewerAddress\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"x\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"y\",\n \"type\": \"bytes32\"\n }\n ],\n \"internalType\": \"struct PublicKey\",\n \"name\": \"publicKey\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"setViewerPublicKey\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"submitCTXAddress\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"supply\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"result\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"validAfter\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"validBefore\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"nonce\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"v\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"r\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"transferWithAuthorization\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"underlying\",\n \"outputs\": [\n {\n \"internalType\": \"contract IERC20\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"version\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"holder\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"viewerAddresses\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"viewerAddress\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"withdrawTo\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"success\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"withdrawToWithGasToken\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"success\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"stateMutability\": \"payable\",\n \"type\": \"receive\"\n }\n] as const;\n","import { encodeFunctionData, type Hex } from \"viem\";\nimport { confidentialWrapperAbi } from \"../abi/confidentialWrapper.js\";\nimport type { ActionConfig, TopUpParams } from \"./types.js\";\n\nconst CTX_RESERVE_THRESHOLD = 1n;\n\nexport async function getCtxBalance(config: ActionConfig): Promise<bigint> {\n return (await config.publicClient.readContract({\n address: config.address,\n abi: confidentialWrapperAbi,\n functionName: \"gasTokenBalanceOf\",\n args: [config.signer.address],\n })) as bigint;\n}\n\nexport async function getCtxFee(config: ActionConfig): Promise<bigint> {\n return (await config.publicClient.readContract({\n address: config.address,\n abi: confidentialWrapperAbi,\n functionName: \"callbackFee\",\n })) as bigint;\n}\n\nexport async function fundCtxBalance(config: ActionConfig, params: TopUpParams): Promise<Hex> {\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"fundWithGasToken\",\n args: [config.signer.address],\n });\n return config.signer.sendTransaction({\n to: config.address,\n data,\n value: params.amount,\n });\n}\n\nexport async function getValueForCtx(config: ActionConfig): Promise<bigint> {\n const [fee, balance] = await Promise.all([getCtxFee(config), getCtxBalance(config)]);\n const topUp = CTX_RESERVE_THRESHOLD * fee - balance;\n return fee + (topUp > 0n ? topUp : 0n);\n}\n","import { bytesToHex, parseEventLogs, type Hex } from \"viem\";\nimport { confidentialWrapperAbi } from \"../abi/confidentialWrapper.js\";\nimport { decryptBalance, decryptTransferData } from \"../utils/crypto.js\";\nimport type {\n ActionConfig,\n DecryptBalanceParams,\n DecryptHistoricTransferDataParams,\n GetTransferIdParams,\n} from \"./types.js\";\nimport type { TransferData } from \"../types.js\";\n\nexport async function decryptTokenBalance(\n config: ActionConfig,\n params: DecryptBalanceParams,\n): Promise<bigint> {\n const raw = await config.publicClient.readContract({\n address: config.address,\n abi: confidentialWrapperAbi,\n functionName: \"encryptedBalanceOf\",\n args: [config.signer.address],\n });\n\n const encryptedHex = (typeof raw === \"string\" ? raw : bytesToHex(raw as Uint8Array)) as Hex;\n\n return decryptBalance(encryptedHex, params.viewerKey);\n}\n\nexport async function decryptHistoricTransferData(\n params: DecryptHistoricTransferDataParams,\n): Promise<TransferData> {\n return decryptTransferData(params.encryptedData, params.viewerKey);\n}\n\nexport async function getTransferId(\n config: ActionConfig,\n params: GetTransferIdParams,\n): Promise<bigint> {\n const receipt = await config.publicClient.waitForTransactionReceipt({ hash: params.ctxHash });\n const events = parseEventLogs({\n abi: confidentialWrapperAbi,\n logs: receipt.logs,\n eventName: \"EncryptedTransfer\",\n });\n\n const event = events[0];\n if (!event) {\n throw new Error(\"CTX receipt does not contain an EncryptedTransfer event.\");\n }\n\n const transferId = (event.args as { transferId?: bigint }).transferId;\n if (transferId === undefined) {\n throw new Error(\"CTX receipt does not contain an EncryptedTransfer event.\");\n }\n\n return transferId;\n}\n","import { secp256k1 } from \"@noble/curves/secp256k1\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { cbc } from \"@noble/ciphers/aes\";\nimport { bytesToHex, decodeAbiParameters, hexToBytes, type Hex } from \"viem\";\n\nimport type { TransferData } from \"../types.js\";\n\nfunction bytesToBigInt(bytes: Uint8Array): bigint {\n if (bytes.length === 0) {\n return 0n;\n }\n const hexValue = bytesToHex(bytes);\n return BigInt(hexValue === \"0x\" ? \"0x0\" : hexValue);\n}\n\nexport function decryptEciesPayload(encryptedHex: Hex, privateKey: Hex): Uint8Array {\n const payload = hexToBytes(encryptedHex);\n\n if (payload.length < 65) {\n throw new Error(\"Encrypted payload is too short.\");\n }\n\n const iv = payload.slice(0, 16);\n const ephemeralCompressedPublicKey = payload.slice(16, 49);\n const ciphertext = payload.slice(49);\n\n if (ephemeralCompressedPublicKey.length !== 33) {\n throw new Error(\"Invalid ephemeral public key length in encrypted payload.\");\n }\n\n if (ciphertext.length === 0 || ciphertext.length % 16 !== 0) {\n throw new Error(\"Invalid AES-CBC ciphertext length.\");\n }\n\n const sharedSecret = secp256k1.getSharedSecret(\n hexToBytes(privateKey),\n ephemeralCompressedPublicKey,\n true,\n );\n const encryptionKey = sha256(sharedSecret.slice(1));\n const keyMaterial = Uint8Array.from(encryptionKey);\n\n return cbc(keyMaterial, iv).decrypt(ciphertext);\n}\n\nfunction tryDecodeTransferData(encoded: Hex): TransferData | undefined {\n try {\n const [from, to, value, timestamp, transferId] = decodeAbiParameters(\n [\n { type: \"address\" },\n { type: \"address\" },\n { type: \"uint256\" },\n { type: \"uint256\" },\n { type: \"uint256\" },\n ],\n encoded,\n );\n\n return { from, to, value, timestamp, transferId };\n } catch {\n return undefined;\n }\n}\n\nexport async function decryptBalance(encryptedHex: Hex, privateKey: Hex): Promise<bigint> {\n const plaintext = decryptEciesPayload(encryptedHex, privateKey);\n\n if (plaintext.length <= 32) {\n return bytesToBigInt(plaintext);\n }\n\n return bytesToBigInt(plaintext.slice(-32));\n}\n\nexport async function decryptTransferData(\n encryptedHex: Hex,\n privateKey: Hex,\n): Promise<TransferData> {\n const plaintext = decryptEciesPayload(encryptedHex, privateKey);\n\n const direct = tryDecodeTransferData(bytesToHex(plaintext));\n if (direct) {\n return direct;\n }\n\n const structSizeBytes = 32 * 5;\n if (plaintext.length >= structSizeBytes) {\n const trailing = plaintext.slice(-structSizeBytes);\n const trailingDecoded = tryDecodeTransferData(bytesToHex(trailing));\n if (trailingDecoded) {\n return trailingDecoded;\n }\n }\n\n throw new Error(\"Unable to decode decrypted transfer payload as TransferData struct.\");\n}\n","import { encodeFunctionData, parseEventLogs, type Hex } from \"viem\";\nimport { confidentialWrapperAbi } from \"../abi/confidentialWrapper.js\";\nimport { parsePublicKeyCoordinates } from \"../utils/viewerKey.js\";\nimport { getValueForCtx } from \"./funding.js\";\nimport type {\n ActionConfig,\n RegisterViewerKeyParams,\n AuthorizeHistoricViewForRangeParams,\n AuthorizeHistoricViewForTransferParams,\n RevokeHistoricViewParams,\n RequestTransferDecryptionParams,\n} from \"./types.js\";\n\nexport async function registerViewerKey(\n config: ActionConfig,\n params: RegisterViewerKeyParams,\n): Promise<Hex> {\n const { x, y } = parsePublicKeyCoordinates(params.publicKey);\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"setViewerPublicKey\",\n args: [{ x, y }],\n });\n return config.signer.sendTransaction({ to: config.address, data });\n}\n\nexport async function authorizeHistoricViewForRange(\n config: ActionConfig,\n params: AuthorizeHistoricViewForRangeParams,\n): Promise<Hex> {\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"authorizeHistoricViewTimeRange\",\n args: [params.address, params.fromTimestamp, params.toTimestamp],\n });\n return config.signer.sendTransaction({ to: config.address, data });\n}\n\nexport async function authorizeHistoricViewForTransfer(\n config: ActionConfig,\n params: AuthorizeHistoricViewForTransferParams,\n): Promise<Hex> {\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"authorizeHistoricViewTransferId\",\n args: [params.address, params.transferId],\n });\n return config.signer.sendTransaction({ to: config.address, data });\n}\n\nexport async function revokeHistoricView(\n config: ActionConfig,\n params: RevokeHistoricViewParams,\n): Promise<Hex> {\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"removeHistoricViewAuth\",\n args: [params.address],\n });\n return config.signer.sendTransaction({ to: config.address, data });\n}\n\nexport async function requestTransferDecryption(\n config: ActionConfig,\n params: RequestTransferDecryptionParams,\n): Promise<Hex> {\n const value = await getValueForCtx(config);\n\n // 1. Get encryptedData from the EncryptedTransfer event\n const receipt = await config.publicClient.waitForTransactionReceipt({ hash: params.ctxHash });\n const events = parseEventLogs({\n abi: confidentialWrapperAbi,\n logs: receipt.logs,\n eventName: \"EncryptedTransfer\",\n });\n\n const event = events[0];\n if (!event) {\n throw new Error(\"CTX receipt does not contain an EncryptedTransfer event.\");\n }\n\n const args = event.args as { encryptedData?: Hex; transferId?: bigint; from?: Hex; to?: Hex };\n const { encryptedData, transferId, from, to } = args;\n\n if (!encryptedData || transferId === undefined || !from || !to) {\n throw new Error(\"CTX receipt does not contain an EncryptedTransfer event.\");\n }\n\n // 2. Check permissions\n const viewerAddress = (await config.publicClient.readContract({\n address: config.address,\n abi: confidentialWrapperAbi,\n functionName: \"viewerAddresses\",\n args: [config.signer.address],\n })) as Hex;\n\n const block = await config.publicClient.getBlock({ blockNumber: receipt.blockNumber });\n const canDecrypt = (await config.publicClient.readContract({\n address: config.address,\n abi: confidentialWrapperAbi,\n functionName: \"canDecryptHistoricTransfer\",\n args: [viewerAddress, transferId, from, to, block.timestamp],\n })) as boolean;\n\n if (!canDecrypt) {\n throw new Error(\"Viewer is not authorized to decrypt this historic transfer.\");\n }\n\n // 3. Request re-encryption\n const data = encodeFunctionData({\n abi: confidentialWrapperAbi,\n functionName: \"requestDecryptHistoricTransferFor\",\n args: [encryptedData, viewerAddress],\n });\n return config.signer.sendTransaction({ to: config.address, data, value });\n}\n","import { type Hex, hexToBytes, isAddressEqual, keccak256, toHex, zeroAddress } from \"viem\";\nimport { publicKeyToAddress } from \"viem/utils\";\nimport { secp256k1 } from \"@noble/curves/secp256k1\";\n\nimport type { ViewerKeypair } from \"../types.js\";\n\nfunction privateKeyFromSignature(signature: Hex): Hex {\n let candidate = keccak256(hexToBytes(signature));\n\n for (let i = 0; i < 16; i += 1) {\n if (secp256k1.utils.isValidSecretKey(hexToBytes(candidate))) {\n return candidate;\n }\n candidate = keccak256(hexToBytes(candidate));\n }\n\n throw new Error(\"Unable to derive a valid deterministic private key from signature.\");\n}\n\nexport function parsePublicKeyCoordinates(publicKey: Hex): { x: Hex; y: Hex } {\n const raw = publicKey.startsWith(\"0x04\") ? publicKey.slice(4) : publicKey.slice(2);\n\n if (raw.length !== 128) {\n throw new Error(\"Public key must be an uncompressed key (65 bytes with 0x04 prefix).\");\n }\n\n return {\n x: `0x${raw.slice(0, 64)}` as Hex,\n y: `0x${raw.slice(64, 128)}` as Hex,\n };\n}\n\nexport function deriveAddressFromPublicKey(publicKey: Hex): Hex {\n const key = publicKey.startsWith(\"0x04\") ? publicKey : (`0x04${publicKey.slice(2)}` as Hex);\n return publicKeyToAddress(key) as Hex;\n}\n\nexport function validateViewerKey(publicKey: Hex, expectedViewerAddress?: Hex): string | undefined {\n if (!expectedViewerAddress) {\n return undefined;\n }\n\n if (isAddressEqual(expectedViewerAddress, zeroAddress)) {\n return undefined;\n }\n\n const derivedViewerAddress = deriveAddressFromPublicKey(publicKey);\n if (!isAddressEqual(derivedViewerAddress, expectedViewerAddress)) {\n return \"Public key does not match the registered viewer address.\";\n }\n\n return undefined;\n}\n\nexport function deriveViewerKeypair(signature: Hex): ViewerKeypair {\n const privateKey = privateKeyFromSignature(signature);\n const publicKey = toHex(secp256k1.getPublicKey(hexToBytes(privateKey), false));\n const { x, y } = parsePublicKeyCoordinates(publicKey);\n\n return { privateKey, publicKey, x, y };\n}\n","import type { Hex, PublicClient, TransactionReceipt } from \"viem\";\n\nexport type CtxResult = {\n originHash: Hex;\n originReceipt: TransactionReceipt;\n ctxHash: Hex;\n ctxReceipt: TransactionReceipt;\n};\n\nexport type CtxPromise = Promise<Hex> & {\n waitForCtx(): Promise<CtxResult>;\n};\n\nexport function createCtxPromise(\n txHashPromise: Promise<Hex>,\n publicClient: PublicClient,\n): CtxPromise {\n const promise = txHashPromise as CtxPromise;\n promise.waitForCtx = async () => {\n const txHash = await txHashPromise;\n return waitForCtx(txHash, publicClient);\n };\n return promise;\n}\n\nfunction normalizeHex(value: string): Hex | undefined {\n const trimmed = value.trim();\n\n if (/^0x[0-9a-fA-F]+$/.test(trimmed)) {\n return trimmed as Hex;\n }\n\n if (/^[0-9a-fA-F]+$/.test(trimmed)) {\n return `0x${trimmed}` as Hex;\n }\n\n return undefined;\n}\n\nfunction findFirstHex(value: unknown): Hex | undefined {\n if (typeof value === \"string\") {\n return normalizeHex(value);\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n const candidate = findFirstHex(item);\n if (candidate) {\n return candidate;\n }\n }\n return undefined;\n }\n\n if (value && typeof value === \"object\") {\n for (const child of Object.values(value)) {\n const candidate = findFirstHex(child);\n if (candidate) {\n return candidate;\n }\n }\n }\n\n return undefined;\n}\n\nfunction collectHexValues(value: unknown, acc: Hex[]): void {\n if (typeof value === \"string\") {\n const normalized = normalizeHex(value);\n if (normalized) {\n acc.push(normalized);\n }\n return;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n collectHexValues(item, acc);\n }\n return;\n }\n\n if (value && typeof value === \"object\") {\n for (const child of Object.values(value)) {\n collectHexValues(child, acc);\n }\n }\n}\n\nasync function callBiteGetCraftedCtxs(publicClient: PublicClient, txHash: Hex): Promise<unknown> {\n return publicClient.request({\n method: \"bite_getCraftedCtxs\" as any,\n params: [txHash] as any,\n });\n}\n\nexport async function getCtxHash(\n publicClient: PublicClient,\n txHash: Hex,\n): Promise<Hex | undefined> {\n const result = await callBiteGetCraftedCtxs(publicClient, txHash);\n return findFirstHex(result);\n}\n\nexport async function getCtxHashes(publicClient: PublicClient, txHash: Hex): Promise<Hex[]> {\n const result = await callBiteGetCraftedCtxs(publicClient, txHash);\n const allHexes: Hex[] = [];\n collectHexValues(result, allHexes);\n\n const deduped = new Map<string, Hex>();\n for (const hash of allHexes) {\n deduped.set(hash.toLowerCase(), hash);\n }\n\n return Array.from(deduped.values());\n}\n\nexport async function waitForCtx(txHash: Hex, publicClient: PublicClient): Promise<CtxResult> {\n // 1. Wait for original tx to be mined\n const originReceipt = await publicClient.waitForTransactionReceipt({ hash: txHash });\n\n // 2. Get CTX hash (deterministic once origin is mined)\n const ctxHash = await getCtxHash(publicClient, txHash);\n if (!ctxHash) {\n throw new Error(`No crafted CTX found for tx ${txHash}.`);\n }\n\n // 3. Wait for CTX to be mined\n const ctxReceipt = await publicClient.waitForTransactionReceipt({ hash: ctxHash });\n\n return { originHash: txHash, originReceipt, ctxHash, ctxReceipt };\n}\n","import type { Hex } from \"viem\";\n\nimport { ConfidentialToken } from \"./ConfidentialToken.js\";\nimport { confidentialWrapperAbi } from \"./abi/confidentialWrapper.js\";\nimport * as actions from \"./actions/index.js\";\nimport { createCtxPromise, type CtxPromise } from \"./utils/ctx.js\";\n\nexport class ConfidentialWrapper extends ConfidentialToken {\n async underlying(): Promise<Hex> {\n return (await this.client.readContract({\n address: this.address,\n abi: confidentialWrapperAbi,\n functionName: \"underlying\",\n })) as Hex;\n }\n\n wrap(receiver: Hex, amount: bigint): CtxPromise {\n return createCtxPromise(actions.wrap(this.actionConfig, { receiver, amount }), this.client);\n }\n\n unwrap(receiver: Hex, amount: bigint): CtxPromise {\n return createCtxPromise(actions.unwrap(this.actionConfig, { receiver, amount }), this.client);\n }\n}\n"],"mappings":"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","names":["import_viem","import_viem","import_viem","import_viem","import_viem","import_viem","import_secp256k1"]}